/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.wizards.toolintegration.api; import java.util.Map; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MenuEvent; import org.eclipse.swt.events.MenuListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Table; import de.rcenvironment.core.datamodel.api.EndpointActionType; import de.rcenvironment.core.gui.wizards.toolintegration.ToolIntegrationWizard; /** * Extended interface for a {@link WizardPage} for the {@link ToolIntegrationWizard}. * * @author Sascha Zur */ public abstract class ToolIntegrationWizardPage extends WizardPage { protected MenuItem itemAdd; protected MenuItem itemEdit; protected MenuItem itemRemove; protected ToolIntegrationWizardPage(String pageName) { super(pageName); } protected void fillContextMenu(Table tab) { Menu menu = new Menu(tab); itemAdd = new MenuItem(menu, SWT.PUSH); itemAdd.setText(EndpointActionType.ADD.toString()); itemEdit = new MenuItem(menu, SWT.PUSH); itemEdit.setText(EndpointActionType.EDIT.toString()); itemRemove = new MenuItem(menu, SWT.PUSH); itemRemove.setText(EndpointActionType.REMOVE.toString()); final SelectionAdapter buttonListener = new ButtonSelectionAdapter(itemAdd, itemEdit, itemRemove, tab); itemRemove.addSelectionListener(buttonListener); itemEdit.addSelectionListener(buttonListener); itemAdd.addSelectionListener(buttonListener); menu.addMenuListener(new MenuListener() { @Override public void menuShown(MenuEvent arg0) { ((ButtonSelectionAdapter) buttonListener).updateContextActivation(); } @Override public void menuHidden(MenuEvent arg0) { } }); tab.setMenu(menu); ((ButtonSelectionAdapter) buttonListener).updateContextActivation(); } /** * SelectionAdapter for the menu context. * * @author Goekhan Guerkan */ private class ButtonSelectionAdapter extends SelectionAdapter { private MenuItem itemAdd; private MenuItem itemEdit; private MenuItem itemRemove; private Table table; ButtonSelectionAdapter(MenuItem itemAdd, MenuItem itemEdit, MenuItem itemRemove, Table tab) { this.itemAdd = itemAdd; this.itemEdit = itemEdit; this.itemRemove = itemRemove; this.table = tab; } @Override public void widgetSelected(SelectionEvent e) { if (e.widget == (itemAdd)) { onAddClicked(); } else if (e.widget == itemEdit) { // edit selected; relies on proper button activation onEditClicked(); } else if (e.widget == itemRemove) { // remove selected; relies on proper button activation onRemoveClicked(); } // updateTable(); updateContextActivation(); } private void updateContextActivation() { itemEdit.setEnabled(table.getSelectionCount() > 0); itemRemove.setEnabled(table.getSelectionCount() > 0); } } /** * Sets a new configuration map that is chosen by the user and is used to update the page. * * @param newConfigurationMap from the wizard */ public abstract void setConfigMap(Map<String, Object> newConfigurationMap); protected void onAddClicked() {} protected void onEditClicked() {} protected void onRemoveClicked() {} /** * Updates the page before it is shown. This is for example for refreshing some gui elements. */ public abstract void updatePage(); }