Skip to content
Snippets Groups Projects
Commit 5588d378 authored by Lukas Ladenberger's avatar Lukas Ladenberger
Browse files

implemented control panel for managing open simulations

parent 518f4ab8
No related branches found
No related tags found
No related merge requests found
......@@ -13,17 +13,15 @@
<extension
point="org.eclipse.ui.editors">
<editor
class="de.bmotionstudio.gef.editor.BMotionStudioEditor"
contributorClass="de.bmotionstudio.gef.editor.BMotionStudioContributor"
default="true"
extensions="bmso"
icon="icons/logo_bmotion.png"
id="de.bmotionstudio.gef.editor.BMotionStudioEditor"
launcher="de.bmotionstudio.gef.editor.BMotionStudioLauncher"
name="BMotion Studio">
</editor>
</extension>
<extension
point="org.eclipse.ui.newWizards">
<extension point="org.eclipse.ui.newWizards">
<category
id="de.bmotionstudio.gef.editor.wizards"
name="BMotion Studio">
......@@ -85,6 +83,14 @@
name="Outline"
restorable="true">
</view>
<view
allowMultiple="false"
category="de.bmotionstudio.views"
class="de.bmotionstudio.gef.editor.controlpanel.ControlPanel"
id="de.bmotionstudio.gef.editor.ControlPanel"
name="Control Panel"
restorable="true">
</view>
</extension>
<extension
point="org.eclipse.ui.menus">
......
......@@ -4,6 +4,7 @@ import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
import de.bmotionstudio.gef.editor.controlpanel.ControlPanel;
import de.bmotionstudio.gef.editor.library.LibraryView;
import de.bmotionstudio.gef.editor.observer.view.ObserverView;
......@@ -14,6 +15,8 @@ public class BMSPerspectiveFactory implements IPerspectiveFactory {
@Override
public void createInitialLayout(IPageLayout layout) {
layout.setEditorAreaVisible(false);
String editorArea = layout.getEditorArea();
// ProB Event View (Top-Left)
......@@ -27,42 +30,29 @@ public class BMSPerspectiveFactory implements IPerspectiveFactory {
leftb.addView("de.prob.ui.HistoryView");
leftb.addView("de.prob.ui.EventErrorView");
// Navigator + Rodin Problem View (Bottom-Left)
// IFolderLayout leftb = layout.createFolder("leftb",
// IPageLayout.BOTTOM,
// 0.6f, "left");
// leftb.addView("fr.systerel.explorer.navigator.view");
// Outline View + Palette View + Library View (Right)
IFolderLayout right1 = layout.createFolder("right1", IPageLayout.RIGHT,
0.80f, editorArea);
right1.addView(BMSPaletteView.ID);
right1.addView(BMotionOutlineView.ID);
// Library View + Event-B Explorer
IFolderLayout right2 = layout.createFolder("right2",
IPageLayout.BOTTOM, 0.60f, "right1");
right2.addView(LibraryView.ID);
right2.addView("fr.systerel.explorer.navigator.view");
// ProB State View + ProB History + ProB Event Error View (Right)
// IFolderLayout right2 = layout.createFolder("right2",
// IPageLayout.RIGHT,
// 0.6f, "right1");
// right2.addView("de.prob.ui.StateView");
// right2.addView("de.prob.ui.HistoryView");
// right2.addView("de.prob.ui.EventErrorView");
// Placeholder for new visualization views
IFolderLayout top = layout.createFolder("bottom1", IPageLayout.BOTTOM,
0.20f, IPageLayout.ID_EDITOR_AREA);
top.addPlaceholder(VisualizationViewPart.ID + ":*");
// Properties view + observer view + placeholder for new visualization
// views
// Properties view + observer view + control panel
IFolderLayout bottom = layout.createFolder("bottom2",
IPageLayout.BOTTOM, 0.65f, "bottom1");
bottom.addView(IPageLayout.ID_PROP_SHEET);
bottom.addView(ObserverView.ID);
bottom.addView(ControlPanel.ID);
}
......
......@@ -8,6 +8,8 @@ package de.bmotionstudio.gef.editor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
......@@ -40,6 +42,8 @@ public class BMotionEditorPlugin extends AbstractUIPlugin {
public static final String FILEEXT_STUDIO = "bmso";
public static List<ISimulationListener> openSimulationListeners = new ArrayList<ISimulationListener>();
// The shared instance
private static BMotionEditorPlugin plugin;
......@@ -55,6 +59,8 @@ public class BMotionEditorPlugin extends AbstractUIPlugin {
static BMotionStudioEditorPage activeBMotionStudioEditor = null;
public static Map<String, Simulation> openSimulations = new HashMap<String, Simulation>();
/**
* The constructor
*/
......@@ -222,4 +228,20 @@ public class BMotionEditorPlugin extends AbstractUIPlugin {
xstream.alias("children", BControlList.class);
}
public static void openSimulation(Simulation simulation) {
openSimulations.put(simulation.getProjectFile().getName(), simulation);
for (ISimulationListener l : openSimulationListeners)
l.openSimulation(simulation);
}
public static void closeSimulation(Simulation simulation) {
openSimulations.remove(simulation.getProjectFile().getName());
for (ISimulationListener l : openSimulationListeners)
l.closeSimulation(simulation);
}
public static Map<String, Simulation> getOpenSimulations() {
return openSimulations;
}
}
......@@ -100,7 +100,7 @@ public class BMotionOutlinePage extends ContentOutlinePage {
}
private void initializeOutlineViewer() {
getViewer().setContents(viewPart.getVisualization());
// getViewer().setContents(viewPart.getVisualization());
}
/**
......
......@@ -292,7 +292,6 @@ public class BMotionStudioEditor extends EditorPart implements
"New Visualization View", visualization);
String secId = UUID.randomUUID().toString();
createVisualizationViewPart(secId, visualizationView);
simulation.getVisualizationViews()
.put(secId, visualizationView);
......@@ -317,7 +316,10 @@ public class BMotionStudioEditor extends EditorPart implements
// if (viewReference != null) {
// } else {
// If not, create a new one
createVisualizationViewPart(secId, visView);
VisualizationViewPart visualizationViewPart = createVisualizationViewPart(
secId, visView);
visualizationViewPart.init(simulation, visView);
// }
}
......@@ -354,11 +356,7 @@ public class BMotionStudioEditor extends EditorPart implements
}
private VisualizationViewPart createVisualizationViewPart(String secId,
VisualizationView visualizationView)
throws PartInitException {
System.out.println("CREATE VISUALIZATION PART: " + secId);
VisualizationView visualizationView) throws PartInitException {
IWorkbenchWindow window = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
IWorkbenchPage activePage = window.getActivePage();
......
......@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.EventObject;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
......@@ -46,17 +45,11 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.IPage;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.MessagePage;
import org.eclipse.ui.part.Page;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.part.PageBookView;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.properties.IPropertySheetPage;
......@@ -72,7 +65,7 @@ import de.bmotionstudio.gef.editor.model.Visualization;
import de.bmotionstudio.gef.editor.model.VisualizationView;
import de.bmotionstudio.gef.editor.part.BMSEditPartFactory;
public class VisualizationViewPart extends PageBookView implements
public class VisualizationViewPart extends ViewPart implements
CommandStackListener {
public static String ID = "de.bmotionstudio.gef.editor.VisualizationView";
......@@ -81,18 +74,22 @@ public class VisualizationViewPart extends PageBookView implements
private VisualizationView visualizationView;
private VisualizationViewPage page;
private ActionRegistry actionRegistry;
private Composite container;
private Simulation simulation;
private BMotionStudioEditor editor;
private BMotionSelectionSynchronizer selectionSynchronizer;
private RulerComposite container;
private GraphicalViewer graphicalViewer;
private ScalableRootEditPart rootEditPart;
private Simulation simulation;
private boolean isInitialized = false;
private List<String> selectionActions = new ArrayList<String>();
private List<String> stackActions = new ArrayList<String>();
private List<String> propertyActions = new ArrayList<String>();
......@@ -137,76 +134,8 @@ public class VisualizationViewPart extends PageBookView implements
return selectionSynchronizer;
}
// Workaround for prevent recursive activation of part
@Override
public void setFocus() {
this.container.setFocus();
super.setFocus();
}
public Visualization getVisualization() {
if (this.visualizationView != null)
return this.visualizationView.getVisualization();
return null;
}
public GraphicalViewer getGraphicalViewer() {
if (page != null)
return page.getGraphicalViewer();
return null;
}
@Override
protected IPage createDefaultPage(PageBook book) {
MessagePage page = new MessagePage();
initPage(page);
page.createControl(book);
page.setMessage("NA");
return page;
}
@Override
public void createPartControl(Composite parent) {
this.container = parent;
super.createPartControl(parent);
}
@Override
protected PageRec doCreatePage(IWorkbenchPart part) {
if (part instanceof BMotionStudioEditor) {
BMotionStudioEditor cEditor = (BMotionStudioEditor) part;
this.simulation = cEditor.getSimulation();
if (this.simulation == null)
return null;
Map<String, VisualizationView> visualizationViews = this.simulation
.getVisualizationViews();
this.visualizationView = visualizationViews
.get(getViewSite().getSecondaryId());
if (visualizationView == null)
return null;
this.editor = cEditor;
this.editDomain = new EditDomain();
this.editDomain.getCommandStack().addCommandStackListener(this);
createActions();
page = new VisualizationViewPage();
initPage(page);
page.createControl(getPageBook());
return new PageRec(part, page);
}
return null;
return graphicalViewer;
}
/**
......@@ -220,28 +149,6 @@ public class VisualizationViewPart extends PageBookView implements
return actionRegistry;
}
@Override
protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {
unregister();
VisualizationViewPage page = (VisualizationViewPage) rec.page;
page.dispose();
rec.dispose();
}
@Override
protected IWorkbenchPart getBootstrapPart() {
IWorkbenchPage page = getSite().getPage();
if (page != null) {
return page.getActiveEditor();
}
return null;
}
@Override
protected boolean isImportant(IWorkbenchPart part) {
return part instanceof BMotionStudioEditor;
}
public EditDomain getEditDomain() {
return editDomain;
}
......@@ -288,6 +195,47 @@ public class VisualizationViewPart extends PageBookView implements
action = new SelectAllAction(this);
registry.registerAction(action);
ZoomManager manager = rootEditPart.getZoomManager();
getActionRegistry().registerAction(new ZoomInAction(manager));
getActionRegistry().registerAction(new ZoomOutAction(manager));
double[] zoomLevels = new double[] { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0,
2.5, 3.0, 4.0, 5.0, 10.0, 20.0 };
manager.setZoomLevels(zoomLevels);
ArrayList<String> zoomContributions = new ArrayList<String>();
zoomContributions.add(ZoomManager.FIT_ALL);
zoomContributions.add(ZoomManager.FIT_HEIGHT);
zoomContributions.add(ZoomManager.FIT_WIDTH);
manager.setZoomLevelContributions(zoomContributions);
getActionRegistry().registerAction(
new ToggleRulerVisibilityAction(getGraphicalViewer()) {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
}
});
getActionRegistry().registerAction(
new ToggleSnapToGeometryAction(getGraphicalViewer()) {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
}
});
getActionRegistry().registerAction(
new ToggleGridAction(getGraphicalViewer()) {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
}
});
installObserverActions();
installSchedulerActions();
......@@ -363,67 +311,120 @@ public class VisualizationViewPart extends PageBookView implements
}
private class VisualizationViewPage extends Page {
private RulerComposite container;
private GraphicalViewer graphicalViewer;
@Override
public void dispose() {
unregister();
super.dispose();
}
private ScalableRootEditPart rootEditPart;
private void unregister() {
if (getCommandStack() != null)
getCommandStack().removeCommandStackListener(this);
if (getActionRegistry() != null)
getActionRegistry().dispose();
}
@Override
public void init(IPageSite site) {
super.init(site);
public void commandStackChanged(EventObject event) {
updateActions(stackActions);
simulation.setDirty(getCommandStack().isDirty());
}
private void createActions() {
/**
* A convenience method for updating a set of actions defined by the given
* List of action IDs. The actions are found by looking up the ID in the
* {@link #getActionRegistry() action registry}. If the corresponding action
* is an {@link UpdateAction}, it will have its <code>update()</code> method
* called.
*
* @param actionIds
* the list of IDs to update
*/
protected void updateActions(List<String> actionIds) {
ActionRegistry registry = getActionRegistry();
Iterator<String> iter = actionIds.iterator();
while (iter.hasNext()) {
IAction action = registry.getAction(iter.next());
if (action instanceof UpdateAction)
((UpdateAction) action).update();
}
}
ZoomManager manager = rootEditPart.getZoomManager();
getActionRegistry().registerAction(new ZoomInAction(manager));
getActionRegistry().registerAction(new ZoomOutAction(manager));
protected List<String> getStackActions() {
return stackActions;
}
double[] zoomLevels = new double[] { 0.25, 0.5, 0.75, 1.0, 1.5,
2.0, 2.5, 3.0, 4.0, 5.0, 10.0, 20.0 };
manager.setZoomLevels(zoomLevels);
ArrayList<String> zoomContributions = new ArrayList<String>();
zoomContributions.add(ZoomManager.FIT_ALL);
zoomContributions.add(ZoomManager.FIT_HEIGHT);
zoomContributions.add(ZoomManager.FIT_WIDTH);
manager.setZoomLevelContributions(zoomContributions);
protected List<String> getPropertyActions() {
return propertyActions;
}
protected List<String> getSelectionActions() {
return selectionActions;
}
getActionRegistry().registerAction(
new ToggleRulerVisibilityAction(getGraphicalViewer()) {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
public void createPartControl(Composite parent) {
container = new RulerComposite(parent, SWT.NONE);
}
});
getActionRegistry().registerAction(
new ToggleSnapToGeometryAction(getGraphicalViewer()) {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
public void setFocus() {
}
});
getActionRegistry().registerAction(
new ToggleGridAction(getGraphicalViewer()) {
public void init(Simulation simulation, VisualizationView visualizationView) {
this.simulation = simulation;
this.graphicalViewer = new ScrollingGraphicalViewer();
this.graphicalViewer.createControl(this.container);
Visualization visualization = visualizationView.getVisualization();
this.editDomain = new EditDomain();
this.editDomain.getCommandStack().addCommandStackListener(this);
configureGraphicalViewer(visualization);
hookGraphicalViewer();
loadProperties(visualization);
buildActions();
createActions();
createMenu(getViewSite());
setPartName(visualizationView.getName());
getGraphicalViewer().setContents(visualization);
setInitialized(true);
}
protected void hookGraphicalViewer() {
getSelectionSynchronizer().addViewer(getGraphicalViewer());
getSite().setSelectionProvider(getGraphicalViewer());
}
public void configureGraphicalViewer(Visualization visualization) {
rootEditPart = new ScalableRootEditPart();
rootEditPart.setViewer(graphicalViewer);
graphicalViewer.setRootEditPart(rootEditPart);
graphicalViewer.setEditPartFactory(new BMSEditPartFactory());
container
.setGraphicalViewer((ScrollingGraphicalViewer) graphicalViewer);
graphicalViewer.setEditDomain(getEditDomain());
graphicalViewer
.addDropTargetListener(new BControlTransferDropTargetListener(
graphicalViewer, visualization));
graphicalViewer.getControl().setBackground(ColorConstants.white);
graphicalViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void run() {
super.run();
setChecked(!isChecked());
editor.setDirty(true);
public void selectionChanged(SelectionChangedEvent event) {
updateActions(selectionActions);
}
});
ContextMenuProvider provider = new BMSContextMenuProvider(
graphicalViewer, getActionRegistry());
graphicalViewer.setContextMenu(provider);
}
private void buildActions() {
IActionBars bars = getSite().getActionBars();
IActionBars bars = getViewSite().getActionBars();
ActionRegistry ar = getActionRegistry();
bars.setGlobalActionHandler(ActionFactory.UNDO.getId(),
......@@ -443,54 +444,50 @@ public class VisualizationViewPart extends PageBookView implements
}
private void createMenu(final IPageSite pageSite) {
private void createMenu(final IViewSite iViewSite) {
pageSite.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
ActionFactory.UNDO.getId()));
pageSite.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
ActionFactory.REDO.getId()));
pageSite.getActionBars()
iViewSite.getActionBars().getToolBarManager()
.add(getActionRegistry().getAction(ActionFactory.UNDO.getId()));
iViewSite.getActionBars().getToolBarManager()
.add(getActionRegistry().getAction(ActionFactory.REDO.getId()));
iViewSite.getActionBars().getToolBarManager()
.add(getActionRegistry().getAction(ActionFactory.COPY.getId()));
iViewSite
.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
ActionFactory.COPY.getId()));
pageSite.getActionBars()
.add(getActionRegistry().getAction(ActionFactory.PASTE.getId()));
iViewSite
.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
ActionFactory.PASTE.getId()));
pageSite.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
ActionFactory.DELETE.getId()));
.add(getActionRegistry()
.getAction(ActionFactory.DELETE.getId()));
pageSite.getActionBars().getToolBarManager().add(new Separator());
iViewSite.getActionBars().getToolBarManager().add(new Separator());
pageSite.getActionBars()
iViewSite.getActionBars().getToolBarManager()
.add(getActionRegistry().getAction(GEFActionConstants.ZOOM_IN));
iViewSite
.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
GEFActionConstants.ZOOM_IN));
pageSite.getActionBars()
.getToolBarManager()
.add(getActionRegistry().getAction(
GEFActionConstants.ZOOM_OUT));
.add(getActionRegistry().getAction(GEFActionConstants.ZOOM_OUT));
pageSite.getActionBars()
iViewSite
.getActionBars()
.getMenuManager()
.add(getActionRegistry().getAction(
GEFActionConstants.TOGGLE_GRID_VISIBILITY));
pageSite.getActionBars()
iViewSite
.getActionBars()
.getMenuManager()
.add(getActionRegistry().getAction(
GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY));
pageSite.getActionBars()
iViewSite
.getActionBars()
.getMenuManager()
.add(getActionRegistry().getAction(
GEFActionConstants.TOGGLE_RULER_VISIBILITY));
pageSite.getActionBars().updateActionBars();
iViewSite.getActionBars().updateActionBars();
// TODO Reimplement me!
// pageSite.getActionBars().getToolBarManager()
......@@ -498,76 +495,10 @@ public class VisualizationViewPart extends PageBookView implements
}
@Override
public void createControl(Composite parent) {
container = new RulerComposite(parent, SWT.NONE);
graphicalViewer = new ScrollingGraphicalViewer();
graphicalViewer.createControl(container);
configureGraphicalViewer();
initGraphicalViewer();
hookGraphicalViewer();
loadProperties();
buildActions();
createActions();
createMenu(getSite());
setPartName(getVisualizationView().getName());
}
protected void hookGraphicalViewer() {
getSelectionSynchronizer().addViewer(getGraphicalViewer());
getSite().setSelectionProvider(getGraphicalViewer());
}
public void configureGraphicalViewer() {
rootEditPart = new ScalableRootEditPart();
rootEditPart.setViewer(graphicalViewer);
graphicalViewer.setRootEditPart(rootEditPart);
graphicalViewer.setEditPartFactory(new BMSEditPartFactory());
graphicalViewer.getControl().setBackground(ColorConstants.red);
container
.setGraphicalViewer((ScrollingGraphicalViewer) graphicalViewer);
graphicalViewer.setEditDomain(getEditDomain());
graphicalViewer
.addDropTargetListener(new BControlTransferDropTargetListener(
graphicalViewer, getVisualization()));
graphicalViewer.getControl().setBackground(ColorConstants.white);
graphicalViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
updateActions(selectionActions);
}
});
ContextMenuProvider provider = new BMSContextMenuProvider(
graphicalViewer, getActionRegistry());
graphicalViewer.setContextMenu(provider);
}
public GraphicalViewer getGraphicalViewer() {
return graphicalViewer;
}
public void initGraphicalViewer() {
graphicalViewer.setContents(getVisualization());
}
@Override
public Control getControl() {
return container;
}
@Override
public void setFocus() {
}
protected void loadProperties() {
protected void loadProperties(Visualization visualization) {
// Ruler properties
BMotionRuler ruler = getVisualization().getRuler(
BMotionRuler ruler = visualization.getRuler(
PositionConstants.WEST);
RulerProvider provider = null;
if (ruler != null) {
......@@ -575,7 +506,7 @@ public class VisualizationViewPart extends PageBookView implements
}
getGraphicalViewer().setProperty(
RulerProvider.PROPERTY_VERTICAL_RULER, provider);
ruler = getVisualization().getRuler(PositionConstants.NORTH);
ruler = visualization.getRuler(PositionConstants.NORTH);
provider = null;
if (ruler != null) {
provider = new BMotionRulerProvider(ruler);
......@@ -584,14 +515,14 @@ public class VisualizationViewPart extends PageBookView implements
RulerProvider.PROPERTY_HORIZONTAL_RULER, provider);
getGraphicalViewer().setProperty(
RulerProvider.PROPERTY_RULER_VISIBILITY,
getVisualization().getRulerVisibility());
visualization.getRulerVisibility());
getGraphicalViewer().setProperty(
SnapToGeometry.PROPERTY_SNAP_ENABLED,
getVisualization().isSnapToGeometryEnabled());
visualization.isSnapToGeometryEnabled());
getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED,
getVisualization().isGridEnabled());
visualization.isGridEnabled());
getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE,
getVisualization().isGridEnabled());
visualization.isGridEnabled());
getGraphicalViewer().setProperty(
MouseWheelHandler.KeyGenerator.getKey(SWT.NONE),
......@@ -599,57 +530,12 @@ public class VisualizationViewPart extends PageBookView implements
}
public boolean isInitialized() {
return isInitialized;
}
@Override
public void dispose() {
unregister();
super.dispose();
}
private void unregister() {
if (getCommandStack() != null)
getCommandStack().removeCommandStackListener(this);
if (getActionRegistry() != null)
getActionRegistry().dispose();
}
@Override
public void commandStackChanged(EventObject event) {
updateActions(stackActions);
this.editor.setDirty(getCommandStack().isDirty());
}
/**
* A convenience method for updating a set of actions defined by the given
* List of action IDs. The actions are found by looking up the ID in the
* {@link #getActionRegistry() action registry}. If the corresponding action
* is an {@link UpdateAction}, it will have its <code>update()</code> method
* called.
*
* @param actionIds
* the list of IDs to update
*/
protected void updateActions(List<String> actionIds) {
ActionRegistry registry = getActionRegistry();
Iterator<String> iter = actionIds.iterator();
while (iter.hasNext()) {
IAction action = registry.getAction(iter.next());
if (action instanceof UpdateAction)
((UpdateAction) action).update();
}
}
protected List<String> getStackActions() {
return stackActions;
}
protected List<String> getPropertyActions() {
return propertyActions;
}
protected List<String> getSelectionActions() {
return selectionActions;
public void setInitialized(boolean isInitialized) {
this.isInitialized = isInitialized;
}
}
package de.bmotionstudio.gef.editor.model;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.resources.IFile;
public class Simulation {
private transient PropertyChangeSupport listeners;
private Map<String, VisualizationView> views;
private transient IFile projectFile;
private transient boolean dirty;
public Simulation() {
this.views = new HashMap<String, VisualizationView>();
}
......@@ -20,4 +30,36 @@ public class Simulation {
this.views = visualizationViews;
}
public IFile getProjectFile() {
return projectFile;
}
public void setProjectFile(IFile projectFile) {
this.projectFile = projectFile;
}
public boolean isDirty() {
return dirty;
}
public void setDirty(boolean dirty) {
boolean oldVal = this.dirty;
this.dirty = dirty;
listeners.firePropertyChange("dirty", oldVal, dirty);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
getListeners().addPropertyChangeListener(listener);
}
public PropertyChangeSupport getListeners() {
if (listeners == null)
listeners = new PropertyChangeSupport(this);
return listeners;
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
getListeners().removePropertyChangeListener(listener);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment