1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski import com.sun.star.beans.Property; 25*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.NullPointerException; 27*b1cdbd2cSJim Jagielski import com.sun.star.reflection.XConstantTypeDescription; 28*b1cdbd2cSJim Jagielski import com.sun.star.reflection.XIdlMethod; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.AnyConverter; 30*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 31*b1cdbd2cSJim Jagielski import java.awt.BorderLayout; 32*b1cdbd2cSJim Jagielski import java.awt.Container; 33*b1cdbd2cSJim Jagielski import java.awt.Dimension; 34*b1cdbd2cSJim Jagielski import java.awt.event.KeyAdapter; 35*b1cdbd2cSJim Jagielski import java.awt.event.KeyEvent; 36*b1cdbd2cSJim Jagielski import java.awt.event.MouseAdapter; 37*b1cdbd2cSJim Jagielski import java.awt.event.MouseEvent; 38*b1cdbd2cSJim Jagielski import javax.swing.JLabel; 39*b1cdbd2cSJim Jagielski import javax.swing.JPanel; 40*b1cdbd2cSJim Jagielski import javax.swing.JProgressBar; 41*b1cdbd2cSJim Jagielski import javax.swing.JScrollBar; 42*b1cdbd2cSJim Jagielski import javax.swing.JScrollPane; 43*b1cdbd2cSJim Jagielski import javax.swing.JSplitPane; 44*b1cdbd2cSJim Jagielski import javax.swing.JTextArea; 45*b1cdbd2cSJim Jagielski import javax.swing.JTextField; 46*b1cdbd2cSJim Jagielski import javax.swing.JTree; 47*b1cdbd2cSJim Jagielski import javax.swing.event.TreeSelectionEvent; 48*b1cdbd2cSJim Jagielski import javax.swing.event.TreeSelectionListener; 49*b1cdbd2cSJim Jagielski import javax.swing.event.TreeWillExpandListener; 50*b1cdbd2cSJim Jagielski import javax.swing.tree.DefaultTreeSelectionModel; 51*b1cdbd2cSJim Jagielski import javax.swing.tree.ExpandVetoException; 52*b1cdbd2cSJim Jagielski import javax.swing.tree.TreePath; 53*b1cdbd2cSJim Jagielski import javax.swing.tree.TreeSelectionModel; 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski public class SwingTreeControlProvider implements XTreeControlProvider{ 58*b1cdbd2cSJim Jagielski private JTextArea jtxtGeneratedSourceCode = new JTextArea(); 59*b1cdbd2cSJim Jagielski private JTextField jtxtFilter = new JTextField(); 60*b1cdbd2cSJim Jagielski private javax.swing.JLabel jlblFilter = new javax.swing.JLabel("Set a filter"); 61*b1cdbd2cSJim Jagielski private JPanel jPnlBottom = new JPanel(new BorderLayout()); 62*b1cdbd2cSJim Jagielski private JPanel jPanelProgress = new JPanel(new BorderLayout()); 63*b1cdbd2cSJim Jagielski private JPanel jPnlPath = new JPanel(new BorderLayout()); 64*b1cdbd2cSJim Jagielski private JLabel jLblPath = new JLabel("Generated source code"); 65*b1cdbd2cSJim Jagielski private JProgressBar jProgressBar1 = new JProgressBar(); 66*b1cdbd2cSJim Jagielski private JTree jTree = new javax.swing.JTree(); 67*b1cdbd2cSJim Jagielski private XDialogProvider m_xDialogProvider; 68*b1cdbd2cSJim Jagielski private HideableTreeModel treeModel; 69*b1cdbd2cSJim Jagielski private UnoTreeRenderer oUnoTreeRenderer; 70*b1cdbd2cSJim Jagielski private InspectorPane m_oInspectorPane; 71*b1cdbd2cSJim Jagielski private Object oUserDefinedObject = null; 72*b1cdbd2cSJim Jagielski private boolean bIsUserDefined = false; 73*b1cdbd2cSJim Jagielski private SwingUnoNode oRootNode; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski private final int nDIALOGWIDTH = 800; 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski SwingTreeControlProvider(XDialogProvider _xDialogProvider)79*b1cdbd2cSJim Jagielski public SwingTreeControlProvider(XDialogProvider _xDialogProvider){ 80*b1cdbd2cSJim Jagielski m_xDialogProvider = _xDialogProvider; 81*b1cdbd2cSJim Jagielski } 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski addInspectorPane(InspectorPane _oInspectorPane)84*b1cdbd2cSJim Jagielski public void addInspectorPane(InspectorPane _oInspectorPane){ 85*b1cdbd2cSJim Jagielski m_oInspectorPane = _oInspectorPane; 86*b1cdbd2cSJim Jagielski } 87*b1cdbd2cSJim Jagielski getInspectorPane()88*b1cdbd2cSJim Jagielski public InspectorPane getInspectorPane() throws NullPointerException{ 89*b1cdbd2cSJim Jagielski if (m_oInspectorPane == null){ 90*b1cdbd2cSJim Jagielski throw new NullPointerException("InspectorPage has not been added to TreeControl"); 91*b1cdbd2cSJim Jagielski } 92*b1cdbd2cSJim Jagielski else{ 93*b1cdbd2cSJim Jagielski return m_oInspectorPane; 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski } 96*b1cdbd2cSJim Jagielski ComponentSelector(Object _oRootObject, String _sRootTreeNodeName)97*b1cdbd2cSJim Jagielski private void ComponentSelector(Object _oRootObject, String _sRootTreeNodeName) { 98*b1cdbd2cSJim Jagielski String sTreeNodeName = _sRootTreeNodeName; 99*b1cdbd2cSJim Jagielski oRootNode = new SwingUnoNode(_oRootObject); 100*b1cdbd2cSJim Jagielski oRootNode.setLabel(_sRootTreeNodeName); 101*b1cdbd2cSJim Jagielski treeModel = new HideableTreeModel(oRootNode); 102*b1cdbd2cSJim Jagielski jTree.setModel(treeModel); 103*b1cdbd2cSJim Jagielski jTree.setRootVisible(true); 104*b1cdbd2cSJim Jagielski jTree.setVisible(true); 105*b1cdbd2cSJim Jagielski oRootNode.setFoldable(true); 106*b1cdbd2cSJim Jagielski enableFilterElements(null); 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski insertTopPanel(JPanel _jPnlCenter)111*b1cdbd2cSJim Jagielski private void insertTopPanel(JPanel _jPnlCenter){ 112*b1cdbd2cSJim Jagielski javax.swing.JPanel jPnlTop = new javax.swing.JPanel(new BorderLayout(10, 10)); 113*b1cdbd2cSJim Jagielski jPnlTop.setPreferredSize(new java.awt.Dimension(nDIALOGWIDTH, 20)); 114*b1cdbd2cSJim Jagielski jlblFilter.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 115*b1cdbd2cSJim Jagielski jlblFilter.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); 116*b1cdbd2cSJim Jagielski jPnlTop.add(jlblFilter, java.awt.BorderLayout.WEST); 117*b1cdbd2cSJim Jagielski jtxtFilter.setHorizontalAlignment(javax.swing.JTextField.LEFT); 118*b1cdbd2cSJim Jagielski jtxtFilter.setPreferredSize(new java.awt.Dimension(200, 10)); 119*b1cdbd2cSJim Jagielski jtxtFilter.addKeyListener(new InspectorKeyFilterAdapter()); 120*b1cdbd2cSJim Jagielski jPnlTop.add(jtxtFilter, java.awt.BorderLayout.CENTER); 121*b1cdbd2cSJim Jagielski _jPnlCenter.add(jPnlTop, java.awt.BorderLayout.NORTH); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski insertBottomPanel(JSplitPane _jSplitPane)125*b1cdbd2cSJim Jagielski private void insertBottomPanel(JSplitPane _jSplitPane){ //JPanel _jPnlCenter){ 126*b1cdbd2cSJim Jagielski jtxtGeneratedSourceCode.setTabSize(4); 127*b1cdbd2cSJim Jagielski jtxtGeneratedSourceCode.getAccessibleContext().setAccessibleName("generated SourceCode"); 128*b1cdbd2cSJim Jagielski JScrollPane jScrollPane = new JScrollPane(jtxtGeneratedSourceCode); 129*b1cdbd2cSJim Jagielski jScrollPane.setPreferredSize(new Dimension(nDIALOGWIDTH,205)); 130*b1cdbd2cSJim Jagielski jtxtGeneratedSourceCode.setEditable(false); 131*b1cdbd2cSJim Jagielski _jSplitPane.setBottomComponent(jScrollPane); 132*b1cdbd2cSJim Jagielski } 133*b1cdbd2cSJim Jagielski insertBorderPanes(Container _cp)134*b1cdbd2cSJim Jagielski private void insertBorderPanes(Container _cp){ 135*b1cdbd2cSJim Jagielski JPanel jPnlEast = new JPanel(new BorderLayout()); 136*b1cdbd2cSJim Jagielski JPanel jPnlNorth = new JPanel(new BorderLayout()); 137*b1cdbd2cSJim Jagielski JPanel jPnlSouth = new JPanel(new BorderLayout()); 138*b1cdbd2cSJim Jagielski JPanel jPnlWest = new JPanel(new BorderLayout()); 139*b1cdbd2cSJim Jagielski _cp.add(jPnlNorth, java.awt.BorderLayout.NORTH); 140*b1cdbd2cSJim Jagielski jPnlWest.setPreferredSize(new java.awt.Dimension(10, 10)); 141*b1cdbd2cSJim Jagielski _cp.add(jPnlWest, java.awt.BorderLayout.WEST); 142*b1cdbd2cSJim Jagielski jPnlEast.setPreferredSize(new java.awt.Dimension(10, 10)); 143*b1cdbd2cSJim Jagielski _cp.add(jPnlEast, java.awt.BorderLayout.EAST); 144*b1cdbd2cSJim Jagielski jPnlSouth.setPreferredSize(new java.awt.Dimension(10, 10)); 145*b1cdbd2cSJim Jagielski _cp.add(jPnlSouth, java.awt.BorderLayout.SOUTH); 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski enableFilterElements(XUnoNode _oUnoNode)149*b1cdbd2cSJim Jagielski public String enableFilterElements(XUnoNode _oUnoNode){ 150*b1cdbd2cSJim Jagielski String sFilter =""; 151*b1cdbd2cSJim Jagielski boolean bIsFacetteNode = isFacetteNode(_oUnoNode); 152*b1cdbd2cSJim Jagielski this.jtxtFilter.setEnabled(bIsFacetteNode); 153*b1cdbd2cSJim Jagielski this.jlblFilter.setEnabled(bIsFacetteNode); 154*b1cdbd2cSJim Jagielski sFilter = m_oInspectorPane.getFilter(_oUnoNode); 155*b1cdbd2cSJim Jagielski jtxtFilter.setText(sFilter); 156*b1cdbd2cSJim Jagielski return sFilter; 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski private class InspectorKeyFilterAdapter extends KeyAdapter{ keyReleased(KeyEvent e)161*b1cdbd2cSJim Jagielski public void keyReleased(KeyEvent e){ 162*b1cdbd2cSJim Jagielski String sFilter = jtxtFilter.getText(); 163*b1cdbd2cSJim Jagielski SwingTreePathProvider oSwingTreePathProvider = new SwingTreePathProvider(jTree.getSelectionPath()); 164*b1cdbd2cSJim Jagielski XUnoNode oUnoNode = oSwingTreePathProvider.getLastPathComponent(); 165*b1cdbd2cSJim Jagielski if (oUnoNode instanceof XUnoFacetteNode){ 166*b1cdbd2cSJim Jagielski m_oInspectorPane.applyFilter((XUnoFacetteNode) oUnoNode, sFilter); 167*b1cdbd2cSJim Jagielski } 168*b1cdbd2cSJim Jagielski } 169*b1cdbd2cSJim Jagielski } 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski /** Inspect the given object for methods, properties, interfaces, and 174*b1cdbd2cSJim Jagielski * services. 175*b1cdbd2cSJim Jagielski * @param a The object to inspect 176*b1cdbd2cSJim Jagielski * @throws RuntimeException If 177*b1cdbd2cSJim Jagielski */ inspect(java.lang.Object _oUserDefinedObject, String _sTitle)178*b1cdbd2cSJim Jagielski public Object inspect(java.lang.Object _oUserDefinedObject, String _sTitle) throws com.sun.star.uno.RuntimeException { 179*b1cdbd2cSJim Jagielski JPanel jPnlContainer = new javax.swing.JPanel(new BorderLayout(10, 10)); 180*b1cdbd2cSJim Jagielski try { 181*b1cdbd2cSJim Jagielski javax.swing.JPanel jPnlCenter = new javax.swing.JPanel(); 182*b1cdbd2cSJim Jagielski bIsUserDefined = (_oUserDefinedObject != null); 183*b1cdbd2cSJim Jagielski if (bIsUserDefined){ 184*b1cdbd2cSJim Jagielski oUserDefinedObject = _oUserDefinedObject; 185*b1cdbd2cSJim Jagielski m_oInspectorPane.setTitle(_sTitle); 186*b1cdbd2cSJim Jagielski } 187*b1cdbd2cSJim Jagielski javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); 188*b1cdbd2cSJim Jagielski TreeSelectionModel tsm = new DefaultTreeSelectionModel(); 189*b1cdbd2cSJim Jagielski tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 190*b1cdbd2cSJim Jagielski jTree.setSelectionModel(tsm); 191*b1cdbd2cSJim Jagielski jTree.setVisible(false); 192*b1cdbd2cSJim Jagielski jPnlCenter.setLayout(new java.awt.BorderLayout(10, 10)); 193*b1cdbd2cSJim Jagielski jPnlCenter.getAccessibleContext().setAccessibleName("inspection tab view"); 194*b1cdbd2cSJim Jagielski insertTopPanel(jPnlCenter); 195*b1cdbd2cSJim Jagielski jScrollPane1.setViewportView(jTree); 196*b1cdbd2cSJim Jagielski jScrollPane1.setPreferredSize(new java.awt.Dimension(600, 600)); 197*b1cdbd2cSJim Jagielski jScrollPane1.getAccessibleContext().setAccessibleName("API view scroll pane"); 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski JScrollBar jHScrollBar = jScrollPane1.createHorizontalScrollBar(); 200*b1cdbd2cSJim Jagielski jHScrollBar.getAccessibleContext().setAccessibleName("API view horizontal scroll bar"); 201*b1cdbd2cSJim Jagielski jScrollPane1.setHorizontalScrollBar(jHScrollBar); 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski JScrollBar jVScrollBar = jScrollPane1.createVerticalScrollBar(); 204*b1cdbd2cSJim Jagielski jVScrollBar.getAccessibleContext().setAccessibleName("API view vertical scroll bar"); 205*b1cdbd2cSJim Jagielski jScrollPane1.setVerticalScrollBar(jVScrollBar); 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); 208*b1cdbd2cSJim Jagielski jSplitPane.setTopComponent(jScrollPane1); 209*b1cdbd2cSJim Jagielski jPnlCenter.add(jSplitPane, java.awt.BorderLayout.CENTER); 210*b1cdbd2cSJim Jagielski jSplitPane.setDividerLocation(500); 211*b1cdbd2cSJim Jagielski insertBottomPanel(jSplitPane); 212*b1cdbd2cSJim Jagielski UnoTreeRenderer oUnoTreeRenderer = new UnoTreeRenderer(); 213*b1cdbd2cSJim Jagielski jTree.setCellRenderer(oUnoTreeRenderer); 214*b1cdbd2cSJim Jagielski jTree.addTreeSelectionListener( 215*b1cdbd2cSJim Jagielski new TreeSelectionListener() { 216*b1cdbd2cSJim Jagielski public void valueChanged(TreeSelectionEvent event) { 217*b1cdbd2cSJim Jagielski TreePath tp = event.getNewLeadSelectionPath(); 218*b1cdbd2cSJim Jagielski if (tp != null){ 219*b1cdbd2cSJim Jagielski XUnoNode oUnoNode = getSelectedNode(); 220*b1cdbd2cSJim Jagielski String sFilter = enableFilterElements(oUnoNode); 221*b1cdbd2cSJim Jagielski } 222*b1cdbd2cSJim Jagielski } 223*b1cdbd2cSJim Jagielski } 224*b1cdbd2cSJim Jagielski ); 225*b1cdbd2cSJim Jagielski // Add KeyListener for help 226*b1cdbd2cSJim Jagielski jTree.addKeyListener( new java.awt.event.KeyAdapter() { 227*b1cdbd2cSJim Jagielski public void keyReleased(java.awt.event.KeyEvent event) { 228*b1cdbd2cSJim Jagielski if ( event.getKeyCode() == KeyEvent.VK_F1 ) { 229*b1cdbd2cSJim Jagielski // function key F1 pressed 230*b1cdbd2cSJim Jagielski TreePath aTreePath = jTree.getSelectionPath(); 231*b1cdbd2cSJim Jagielski SwingUnoNode oUnoNode = (SwingUnoNode) aTreePath.getLastPathComponent(); 232*b1cdbd2cSJim Jagielski oUnoNode.openIdlDescription(m_xDialogProvider.getIDLPath()); 233*b1cdbd2cSJim Jagielski } 234*b1cdbd2cSJim Jagielski } 235*b1cdbd2cSJim Jagielski }); 236*b1cdbd2cSJim Jagielski jTree.addMouseListener(new MouseAdapter() { 237*b1cdbd2cSJim Jagielski public void mousePressed (MouseEvent e) { 238*b1cdbd2cSJim Jagielski if (e.isPopupTrigger()){ 239*b1cdbd2cSJim Jagielski m_oInspectorPane.showPopUpMenu(e.getComponent(), e.getX(), e.getY()); 240*b1cdbd2cSJim Jagielski } 241*b1cdbd2cSJim Jagielski //unfortunately under Windows the method "isPopupTrigger" always returns false 242*b1cdbd2cSJim Jagielski else if ((e.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) == MouseEvent.BUTTON3_DOWN_MASK){ 243*b1cdbd2cSJim Jagielski m_oInspectorPane.showPopUpMenu(e.getComponent(), e.getX(), e.getY()); 244*b1cdbd2cSJim Jagielski } 245*b1cdbd2cSJim Jagielski } 246*b1cdbd2cSJim Jagielski }); 247*b1cdbd2cSJim Jagielski jPnlContainer.add(jPnlCenter, java.awt.BorderLayout.CENTER); 248*b1cdbd2cSJim Jagielski insertBorderPanes(jPnlContainer); 249*b1cdbd2cSJim Jagielski if (this.bIsUserDefined){ 250*b1cdbd2cSJim Jagielski ComponentSelector(oUserDefinedObject, m_oInspectorPane.getTitle()); 251*b1cdbd2cSJim Jagielski } 252*b1cdbd2cSJim Jagielski m_xDialogProvider.addInspectorPage(m_oInspectorPane.getTitle(), jPnlContainer); 253*b1cdbd2cSJim Jagielski addTreeExpandListener(); 254*b1cdbd2cSJim Jagielski } 255*b1cdbd2cSJim Jagielski catch( Exception exception ) { 256*b1cdbd2cSJim Jagielski exception.printStackTrace(System.out); 257*b1cdbd2cSJim Jagielski } 258*b1cdbd2cSJim Jagielski return jPnlContainer; 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski getModel()261*b1cdbd2cSJim Jagielski public HideableTreeModel getModel(){ 262*b1cdbd2cSJim Jagielski return treeModel; 263*b1cdbd2cSJim Jagielski } 264*b1cdbd2cSJim Jagielski 265*b1cdbd2cSJim Jagielski addTreeExpandListener()266*b1cdbd2cSJim Jagielski public void addTreeExpandListener(){ 267*b1cdbd2cSJim Jagielski jTree.addTreeWillExpandListener( 268*b1cdbd2cSJim Jagielski new TreeWillExpandListener() { 269*b1cdbd2cSJim Jagielski public void treeWillExpand(javax.swing.event.TreeExpansionEvent event) throws javax.swing.tree.ExpandVetoException { 270*b1cdbd2cSJim Jagielski SwingTreePathProvider oSwingTreePathProvider = new SwingTreePathProvider(event.getPath()); 271*b1cdbd2cSJim Jagielski XUnoNode oUnoNode = oSwingTreePathProvider.getLastPathComponent(); 272*b1cdbd2cSJim Jagielski if (!m_oInspectorPane.expandNode(oUnoNode, oSwingTreePathProvider)){ 273*b1cdbd2cSJim Jagielski throw new ExpandVetoException(event); 274*b1cdbd2cSJim Jagielski } 275*b1cdbd2cSJim Jagielski } 276*b1cdbd2cSJim Jagielski 277*b1cdbd2cSJim Jagielski public void treeWillCollapse( javax.swing.event.TreeExpansionEvent evt) throws javax.swing.tree.ExpandVetoException { 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski }); 280*b1cdbd2cSJim Jagielski } 281*b1cdbd2cSJim Jagielski 282*b1cdbd2cSJim Jagielski setSourceCode(String _sSourceCode)283*b1cdbd2cSJim Jagielski public void setSourceCode(String _sSourceCode){ 284*b1cdbd2cSJim Jagielski jtxtGeneratedSourceCode.setText(_sSourceCode); 285*b1cdbd2cSJim Jagielski } 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski getSelectedPath()288*b1cdbd2cSJim Jagielski public XTreePathProvider getSelectedPath(){ 289*b1cdbd2cSJim Jagielski return new SwingTreePathProvider(jTree.getSelectionPath()); 290*b1cdbd2cSJim Jagielski } 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski expandPath(XTreePathProvider _xTreePathProvider)293*b1cdbd2cSJim Jagielski public void expandPath(XTreePathProvider _xTreePathProvider) throws ClassCastException{ 294*b1cdbd2cSJim Jagielski SwingTreePathProvider oSwingTreePathProvider = (SwingTreePathProvider) _xTreePathProvider; 295*b1cdbd2cSJim Jagielski jTree.expandPath(oSwingTreePathProvider.getSwingTreePath()); 296*b1cdbd2cSJim Jagielski } 297*b1cdbd2cSJim Jagielski 298*b1cdbd2cSJim Jagielski getSelectedNode()299*b1cdbd2cSJim Jagielski public XUnoNode getSelectedNode(){ 300*b1cdbd2cSJim Jagielski XUnoNode oUnoNode = null; 301*b1cdbd2cSJim Jagielski TreePath aTreePath = jTree.getSelectionPath(); 302*b1cdbd2cSJim Jagielski Object oNode = aTreePath.getLastPathComponent(); 303*b1cdbd2cSJim Jagielski if (oNode instanceof XUnoNode){ 304*b1cdbd2cSJim Jagielski oUnoNode = (XUnoNode) oNode; 305*b1cdbd2cSJim Jagielski } 306*b1cdbd2cSJim Jagielski return oUnoNode; 307*b1cdbd2cSJim Jagielski } 308*b1cdbd2cSJim Jagielski 309*b1cdbd2cSJim Jagielski nodeInserted(XUnoNode _oParentNode, XUnoNode _oChildNode, int index)310*b1cdbd2cSJim Jagielski public void nodeInserted(XUnoNode _oParentNode, XUnoNode _oChildNode, int index) { 311*b1cdbd2cSJim Jagielski getModel().nodeInserted(_oParentNode, _oChildNode, _oParentNode.getChildCount()-1); 312*b1cdbd2cSJim Jagielski } 313*b1cdbd2cSJim Jagielski 314*b1cdbd2cSJim Jagielski nodeChanged(XUnoNode _oNode)315*b1cdbd2cSJim Jagielski public void nodeChanged(XUnoNode _oNode) { 316*b1cdbd2cSJim Jagielski getModel().nodeChanged(_oNode); 317*b1cdbd2cSJim Jagielski } 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski setNodeVisible(Object node, boolean v)320*b1cdbd2cSJim Jagielski public boolean setNodeVisible(Object node, boolean v) { 321*b1cdbd2cSJim Jagielski return getModel().setNodeVisible(node, v); 322*b1cdbd2cSJim Jagielski } 323*b1cdbd2cSJim Jagielski 324*b1cdbd2cSJim Jagielski isPropertyNode(XUnoNode _oUnoNode)325*b1cdbd2cSJim Jagielski public boolean isPropertyNode(XUnoNode _oUnoNode){ 326*b1cdbd2cSJim Jagielski return (_oUnoNode instanceof SwingUnoPropertyNode); 327*b1cdbd2cSJim Jagielski } 328*b1cdbd2cSJim Jagielski 329*b1cdbd2cSJim Jagielski isMethodNode(XUnoNode _oUnoNode)330*b1cdbd2cSJim Jagielski public boolean isMethodNode(XUnoNode _oUnoNode){ 331*b1cdbd2cSJim Jagielski return (_oUnoNode instanceof SwingUnoMethodNode); 332*b1cdbd2cSJim Jagielski } 333*b1cdbd2cSJim Jagielski 334*b1cdbd2cSJim Jagielski isFacetteNode(XUnoNode _oUnoNode)335*b1cdbd2cSJim Jagielski public boolean isFacetteNode(XUnoNode _oUnoNode){ 336*b1cdbd2cSJim Jagielski return (_oUnoNode instanceof SwingUnoFacetteNode); 337*b1cdbd2cSJim Jagielski } 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski addUnoNode(Object _oUnoObject)340*b1cdbd2cSJim Jagielski public XUnoNode addUnoNode(Object _oUnoObject){ 341*b1cdbd2cSJim Jagielski return new SwingUnoNode(_oUnoObject); 342*b1cdbd2cSJim Jagielski } 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski addUnoNode(Object _oUnoObject, Type _aType)345*b1cdbd2cSJim Jagielski public XUnoNode addUnoNode(Object _oUnoObject, Type _aType){ 346*b1cdbd2cSJim Jagielski return new SwingUnoNode(_oUnoObject, _aType); 347*b1cdbd2cSJim Jagielski } 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski addUnoFacetteNode(XUnoNode _oParentNode, String _sNodeDescription, Object _oUnoObject)350*b1cdbd2cSJim Jagielski public XUnoFacetteNode addUnoFacetteNode(XUnoNode _oParentNode, String _sNodeDescription, Object _oUnoObject){ 351*b1cdbd2cSJim Jagielski SwingUnoFacetteNode oSwingUnoFacetteNode = new SwingUnoFacetteNode(_oUnoObject); 352*b1cdbd2cSJim Jagielski oSwingUnoFacetteNode.setLabel(_sNodeDescription); 353*b1cdbd2cSJim Jagielski if (_oParentNode != null){ 354*b1cdbd2cSJim Jagielski ((SwingUnoNode) _oParentNode).addChildNode(oSwingUnoFacetteNode); 355*b1cdbd2cSJim Jagielski } 356*b1cdbd2cSJim Jagielski return oSwingUnoFacetteNode; 357*b1cdbd2cSJim Jagielski } 358*b1cdbd2cSJim Jagielski 359*b1cdbd2cSJim Jagielski addMethodNode(Object _objectElement, XIdlMethod _xIdlMethod)360*b1cdbd2cSJim Jagielski public XUnoMethodNode addMethodNode(Object _objectElement, XIdlMethod _xIdlMethod){ 361*b1cdbd2cSJim Jagielski SwingUnoMethodNode oSwingUnoMethodNode = new SwingUnoMethodNode(_xIdlMethod, _objectElement, m_xDialogProvider); 362*b1cdbd2cSJim Jagielski return oSwingUnoMethodNode; 363*b1cdbd2cSJim Jagielski } 364*b1cdbd2cSJim Jagielski 365*b1cdbd2cSJim Jagielski addUnoPropertyNodeWithName(Property _aProperty)366*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNodeWithName(Property _aProperty){ 367*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty); 368*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel("Name: " + _aProperty.Name); 369*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 370*b1cdbd2cSJim Jagielski } 371*b1cdbd2cSJim Jagielski 372*b1cdbd2cSJim Jagielski addUnoPropertyNodeWithHandle(Property _aProperty)373*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNodeWithHandle(Property _aProperty){ 374*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty); 375*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel("Handle: " + _aProperty.Handle); 376*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 377*b1cdbd2cSJim Jagielski } 378*b1cdbd2cSJim Jagielski 379*b1cdbd2cSJim Jagielski addUnoPropertyNodeWithType(Property _aProperty)380*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNodeWithType(Property _aProperty){ 381*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty); 382*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel("Type: " + _aProperty.Type.getTypeName()); 383*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 384*b1cdbd2cSJim Jagielski } 385*b1cdbd2cSJim Jagielski 386*b1cdbd2cSJim Jagielski addUnoPropertyNodeWithAttributesDescription(Property _aProperty)387*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNodeWithAttributesDescription(Property _aProperty){ 388*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty); 389*b1cdbd2cSJim Jagielski XConstantTypeDescription[] xPropertyAttributesTypeDescriptions = Introspector.getIntrospector().getFieldsOfConstantGroup("com.sun.star.beans.PropertyAttribute"); 390*b1cdbd2cSJim Jagielski String sDisplay = Introspector.getIntrospector().getConstantDisplayString((int) _aProperty.Attributes, xPropertyAttributesTypeDescriptions, "Attributes: "); 391*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel(sDisplay); 392*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 393*b1cdbd2cSJim Jagielski } 394*b1cdbd2cSJim Jagielski 395*b1cdbd2cSJim Jagielski addUnoPropertyNode(Object _oUnoObject, Property _aProperty)396*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNode(Object _oUnoObject, Property _aProperty){ 397*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty, _oUnoObject, null); 398*b1cdbd2cSJim Jagielski oUnoPropertyNode.setPropertyNodeType(XUnoPropertyNode.nPROPERTYSETINFOTYPE); 399*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel(UnoPropertyNode.getStandardPropertyDescription(_aProperty, null)); 400*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 401*b1cdbd2cSJim Jagielski } 402*b1cdbd2cSJim Jagielski 403*b1cdbd2cSJim Jagielski addUnoPropertyNode(Object _oUnoObject, Property _aProperty, Object _oUnoReturnObject)404*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNode(Object _oUnoObject, Property _aProperty, Object _oUnoReturnObject){ 405*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aProperty, _oUnoObject, _oUnoReturnObject); 406*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel(UnoPropertyNode.getStandardPropertyDescription(_aProperty, _oUnoReturnObject)); 407*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 408*b1cdbd2cSJim Jagielski } 409*b1cdbd2cSJim Jagielski 410*b1cdbd2cSJim Jagielski addUnoPropertyNode(Object _oUnoObject, PropertyValue _aPropertyValue, Object _oReturnObject)411*b1cdbd2cSJim Jagielski public XUnoPropertyNode addUnoPropertyNode(Object _oUnoObject, PropertyValue _aPropertyValue, Object _oReturnObject){ 412*b1cdbd2cSJim Jagielski SwingUnoPropertyNode oUnoPropertyNode = new SwingUnoPropertyNode(_aPropertyValue, _oUnoObject, _oReturnObject); 413*b1cdbd2cSJim Jagielski oUnoPropertyNode.setLabel(UnoPropertyNode.getStandardPropertyValueDescription(_aPropertyValue)); 414*b1cdbd2cSJim Jagielski return oUnoPropertyNode; 415*b1cdbd2cSJim Jagielski } 416*b1cdbd2cSJim Jagielski } 417