diff options
Diffstat (limited to 'extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java')
-rw-r--r-- | extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java index e614e3ce962..d589d619f1e 100644 --- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java +++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/views/ModelRepositoriesView.java @@ -13,7 +13,9 @@ package org.eclipse.papyrus.cdo.internal.ui.views; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.emf.cdo.admin.CDOAdminClientManager; import org.eclipse.emf.cdo.eresource.CDOResourceLeaf; +import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.transaction.CDOTransaction; import org.eclipse.emf.cdo.ui.CDOEditorUtil; import org.eclipse.emf.cdo.util.CommitException; @@ -27,11 +29,15 @@ import org.eclipse.net4j.util.container.IContainer; import org.eclipse.net4j.util.ui.views.ContainerItemProvider; import org.eclipse.net4j.util.ui.views.ContainerView; import org.eclipse.papyrus.cdo.core.IPapyrusRepository; -import org.eclipse.papyrus.cdo.internal.core.Activator; +import org.eclipse.papyrus.cdo.core.admin.IPapyrusRepositoryAdminListener; +import org.eclipse.papyrus.cdo.core.admin.PapyrusRepositoryAdminManager; +import org.eclipse.papyrus.cdo.internal.core.IInternalPapyrusRepository; import org.eclipse.papyrus.cdo.internal.core.IInternalPapyrusRepositoryManager; import org.eclipse.papyrus.cdo.internal.core.PapyrusRepositoryManager; +import org.eclipse.papyrus.cdo.internal.ui.Activator; import org.eclipse.papyrus.cdo.internal.ui.actions.AbstractRepositoryAction; import org.eclipse.papyrus.cdo.internal.ui.actions.AddRepositoryAction; +import org.eclipse.papyrus.cdo.internal.ui.actions.ChangePasswordAction; import org.eclipse.papyrus.cdo.internal.ui.actions.ConnectRepositoryAction; import org.eclipse.papyrus.cdo.internal.ui.actions.CreateFolderAction; import org.eclipse.papyrus.cdo.internal.ui.actions.DeleteModelAction; @@ -40,6 +46,7 @@ import org.eclipse.papyrus.cdo.internal.ui.actions.LinkWithEditorAction; import org.eclipse.papyrus.cdo.internal.ui.actions.OpenPapyrusModelAction; import org.eclipse.papyrus.cdo.internal.ui.actions.RemoveRepositoryAction; import org.eclipse.papyrus.cdo.internal.ui.actions.RenameModelAction; +import org.eclipse.papyrus.cdo.internal.ui.admin.RepositoryAdminListener; import org.eclipse.papyrus.cdo.internal.ui.dnd.ResourceDragAdapter; import org.eclipse.papyrus.cdo.internal.ui.dnd.ResourceDropAdapter; import org.eclipse.papyrus.cdo.internal.ui.l10n.Messages; @@ -61,6 +68,8 @@ import org.eclipse.ui.statushandlers.IStatusAdapterConstants; import org.eclipse.ui.statushandlers.StatusAdapter; import org.eclipse.ui.statushandlers.StatusManager; +import com.google.common.base.Strings; + /** * This is the ModelRepositoriesView type. Enjoy. */ @@ -74,6 +83,12 @@ public class ModelRepositoriesView extends ContainerView { private final IInternalPapyrusRepositoryManager repositoryManager; + private final PapyrusRepositoryAdminManager adminManager; + + private CDOAdminClientManager clientManager; + + private IPapyrusRepositoryAdminListener adminListener; + private AddRepositoryAction addRepositoryAction; private LinkWithEditorAction linkWithEditorAction; @@ -82,6 +97,8 @@ public class ModelRepositoriesView extends ContainerView { private AbstractRepositoryAction disconnectRepositoryAction; + private ChangePasswordAction changePasswordAction; + private RemoveRepositoryAction removeRepositoryAction; private OpenPapyrusModelAction openModelAction; @@ -102,6 +119,7 @@ public class ModelRepositoriesView extends ContainerView { super(); repositoryManager = PapyrusRepositoryManager.INSTANCE; + adminManager = new PapyrusRepositoryAdminManager(); } @Override @@ -117,6 +135,27 @@ public class ModelRepositoriesView extends ContainerView { // link by default Boolean linking = (memento == null) ? Boolean.TRUE : memento.getBoolean(STATE_LINKING); setLinkWithEditor(!Boolean.FALSE.equals(linking)); + + // attach the admin manager + clientManager = Activator.getCDOAdminClientManager(); + if(clientManager != null) { + adminManager.install(clientManager); + adminListener = new RepositoryAdminListener(repositoryManager); + adminManager.addRepositoryAdminListener(adminListener); + } + } + + @Override + public void dispose() { + try { + if(clientManager != null) { + adminManager.removeRepositoryAdminListener(adminListener); + clientManager.removeListener(adminManager); + clientManager = null; + } + } finally { + super.dispose(); + } } @Override @@ -166,6 +205,7 @@ public class ModelRepositoriesView extends ContainerView { selectionProvider.addSelectionChangedListener(openModelAction); selectionProvider.addSelectionChangedListener(connectRepositoryAction); selectionProvider.addSelectionChangedListener(disconnectRepositoryAction); + selectionProvider.addSelectionChangedListener(changePasswordAction); selectionProvider.addSelectionChangedListener(removeRepositoryAction); selectionProvider.addSelectionChangedListener(createFolderAction); selectionProvider.addSelectionChangedListener(renameModelAction); @@ -181,6 +221,7 @@ public class ModelRepositoriesView extends ContainerView { linkWithEditorAction = new LinkWithEditorAction(this); connectRepositoryAction = new ConnectRepositoryAction(this); disconnectRepositoryAction = new DisconnectRepositoryAction(this); + changePasswordAction = new ChangePasswordAction(this); removeRepositoryAction = new RemoveRepositoryAction(this); openModelAction = new OpenPapyrusModelAction(this); createFolderAction = new CreateFolderAction(this.getSite()); @@ -222,6 +263,13 @@ public class ModelRepositoriesView extends ContainerView { manager.add(connectRepositoryAction); manager.add(disconnectRepositoryAction); + if(selected instanceof IInternalPapyrusRepository) { + CDOSession session = ((IInternalPapyrusRepository)selected).getCDOSession(); + if((session != null) && !Strings.isNullOrEmpty(session.getUserID())) { + manager.add(changePasswordAction); + } + } + manager.add(removeRepositoryAction); manager.add(propertyDialogAction); } |