package org.nightlabs.jfire.trade.admin.ui.editor.ownervendor;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.wizard.DynamicPathWizardDialog;
import org.nightlabs.jfire.accounting.book.LocalAccountantDelegate;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.trade.LegalEntity;
import org.nightlabs.jfire.trade.ui.legalentity.edit.LegalEntitySearchCreateWizard;
/**
* @author Fitas [at] NightLabs [dot] de
* @author Daniel [at] NightLabs [dot] de
*/
public class LegalEntityEditComposite
extends XComposite
{
private Text legalText;
private LegalEntity legalEntity;
private ListenerList legalEntityValueChangedListeners = new ListenerList();
public LegalEntityEditComposite(Composite parent, int style)
{
super(parent, style);
this.getGridLayout().numColumns = 2;
this.getGridData().grabExcessVerticalSpace = false;
legalText = new Text(this, XComposite.getBorderStyle(this) | SWT.SINGLE | SWT.READ_ONLY);
legalText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Button legalButton = new Button(this, SWT.FLAT);
legalButton.setText("..."); //$NON-NLS-1$
legalButton.addSelectionListener(new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
legalPressed();
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
}
protected void legalPressed()
{
LegalEntitySearchCreateWizard wiz = new LegalEntitySearchCreateWizard("",true); //$NON-NLS-1$
DynamicPathWizardDialog dlg = new DynamicPathWizardDialog(wiz);
if (dlg.open() == Window.OK) {
legalEntity = wiz.getLegalEntity();
fireLegalEntityValueChangedEvent();
updateUI();
}
}
protected void updateUI() {
legalText.setText(legalEntity == null ? "" : legalEntity.getPerson().getDisplayName()); //$NON-NLS-1$
}
public LegalEntity getLegalEntity() {
return legalEntity;
}
/**
* sets the {@link ProductType} to display the MoneyFlowConfiguration for
* @param productType the proudctType to set
*/
public void setLegalEntity(final LegalEntity legalEntity)
{
this.legalEntity = legalEntity;
updateUI();
}
protected void updateDelegate(final LocalAccountantDelegate delegate) {
}
protected void fireLegalEntityValueChangedEvent()
{
Object[] listeners = legalEntityValueChangedListeners.getListeners();
if (listeners.length < 1)
return;
for (Object l : listeners) {
ILegalEntityValueChangedListener listener = (ILegalEntityValueChangedListener) l;
listener.legalEntityValueChanged();
}
}
public void addLegalEntityValueChangedListener(ILegalEntityValueChangedListener listener)
{
legalEntityValueChangedListeners.add(listener);
}
public void removeLegalEntityValueChangedListener(ILegalEntityValueChangedListener listener)
{
legalEntityValueChangedListeners.remove(listener);
}
}