blob: 97af363c8ee17154cb8dd10b13252f8bf4ccdbe8 [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.modelspace.actions;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.viatra2.core.IModelManager;
import org.eclipse.viatra2.core.IModelSpace;
import org.eclipse.viatra2.framework.IFramework;
import org.eclipse.viatra2.frameworkgui.actions.AbstractFrameworkGUIAction;
import org.eclipse.viatra2.frameworkgui.content.FrameworkContainer;
import org.eclipse.viatra2.frameworkgui.views.FrameworkTreeView;
import org.eclipse.viatra2.logger.Logger;
import org.eclipse.viatra2.visualisation.IVisualisationDescriptor;
import org.eclipse.viatra2.visualisation.modelspace.ModelSpaceVisualisationDescriptor;
import org.eclipse.viatra2.visualisation.view.ViatraVisualisationView;
/**
* @author Zoltan Ujhelyi
*/
public class VisualiseModelSpaceAction extends AbstractFrameworkGUIAction {
ModelSpaceVisualisationDescriptor descriptor;
/**
* Initializes the model space visualisation action
*/
public VisualiseModelSpaceAction() {
super();
setText("Visualise Model Space");
setToolTipText("Graph Visualisation for the Model Space");
setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
.getImageDescriptor(ISharedImages.IMG_OBJ_ELEMENT));
}
/**
* Initializes the model space visualisation action
* @param part
*/
public VisualiseModelSpaceAction(FrameworkTreeView part) {
this();
setupInternals(part);
}
/*
* (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() {
refreshSelection();
Object c = getFirstSelected();
Logger log = iViatraFramework.getLogger();
if (c instanceof FrameworkContainer) {
IFramework framework = ((FrameworkContainer) c).getFramework();
IModelSpace modelSpace = (framework.getTopmodel());
IModelManager manager = modelSpace.getModelManager();
if (manager == null) {
log
.error("***The machine is not connected to a Model Space***");
return;
}
// open view
ViatraVisualisationView view = ViatraVisualisationView.openView();
IVisualisationDescriptor newDescriptor = view.getDescriptor(framework);
if (newDescriptor == null || !(newDescriptor instanceof ModelSpaceVisualisationDescriptor)) {
descriptor = new ModelSpaceVisualisationDescriptor();
view.setDescriptor(framework, descriptor);
} else {
descriptor = (ModelSpaceVisualisationDescriptor) newDescriptor;
IModelManager oldManager = descriptor.getModelManager();
if (oldManager != null && !manager.equals(oldManager)) {
if (!MessageDialog.openConfirm(PlatformUI.getWorkbench().getDisplay()
.getActiveShell(), "Graph overwrite", "Another model space is already visualised. Do you want to overwrite it?")) {
return;
}
}
}
descriptor.setFramework(framework);
descriptor.includeItem(manager.getRoot());
descriptor.setModelManager(manager);
}
}
}