/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.actions;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.MenuManager;
import org.teiid.designer.diagram.ui.DiagramUiConstants;
import org.teiid.designer.diagram.ui.editor.DiagramEditorUtil;
/**
* MenuManager desiged to create and maintain router type selection actions. This includes handling the update to the preferences.
*
* @since 8.0
*/
public class RouterTypeMenuManager extends MenuManager implements DiagramUiConstants.LinkRouter {
private static final String LABEL = DiagramUiConstants.Util.getString("LinkSelectionAction.label"); //$NON-NLS-1$
private RouterTypeAction directAction;
private RouterTypeAction orthogonalAction;
private RouterTypeAction manualAction;
private boolean singleLinkEdit = false;
/**
* @since 4.2
*/
public RouterTypeMenuManager() {
super(LABEL, "LinkSelectionAction"); //$NON-NLS-1$
createMenu();
}
public void createMenu() {
int currentIndex = DiagramEditorUtil.getCurrentDiagramRouterStyle();
String actionString = DiagramUiConstants.Util.getString("LinkSelectionAction.direct"); //$NON-NLS-1$
directAction = new RouterTypeAction(actionString, DIRECT, this);
directAction.setToolTipText(actionString);
directAction.setEnabled(true);
directAction.setChecked(true);
addActionToMenu(directAction);
actionString = DiagramUiConstants.Util.getString("LinkSelectionAction.orthogonal"); //$NON-NLS-1$
orthogonalAction = new RouterTypeAction(actionString, ORTHOGONAL, this);
orthogonalAction.setToolTipText(actionString);
orthogonalAction.setEnabled(true);
orthogonalAction.setChecked(true);
addActionToMenu(orthogonalAction);
actionString = DiagramUiConstants.Util.getString("LinkSelectionAction.manual"); //$NON-NLS-1$
manualAction = new RouterTypeAction(actionString, MANUAL, this);
manualAction.setToolTipText(actionString);
manualAction.setEnabled(true);
manualAction.setChecked(true);
addActionToMenu(manualAction);
// don't know why, but all check boxes needed to be intialized to "true", then unchecked.
if (currentIndex != MANUAL) manualAction.setChecked(false);
if (currentIndex != ORTHOGONAL) orthogonalAction.setChecked(false);
if (currentIndex != DIRECT) directAction.setChecked(false);
}
protected void addActionToMenu( Action action ) {
ActionContributionItem item = new ActionContributionItem(action);
this.add(item);
}
public void handleSelection( int index,
boolean initialSet ) {
switch (index) {
case DIRECT: {
directAction.setChecked(true);
manualAction.setChecked(false);
orthogonalAction.setChecked(false);
DiagramEditorUtil.setCurrentDiagramRouterStyle(index);
}
break;
case ORTHOGONAL: {
orthogonalAction.setChecked(true);
manualAction.setChecked(false);
directAction.setChecked(false);
DiagramEditorUtil.setCurrentDiagramRouterStyle(index);
}
break;
case MANUAL: {
manualAction.setChecked(true);
directAction.setChecked(false);
orthogonalAction.setChecked(false);
DiagramEditorUtil.setCurrentDiagramRouterStyle(index);
}
}
}
public void setInitialSelection() {
int index = DiagramEditorUtil.getCurrentDiagramRouterStyle();
handleSelection(index, true);
}
/**
* @return Returns the singleLinkEdit.
* @since 4.2
*/
public boolean isSingleLinkEdit() {
return this.singleLinkEdit;
}
/**
* @param singleLinkEdit The singleLinkEdit to set.
* @since 4.2
*/
public void setSingleLinkEdit( boolean singleLinkEdit ) {
this.singleLinkEdit = singleLinkEdit;
}
public void setEnabled( boolean enabled ) {
directAction.setEnabled(enabled);
orthogonalAction.setEnabled(enabled);
manualAction.setEnabled(enabled);
}
}