package org.nightlabs.jfire.trade.admin.ui.overview;
import javax.jdo.JDOHelper;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.PartInitException;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.base.ui.util.RCPUtil;
import org.nightlabs.base.ui.wizard.DynamicPathWizardDialog;
import org.nightlabs.jfire.accounting.Currency;
import org.nightlabs.jfire.accounting.id.CurrencyID;
import org.nightlabs.jfire.trade.admin.ui.TradeAdminPlugin;
import org.nightlabs.jfire.trade.admin.ui.editor.CurrencyCreateWizard;
import org.nightlabs.jfire.trade.admin.ui.editor.CurrencyEditor;
import org.nightlabs.jfire.trade.admin.ui.editor.CurrencyEditorInput;
import org.nightlabs.jfire.trade.admin.ui.editor.CurrencySection;
import org.nightlabs.jfire.trade.admin.ui.resource.Messages;
/**
*
* @author vince
*
*/
public class CurrencyTypeCategory
extends AbstractTradeAdminCategory{
private CurrencyTable currencyTable;
private CreateCurrencyAction menuCreateCurrencyAction;
public CurrencyTypeCategory(
TradeAdminCategoryFactory tradeAdminCategoryFactory) {
super(tradeAdminCategoryFactory);
menuCreateCurrencyAction = new CreateCurrencyAction();
}
@Override
protected Composite _createComposite(Composite parent) {
currencyTable = new CurrencyTable(parent, SWT.NONE);
hookContextMenu();
currencyTable.addDoubleClickListener(doubleClickListener);
return currencyTable;
}
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
CurrencyTypeCategory.this.fillContextMenu(manager);
}
});
Menu menu = menuMgr.createContextMenu(currencyTable);
currencyTable.setMenu(menu);
}
private void fillContextMenu(IMenuManager manager) {
manager.add(menuCreateCurrencyAction);
}
private IDoubleClickListener doubleClickListener = new IDoubleClickListener(){
public void doubleClick(org.eclipse.jface.viewers.DoubleClickEvent event) {
StructuredSelection s = (StructuredSelection)event.getSelection();
if (s.isEmpty())
return;
Currency item = currencyTable.getFirstSelectedElement();
if (item instanceof Currency) {
try{
CurrencyID currencyID = (CurrencyID) JDOHelper.getObjectId(item);
CurrencyEditorInput currencyEditorInput= new CurrencyEditorInput(currencyID);
RCPUtil.openEditor(currencyEditorInput, CurrencyEditor.ID_EDITOR);
}catch(PartInitException e){
throw new RuntimeException(e);
}
}
}
};
public class CreateCurrencyAction extends Action{
public CreateCurrencyAction(){
super();
setId(CreateCurrencyAction.class.getName());
setImageDescriptor(SharedImages.getSharedImageDescriptor(
TradeAdminPlugin.getDefault(),
CurrencySection.class,
"Create"));
setToolTipText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.overview.CurrencyTypeCategory.CreateCurrencyAction.toolTipText"));
setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.overview.CurrencyTypeCategory.CreateCurrencyAction.text"));
}
@Override
public void run() {
CurrencyCreateWizard wizard= new CurrencyCreateWizard();
try {
DynamicPathWizardDialog dialog = new DynamicPathWizardDialog(getComposite().getShell(),wizard);
int result = dialog.open();
if(result == Dialog.OK) {
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
}