blob: e4c9a3fe1175a778f18cd1c03a7e17dd88023449 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Zoltan Ujhelyi and Daniel Varro.
* 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:
* Zoltan Ujhelyi - initial API and implementation
*******************************************************************************/
package org.eclipse.viatra2.visualisation.patterns.actions;
import org.eclipse.viatra2.frameworkgui.actions.AbstractFrameworkGUIAction;
import org.eclipse.viatra2.frameworkgui.content.transformation.TransformationContent.MachineDummy;
import org.eclipse.viatra2.gtasmmodel.gtasm.metamodel.asm.definitions.Machine;
import org.eclipse.viatra2.visualisation.IVisualisationDescriptor;
import org.eclipse.viatra2.visualisation.patterns.PatternGraphDescriptor;
import org.eclipse.viatra2.visualisation.view.ViatraVisualisationView;
/**
* This action is used to display a pattern graph in the graph viewer
* @author Zoltan Ujhelyi
*
*/
public class VisualisePatternGraphAction extends AbstractFrameworkGUIAction {
/**
* Initializes a pattern graph visualisation action.
*/
public VisualisePatternGraphAction() {
setText("Visualise Pattern Graph");
setToolTipText("Displays patterns from this machine visually.");
}
/* (non-Javadoc)
* @see org.eclipse.viatra2.frameworkgui.actions.AbstractFrameworkGUIAction#isEnabled()
*/
@Override
public boolean isEnabled() {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
super.run();
refreshSelection();
Object c = getFirstSelected();
if (c instanceof MachineDummy) {
Machine machine = ((MachineDummy) c).getMachine();
ViatraVisualisationView view = ViatraVisualisationView.openView();
IVisualisationDescriptor newDescriptor = view.getDescriptor(machine);
PatternGraphDescriptor descriptor;
if (newDescriptor == null || !(newDescriptor instanceof PatternGraphDescriptor)) {
descriptor = new PatternGraphDescriptor();
descriptor.setMachine(machine);
} else {
descriptor = (PatternGraphDescriptor) newDescriptor;
}
view.setDescriptor(machine, descriptor);
}
}
}