blob: 0e2a4fddcdb0c77163b8c86d2c93a37003feb645 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.wizards.ui;
import com.sun.star.awt.*;
import com.sun.star.awt.XReschedule;
import com.sun.star.beans.Property;
import com.sun.star.beans.XMultiPropertySet;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XNameAccess;
import com.sun.star.container.XNameContainer;
import com.sun.star.lang.*;
import com.sun.star.frame.XFrame;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.*;
import com.sun.star.wizards.common.*;
import com.sun.star.wizards.common.Desktop;
import com.sun.star.wizards.common.Helper;
import com.sun.star.wizards.ui.event.*;
import java.util.Hashtable;
public class UnoDialog implements EventNames
{
public XMultiServiceFactory xMSF;
public XMultiServiceFactory MSFDialogModel;
public XNameContainer xDlgNames;
public XControlContainer xDlgContainer;
private XNameAccess m_xDlgNameAccess;
public XControl xControl;
public XDialog xDialog;
public XReschedule xReschedule;
public XWindow xWindow;
public XComponent xComponent;
public XInterface xDialogModel;
public XInterface xUnoDialog;
public XPropertySet xPSetDlg;
public XVclWindowPeer xVclWindowPeer;
public Hashtable ControlList;
public Resource m_oResource;
public XWindowPeer xWindowPeer = null;
private PeerConfig m_oPeerConfig;
protected AbstractListener guiEventListener;
public AbstractListener getGuiEventListener()
{
return guiEventListener;
}
public UnoDialog(XMultiServiceFactory xMSF, String[] PropertyNames, Object[] PropertyValues)
{
try
{
this.xMSF = xMSF;
ControlList = new Hashtable();
xDialogModel = (XInterface) xMSF.createInstance("com.sun.star.awt.UnoControlDialogModel");
XMultiPropertySet xMultiPSetDlg = UnoRuntime.queryInterface(XMultiPropertySet.class, xDialogModel);
xMultiPSetDlg.setPropertyValues(PropertyNames, PropertyValues);
MSFDialogModel = UnoRuntime.queryInterface(XMultiServiceFactory.class, xDialogModel);
xUnoDialog = (XInterface) xMSF.createInstance("com.sun.star.awt.UnoControlDialog");
xControl = UnoRuntime.queryInterface(XControl.class, xUnoDialog);
XControlModel xControlModel = UnoRuntime.queryInterface(XControlModel.class, xDialogModel);
xControl.setModel(xControlModel);
xPSetDlg = UnoRuntime.queryInterface(XPropertySet.class, xDialogModel);
xDlgContainer = UnoRuntime.queryInterface(XControlContainer.class, xUnoDialog);
xDlgNames = UnoRuntime.queryInterface(XNameContainer.class, xDialogModel);
// xDlgNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, xDialogModel);
xComponent = UnoRuntime.queryInterface(XComponent.class, xUnoDialog);
xWindow = UnoRuntime.queryInterface(XWindow.class, xUnoDialog);
// setPeerConfiguration(); // LLA: will be done, if really used!
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
public int getControlKey(Object EventObject, Hashtable ControlList)
{
int iKey;
XControl xContrl = UnoRuntime.queryInterface(XControl.class, EventObject);
XControlModel xControlModel = xContrl.getModel();
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xControlModel);
try
{
String sName = (String) xPSet.getPropertyValue(PropertyNames.PROPERTY_NAME);
Integer KeyObject = (Integer) ControlList.get(sName);
iKey = KeyObject.intValue();
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
iKey = 2000;
}
return iKey;
}
public void createPeerConfiguration()
{
m_oPeerConfig = new PeerConfig(this);
}
public PeerConfig getPeerConfiguration()
{
if (m_oPeerConfig == null)
{
createPeerConfiguration();
}
return m_oPeerConfig;
}
XNameAccess getDlgNameAccess()
{
if (m_xDlgNameAccess == null)
{
m_xDlgNameAccess = UnoRuntime.queryInterface(XNameAccess.class, xDialogModel);
}
return m_xDlgNameAccess;
}
public void setControlProperty(String ControlName, String PropertyName, Object PropertyValue)
{
try
{
if (PropertyValue != null)
{
if (!getDlgNameAccess().hasByName(ControlName))
{
return;
}
Object xControlModel = getDlgNameAccess().getByName(ControlName);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xControlModel);
if (AnyConverter.isArray(PropertyValue))
{
com.sun.star.uno.Type seqType = new com.sun.star.uno.Type(PropertyValue.getClass());
PropertyValue = new com.sun.star.uno.Any(seqType, PropertyValue);
/* PropertyValue = Helper.getArrayValue(PropertyValue);
if (PropertyValue == null)
PropertyValue = new short[]{};
*/
}
xPSet.setPropertyValue(PropertyName, PropertyValue);
}
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
public Resource getResource()
{
return m_oResource;
}
public void setControlProperties(String ControlName, String[] PropertyNames, Object[] PropertyValues)
{
try
{
if (PropertyValues != null)
{
if (!getDlgNameAccess().hasByName(ControlName))
{
return;
}
Object xControlModel = getDlgNameAccess().getByName(ControlName);
XMultiPropertySet xMultiPSet = UnoRuntime.queryInterface(XMultiPropertySet.class, xControlModel);
xMultiPSet.setPropertyValues(PropertyNames, PropertyValues);
}
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
public Object getControlProperty(String ControlName, String PropertyName)
{
try
{
Object xControlModel = getDlgNameAccess().getByName(ControlName);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xControlModel);
return xPSet.getPropertyValue(PropertyName);
}
catch (com.sun.star.uno.Exception exception)
{ // com.sun.star.container.NoSuchElementException, com.sun.star.beans.UnknownPropertyException,
exception.printStackTrace(System.out); // com.sun.star.lang.WrappedTargetException, com.sun.star.beans.PropertyVetoException
return null; // com.sun.star.lang.IllegalArgumentException
}
}
public void printControlProperties(String ControlName)
{
try
{
Object xControlModel = getDlgNameAccess().getByName(ControlName);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xControlModel);
Property[] allProps = xPSet.getPropertySetInfo().getProperties();
for (int i = 0; i < allProps.length; i++)
{
String sName = allProps[i].Name;
System.out.println(sName);
}
}
catch (com.sun.star.uno.Exception exception)
{ // com.sun.star.container.NoSuchElementException, com.sun.star.beans.UnknownPropertyException,
exception.printStackTrace(System.out); // com.sun.star.lang.WrappedTargetException, com.sun.star.beans.PropertyVetoException
}
}
public double getMAPConversionFactor(String ControlName)
{
XControl xControl2 = xDlgContainer.getControl(ControlName);
XView xView = UnoRuntime.queryInterface(XView.class, xControl2);
Size aSize = xView.getSize();
double dblMAPWidth = (double) (((Integer) Helper.getUnoPropertyValue(xControl2.getModel(), PropertyNames.PROPERTY_WIDTH)).intValue());
return (((double) (aSize.Width)) / dblMAPWidth);
}
public Size getpreferredLabelSize(String LabelName, String sLabel)
{
XControl xControl2 = xDlgContainer.getControl(LabelName);
XFixedText xFixedText = UnoRuntime.queryInterface(XFixedText.class, xControl2);
String OldText = xFixedText.getText();
xFixedText.setText(sLabel);
XLayoutConstrains xLayoutConstrains = UnoRuntime.queryInterface(XLayoutConstrains.class, xControl2);
Size aSize = xLayoutConstrains.getPreferredSize();
xFixedText.setText(OldText);
return aSize;
}
public void removeSelectedItems(XListBox xListBox)
{
short[] SelList = xListBox.getSelectedItemsPos();
int Sellen = SelList.length;
for (int i = Sellen - 1; i >= 0; i--)
{
xListBox.removeItems(SelList[i], (short) 1);
}
}
public static int getListBoxItemCount(XListBox _xListBox)
{
// This function may look ugly, but this is the only way to check the count
// of values in the model,which is always right.
// the control is only a view and could be right or not.
final String[] fieldnames = (String[]) Helper.getUnoPropertyValue(getModel(_xListBox), PropertyNames.STRING_ITEM_LIST);
return fieldnames.length;
}
public static short getSelectedItemPos(XListBox _xListBox)
{
short ipos[] = (short[]) Helper.getUnoPropertyValue(getModel(_xListBox), PropertyNames.SELECTED_ITEMS);
return ipos[0];
}
public static boolean isListBoxSelected(XListBox _xListBox)
{
short ipos[] = (short[]) Helper.getUnoPropertyValue(getModel(_xListBox), PropertyNames.SELECTED_ITEMS);
return ipos.length > 0;
}
public void addSingleItemtoListbox(XListBox xListBox, String ListItem, short iSelIndex)
{
xListBox.addItem(ListItem, xListBox.getItemCount());
if (iSelIndex != -1)
{
xListBox.selectItemPos(iSelIndex, true);
}
}
public XFixedText insertLabel(String sName, String[] sPropNames, Object[] oPropValues)
{
try
{
Object oFixedText = insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", sName, sPropNames, oPropValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oFixedText);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object oLabel = xDlgContainer.getControl(sName);
return UnoRuntime.queryInterface(XFixedText.class, oLabel);
}
catch (java.lang.Exception ex)
{
ex.printStackTrace();
return null;
}
}
/* public XButton insertButton(String sName, int iControlKey, XActionListener xActionListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception{
Object oButtonModel = insertControlModel("com.sun.star.awt.UnoControlButtonModel", sName, sProperties, sValues);
XPropertySet xPSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, oButtonModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object objectButton = xDlgContainer.getControl( new String(sName));
XButton xButton = ( XButton ) UnoRuntime.queryInterface( XButton.class, objectButton );
xButton.addActionListener(xActionListener);
Integer ControlKey = new Integer(iControlKey);
if (ControlList != null)
ControlList.put(sName, ControlKey);
return xButton;
} */
public XButton insertButton(String sName, int iControlKey, XActionListener xActionListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
Object oButtonModel = insertControlModel("com.sun.star.awt.UnoControlButtonModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oButtonModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object objectButton = xDlgContainer.getControl(sName);
XButton xButton = UnoRuntime.queryInterface(XButton.class, objectButton);
if (xActionListener != null)
{
xButton.addActionListener(xActionListener);
}
Integer ControlKey = new Integer(iControlKey);
if (ControlList != null)
{
ControlList.put(sName, ControlKey);
}
return xButton;
}
public void insertCheckBox(String sName, int iControlKey, XItemListener xItemListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
Object oButtonModel = insertControlModel("com.sun.star.awt.UnoControlCheckBoxModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oButtonModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object objectCheckBox = xDlgContainer.getControl(sName);
XCheckBox xCheckBox = UnoRuntime.queryInterface(XCheckBox.class, objectCheckBox);
if (xItemListener != null)
{
xCheckBox.addItemListener(xItemListener);
}
Integer ControlKey = new Integer(iControlKey);
if (ControlList != null)
{
ControlList.put(sName, ControlKey);
}
}
public void insertNumericField(String sName, int iControlKey, XTextListener xTextListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
Object oNumericFieldModel = insertControlModel("com.sun.star.awt.UnoControlNumericFieldModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oNumericFieldModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object objectNumericField = xDlgContainer.getControl(sName);
XTextComponent xNumericField = UnoRuntime.queryInterface(XTextComponent.class, objectNumericField);
if (xTextListener != null)
{
xNumericField.addTextListener(xTextListener);
}
Integer ControlKey = new Integer(iControlKey);
if (ControlList != null)
{
ControlList.put(sName, ControlKey);
}
}
public XScrollBar insertScrollBar(String sName, int iControlKey, XAdjustmentListener xAdjustmentListener, String[] sProperties, Object[] sValues)
{
try
{
Object oScrollModel = insertControlModel("com.sun.star.awt.UnoControlScrollBarModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oScrollModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
Object oScrollBar = xDlgContainer.getControl(sName);
XScrollBar xScrollBar = UnoRuntime.queryInterface(XScrollBar.class, oScrollBar);
if (xAdjustmentListener != null)
{
xScrollBar.addAdjustmentListener(xAdjustmentListener);
}
Integer ControlKey = new Integer(iControlKey);
if (ControlList != null)
{
ControlList.put(sName, ControlKey);
}
return xScrollBar;
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public XTextComponent insertTextField(String sName, int iControlKey, XTextListener xTextListener, String[] sProperties, Object[] sValues)
{
return insertEditField("com.sun.star.awt.UnoControlEditModel", sName, iControlKey, xTextListener, sProperties, sValues);
}
public XTextComponent insertFormattedField(String sName, int iControlKey, XTextListener xTextListener, String[] sProperties, Object[] sValues)
{
return insertEditField("com.sun.star.awt.UnoControlFormattedFieldModel", sName, iControlKey, xTextListener, sProperties, sValues);
}
public XTextComponent insertEditField(String ServiceName, String sName, int iControlKey, XTextListener xTextListener, String[] sProperties, Object[] sValues)
{
try
{
XInterface xTextModel = insertControlModel(ServiceName, sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xTextModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
XControl xTextField = xDlgContainer.getControl(sName);
XTextComponent xTextBox = UnoRuntime.queryInterface(XTextComponent.class, xTextField);
if (xTextListener != null)
{
xTextBox.addTextListener(xTextListener);
}
Integer ControlKey = new Integer(iControlKey);
ControlList.put(sName, ControlKey);
return xTextBox;
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public XListBox insertListBox(String sName, int iControlKey, XActionListener xActionListener, XItemListener xItemListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
XInterface xListBoxModel = insertControlModel("com.sun.star.awt.UnoControlListBoxModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xListBoxModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
XControl xControlListBox = xDlgContainer.getControl(sName);
XListBox xListBox = UnoRuntime.queryInterface(XListBox.class, xControlListBox);
if (xItemListener != null)
{
xListBox.addItemListener(xItemListener);
}
if (xActionListener != null)
{
xListBox.addActionListener(xActionListener);
}
Integer ControlKey = new Integer(iControlKey);
ControlList.put(sName, ControlKey);
return xListBox;
}
public XComboBox insertComboBox(String sName, int iControlKey, XActionListener xActionListener, XTextListener xTextListener, XItemListener xItemListener, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
XInterface xComboBoxModel = insertControlModel("com.sun.star.awt.UnoControlComboBoxModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, xComboBoxModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
XControl xControlComboBox = xDlgContainer.getControl(sName);
XComboBox xComboBox = UnoRuntime.queryInterface(XComboBox.class, xControlComboBox);
if (xItemListener != null)
{
xComboBox.addItemListener(xItemListener);
}
if (xTextListener != null)
{
XTextComponent xTextComponent = UnoRuntime.queryInterface(XTextComponent.class, xComboBox);
xTextComponent.addTextListener(xTextListener);
}
if (xActionListener != null)
{
xComboBox.addActionListener(xActionListener);
}
Integer ControlKey = new Integer(iControlKey);
ControlList.put(sName, ControlKey);
return xComboBox;
}
public XRadioButton insertRadioButton(String sName, int iControlKey, XItemListener xItemListener, String[] sProperties, Object[] sValues)
{
try
{
XRadioButton xRadioButton = insertRadioButton(sName, iControlKey, sProperties, sValues);
if (xItemListener != null)
{
xRadioButton.addItemListener(xItemListener);
}
return xRadioButton;
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public XButton insertRadioButton(String sName, int iControlKey, XActionListener xActionListener, String[] sProperties, Object[] sValues)
{
try
{
XRadioButton xRadioButton = insertRadioButton(sName, iControlKey, sProperties, sValues);
XButton xButton = UnoRuntime.queryInterface(XButton.class, xRadioButton);
if (xActionListener != null)
{
xButton.addActionListener(xActionListener);
}
return xButton;
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public XRadioButton insertRadioButton(String sName, int iControlKey, String[] sProperties, Object[] sValues) throws com.sun.star.uno.Exception
{
XRadioButton xRadioButton = insertRadioButton(sName, sProperties, sValues);
Integer ControlKey = new Integer(iControlKey);
ControlList.put(sName, ControlKey);
return xRadioButton;
}
public XRadioButton insertRadioButton(String sName, String[] sProperties, Object[] sValues)
{
try
{
XInterface oRadioButtonModel = insertControlModel("com.sun.star.awt.UnoControlRadioButtonModel", sName, sProperties, sValues);
XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, oRadioButtonModel);
xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName);
XControl xControlRadioButton = xDlgContainer.getControl(sName);
return UnoRuntime.queryInterface(XRadioButton.class, xControlRadioButton);
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
/**
* @author bc93774
* The problem with setting the visibility of controls is that changing the current step
* of a dialog will automatically make all controls visible. The PropertyNames.PROPERTY_STEP property always wins against
* the property "visible". Therfor a control meant to be invisible is placed on a step far far away.
* @param the name of the control
* @param iStep change the step if you want to make the control invisible
*/
private void setControlVisible(String controlname, int iStep)
{
try
{
int iCurStep = AnyConverter.toInt(getControlProperty(controlname, PropertyNames.PROPERTY_STEP));
setControlProperty(controlname, PropertyNames.PROPERTY_STEP, new Integer(iStep));
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
/**
* @author bc93774
* The problem with setting the visibility of controls is that changing the current step
* of a dialog will automatically make all controls visible. The PropertyNames.PROPERTY_STEP property always wins against
* the property "visible". Therfor a control meant to be invisible is placed on a step far far away.
* Afterwards the step property of the dialog has to be set with "repaintDialogStep". As the performance
* of that method is very bad it should be used only once for all controls
* @param controlname the name of the control
* @param bIsVisible sets the control visible or invisible
*/
public void setControlVisible(String controlname, boolean bIsVisible)
{
try
{
int iCurControlStep = AnyConverter.toInt(getControlProperty(controlname, PropertyNames.PROPERTY_STEP));
int iCurDialogStep = AnyConverter.toInt(Helper.getUnoPropertyValue(this.xDialogModel, PropertyNames.PROPERTY_STEP));
int iNewStep;
if (bIsVisible)
{
setControlProperty(controlname, PropertyNames.PROPERTY_STEP, new Integer(iCurDialogStep));
}
else
{
setControlProperty(controlname, PropertyNames.PROPERTY_STEP, UIConsts.INVISIBLESTEP);
}
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
/**
* repaints the currentDialogStep
* @author bc93774
*/
public void repaintDialogStep()
{
try
{
int ncurstep = AnyConverter.toInt(Helper.getUnoPropertyValue(this.xDialogModel, PropertyNames.PROPERTY_STEP));
Helper.setUnoPropertyValue(xDialogModel, PropertyNames.PROPERTY_STEP, 99);
Helper.setUnoPropertyValue(xDialogModel, PropertyNames.PROPERTY_STEP, new Integer(ncurstep));
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
}
}
public XInterface insertControlModel(String ServiceName, String sName, String[] sProperties, Object[] sValues)
{
try
{
XInterface xControlModel = (XInterface) MSFDialogModel.createInstance(ServiceName);
Helper.setUnoPropertyValues(xControlModel, sProperties, sValues);
xDlgNames.insertByName(sName, xControlModel);
return xControlModel;
}
catch (com.sun.star.uno.Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public void setFocus(String ControlName)
{
Object oFocusControl = xDlgContainer.getControl(ControlName);
XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, oFocusControl);
xWindow.setFocus();
}
public static String[] combineListboxList(String sFirstEntry, String[] MainList)
{
try
{
String[] FirstList = new String[]
{
sFirstEntry
};
String[] ResultList = new String[MainList.length + 1];
System.arraycopy(FirstList, 0, ResultList, 0, 1);
System.arraycopy(MainList, 0, ResultList, 1, MainList.length);
return ResultList;
}
catch (java.lang.Exception jexception)
{
jexception.printStackTrace(System.out);
return null;
}
}
public void selectListBoxItem(XListBox xListBox, short iFieldsSelIndex)
{
if (iFieldsSelIndex > -1)
{
int FieldCount = xListBox.getItemCount();
if (FieldCount > 0)
{
if (iFieldsSelIndex < FieldCount)
{
xListBox.selectItemPos(iFieldsSelIndex, true);
}
else
{
xListBox.selectItemPos((short) (iFieldsSelIndex - 1), true);
}
}
}
}
/** deselects a Listbox. MultipleMode is not supported
*
* @param _xBasisListBox
*/
public static void deselectListBox(XInterface _xBasisListBox)
{
Object oListBoxModel = getModel(_xBasisListBox);
Object sList = Helper.getUnoPropertyValue(oListBoxModel, PropertyNames.STRING_ITEM_LIST);
Helper.setUnoPropertyValue(oListBoxModel, PropertyNames.STRING_ITEM_LIST, new String[]
{
});
Helper.setUnoPropertyValue(oListBoxModel, PropertyNames.STRING_ITEM_LIST, sList);
}
public void calculateDialogPosition(Rectangle FramePosSize)
{
// Todo: check if it would be useful or possible to create a dialog peer, that can be used for the messageboxes to
// maintain modality when they pop up.
Rectangle CurPosSize = xWindow.getPosSize();
int WindowHeight = FramePosSize.Height;
int WindowWidth = FramePosSize.Width;
int DialogWidth = CurPosSize.Width;
int DialogHeight = CurPosSize.Height;
int iXPos = ((WindowWidth / 2) - (DialogWidth / 2));
int iYPos = ((WindowHeight / 2) - (DialogHeight / 2));
xWindow.setPosSize(iXPos, iYPos, DialogWidth, DialogHeight, PosSize.POS);
}
/**
*
* @param FramePosSize
* @return 0 for cancel, 1 for ok
* @throws com.sun.star.uno.Exception
*/
public short executeDialog(Rectangle FramePosSize) throws com.sun.star.uno.Exception
{
if (xControl.getPeer() == null)
{
throw new java.lang.IllegalArgumentException("Please create a peer, using your own frame");
}
calculateDialogPosition(FramePosSize);
if (xWindowPeer == null)
{
createWindowPeer();
}
xVclWindowPeer = UnoRuntime.queryInterface(XVclWindowPeer.class, xWindowPeer);
// xVclWindowPeer.setProperty("AutoMnemonics", new Boolean(true));
this.BisHighContrastModeActivated = Boolean.valueOf(this.isHighContrastModeActivated());
xDialog = UnoRuntime.queryInterface(XDialog.class, xUnoDialog);
return xDialog.execute();
}
public void setVisible(UnoDialog parent) throws com.sun.star.uno.Exception
{
calculateDialogPosition(parent.xWindow.getPosSize());
if (xWindowPeer == null)
{
createWindowPeer();
}
XVclWindowPeer xVclWindowPeer = UnoRuntime.queryInterface(XVclWindowPeer.class, xWindowPeer);
xDialog = UnoRuntime.queryInterface(XDialog.class, xUnoDialog);
this.xWindow.setVisible(true);
}
/**
*
* @param parent
* @return 0 for cancel, 1 for ok.
* @throws com.sun.star.uno.Exception
*/
public short executeDialog(UnoDialog parent)
throws com.sun.star.uno.Exception
{
return executeDialog(parent.xWindow.getPosSize());
}
/**
*
* @param xComponent
* @return 0 for cancel, 1 for ok.
* @throws com.sun.star.uno.Exception
*/
public short executeDialog(XInterface xComponent) throws com.sun.star.uno.Exception
{
XFrame frame = UnoRuntime.queryInterface(XFrame.class, xComponent);
if (frame != null)
{
XWindow w = frame.getComponentWindow();
if (w != null)
{
return executeDialog(w.getPosSize());
}
}
return executeDialog(new Rectangle(0, 0, 640, 400));
}
/**
* When possible, use the other executeDialog methods, since
* there may be problems retrieving the actual active frame,
* for example under linux.
* @return 0 for cancel, 1 for ok
*/
public short executeDialog() throws com.sun.star.uno.Exception
{
return executeDialog(Desktop.getActiveFrame(xMSF));
}
public void setAutoMnemonic(String ControlName, boolean bValue)
{
Object oControl = xDlgContainer.getControl(ControlName);
xControl = UnoRuntime.queryInterface(XControl.class, oControl);
XWindowPeer xWindowPeer = xControl.getPeer();
XVclWindowPeer xVclWindowPeer = UnoRuntime.queryInterface(XVclWindowPeer.class, xControl.getPeer());
xVclWindowPeer.setProperty("AutoMnemonics", Boolean.valueOf(bValue));
}
public void modifyFontWeight(String ControlName, float FontWeight)
{
FontDescriptor oFontDesc = new FontDescriptor();
oFontDesc.Weight = FontWeight;
setControlProperty(ControlName, PropertyNames.FONT_DESCRIPTOR, oFontDesc);
}
/**
* create a peer for this
* dialog, using the given
* peer as a parent.
* @param parentPeer
* @return
* @throws java.lang.Exception
*/
public XWindowPeer createWindowPeer(XWindowPeer parentPeer) throws com.sun.star.uno.Exception
{
xWindow.setVisible(false);
Object tk = xMSF.createInstance("com.sun.star.awt.Toolkit");
if (parentPeer == null)
{
parentPeer = UnoRuntime.queryInterface(XToolkit.class, tk).getDesktopWindow();
}
XToolkit xToolkit = UnoRuntime.queryInterface(XToolkit.class, tk);
xReschedule = UnoRuntime.queryInterface(XReschedule.class, xToolkit);
// TEUER!
xControl.createPeer(xToolkit, parentPeer);
xWindowPeer = xControl.getPeer();
return xControl.getPeer();
}
/**
* Creates a peer for this
* dialog, using the active OO frame
* as the parent window.
* @return
* @throws java.lang.Exception
*/
public XWindowPeer createWindowPeer() throws com.sun.star.uno.Exception
{
return createWindowPeer(null);
}
// deletes the first entry when this is equal to "DelEntryName"
// returns true when a new item is selected
public void deletefirstListboxEntry(String ListBoxName, String DelEntryName)
{
XControl xListControl = xDlgContainer.getControl(ListBoxName);
XListBox xListBox = UnoRuntime.queryInterface(XListBox.class, xListControl);
String FirstItem = xListBox.getItem((short) 0);
if (FirstItem.equals(DelEntryName))
{
short SelPos = xListBox.getSelectedItemPos();
xListBox.removeItems((short) 0, (short) 1);
if (SelPos > 0)
{
setControlProperty(ListBoxName, PropertyNames.SELECTED_ITEMS, new short[SelPos]);
xListBox.selectItemPos((short) (SelPos - 1), true);
}
}
}
public void setPeerProperty(String ControlName, String PropertyName, Object PropertyValue)
{
Object oControl = xDlgContainer.getControl(ControlName);
XControl xControl = UnoRuntime.queryInterface(XControl.class, oControl);
XWindowPeer xControlPeer = xControl.getPeer();
XVclWindowPeer xVclWindowPeer = UnoRuntime.queryInterface(XVclWindowPeer.class, xControlPeer);
xVclWindowPeer.setProperty(PropertyName, PropertyValue);
}
public static Object getModel(Object control)
{
XControl xControl = UnoRuntime.queryInterface(XControl.class, control);
return xControl.getModel();
}
public static void setEnabled(Object control, boolean enabled)
{
setEnabled(control, enabled ? Boolean.TRUE : Boolean.FALSE);
}
public static void setEnabled(Object control, Boolean enabled)
{
Helper.setUnoPropertyValue(getModel(control), PropertyNames.PROPERTY_ENABLED, enabled);
}
/**
* @author bc93774
* @param oControlModel the model of a control
* @return the LabelType according to UIConsts.CONTROLTYPE
*/
public static int getControlModelType(Object oControlModel)
{
XServiceInfo xServiceInfo = UnoRuntime.queryInterface(XServiceInfo.class, oControlModel);
if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlFixedTextModel"))
{
return UIConsts.CONTROLTYPE.FIXEDTEXT;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlButtonModel"))
{
return UIConsts.CONTROLTYPE.BUTTON;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlCurrencyFieldModel"))
{
return UIConsts.CONTROLTYPE.CURRENCYFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlDateFieldModel"))
{
return UIConsts.CONTROLTYPE.DATEFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlFixedLineModel"))
{
return UIConsts.CONTROLTYPE.FIXEDLINE;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlFormattedFieldModel"))
{
return UIConsts.CONTROLTYPE.FORMATTEDFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlRoadmapModel"))
{
return UIConsts.CONTROLTYPE.ROADMAP;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlNumericFieldModel"))
{
return UIConsts.CONTROLTYPE.NUMERICFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlPatternFieldModel"))
{
return UIConsts.CONTROLTYPE.PATTERNFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlHyperTextModel"))
{
return UIConsts.CONTROLTYPE.HYPERTEXT;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlProgressBarModel"))
{
return UIConsts.CONTROLTYPE.PROGRESSBAR;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlTimeFieldModel"))
{
return UIConsts.CONTROLTYPE.TIMEFIELD;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlImageControlModel"))
{
return UIConsts.CONTROLTYPE.IMAGECONTROL;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlRadioButtonModel"))
{
return UIConsts.CONTROLTYPE.RADIOBUTTON;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlCheckBoxModel"))
{
return UIConsts.CONTROLTYPE.CHECKBOX;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlEditModel"))
{
return UIConsts.CONTROLTYPE.EDITCONTROL;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlComboBoxModel"))
{
return UIConsts.CONTROLTYPE.COMBOBOX;
}
else if (xServiceInfo.supportsService("com.sun.star.awt.UnoControlListBoxModel")) // TODO Comboboxes??
{
return UIConsts.CONTROLTYPE.LISTBOX;
}
else
{
return UIConsts.CONTROLTYPE.UNKNOWN;
}
}
/**
* @author bc93774
* @param oControlModel
* @return the name of the property that contains the value of a controlmodel
*/
public static String getDisplayProperty(Object oControlModel)
{
XServiceInfo xServiceInfo = UnoRuntime.queryInterface(XServiceInfo.class, oControlModel);
int itype = getControlModelType(oControlModel);
return getDisplayProperty(itype);
}
/**
* @author bc93774
* @param itype The type of the control conforming to UIConst.ControlType
* @return the name of the property that contains the value of a controlmodel
*/
public static String getDisplayProperty(int itype)
{
// String propertyname = PropertyNames.EMPTY_STRING;
switch (itype)
{
case UIConsts.CONTROLTYPE.FIXEDTEXT:
return PropertyNames.PROPERTY_LABEL;
case UIConsts.CONTROLTYPE.BUTTON:
return PropertyNames.PROPERTY_LABEL;
case UIConsts.CONTROLTYPE.FIXEDLINE:
return PropertyNames.PROPERTY_LABEL;
case UIConsts.CONTROLTYPE.NUMERICFIELD:
return "Value";
case UIConsts.CONTROLTYPE.CURRENCYFIELD:
return "Value";
case UIConsts.CONTROLTYPE.FORMATTEDFIELD:
return "EffectiveValue";
case UIConsts.CONTROLTYPE.DATEFIELD:
return "Date";
case UIConsts.CONTROLTYPE.TIMEFIELD:
return "Time";
case UIConsts.CONTROLTYPE.SCROLLBAR:
return "ScrollValue";
case UIConsts.CONTROLTYPE.PROGRESSBAR:
return "ProgressValue";
case UIConsts.CONTROLTYPE.IMAGECONTROL:
return PropertyNames.PROPERTY_IMAGEURL;
case UIConsts.CONTROLTYPE.RADIOBUTTON:
return PropertyNames.PROPERTY_STATE;
case UIConsts.CONTROLTYPE.CHECKBOX:
return PropertyNames.PROPERTY_STATE;
case UIConsts.CONTROLTYPE.EDITCONTROL:
return "Text";
case UIConsts.CONTROLTYPE.COMBOBOX:
return "Text";
case UIConsts.CONTROLTYPE.PATTERNFIELD:
return "Text";
case UIConsts.CONTROLTYPE.LISTBOX:
return PropertyNames.SELECTED_ITEMS;
default:
return PropertyNames.EMPTY_STRING;
}
}
public void addResourceHandler(String _Unit, String _Module)
{
m_oResource = new Resource(xMSF, _Unit, _Module);
}
public static short setInitialTabindex(int _istep)
{
return (short) (_istep * 100);
}
private Boolean BisHighContrastModeActivated = null;
public boolean isHighContrastModeActivated()
{
if (xVclWindowPeer != null)
{
if (BisHighContrastModeActivated == null)
{
int nUIColor;
try
{
nUIColor = AnyConverter.toInt(this.xVclWindowPeer.getProperty("DisplayBackgroundColor"));
}
catch (IllegalArgumentException e)
{
e.printStackTrace(System.out);
return false;
}
//TODO: The following methods could be wrapped in an own class implementation
int nRed = getRedColorShare(nUIColor);
int nGreen = getGreenColorShare(nUIColor);
int nBlue = getBlueColorShare(nUIColor);
int nLuminance = ((nBlue * 28 + nGreen * 151 + nRed * 77) / 256);
boolean bisactivated = (nLuminance <= 25);
BisHighContrastModeActivated = Boolean.valueOf(bisactivated);
return bisactivated;
}
else
{
return BisHighContrastModeActivated.booleanValue();
}
}
else
{
return false;
}
}
public static int getRedColorShare(int _nColor)
{
int nRed = _nColor / 65536;
int nRedModulo = _nColor % 65536;
int nGreen = nRedModulo / 256;
int nGreenModulo = (nRedModulo % 256);
int nBlue = nGreenModulo;
return nRed;
}
public static int getGreenColorShare(int _nColor)
{
int nRed = _nColor / 65536;
int nRedModulo = _nColor % 65536;
int nGreen = nRedModulo / 256;
return nGreen;
}
public static int getBlueColorShare(int _nColor)
{
int nRed = _nColor / 65536;
int nRedModulo = _nColor % 65536;
int nGreen = nRedModulo / 256;
int nGreenModulo = (nRedModulo % 256);
int nBlue = nGreenModulo;
return nBlue;
}
public String getWizardImageUrl(int _nResId, int _nHCResId)
{
if (isHighContrastModeActivated())
{
return "private:resource/wzi/image/" + _nHCResId;
}
else
{
return "private:resource/wzi/image/" + _nResId;
}
}
public String getImageUrl(String _surl, String _shcurl)
{
if (isHighContrastModeActivated())
{
return _shcurl;
}
else
{
return _surl;
}
}
public static short getListBoxLineCount()
{
return (short)20;
}
}