1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 import com.sun.star.awt.MouseEvent; 23 import com.sun.star.awt.Rectangle; 24 import com.sun.star.awt.XControl; 25 import com.sun.star.awt.XMouseListener; 26 import com.sun.star.awt.XTopWindow; 27 import com.sun.star.awt.XWindow; 28 import com.sun.star.beans.XMultiPropertySet; 29 import com.sun.star.lang.EventObject; 30 import com.sun.star.lang.XMultiComponentFactory; 31 import com.sun.star.uno.UnoRuntime; 32 import com.sun.star.uno.XComponentContext; 33 34 35 public class UnoMenu2 extends UnoMenu implements XMouseListener{ 36 37 public UnoMenu2(XComponentContext _xContext, XMultiComponentFactory _xMCF) { 38 super(_xContext, _xMCF); 39 } 40 41 public static void main(String args[]){ 42 UnoMenu2 oUnoMenu2 = null; 43 try { 44 XComponentContext xContext = com.sun.star.comp.helper.Bootstrap.bootstrap(); 45 if(xContext != null ) 46 System.out.println("Connected to a running office ..."); 47 XMultiComponentFactory xMCF = xContext.getServiceManager(); 48 oUnoMenu2 = new UnoMenu2(xContext, xMCF); 49 oUnoMenu2.initialize( new String[] {"Height", "Moveable", "Name","PositionX","PositionY", "Step", "TabIndex","Title","Width"}, 50 new Object[] { new Integer(140), Boolean.TRUE, "Dialog1", new Integer(102),new Integer(41), new Integer(1), new Short((short) 0), "Menu-Dialog", new Integer(200)}); 51 52 Object oFTHeaderModel = oUnoMenu2.m_xMSFDialogModel.createInstance("com.sun.star.awt.UnoControlFixedTextModel"); 53 XMultiPropertySet xFTHeaderModelMPSet = (XMultiPropertySet) UnoRuntime.queryInterface(XMultiPropertySet.class, oFTHeaderModel); 54 xFTHeaderModelMPSet.setPropertyValues( 55 new String[] {"Height", "Label", "Name", "PositionX", "PositionY", "Width"}, 56 new Object[] { new Integer(8), "This code-sample demonstrates the creation of a popup-menu", "HeaderLabel", new Integer(6), new Integer(6), new Integer(200)}); 57 // add the model to the NameContainer of the dialog model 58 oUnoMenu2.m_xDlgModelNameContainer.insertByName("Headerlabel", oFTHeaderModel); 59 oUnoMenu2.addLabelForPopupMenu(); 60 oUnoMenu2.executeDialog(); 61 }catch( Exception ex ) { 62 ex.printStackTrace(System.out); 63 } 64 finally{ 65 //make sure always to dispose the component and free the memory! 66 if (oUnoMenu2 != null) { 67 if (oUnoMenu2.m_xComponent != null){ 68 oUnoMenu2.m_xComponent.dispose(); 69 } 70 } 71 System.exit( 0 ); 72 }} 73 74 75 public void addLabelForPopupMenu(){ 76 try{ 77 String sName = "lblPopup"; 78 Object oFTModel = m_xMSFDialogModel.createInstance("com.sun.star.awt.UnoControlFixedTextModel"); 79 XMultiPropertySet xFTModelMPSet = (XMultiPropertySet) UnoRuntime.queryInterface(XMultiPropertySet.class, oFTModel); 80 // Set the properties at the model - keep in mind to pass the property names in alphabetical order! 81 xFTModelMPSet.setPropertyValues( 82 new String[] {"Height", "Label", "Name", "PositionX", "PositionY", "Width"}, 83 new Object[] { new Integer(8), "Right-click here", sName, new Integer(50), new Integer(50), new Integer(100)}); 84 // add the model to the NameContainer of the dialog model 85 m_xDlgModelNameContainer.insertByName(sName, oFTModel); 86 XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, m_xDlgContainer.getControl(sName)); 87 xWindow.addMouseListener(this); 88 }catch( Exception e ) { 89 System.err.println( e + e.getMessage()); 90 e.printStackTrace(); 91 }} 92 93 protected void closeDialog(){ 94 xDialog.endExecute(); 95 } 96 97 public void mouseReleased(MouseEvent mouseEvent) { 98 } 99 100 public void mousePressed(MouseEvent mouseEvent) { 101 if (mouseEvent.PopupTrigger){ 102 Rectangle aRectangle = new Rectangle(mouseEvent.X, mouseEvent.Y, 0, 0); 103 XControl xControl = (XControl) UnoRuntime.queryInterface(XControl.class, mouseEvent.Source); 104 getPopupMenu().execute( xControl.getPeer(), aRectangle, com.sun.star.awt.PopupMenuDirection.DEFAULT); 105 } 106 } 107 108 public void mouseExited(MouseEvent mouseEvent) { 109 } 110 111 public void mouseEntered(MouseEvent mouseEvent) { 112 } 113 114 public void disposing(EventObject eventObject) { 115 } 116 } 117