blob: a4829e48e32a22c1ef540a94826db94fc928b158 [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.report;
import com.sun.star.wizards.common.JavaTools;
import com.sun.star.wizards.common.PropertyNames;
import com.sun.star.wizards.ui.*;
import com.sun.star.wizards.db.*;
import java.util.Vector;
public class GroupFieldHandler extends FieldSelection
{
private IReportDocument CurReportDocument;
private Vector GroupFieldVector = new Vector();
private QueryMetaData CurDBMetaData;
private WizardDialog oWizardDialog;
private static final short MAXSELFIELDS = 4;
public GroupFieldHandler(IReportDocument _CurReportDocument, WizardDialog _CurUnoDialog)
{
super(_CurUnoDialog, ReportWizard.SOGROUPPAGE, 95, 27, 210, 127,
_CurUnoDialog.m_oResource.getResText(UIConsts.RID_REPORT + 19),
_CurUnoDialog.m_oResource.getResText(UIConsts.RID_REPORT + 50), 34340, false);
try
{
this.oWizardDialog = _CurUnoDialog;
this.CurReportDocument = _CurReportDocument;
this.CurDBMetaData = CurReportDocument.getRecordParser();
CurUnoDialog.setControlProperty("lstFields_2", "MultiSelection", Boolean.FALSE);
CurUnoDialog.setControlProperty("lstSelFields_2", "MultiSelection", Boolean.FALSE);
addFieldSelectionListener(new FieldSelectionListener());
String sNote = ReportWizard.getBlindTextNote(_CurReportDocument, _CurUnoDialog.m_oResource);
CurUnoDialog.insertControlModel("com.sun.star.awt.UnoControlFixedTextModel", "lblBlindTextNote_1",
new String[]
{
PropertyNames.PROPERTY_ENABLED, PropertyNames.PROPERTY_HEIGHT, PropertyNames.PROPERTY_LABEL, PropertyNames.PROPERTY_MULTILINE, PropertyNames.PROPERTY_POSITION_X, PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_WIDTH
},
new Object[]
{
Boolean.FALSE, 18, sNote, Boolean.TRUE, 95, 158, new Integer(ReportWizard.SOGROUPPAGE), 209
});
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public boolean isGroupField(String _FieldName)
{
return (JavaTools.FieldInList(CurDBMetaData.GroupFieldNames, _FieldName) != -1);
}
public void initialize()
{
try
{
Vector NormalFieldsVector = new Vector();
Vector SelFieldsVector = new Vector();
String[] sFieldNames = CurDBMetaData.getFieldNames();
for (int i = 0; i < sFieldNames.length; i++)
{
String sfieldtitle = sFieldNames[i]; // CurDBMetaData.getFieldTitle(sFieldNames[i]);
if (isGroupField(sFieldNames[i]))
{
SelFieldsVector.add(sfieldtitle);
}
else
{
NormalFieldsVector.add(sfieldtitle);
}
}
String[] SelFields = new String[SelFieldsVector.size()];
SelFieldsVector.toArray(SelFields);
String[] NormalFields = new String[NormalFieldsVector.size()];
NormalFieldsVector.toArray(NormalFields);
super.initialize(NormalFields, SelFields, true);
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeGroupFieldNames()
{
emptyFieldsListBoxes();
GroupFieldVector.removeAllElements();
CurUnoDialog.setControlProperty("lblBlindTextNote_1", PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
}
public void getGroupFieldNames(CommandMetaData CurDBMetaData)
{
String[] GroupFieldNames = new String[GroupFieldVector.size()];
GroupFieldVector.copyInto(GroupFieldNames);
CurDBMetaData.GroupFieldNames = GroupFieldNames;
}
// @Override
protected void toggleListboxButtons(short iFieldsSelIndex, short iSelFieldsSelIndex)
{
super.toggleListboxButtons(iFieldsSelIndex, iSelFieldsSelIndex);
int iSelCount = xSelectedFieldsListBox.getItemCount();
if (iSelCount >= MAXSELFIELDS)
{
CurUnoDialog.setControlProperty("cmdMoveSelected" + sIncSuffix, PropertyNames.PROPERTY_ENABLED, Boolean.FALSE);
}
}
public void selectFields(boolean bMoveAll)
{
int iSelCount = xSelectedFieldsListBox.getItemCount();
if (iSelCount < MAXSELFIELDS)
{
super.selectFields(bMoveAll);
}
}
/* protected */ class FieldSelectionListener implements com.sun.star.wizards.ui.XFieldSelectionListener
{
public void moveItemDown(String Selitem)
{
CurReportDocument.refreshGroupFields(xSelectedFieldsListBox.getItems());
}
public void moveItemUp(String item)
{
CurReportDocument.refreshGroupFields(xSelectedFieldsListBox.getItems());
}
public void shiftFromLeftToRight(String[] Selitems, String[] Newitems)
{
String CurGroupTitle = Selitems[0];
int iSelCount = xSelectedFieldsListBox.getItemCount();
String[] CurGroupNames = xFieldsListBox.getItems();
CurReportDocument.liveupdate_addGroupNametoDocument(CurGroupNames, CurGroupTitle, GroupFieldVector, CurReportDocument.getReportPath(), iSelCount);
CurUnoDialog.setControlProperty("lblBlindTextNote_1", PropertyNames.PROPERTY_ENABLED, Boolean.TRUE);
if (iSelCount >= MAXSELFIELDS)
{
toggleMoveButtons(false, false);
}
}
public void shiftFromRightToLeft(String[] OldSelitems, String[] Newitems)
{
int iSelPos = OldSelitems.length;
if (iSelPos > 0)
{
String OldGroupTitle = OldSelitems[0];
String[] NewSelList = xSelectedFieldsListBox.getItems();
CurReportDocument.liveupdate_removeGroupName(NewSelList, OldGroupTitle, GroupFieldVector);
String[] NewSelGroupNames = xSelectedFieldsListBox.getItems();
CurUnoDialog.setControlProperty("lblBlindTextNote_1", PropertyNames.PROPERTY_ENABLED, Boolean.valueOf(NewSelGroupNames.length == 0));
// CurReportDocument.refreshGroupFields(xSelectedFieldsListBox.getItems());
}
}
public int getID()
{
// TODO: here is a good place for a comment, isn't it?
return 2;
}
public void setID(String sIncSuffix)
{
}
}
}