Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2007-05-24 20:21:58 +0000
committerMichael Valenta2007-05-24 20:21:58 +0000
commit96ea8021420ee5e1e2e99c188aa6ed245fa9bf25 (patch)
tree1eec5b6020b3c454ade87e99f73ca876e7ef9642 /examples
parentda1cc28dbfa8b8b05bb74753ee81b419d69e93e0 (diff)
downloadeclipse.platform.team-96ea8021420ee5e1e2e99c188aa6ed245fa9bf25.tar.gz
eclipse.platform.team-96ea8021420ee5e1e2e99c188aa6ed245fa9bf25.tar.xz
eclipse.platform.team-96ea8021420ee5e1e2e99c188aa6ed245fa9bf25.zip
Updated model exampel to use Saveables
Diffstat (limited to 'examples')
-rw-r--r--examples/org.eclipse.team.examples.filesystem/plugin.xml3
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorActionProvider.java25
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java12
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveable.java83
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveablesProvider.java63
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelWorkbenchAdapter.java4
6 files changed, 183 insertions, 7 deletions
diff --git a/examples/org.eclipse.team.examples.filesystem/plugin.xml b/examples/org.eclipse.team.examples.filesystem/plugin.xml
index e28cd42df..72cb81da6 100644
--- a/examples/org.eclipse.team.examples.filesystem/plugin.xml
+++ b/examples/org.eclipse.team.examples.filesystem/plugin.xml
@@ -430,7 +430,8 @@
icon="$nl$/icons/full/obj/root_obj.gif"
id="org.eclipse.team.examples.model.navigator"
labelProvider="org.eclipse.team.examples.model.ui.ModelNavigatorLabelProvider"
- name="Example Model">
+ name="Example Model"
+ providesSaveables="true">
<triggerPoints>
<or>
<instanceof value="org.eclipse.team.examples.model.ModelObject"/>
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorActionProvider.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorActionProvider.java
index 234eb8914..618926cc5 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorActionProvider.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorActionProvider.java
@@ -21,11 +21,12 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.team.examples.model.*;
-import org.eclipse.ui.navigator.CommonActionProvider;
-import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.ui.navigator.*;
/**
* Model action provider for use with the Common Navigator framework. The
@@ -39,6 +40,7 @@ public class ModelNavigatorActionProvider extends CommonActionProvider {
private Action newFolderAction;
private Action newMoeAction;
private Action deleteAction;
+ private Action makeDirty;
public ModelNavigatorActionProvider() {
super();
@@ -147,6 +149,24 @@ public class ModelNavigatorActionProvider extends CommonActionProvider {
return null;
}
};
+ makeDirty = new Action("Make Dirty") {
+ public void run() {
+ IStructuredSelection selection = (IStructuredSelection)getContext().getSelection();
+ for (Iterator iter = selection.iterator(); iter.hasNext();) {
+ Object element = iter.next();
+ if (element instanceof ModelObjectDefinitionFile) {
+ ModelObjectDefinitionFile mo = (ModelObjectDefinitionFile) element;
+ ModelSaveablesProvider provider = getSaveablesProvider();
+ provider.makeDirty(mo);
+ }
+ }
+ }
+
+ private ModelSaveablesProvider getSaveablesProvider() {
+ ITreeContentProvider provider = getActionSite().getContentService().getContentExtensionById("org.eclipse.team.examples.model.navigator").getContentProvider();
+ return (ModelSaveablesProvider)Utils.getAdapter(provider, SaveablesProvider.class);
+ }
+ };
}
protected Shell getShell() {
@@ -164,6 +184,7 @@ public class ModelNavigatorActionProvider extends CommonActionProvider {
ModelObjectDefinitionFile modFile = getSelectedModFile();
if (modFile != null) {
menu.add(newMoeAction);
+ menu.add(makeDirty);
}
}
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
index 6dbe77cbc..11cb1e093 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelNavigatorContentProvider.java
@@ -13,7 +13,7 @@ package org.eclipse.team.examples.model.ui;
import java.util.*;
import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.*;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
@@ -32,13 +32,14 @@ import org.eclipse.ui.navigator.*;
* replace the corresponding resource project in the Project Explorer.
*/
public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
- implements ICommonContentProvider, IResourceChangeListener, IPipelinedTreeContentProvider, ITeamStateChangeListener {
+ implements ICommonContentProvider, IResourceChangeListener, IPipelinedTreeContentProvider, ITeamStateChangeListener, IAdaptable {
private ICommonContentExtensionSite extensionSite;
private boolean isWorkspaceRoot;
private Viewer viewer;
private final boolean updateViewer;
private SynchronizationStateTester syncStateTester;
+ private Object saveablesProvider = new ModelSaveablesProvider();
public ModelNavigatorContentProvider() {
super();
@@ -319,4 +320,11 @@ public class ModelNavigatorContentProvider extends BaseWorkbenchContentProvider
return false;
}
+ public Object getAdapter(Class adapter) {
+ if (adapter == SaveablesProvider.class) {
+ return saveablesProvider;
+ }
+ return Platform.getAdapterManager().getAdapter(this, adapter);
+ }
+
}
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveable.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveable.java
new file mode 100644
index 000000000..4e73bb90a
--- /dev/null
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveable.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.team.examples.model.ui;
+
+import org.eclipse.core.resources.mapping.ResourceMapping;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.team.examples.model.ModelObject;
+import org.eclipse.team.examples.model.ModelObjectDefinitionFile;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.ui.Saveable;
+
+/**
+ * A Saveable that represents a modified model object definition file.
+ */
+public class ModelSaveable extends Saveable {
+
+ private ModelObject modelObject;
+ private boolean dirty;
+ private final ModelSaveablesProvider modelSaveablesProvider;
+
+ public ModelSaveable(ModelSaveablesProvider modelSaveablesProvider, ModelObjectDefinitionFile mo) {
+ this.modelSaveablesProvider = modelSaveablesProvider;
+ modelObject = mo;
+ }
+
+ public boolean equals(Object object) {
+ if (object instanceof ModelSaveable) {
+ ModelSaveable other = (ModelSaveable) object;
+ return (other.getModelObject().equals(getModelObject()));
+ }
+ return false;
+ }
+
+ public ModelObject getModelObject() {
+ return modelObject;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return ModelWorkbenchAdapter.createImageDescriptor("obj/mod_obj.gif");
+ }
+
+ public String getName() {
+ return modelObject.getName();
+ }
+
+ public String getToolTipText() {
+ return "Saveable for " + getName();
+ }
+
+ public int hashCode() {
+ return modelObject.hashCode();
+ }
+
+ public boolean isDirty() {
+ return dirty;
+ }
+
+ public void doSave(IProgressMonitor monitor) throws CoreException {
+ dirty = false;
+ modelSaveablesProvider.saved(this);
+ }
+
+ public void makeDirty() {
+ dirty = true;
+ }
+
+ public Object getAdapter(Class adapter) {
+ if (adapter == ResourceMapping.class) {
+ return Utils.getAdapter(getModelObject(), ResourceMapping.class);
+ }
+ return super.getAdapter(adapter);
+ }
+}
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveablesProvider.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveablesProvider.java
new file mode 100644
index 000000000..442c4e425
--- /dev/null
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelSaveablesProvider.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.team.examples.model.ui;
+
+import java.util.*;
+
+import org.eclipse.team.examples.model.ModelObjectDefinitionFile;
+import org.eclipse.ui.Saveable;
+import org.eclipse.ui.navigator.SaveablesProvider;
+
+/**
+ * Provider used by the Common Navigator framework to link saveables to
+ * model elements.
+ */
+public class ModelSaveablesProvider extends SaveablesProvider {
+
+ private List saveables = new ArrayList();
+
+ public Object[] getElements(Saveable saveable) {
+ if (saveable instanceof ModelSaveable) {
+ ModelSaveable ms = (ModelSaveable) saveable;
+ return new Object[] { ms.getModelObject() };
+ }
+ return new Object[0];
+ }
+
+ public Saveable getSaveable(Object element) {
+ for (Iterator iterator = saveables.iterator(); iterator.hasNext();) {
+ ModelSaveable saveable = (ModelSaveable) iterator.next();
+ if (saveable.getModelObject().equals(element))
+ return saveable;
+ }
+ return null;
+ }
+
+ public Saveable[] getSaveables() {
+ return (Saveable[]) saveables.toArray(new Saveable[saveables.size()]);
+ }
+
+ public void makeDirty(ModelObjectDefinitionFile mo) {
+ Saveable saveable = getSaveable(mo);
+ if (saveable == null) {
+ saveable = new ModelSaveable(this, mo);
+ saveables.add(saveable);
+ fireSaveablesOpened(new Saveable[] { saveable });
+ }
+ ((ModelSaveable)saveable).makeDirty();
+ fireSaveablesDirtyChanged(new Saveable[] { saveable });
+ }
+
+ public void saved(ModelSaveable saveable) {
+ fireSaveablesDirtyChanged(new Saveable[] { saveable });
+ }
+
+}
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelWorkbenchAdapter.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelWorkbenchAdapter.java
index 1e72f4afa..f0d5ad39a 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelWorkbenchAdapter.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/ModelWorkbenchAdapter.java
@@ -24,7 +24,7 @@ import org.eclipse.ui.model.IWorkbenchAdapter;
public class ModelWorkbenchAdapter implements IWorkbenchAdapter {
// image path
- private final String ICON_PATH = "$nl$/icons/full/"; //$NON-NLS-1$
+ private static final String ICON_PATH = "$nl$/icons/full/"; //$NON-NLS-1$
/* (non-Javadoc)
* @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object)
@@ -88,7 +88,7 @@ public class ModelWorkbenchAdapter implements IWorkbenchAdapter {
/**
* Creates an image descriptor.
*/
- private ImageDescriptor createImageDescriptor(String id) {
+ public static ImageDescriptor createImageDescriptor(String id) {
URL url = FileLocator.find(FileSystemPlugin.getPlugin().getBundle(), new Path(ICON_PATH + id), null);
return ImageDescriptor.createFromURL(url);
}

Back to the top