/* ***************************************************************************** * JFire - it's hot - Free ERP System - http://jfire.org * * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * 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., * * 51 Franklin St, Fifth Floor, * * Boston, MA 02110-1301 USA * * * * Or get it online : * * http://opensource.org/licenses/lgpl-license.php * * * * * ******************************************************************************/ package org.nightlabs.jfire.trade.ui.legalentity.config; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.nightlabs.base.ui.table.AbstractTableComposite; import org.nightlabs.jfire.organisation.Organisation; import org.nightlabs.jfire.person.Person; import org.nightlabs.jfire.prop.IStruct; import org.nightlabs.jfire.prop.StructField; import org.nightlabs.jfire.prop.dao.StructLocalDAO; import org.nightlabs.jfire.prop.id.StructFieldID; import org.nightlabs.jfire.prop.id.StructLocalID; import org.nightlabs.jfire.trade.config.LegalEntityViewConfigModule; import org.nightlabs.progress.NullProgressMonitor; import org.nightlabs.util.NLLocale; /** * @author Alexander Bieber <alex[AT]nightlabs[DOT]de> * */ public class LEViewPersonStructFieldTable extends AbstractTableComposite<String> { private static class ContentProvider implements IStructuredContentProvider { private List<String> cfModFields = new ArrayList<String>(); private LegalEntityViewConfigModule inputCfMod; public Object[] getElements(Object inputElement) { if (! (inputElement instanceof LegalEntityViewConfigModule)) return null; LegalEntityViewConfigModule cfMod = (LegalEntityViewConfigModule)inputElement; if (inputCfMod == null) { if ((cfMod != null)) { cfModFields.clear(); cfModFields.addAll(cfMod.getStructFields()); inputCfMod = cfMod; } } return cfModFields.toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { inputCfMod = null; } public void add(String structFieldOID) { cfModFields.add(structFieldOID); } public void moveUp(String structFieldOID) { int i = cfModFields.indexOf(structFieldOID); if (i <= 0 ) return; int newIdx = i-1; cfModFields.remove(i); cfModFields.add(newIdx,structFieldOID); } public void moveDown(String structFieldOID) { int i = cfModFields.indexOf(structFieldOID); if ((i >= cfModFields.size()-1) || (i < 0)) return; int newIdx = i+1; cfModFields.remove(i); cfModFields.add(newIdx,structFieldOID); } public void remove(String structFieldOID) { cfModFields.remove(structFieldOID); } public List<String> getCfModFields() { return cfModFields; } public boolean isFirst(String structFieldOID) { return cfModFields.indexOf(structFieldOID) == 0; } public boolean isLast(String structFieldOID) { return cfModFields.indexOf(structFieldOID) == cfModFields.size() - 1; } } private static class LabelProvider extends org.eclipse.jface.viewers.LabelProvider implements ITableLabelProvider { public Image getColumnImage(Object element, int columnIndex) { return null; } public String getColumnText(Object element, int columnIndex) { StructFieldID fieldID = null; try { fieldID = new StructFieldID((String)element); } catch (Exception e) { throw new RuntimeException(e); } IStruct struct = StructLocalDAO.sharedInstance().getStructLocal( StructLocalID.create( Organisation.DEV_ORGANISATION_ID, Person.class, Person.STRUCT_SCOPE, Person.STRUCT_LOCAL_SCOPE ), new NullProgressMonitor() ); StructField field = null; try { field = struct.getStructField( fieldID.structBlockOrganisationID, fieldID.structBlockID, fieldID.structFieldOrganisationID, fieldID.structFieldID ); } catch (Exception e) { throw new RuntimeException(e); } return field.getName().getText(NLLocale.getDefault().getLanguage()); } } public LEViewPersonStructFieldTable(Composite parent, int style) { super(parent, style, true); } @Override protected void createTableColumns(TableViewer tableViewer, Table table) { } @Override protected void setTableProvider(TableViewer tableViewer) { tableViewer.setContentProvider(new ContentProvider()); tableViewer.setLabelProvider(new LabelProvider()); } public void moveSelectedUp() { IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection(); if ( selection.size() != 1) return; ((ContentProvider)getTableViewer().getContentProvider()).moveUp((String)selection.getFirstElement()); } public void moveSelectedDown() { IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection(); if ( selection.size() != 1) return; ((ContentProvider)getTableViewer().getContentProvider()).moveDown((String)selection.getFirstElement()); } public void removeSelected() { IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection(); if ( selection.size() != 1) return; ((ContentProvider)getTableViewer().getContentProvider()).remove((String)selection.getFirstElement()); } public boolean isSelectedFirst() { IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection(); if ( selection.size() != 1) return false; return ((ContentProvider)getTableViewer().getContentProvider()).isFirst(((String)selection.getFirstElement())); } public boolean isSelectedLast() { IStructuredSelection selection = (IStructuredSelection)getTableViewer().getSelection(); if ( selection.size() != 1) return false; return ((ContentProvider)getTableViewer().getContentProvider()).isLast(((String)selection.getFirstElement())); } public List<String> getStructFields() { return ((ContentProvider)getTableViewer().getContentProvider()).getCfModFields(); } public void addStructField(String structFieldOID) { ((ContentProvider) getTableViewer().getContentProvider()).add(structFieldOID); } }