/************************************************************************* * * $RCSfile: UnoDialog2.java,v $ * * $Revision: 1.2 $ * * last change: $Author: kz $ $Date: 2004-05-19 13:06:41 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses * * - GNU Lesser General Public License Version 2.1 * - Sun Industry Standards Source License Version 1.1 * * Sun Microsystems Inc., October, 2000 * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2000 by Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, CA 94303, USA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * * Sun Industry Standards Source License Version 1.1 * ================================================= * The contents of this file are subject to the Sun Industry Standards * Source License Version 1.1 (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.openoffice.org/license.html. * * Software provided under this License is provided on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. * See the License for the specific provisions governing your rights and * obligations concerning the Software. * * The Initial Developer of the Original Code is: Sun Microsystems, Inc. * * Copyright: 2000 by Sun Microsystems, Inc. * * All Rights Reserved. * * Contributor(s): _______________________________________ * */ /* * UnoDialog2.java * * Created on 2. September 2003, 17:03 */ package com.sun.star.wizards.ui; import com.sun.star.awt.*; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XInterface; import com.sun.star.wizards.common.Helper; import com.sun.star.wizards.ui.event.*; /** * This class contains convenience methods for inserting components to a dialog. * It was created for use with the automatic conversion of Basic XML Dialog * description files to a Java class which builds the same dialog through the UNO API.
* It uses an Event-Listener method, which calls a method through reflection * wenn an event on a component is trigered. * see the classes AbstractListener, CommonListener, MethodInvocation for details. */ public class UnoDialog2 extends UnoDialog implements EventNames { protected AbstractListener guiEventListener; /** * Override this method to return another listener. */ protected AbstractListener createListener() { return new CommonListener(); } public UnoDialog2(XMultiServiceFactory xmsf) { super(xmsf, new String[] { }, new Object[] { }); guiEventListener = createListener(); } public XButton insertButton(String sName, String actionPerformed, Object eventTarget, String[] sPropNames, Object[] oPropValues) { XButton xButton = (XButton) insertControlModel2("com.sun.star.awt.UnoControlButtonModel", sName, sPropNames, oPropValues, XButton.class); if (actionPerformed != null) { xButton.addActionListener((XActionListener) guiEventListener); guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget); } return xButton; } public XButton insertButton(String sName, String actionPerformed, String[] sPropNames, Object[] oPropValues) { return insertButton(sName, actionPerformed, this, sPropNames, oPropValues); } public XCheckBox insertCheckBox(String sName, String itemChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { XCheckBox xCheckBox = (XCheckBox) insertControlModel2("com.sun.star.awt.UnoControlCheckBoxModel", sName, sPropNames, oPropValues, XCheckBox.class); if (itemChanged != null) { xCheckBox.addItemListener((XItemListener) guiEventListener); guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget); } return xCheckBox; } public XCheckBox insertCheckBox(String sName, String itemChanged, String[] sPropNames, Object[] oPropValues) { return insertCheckBox(sName, itemChanged, this, sPropNames, oPropValues); } public XComboBox insertComboBox(String sName, String actionPerformed, String itemChanged, String textChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { XComboBox xComboBox = (XComboBox) insertControlModel2("com.sun.star.awt.UnoControlComboBoxModel", sName, sPropNames, oPropValues, XComboBox.class); if (actionPerformed != null) { xComboBox.addActionListener((XActionListener) guiEventListener); guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget); } if (itemChanged != null) { xComboBox.addItemListener((XItemListener) guiEventListener); guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget); } if (textChanged != null) { XTextComponent xTextComponent = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class,xComboBox); xTextComponent.addTextListener((XTextListener)guiEventListener); guiEventListener.add(sName,EVENT_TEXT_CHANGED, textChanged, eventTarget); } return xComboBox; } public XComboBox insertComboBox(String sName, String actionPerformed, String itemChanged, String textChanged, String[] sPropNames, Object[] oPropValues) { return insertComboBox(sName, actionPerformed, textChanged, itemChanged, this, sPropNames, oPropValues); } public XListBox insertListBox(String sName, String actionPerformed, String itemChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { XListBox xListBox = (XListBox) insertControlModel2("com.sun.star.awt.UnoControlListBoxModel", sName, sPropNames, oPropValues, XListBox.class); if (actionPerformed != null) { xListBox.addActionListener((XActionListener) guiEventListener); guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget); } if (itemChanged != null) { xListBox.addItemListener((XItemListener) guiEventListener); guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget); } return xListBox; } public XListBox insertListBox(String sName, String actionPerformed, String itemChanged, String[] sPropNames, Object[] oPropValues) { return insertListBox(sName, actionPerformed, itemChanged, this, sPropNames, oPropValues); } public XRadioButton insertRadioButton(String sName, String itemChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { XRadioButton xRadioButton = (XRadioButton) insertControlModel2("com.sun.star.awt.UnoControlRadioButtonModel", sName, sPropNames, oPropValues, XRadioButton.class); if (itemChanged != null) { xRadioButton.addItemListener((XItemListener) guiEventListener); guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget); } return xRadioButton; } public XRadioButton insertRadioButton(String sName, String itemChanged, String[] sPropNames, Object[] oPropValues) { return insertRadioButton(sName, itemChanged, this, sPropNames, oPropValues); } public XControl insertTitledBox(String sName, String[] sPropNames, Object[] oPropValues) { Object oTitledBox = insertControlModel2("com.sun.star.awt.UnoControlGroupBoxModel", sName, sPropNames, oPropValues); return (XControl) UnoRuntime.queryInterface(XControl.class, oTitledBox); } public XTextComponent insertTextField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XTextComponent) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlEditModel", sPropNames, oPropValues, XTextComponent.class); } public XTextComponent insertTextField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertTextField(sName, sTextChanged, this, sPropNames, oPropValues); } public XControl insertImage(String sName, String[] sPropNames, Object[] oPropValues) { return (XControl) insertControlModel2("com.sun.star.awt.UnoControlImageControlModel", sName, sPropNames, oPropValues, XControl.class); } /** * This method is used for creating Edit, Currency, Date, Formatted, Pattern, File * and Time edit components. */ private Object insertEditField(String sName, String sTextChanged, Object eventTarget, String sModelClass, String[] sPropNames, Object[] oPropValues, Class type) { XTextComponent xField = (XTextComponent) insertControlModel2(sModelClass, sName, sPropNames, oPropValues, XTextComponent.class); if (sTextChanged != null) { xField.addTextListener((XTextListener) guiEventListener); guiEventListener.add(sName, EVENT_TEXT_CHANGED, sTextChanged, eventTarget); } return UnoRuntime.queryInterface(type, xField); } public XControl insertFileControl(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XControl) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlFileControlModel", sPropNames, oPropValues, XControl.class); } public XControl insertFileControl(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertFileControl(sName, sTextChanged, this, sPropNames, oPropValues); } public XCurrencyField insertCurrencyField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XCurrencyField) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlCurrencyFieldModel", sPropNames, oPropValues, XCurrencyField.class); } public XCurrencyField insertCurrencyField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertCurrencyField(sName, sTextChanged, this, sPropNames, oPropValues); } public XDateField insertDateField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XDateField) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlDateFieldModel", sPropNames, oPropValues, XDateField.class); } public XDateField insertDateField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertDateField(sName, sTextChanged, this, sPropNames, oPropValues); } public XNumericField insertNumericField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XNumericField) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlNumericFieldModel", sPropNames, oPropValues, XNumericField.class); } public XNumericField insertNumericField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertNumericField(sName, sTextChanged, this, sPropNames, oPropValues); } public XTimeField insertTimeField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XTimeField) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlTimeFieldModel", sPropNames, oPropValues, XTimeField.class); } public XTimeField insertTimeField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertTimeField(sName, sTextChanged, this, sPropNames, oPropValues); } public XPatternField insertPatternField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XPatternField) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlPatternFieldModel", sPropNames, oPropValues, XPatternField.class); } public XPatternField insertPatternField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertPatternField(sName, sTextChanged, this, sPropNames, oPropValues); } public XTextComponent insertFormattedField(String sName, String sTextChanged, Object eventTarget, String[] sPropNames, Object[] oPropValues) { return (XTextComponent) insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlFormattedFieldModel", sPropNames, oPropValues, XTextComponent.class); } public XTextComponent insertFormattedField(String sName, String sTextChanged, String[] sPropNames, Object[] oPropValues) { return insertFormattedField(sName, sTextChanged, this, sPropNames, oPropValues); } public XControl insertFixedLine(String sName, String[] sPropNames, Object[] oPropValues) { Object oLine = insertControlModel2("com.sun.star.awt.UnoControlFixedLineModel", sName, sPropNames, oPropValues); return (XControl) UnoRuntime.queryInterface(XControl.class, oLine); } public XScrollBar insertScrollBar(String sName, String[] sPropNames, Object[] oPropValues) { Object oScrollBar = insertControlModel2("com.sun.star.awt.UnoControlScrollBarModel", sName, sPropNames, oPropValues); return (XScrollBar) UnoRuntime.queryInterface(XScrollBar.class, oScrollBar); } public XProgressBar insertProgressBar(String sName, String[] sPropNames, Object[] oPropValues) { Object oProgressBar = insertControlModel2("com.sun.star.awt.UnoControlProgressBarModel", sName, sPropNames, oPropValues); return (XProgressBar) UnoRuntime.queryInterface(XProgressBar.class, oProgressBar); } public XControl insertGroupBox(String sName, String[] sPropNames, Object[] oPropValues) { Object oGroupBox = insertControlModel2("com.sun.star.awt.UnoControlGroupBoxModel", sName, sPropNames, oPropValues); return (XControl) UnoRuntime.queryInterface(XControl.class, oGroupBox); } public Object insertControlModel2(String serviceName, String componentName, String[] sPropNames, Object[] oPropValues) { try { //System.out.println("Inserting : " + componentName); XInterface xControlModel = insertControlModel(serviceName, componentName, new String[] { }, new Object[] { }); Helper.setUnoPropertyValues(xControlModel, sPropNames, oPropValues); //setControlPropertiesDebug(xControlModel, sPropNames, oPropValues); //System.out.println(" Setting props successfull !"); Helper.setUnoPropertyValue(xControlModel, "Name", componentName); } catch (Exception ex) { ex.printStackTrace(); } return xDlgContainer.getControl(componentName); } private void setControlPropertiesDebug(Object model, String[] names, Object[] values) { for (int i = 0; i