diff options
author | Eike Stepper | 2010-10-17 09:37:53 +0000 |
---|---|---|
committer | Eike Stepper | 2010-10-17 09:37:53 +0000 |
commit | 18034fc7a12c3da77cae1fd33b3ef003141ae767 (patch) | |
tree | 446fa43056193341337a53a68a6cf4919d41af5b /plugins/org.eclipse.emf.cdo.ui.ide | |
parent | 2f15752f0778140797f6b6e37852f41febfd19fc (diff) | |
download | cdo-18034fc7a12c3da77cae1fd33b3ef003141ae767.tar.gz cdo-18034fc7a12c3da77cae1fd33b3ef003141ae767.tar.xz cdo-18034fc7a12c3da77cae1fd33b3ef003141ae767.zip |
[327405] Provide an offline CDOWorkspace with Checkout/Update/Commit workflows
https://bugs.eclipse.org/bugs/show_bug.cgi?id=327405
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.ui.ide')
5 files changed, 406 insertions, 3 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui.ide/META-INF/MANIFEST.MF index 917f35e9cf..5811c48dda 100644 --- a/plugins/org.eclipse.emf.cdo.ui.ide/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui.ide/META-INF/MANIFEST.MF @@ -20,4 +20,5 @@ Export-Package: org.eclipse.emf.cdo.ui.ide;version="4.0.0", org.eclipse.emf.cdo.ui.internal.ide.actions;version="4.0.0";x-internal:=true, org.eclipse.emf.cdo.ui.internal.ide.bundle;version="4.0.0";x-internal:=true, org.eclipse.emf.cdo.ui.internal.ide.messages;version="4.0.0";x-internal:=true, + org.eclipse.emf.cdo.ui.internal.ide.views;version="4.0.0";x-internal:=true, org.eclipse.emf.cdo.ui.internal.ide.wizards;version="4.0.0";x-internal:=true diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/icons/sample.gif b/plugins/org.eclipse.emf.cdo.ui.ide/icons/sample.gif Binary files differnew file mode 100644 index 0000000000..34fb3c9d8c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.ui.ide/icons/sample.gif diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/plugin.xml b/plugins/org.eclipse.emf.cdo.ui.ide/plugin.xml index b64b6b6471..062ef21dd6 100644 --- a/plugins/org.eclipse.emf.cdo.ui.ide/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.ui.ide/plugin.xml @@ -12,6 +12,7 @@ --> <plugin> + <extension point="org.eclipse.team.ui.configurationWizards"> <wizard @@ -231,4 +232,20 @@ </wizard> </extension> + <extension + point="org.eclipse.ui.views"> + <category + id="org.eclipse.emf.cdo.ui.ide" + name="CDO"> + </category> + <view + allowMultiple="false" + category="org.eclipse.emf.cdo.ui.ide" + class="org.eclipse.emf.cdo.ui.internal.ide.views.RepositoriesView" + icon="icons/sample.gif" + id="org.eclipse.emf.cdo.ui.ide.RepositoriesView" + name="CDO Repositories"> + </view> + </extension> + </plugin> diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/views/RepositoriesView.java b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/views/RepositoriesView.java new file mode 100644 index 0000000000..018a77a0e2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/views/RepositoriesView.java @@ -0,0 +1,386 @@ +/** + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.ui.internal.ide.views; + +import org.eclipse.emf.cdo.internal.ui.SharedIcons; + +import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.part.DrillDownAdapter; +import org.eclipse.ui.part.ViewPart; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public class RepositoriesView extends ViewPart +{ + public static final String ID = "org.eclipse.emf.cdo.ui.ide.RepositoriesView"; + + private TreeViewer viewer; + + private DrillDownAdapter drillDownAdapter; + + private Action newAction; + + private Action refreshAction; + + private Action doubleClickAction; + + public RepositoriesView() + { + } + + @Override + public void createPartControl(Composite parent) + { + viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); + viewer.setContentProvider(new ViewContentProvider()); + viewer.setLabelProvider(new ViewLabelProvider()); + viewer.setInput(getViewSite()); + + drillDownAdapter = new DrillDownAdapter(viewer); + + makeActions(); + hookContextMenu(); + hookDoubleClickAction(); + contributeToActionBars(); + } + + @Override + public void setFocus() + { + viewer.getControl().setFocus(); + } + + private void hookContextMenu() + { + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() + { + public void menuAboutToShow(IMenuManager manager) + { + RepositoriesView.this.fillContextMenu(manager); + } + }); + + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + private void contributeToActionBars() + { + IActionBars bars = getViewSite().getActionBars(); + fillLocalPullDown(bars.getMenuManager()); + fillLocalToolBar(bars.getToolBarManager()); + } + + private void fillLocalPullDown(IMenuManager manager) + { + manager.add(newAction); + manager.add(new Separator()); + manager.add(refreshAction); + } + + private void fillContextMenu(IMenuManager manager) + { + manager.add(newAction); + manager.add(refreshAction); + manager.add(new Separator()); + drillDownAdapter.addNavigationActions(manager); + // Other plug-ins can contribute there actions here + manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + + private void fillLocalToolBar(IToolBarManager manager) + { + manager.add(newAction); + manager.add(refreshAction); + manager.add(new Separator()); + drillDownAdapter.addNavigationActions(manager); + } + + private void makeActions() + { + newAction = new Action() + { + @Override + public void run() + { + showMessage("Action 1 executed"); + } + }; + + newAction.setText("Action 1"); + newAction.setToolTipText("Action 1 tooltip"); + newAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages() + .getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); + + refreshAction = new Action() + { + @Override + public void run() + { + showMessage("Action 2 executed"); + } + }; + + refreshAction.setText("Action 2"); + refreshAction.setToolTipText("Action 2 tooltip"); + refreshAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages() + .getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); + + doubleClickAction = new Action() + { + @Override + public void run() + { + ISelection selection = viewer.getSelection(); + Object obj = ((IStructuredSelection)selection).getFirstElement(); + showMessage("Double-click detected on " + obj.toString()); + } + }; + } + + private void hookDoubleClickAction() + { + viewer.addDoubleClickListener(new IDoubleClickListener() + { + public void doubleClick(DoubleClickEvent event) + { + doubleClickAction.run(); + } + }); + } + + private void showMessage(String message) + { + MessageDialog.openInformation(viewer.getControl().getShell(), "CDO Repositories", message); + } + + /** + * @author Eike Stepper + */ + public static class TreeObject extends PlatformObject + { + private String name; + + private TreeParent parent; + + public TreeObject(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + + public void setParent(TreeParent parent) + { + this.parent = parent; + } + + public TreeParent getParent() + { + return parent; + } + + @Override + public String toString() + { + return getName(); + } + } + + /** + * @author Eike Stepper + */ + public static class TreeParent extends TreeObject + { + private List<TreeObject> children = new ArrayList<TreeObject>(); + + public TreeParent(String name) + { + super(name); + } + + public void addChild(TreeObject child) + { + children.add(child); + child.setParent(this); + } + + public void removeChild(TreeObject child) + { + children.remove(child); + child.setParent(null); + } + + public TreeObject[] getChildren() + { + return children.toArray(new TreeObject[children.size()]); + } + + public boolean hasChildren() + { + return children.size() > 0; + } + } + + /** + * @author Eike Stepper + */ + public class ViewContentProvider implements ITreeContentProvider + { + private TreeParent invisibleRoot; + + public ViewContentProvider() + { + } + + public void inputChanged(Viewer v, Object oldInput, Object newInput) + { + invisibleRoot = (TreeParent)newInput; + } + + public void dispose() + { + invisibleRoot = null; + } + + public Object[] getElements(Object parent) + { + return getChildren(parent); + } + + public Object getParent(Object child) + { + if (child == invisibleRoot) + { + return null; + } + + if (child instanceof TreeObject) + { + return ((TreeObject)child).getParent(); + } + + return null; + } + + public Object[] getChildren(Object parent) + { + if (parent instanceof TreeParent) + { + return ((TreeParent)parent).getChildren(); + } + + return new Object[0]; + } + + public boolean hasChildren(Object parent) + { + if (parent instanceof TreeParent) + { + return ((TreeParent)parent).hasChildren(); + } + + return false; + } + } + + /** + * @author Eike Stepper + */ + public class ViewLabelProvider extends LabelProvider + { + public ViewLabelProvider() + { + } + + @Override + public String getText(Object obj) + { + return obj.toString(); + } + + @Override + public Image getImage(Object obj) + { + String imageKey = ISharedImages.IMG_OBJ_ELEMENT; + if (obj instanceof TreeParent) + { + imageKey = ISharedImages.IMG_OBJ_FOLDER; + } + + return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey); + } + } + + /** + * @author Eike Stepper + */ + public static class NewRepositoryDialog extends TitleAreaDialog + { + public NewRepositoryDialog(IWorkbenchPage page) + { + super(page.getWorkbenchWindow().getShell()); + setShellStyle(getShellStyle() | SWT.APPLICATION_MODAL | SWT.MAX | SWT.TITLE | SWT.RESIZE); + } + + @Override + protected void configureShell(Shell newShell) + { + super.configureShell(newShell); + newShell.setText("New Repository"); + } + + @Override + protected Control createDialogArea(Composite parent) + { + setTitle("New Repository"); + setTitleImage(SharedIcons.getImage(SharedIcons.WIZBAN_PACKAGE_MANAGER)); + return null; + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/wizards/CDOProjectCreationWizard.java b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/wizards/CDOProjectCreationWizard.java index bab046ae78..ca5e87c06c 100644 --- a/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/wizards/CDOProjectCreationWizard.java +++ b/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/internal/ide/wizards/CDOProjectCreationWizard.java @@ -50,7 +50,6 @@ import java.net.URI; /** * @author Victor Roldan Betancort */ - public class CDOProjectCreationWizard extends Wizard implements IWorkbenchWizard { private WizardNewProjectCreationPage projectCreationPage; @@ -148,8 +147,8 @@ public class CDOProjectCreationWizard extends Wizard implements IWorkbenchWizard { public void run(IProgressMonitor monitor) throws InvocationTargetException { - CreateProjectOperation op = new CreateProjectOperation(description, Messages - .getString("CDOProjectCreationWizard.0")); //$NON-NLS-1$ + CreateProjectOperation op = new CreateProjectOperation(description, + Messages.getString("CDOProjectCreationWizard.0")); //$NON-NLS-1$ try { op.execute(monitor, WorkspaceUndoUtil.getUIInfoAdapter(getShell())); |