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