/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
import com.sun.star.awt.MenuEvent;
import com.sun.star.awt.MenuItemStyle;
import com.sun.star.awt.Rectangle;
import com.sun.star.awt.WindowAttribute;
import com.sun.star.awt.WindowClass;
import com.sun.star.awt.XMenuBar;
import com.sun.star.awt.XMenuListener;
import com.sun.star.awt.XPopupMenu;
import com.sun.star.awt.XToolkit;
import com.sun.star.awt.XTopWindow;
import com.sun.star.awt.XWindow;
import com.sun.star.awt.XWindowPeer;
import com.sun.star.frame.XFrame;
import com.sun.star.frame.XFramesSupplier;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
public class UnoMenu extends UnoDialogSample implements XMenuListener {
private XTopWindow mxTopWindow = null ;
public UnoMenu(XComponentContext _xContext, XMultiComponentFactory _xMCF) {
super (_xContext, _xMCF);
}
public static void main(String args[]){
UnoMenu oUnoMenu = null ;
try {
XComponentContext xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
if (xContext != null )
System.out.println("Connected to a running office ..." );
XMultiComponentFactory xMCF = xContext.getServiceManager();
oUnoMenu = new UnoMenu(xContext, xMCF);
oUnoMenu.mxTopWindow = oUnoMenu.showTopWindow( new Rectangle(100 , 100 , 500 , 500 )); //oUnoDialogSample.m_xWindowPeer,
oUnoMenu.addMenuBar(oUnoMenu.mxTopWindow, oUnoMenu);
}catch ( Exception ex ) {
ex.printStackTrace(System.err);
}
}
public XPopupMenu getPopupMenu(){
XPopupMenu xPopupMenu = null ;
try {
// create a popup menu
Object oPopupMenu = m_xMCF.createInstanceWithContext("com.sun.star.awt.PopupMenu" , m_xContext);
xPopupMenu = UnoRuntime.queryInterface(XPopupMenu.class , oPopupMenu);
// ID must start be > 0
short nId = 1 ;
short nPos = 0 ;
xPopupMenu.insertItem(nId++, "First Entry" , MenuItemStyle.AUTOCHECK, nPos++);
xPopupMenu.insertItem(nId++, "First Radio Entry" , (short ) (MenuItemStyle.RADIOCHECK + MenuItemStyle.AUTOCHECK), nPos++);
xPopupMenu.insertItem(nId++, "Second Radio Entry" , (short ) (MenuItemStyle.RADIOCHECK + MenuItemStyle.AUTOCHECK), nPos++);
xPopupMenu.insertItem(nId++, "Third RadioEntry" ,(short ) (MenuItemStyle.RADIOCHECK + MenuItemStyle.AUTOCHECK), nPos++);
xPopupMenu.insertSeparator(nPos++);
xPopupMenu.insertItem(nId++, "Fifth Entry" , (short ) (MenuItemStyle.CHECKABLE + MenuItemStyle.AUTOCHECK), nPos++);
xPopupMenu.insertItem(nId++, "Fourth Entry" , (short ) (MenuItemStyle.CHECKABLE + MenuItemStyle.AUTOCHECK), nPos++);
xPopupMenu.insertItem(nId++, "Sixth Entry" , (short ) 0 , nPos++);
xPopupMenu.insertItem(nId++, "Close Dialog" , (short ) 0 , nPos++);
xPopupMenu.enableItem((short ) 2 , false );
xPopupMenu.checkItem((short ) 3 , true );
xPopupMenu.addMenuListener(this );
}catch ( Exception e ) {
throw new java.lang.RuntimeException("cannot happen..." , e);
}
return xPopupMenu;
}
private void addMenuBar(XTopWindow _xTopWindow, XMenuListener _xMenuListener){
try {
// create a menubar at the global MultiComponentFactory...
Object oMenuBar = m_xMCF.createInstanceWithContext("com.sun.star.awt.MenuBar" , m_xContext);
// add the menu items...
XMenuBar xMenuBar = UnoRuntime.queryInterface(XMenuBar.class , oMenuBar);
xMenuBar.insertItem((short ) 1 , "~First MenuBar Item" , com.sun.star.awt.MenuItemStyle.AUTOCHECK, (short ) 0 );
xMenuBar.insertItem((short ) 2 , "~Second MenuBar Item" , com.sun.star.awt.MenuItemStyle.AUTOCHECK, (short ) 1 );
xMenuBar.setPopupMenu((short ) 1 , getPopupMenu());
xMenuBar.addMenuListener(_xMenuListener);
_xTopWindow.setMenuBar(xMenuBar);
}catch ( Exception e ) {
throw new java.lang.RuntimeException("cannot happen..." , e);
}}
protected void closeDialog(){
XComponent xComponent = UnoRuntime.queryInterface(XComponent.class , mxTopWindow);
if (xComponent != null ){
xComponent.dispose();
}
// to ensure that the Java application terminates
System.exit( 0 );
}
private XTopWindow showTopWindow( Rectangle _aRectangle){
XTopWindow xTopWindow = null ;
try {
// The Toolkit is the creator of all windows...
Object oToolkit = m_xMCF.createInstanceWithContext("com.sun.star.awt.Toolkit" , m_xContext);
XToolkit xToolkit = UnoRuntime.queryInterface(XToolkit.class , oToolkit);
// set up a window description and create the window. A parent window is always necessary for this...
com.sun.star.awt.WindowDescriptor aWindowDescriptor = new com.sun.star.awt.WindowDescriptor();
// a TopWindow is contains a title bar and is able to include menus...
aWindowDescriptor.Type = WindowClass.TOP;
// specify the position and height of the window on the parent window
aWindowDescriptor.Bounds = _aRectangle;
// set the window attributes...
aWindowDescriptor.WindowAttributes = WindowAttribute.SHOW + WindowAttribute.MOVEABLE + WindowAttribute.SIZEABLE + WindowAttribute.CLOSEABLE;
// create the window...
XWindowPeer xWindowPeer = xToolkit.createWindow(aWindowDescriptor);
XWindow xWindow = UnoRuntime.queryInterface(XWindow.class , xWindowPeer);
// create a frame and initialize it with the created window...
Object oFrame = m_xMCF.createInstanceWithContext("com.sun.star.frame.Frame" , m_xContext);
m_xFrame = UnoRuntime.queryInterface(XFrame.class , oFrame);
Object oDesktop = m_xMCF.createInstanceWithContext("com.sun.star.frame.Desktop" , m_xContext);
XFramesSupplier xFramesSupplier = UnoRuntime.queryInterface(XFramesSupplier.class , oDesktop);
m_xFrame.setCreator(xFramesSupplier);
// get the XTopWindow interface...
xTopWindow = UnoRuntime.queryInterface(XTopWindow.class , xWindow);
} catch (com.sun.star.lang.IllegalArgumentException ex) {
ex.printStackTrace();
} catch (com.sun.star.uno.Exception ex) {
ex.printStackTrace();
}
return xTopWindow;
}
public void itemSelected(MenuEvent menuEvent){
// find out which menu item has been triggered,
// by getting the menu-id...
switch (menuEvent.MenuId){
case 1 :
// add your menu-item-specific code here:
break ;
case 2 :
// add your menu-item-specific code here:
break ;
case 8 :
closeDialog();
default :
}
}
public void itemHighlighted(MenuEvent menuEvent) {
}
public void itemDeactivated(MenuEvent menuEvent) {
}
public void itemActivated(MenuEvent menuEvent) {
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=88 H=97 G=92
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-10-05)
¤
*© Formatika GbR, Deutschland