blob: ef67a5b7c6bb8626c2d82dcc656bbaf56d576ee0 [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.table;
import java.util.ArrayList;
import java.util.Vector;
import com.sun.star.awt.ItemEvent;
import com.sun.star.awt.XFixedText;
import com.sun.star.awt.XItemListener;
import com.sun.star.awt.XListBox;
import com.sun.star.awt.XRadioButton;
import com.sun.star.beans.PropertyValue;
import com.sun.star.container.XNameAccess;
import com.sun.star.lang.EventObject;
import com.sun.star.lang.Locale;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.wizards.common.Configuration;
import com.sun.star.wizards.common.Desktop;
import com.sun.star.wizards.common.Helper;
import com.sun.star.wizards.common.JavaTools;
import com.sun.star.wizards.common.PropertyNames;
import com.sun.star.wizards.db.TableDescriptor;
import com.sun.star.wizards.ui.FieldSelection;
import com.sun.star.wizards.ui.UIConsts;
import com.sun.star.wizards.ui.UnoDialog;
import com.sun.star.wizards.ui.XFieldSelectionListener;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ScenarioSelector extends FieldSelection implements XItemListener, XFieldSelectionListener
{
final static int PRIVATE = 0;
final static int BUSINESS = 1;
private XFixedText lblExplanation;
private XFixedText lblCategories;
private XRadioButton optBusiness;
private XRadioButton optPrivate;
private XListBox xTableListBox;
private TableWizard CurTableWizardUnoDialog;
private TableDescriptor curtabledescriptor;
private CGCategory oCGCategory;
protected CGTable oCGTable;
private String SELECTCATEGORY = "selectCategory";
private int curcategory;
protected boolean bcolumnnameislimited;
private int imaxcolumnchars;
private String smytable;
private Locale aLocale;
private XMultiServiceFactory xMSF;
public ScenarioSelector(TableWizard _CurUnoDialog, TableDescriptor _curtabledescriptor, String _reslblFields, String _reslblSelFields)
{
super(_CurUnoDialog, TableWizard.SOMAINPAGE, 91, 108, 230, 80, _reslblFields, _reslblSelFields, 41209, true);
CurTableWizardUnoDialog = _CurUnoDialog;
xMSF = CurUnoDialog.xMSF;
aLocale = Configuration.getOfficeLocale(xMSF);
curtabledescriptor = _curtabledescriptor;
imaxcolumnchars = this.curtabledescriptor.getMaxColumnNameLength();
bcolumnnameislimited = (imaxcolumnchars > 0) && (imaxcolumnchars < 16);
addFieldSelectionListener(this);
short pretabindex = (short) (50);
String sExplanation = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 14);
String sCategories = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 15);
String sBusiness = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 16);
String sPrivate = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 17);
String sTableNames = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 18);
smytable = CurUnoDialog.m_oResource.getResText(UIConsts.RID_TABLE + 44);
Integer IMAINSTEP = new Integer(TableWizard.SOMAINPAGE);
oCGCategory = new CGCategory(CurUnoDialog.xMSF);
oCGTable = new CGTable(CurUnoDialog.xMSF);
lblExplanation = CurUnoDialog.insertLabel("lblScenarioExplanation",
new String[]
{
PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_MULTILINE, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
32, sExplanation, Boolean.TRUE, 91, 27, IMAINSTEP, new Short(pretabindex++), 233
});
lblCategories = CurUnoDialog.insertLabel("lblCategories",
new String[]
{
PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
8, sCategories, 91, 60, IMAINSTEP, new Short(pretabindex++), 100
});
optBusiness = CurTableWizardUnoDialog.insertRadioButton("optBusiness", SELECTCATEGORY, this,
new String[]
{
PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STATE, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
UIConsts.INTEGERS[8], "HID:WIZARDS_HID_DLGTABLE_OPTBUSINESS", sBusiness, 98, 70, new Short((short) 1), IMAINSTEP, new Short(pretabindex++), 78
});
optPrivate = CurTableWizardUnoDialog.insertRadioButton("optPrivate", SELECTCATEGORY, this,
new String[]
{
PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
UIConsts.INTEGERS[8], "HID:WIZARDS_HID_DLGTABLE_OPTPRIVATE", sPrivate, 182, 70, IMAINSTEP, new Short(pretabindex++), 90
});
CurUnoDialog.insertLabel("lblTableNames",
new String[]
{
PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
8, sTableNames, 91, 82, IMAINSTEP, new Short(pretabindex++), 80
});
try
{
xTableListBox = CurUnoDialog.insertListBox("lstTableNames", 3, null, this,
new String[]
{
"Dropdown", PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_HELPURL, "LineCount", PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
Boolean.TRUE, 12, "HID:WIZARDS_HID_DLGTABLE_LBTABLES", new Short(UnoDialog.getListBoxLineCount()), 91, 92, IMAINSTEP, new Short(pretabindex++), getListboxWidth()
});
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
initializeCategory(BUSINESS);
}
public void selectCategory()
{
if (optBusiness.getState())
{
initializeCategory(BUSINESS);
}
else
{
initializeCategory(PRIVATE);
}
}
public void initializeCategory(int _iCategory)
{
try
{
oCGCategory.initialize(
_iCategory == PRIVATE ? "private" : "business");
xTableListBox.removeItems((short) 0, xTableListBox.getItemCount());
xTableListBox.addItems(oCGCategory.getTableNames(), (short) _iCategory);
initializeTable(0);
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
public void initializeTable(int _iTable)
{
Helper.setUnoPropertyValue(UnoDialog.getModel(xTableListBox), PropertyNames.SELECTED_ITEMS, new short[]
{
(short) _iTable
});
oCGTable.initialize(oCGCategory.xNameAccessTablesNode, _iTable);
super.initialize(oCGTable.getFieldNames(bcolumnnameislimited, imaxcolumnchars), true);
}
public String[] getSelectedFieldNames()
{
String[] displayfieldnames = super.getSelectedFieldNames();
ArrayList<String> afieldnameVector = new ArrayList<String>();
for (int i = 0; i < displayfieldnames.length; i++)
{
try
{
FieldDescription ofielddescription = (FieldDescription) CurTableWizardUnoDialog.fielditems.get(displayfieldnames[i]);
if (ofielddescription != null)
{
afieldnameVector.add(ofielddescription.getName());
}
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
}
String[] fieldnames = new String[afieldnameVector.size()];
return afieldnameVector.toArray(fieldnames);
}
public boolean iscompleted()
{
return getSelectedFieldNames().length > 0;
}
public void addColumnsToDescriptor()
{
XNameAccess xNameAccessFieldNode;
String[] fieldnames = getSelectedFieldNames();
for (int i = 0; i < fieldnames.length; i++)
{
try
{
FieldDescription curfielddescription = (FieldDescription) CurTableWizardUnoDialog.fielditems.get(fieldnames[i]);
PropertyValue[] aProperties = curfielddescription.getPropertyValues();
this.curtabledescriptor.addColumn(aProperties);
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
}
}
public String getTableName()
{
return xTableListBox.getSelectedItem();
}
public String getFirstTableName()
{
String[] fieldnames = super.getSelectedFieldNames();
if ((fieldnames.length) > 0)
{
for (int i = 0; i < CurTableWizardUnoDialog.fielditems.size(); i++)
{
String stablename = PropertyNames.EMPTY_STRING;
try
{
FieldDescription ofielddescription = (FieldDescription) CurTableWizardUnoDialog.fielditems.get(fieldnames[i]);
stablename = ofielddescription.gettablename();
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
if (!stablename.equals(PropertyNames.EMPTY_STRING))
{
return stablename;
}
}
}
return smytable;
}
public void fillupTables()
{
// if (optBusiness.getState())
// else
}
public void fillupFieldsListbox()
{
super.emptyFieldsListBoxes();
}
/* (non-Javadoc)
* @see com.sun.star.awt.XItemListener#itemStateChanged(com.sun.star.awt.ItemEvent)
*/
public void itemStateChanged(ItemEvent arg0)
{
initializeTable((int) xTableListBox.getSelectedItemPos());
}
/* (non-Javadoc)
* @see com.sun.star.lang.XEventListener#disposing(com.sun.star.lang.EventObject)
*/
public void disposing(EventObject arg0)
{
}
protected int ID;
public int getID()
{
return ID;
}
public void setID(String sIncSuffix)
{
}
public void shiftFromLeftToRight(String[] SelItems, String[] NewItems)
{
if (!CurTableWizardUnoDialog.verifyfieldcount(NewItems.length))
{
for (int i = 0; i < SelItems.length; i++)
{
int selindex = JavaTools.FieldInList(NewItems, SelItems[i]);
super.xSelectedFieldsListBox.removeItems((short) selindex, (short) 1);
/**TODO In this context the items should be better placed at their original position.
* but how is this position retrieved?
*/
super.xFieldsListBox.addItem(SelItems[i], xFieldsListBox.getItemCount());
}
}
else
{
for (int i = 0; i < NewItems.length; i++)
{
int iduplicate;
if (CurTableWizardUnoDialog.fielditems.containsKey(NewItems[i]))
{
iduplicate = JavaTools.getDuplicateFieldIndex(NewItems, NewItems[i]);
if (iduplicate != -1)
{
XNameAccess xNameAccessFieldNode;
String sdisplayname = Desktop.getUniqueName(NewItems, NewItems[iduplicate], PropertyNames.EMPTY_STRING);
FieldDescription curfielddescription = new FieldDescription(xMSF, aLocale, this, sdisplayname, NewItems[iduplicate], imaxcolumnchars);
CurTableWizardUnoDialog.fielditems.put(sdisplayname, curfielddescription);
NewItems[iduplicate] = sdisplayname;
setSelectedFieldNames(NewItems);
}
}
else
{
CurTableWizardUnoDialog.fielditems.put(NewItems[i], new FieldDescription(xMSF, aLocale, this, NewItems[i], NewItems[i], imaxcolumnchars));
}
}
}
CurTableWizardUnoDialog.setcompleted(TableWizard.SOMAINPAGE, NewItems.length > 0);
}
public void shiftFromRightToLeft(String[] SelItems, String[] NewItems)
{
for (int i = 0; i < SelItems.length; i++)
{
if (CurTableWizardUnoDialog.fielditems.containsKey(SelItems[i]))
{
CurTableWizardUnoDialog.fielditems.remove(SelItems[i]);
this.curtabledescriptor.dropColumnbyName(SelItems[i]);
}
}
CurTableWizardUnoDialog.setcompleted(TableWizard.SOMAINPAGE, NewItems.length > 0);
}
public void moveItemDown(String item)
{
}
public void moveItemUp(String item)
{
}
}