blob: cbcf79128fe9c1fde68478b9a97dc4b5e51f93c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.actions;
import java.util.List;
import org.eclipse.bpel.ui.BPELEditor;
import org.eclipse.bpel.ui.Messages;
import org.eclipse.bpel.ui.editparts.BPELEditPart;
import org.eclipse.bpel.ui.editparts.ProcessEditPart;
import org.eclipse.bpel.ui.figures.ILayoutAware;
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.ui.IWorkbenchPart;
public class ToggleLayoutOrientationAction extends SelectionAction {
public final static String ACTION_ID = "ToggleLayoutOrientationAction"; //$NON-NLS-1$
public ToggleLayoutOrientationAction(IWorkbenchPart part) {
super(part);
setId(ACTION_ID);
setText(getText());
}
@Override
public void run() {
BPELEditor editor = (BPELEditor)getWorkbenchPart();
editor.setHorizontalLayout(!editor.isHorizontalLayout());
// Get the processEditPart
ProcessEditPart process = (ProcessEditPart)editor.getGraphicalViewer().getEditPartRegistry().get(editor.getProcess());
doSwitchOrientation(process, editor.isHorizontalLayout());
setText(getText());
editor.refreshGraphicalViewer();
}
private void doSwitchOrientation(BPELEditPart part, boolean horizontal){
List<BPELEditPart> children = part.getChildren();
for(BPELEditPart child : children){
doSwitchOrientation(child, horizontal);
}
if(part instanceof ILayoutAware){
((ILayoutAware)part).switchLayout(horizontal);
}
}
@Override
protected boolean calculateEnabled() {
List sel = getSelectedObjects();
return sel.size() > 0 && sel.get(0) instanceof org.eclipse.bpel.model.Process;
}
@Override
public String getText() {
BPELEditor editor = (BPELEditor)getWorkbenchPart();
if(editor.isHorizontalLayout())
return Messages.ToggleLayoutOrientation_2;
else
return Messages.ToggleLayoutOrientation_1;
}
}