diff options
author | ddunne | 2011-06-29 22:19:31 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2011-06-29 22:19:31 +0000 |
commit | 30bfaab9b8650459b66b9ce5fdd0f1eddd4710db (patch) | |
tree | 32c77d5d79e9be6288364e85b69e8aa5fe147f78 /plugins | |
parent | 3d93fe07e4078f913d8e4cd7c96b76d837e75511 (diff) | |
download | org.eclipse.osee-30bfaab9b8650459b66b9ce5fdd0f1eddd4710db.tar.gz org.eclipse.osee-30bfaab9b8650459b66b9ce5fdd0f1eddd4710db.tar.xz org.eclipse.osee-30bfaab9b8650459b66b9ce5fdd0f1eddd4710db.zip |
feature: Create User Management Perspective
Diffstat (limited to 'plugins')
18 files changed, 720 insertions, 45 deletions
diff --git a/plugins/org.eclipse.osee.ats/plugin.xml b/plugins/org.eclipse.osee.ats/plugin.xml index c188dca091d..cb1cc7d43d9 100644 --- a/plugins/org.eclipse.osee.ats/plugin.xml +++ b/plugins/org.eclipse.osee.ats/plugin.xml @@ -236,14 +236,6 @@ </WorkDefinitionProvider> </extension> <extension - id="ReAssignATSObjectsToUser" - name="ReAssignATSObjectsToUser" - point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> - <Operation - className="org.eclipse.osee.ats.operation.ReAssignATSObjectsToUser"> - </Operation> - </extension> - <extension id="AtsWidgetProvider" name="AtsWidgetProvider" point="org.eclipse.osee.framework.ui.skynet.XWidgetProvider"> @@ -417,14 +409,6 @@ </ArtifactImageProvider> </extension> <extension - id="DeleteDuplicateUsers" - name="DeleteDuplicateUsers" - point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> - <Operation - className="org.eclipse.osee.ats.operation.PurgeUser"> - </Operation> - </extension> - <extension point="org.eclipse.osee.framework.ui.skynet.AttributeXWidgetProvider"> <AttributeXWidgetProvider classname="org.eclipse.osee.ats.util.widgets.AtsAttributeXWidgetProvider"> @@ -498,5 +482,13 @@ classname="org.eclipse.osee.ats.editor.stateItem.AtsPeerToPeerReviewReviewStateItem"> </AtsTransitionListener> </extension> + <extension + id="AtsUserNavigateItems" + name="AtsUserNavigateItems" + point="org.eclipse.osee.framework.ui.skynet.UserNavigateItem"> + <UserNavigateItem + classname="org.eclipse.osee.ats.util.AtsUserNavigateItems"> + </UserNavigateItem> + </extension> </plugin> diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java index a3aca94e1ef..ba127368b0d 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsNavigateViewItems.java @@ -72,7 +72,6 @@ import org.eclipse.osee.ats.world.search.MyWorldSearchItem; import org.eclipse.osee.ats.world.search.NextVersionSearchItem; import org.eclipse.osee.ats.world.search.TaskSearchWorldSearchItem; import org.eclipse.osee.ats.world.search.UserCommunitySearchItem; -import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch; import org.eclipse.osee.ats.world.search.VersionTargetedForTeamSearchItem; import org.eclipse.osee.ats.world.search.WorldSearchItem.LoadView; import org.eclipse.osee.framework.core.exception.OseeArgumentException; @@ -204,11 +203,6 @@ public final class AtsNavigateViewItems implements XNavigateViewItems, IXNavigat new DisplayCurrentOseeEventListeners(adminItems); new AtsRemoteEventTestItem(adminItems); - new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch("User's All Related Objects - Admin Only", - null, false, LoadView.WorldEditor)); - new SearchNavigateItem(adminItems, new UserRelatedToAtsObjectSearch( - "User's All Active Related Objects - Admin Only", null, true, LoadView.WorldEditor)); - new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Actions", AtsArtifactTypes.Action)); new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Decision Review", AtsArtifactTypes.DecisionReview)); @@ -218,7 +212,6 @@ public final class AtsNavigateViewItems implements XNavigateViewItems, IXNavigat AtsArtifactTypes.TeamWorkflow)); new SearchNavigateItem(adminItems, new ArtifactTypeSearchItem("Show all Tasks", AtsArtifactTypes.Task)); new CreateGoalTestArtifacts(adminItems); - new CreateNewUsersByNameItem(adminItems); new DoesNotWorkItemAts(adminItems); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewUsersByNameItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewUsersByNameItem.java index dcc344773f9..f683af8876a 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewUsersByNameItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/CreateNewUsersByNameItem.java @@ -48,7 +48,7 @@ import org.eclipse.osee.framework.ui.swt.Displays; public class CreateNewUsersByNameItem extends XNavigateItemAction { public CreateNewUsersByNameItem(XNavigateItem parent) { - super(parent, "Create New Users by Name", FrameworkImage.USER); + super(parent, "Admin - Create New Users by Name (Testing Only)", FrameworkImage.USER); } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java index 206691d39f5..526712f3ed1 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/PurgeUser.java @@ -57,7 +57,7 @@ public class PurgeUser extends AbstractBlam { @Override public String getName() { - return "Purge User"; + return "Admin - Purge User"; } @Override @@ -182,7 +182,7 @@ public class PurgeUser extends AbstractBlam { Integer.toString(numOfUpdatedBSideRelations)})); rd.addRaw(AHTML.endMultiColumnTable()); } finally { - XResultDataUI.report(rd,getName()); + XResultDataUI.report(rd, getName()); } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java index f828c6e010d..c0fb89d6433 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/operation/ReAssignATSObjectsToUser.java @@ -41,7 +41,7 @@ public class ReAssignATSObjectsToUser extends AbstractBlam { @Override public String getName() { - return "Re-Assign ATS Objects To User"; + return "Admin - Re-Assign ATS Objects To User"; } @Override diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUserNavigateItems.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUserNavigateItems.java new file mode 100644 index 00000000000..87b7fe2485e --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsUserNavigateItems.java @@ -0,0 +1,47 @@ +/* + * Created on Jun 29, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.ats.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import org.eclipse.osee.ats.AtsImage; +import org.eclipse.osee.ats.core.util.AtsUtilCore; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.navigate.CreateNewUsersByNameItem; +import org.eclipse.osee.ats.navigate.SearchNavigateItem; +import org.eclipse.osee.ats.operation.PurgeUser; +import org.eclipse.osee.ats.operation.ReAssignATSObjectsToUser; +import org.eclipse.osee.ats.world.search.UserRelatedToAtsObjectSearch; +import org.eclipse.osee.ats.world.search.WorldSearchItem.LoadView; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.skynet.FrameworkImage; +import org.eclipse.osee.framework.ui.skynet.user.perspective.IUserNavigateItem; +import org.eclipse.osee.framework.ui.skynet.widgets.xnavigate.XNavigateItemBlam; + +public class AtsUserNavigateItems implements IUserNavigateItem { + + @Override + public List<XNavigateItem> getNavigateItems(XNavigateItem parentItem) { + List<XNavigateItem> items = new ArrayList<XNavigateItem>(); + if (AtsUtilCore.isAtsAdmin()) { + items.add(new XNavigateItemBlam(parentItem, new PurgeUser(), FrameworkImage.X_RED)); + items.add(new XNavigateItemBlam(parentItem, new ReAssignATSObjectsToUser(), AtsImage.ACTION)); + items.add(new CreateNewUsersByNameItem(parentItem)); + try { + new SearchNavigateItem(parentItem, new UserRelatedToAtsObjectSearch("Admin - Show User Related Objects", + null, false, LoadView.WorldEditor)); + new SearchNavigateItem(parentItem, new UserRelatedToAtsObjectSearch("Show Active User Related Objects", + null, true, LoadView.WorldEditor)); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + } + return items; + } +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF index eeb0ea418cc..7e9338ce6f4 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.framework.ui.skynet/META-INF/MANIFEST.MF @@ -129,6 +129,7 @@ Export-Package: org.eclipse.osee.framework.ui.skynet, org.eclipse.osee.framework.ui.skynet.skywalker.arttype, org.eclipse.osee.framework.ui.skynet.templates, org.eclipse.osee.framework.ui.skynet.update, + org.eclipse.osee.framework.ui.skynet.user.perspective, org.eclipse.osee.framework.ui.skynet.util, org.eclipse.osee.framework.ui.skynet.util.email, org.eclipse.osee.framework.ui.skynet.util.filteredTree, diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/plugin.xml b/plugins/org.eclipse.osee.framework.ui.skynet/plugin.xml index 46f4e46ef10..643976d30d7 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/plugin.xml +++ b/plugins/org.eclipse.osee.framework.ui.skynet/plugin.xml @@ -15,6 +15,7 @@ <extension-point id="WorkDefinitionProvider" name="WorkDefinitionProvider" schema="schema/WorkDefinitionProvider.exsd"/> <extension-point id="DatabaseHealthOperation" name="DatabaseHealthOperation" schema="schema/DatabaseHealthOperation.exsd"/> <extension-point id="ArtifactImageProvider" name="ArtifactImageProvider" schema="schema/ArtifactImageProvider.exsd"/> + <extension-point id="UserNavigateItem" name="UserNavigateItem" schema="schema/UserNavigateItem.exsd"/> <extension point="org.eclipse.ui.popupMenus"> <objectContribution @@ -166,6 +167,15 @@ id="org.eclipse.osee.framework.ui.skynet.widgets.xBranch.BranchView" name="Branch Manager"> </view> + <view + allowMultiple="false" + category="osee.jdk.core.category" + class="org.eclipse.osee.framework.ui.skynet.user.perspective.UserNavigateView" + icon="images/userPurple.gif" + id="org.eclipse.osee.framework.ui.skynet.UserNavigateView" + name="User Navigator" + restorable="true"> + </view> </extension> <extension point="org.eclipse.search.searchPages"> <page canSearchEnclosingProjects="true" class="org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchPage" enabled="true" extensions=""*:1"" icon="images/artifact_search.gif" id="org.eclipse.osee.framework.ui.skynet.search.ArtifactSearchPage" label="Artifact Search" showScopeSection="false" sizeHint=""250,250"" tabPosition="1"/> @@ -176,9 +186,6 @@ <extension id="PruneWorkspace" name="PruneWorkspace" point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.PruneWorkspace"/> </extension> - <extension id="UniqueNumberOfCurrentOseeUsers" name="Unique Number Of Current Osee Users" point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> - <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.UniqueNumberOfCurrentOseeUsers"/> - </extension> <extension id="PurgeTransaction" point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> <Operation className="org.eclipse.osee.framework.ui.skynet.blam.operation.PurgeTransactionBlam"/> </extension> @@ -284,12 +291,6 @@ </MatchCriteria> </Template> </extension> - <extension - point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> - <Operation - className="org.eclipse.osee.framework.ui.skynet.blam.operation.CreateNewUser"> - </Operation> - </extension> <extension name="The menus for the SearchResultsView." point="org.eclipse.ui.menus"> <menuContribution locationURI="popup:org.eclipse.search.ui.views.SearchView"> <dynamic @@ -1678,12 +1679,6 @@ </extension> <extension - point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> - <Operation - className="org.eclipse.osee.framework.ui.skynet.blam.operation.PopulateUserGroupBlam"> - </Operation> - </extension> - <extension id="CountArtifactsOfTypeBlam" name="CountArtifactsOfTypeBlam" point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> @@ -1749,5 +1744,17 @@ <XCommonNavigateItem classname="org.eclipse.osee.framework.ui.skynet.blam.BlamContributionManager"> </XCommonNavigateItem> + <XCommonNavigateItem + classname="org.eclipse.osee.framework.ui.skynet.user.perspective.UserNavigateViewItems"> + </XCommonNavigateItem> + </extension> + <extension + point="org.eclipse.ui.perspectives"> + <perspective + class="org.eclipse.osee.framework.ui.skynet.user.perspective.UserPerspective" + icon="images/userPurple.gif" + id="org.eclipse.framework.ui.skynet.UserPerspective" + name="User Management"> + </perspective> </extension> </plugin> diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/schema/UserNavigateItem.exsd b/plugins/org.eclipse.osee.framework.ui.skynet/schema/UserNavigateItem.exsd new file mode 100644 index 00000000000..f00ef61b17c --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/schema/UserNavigateItem.exsd @@ -0,0 +1,102 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- Schema file written by PDE --> +<schema targetNamespace="org.eclipse.osee.framework.ui.skynet" xmlns="http://www.w3.org/2001/XMLSchema"> +<annotation> + <appInfo> + <meta.schema plugin="org.eclipse.osee.framework.ui.skynet" id="UserNavigateItem" name="UserNavigateItem"/> + </appInfo> + <documentation> + [Enter description of this extension point.] + </documentation> + </annotation> + + <element name="extension"> + <annotation> + <appInfo> + <meta.element /> + </appInfo> + </annotation> + <complexType> + <sequence minOccurs="1" maxOccurs="unbounded"> + <element ref="UserNavigateItem"/> + </sequence> + <attribute name="point" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute translatable="true"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="UserNavigateItem"> + <complexType> + <attribute name="classname" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + <appInfo> + <meta.attribute kind="java" basedOn=":org.eclipse.osee.framework.ui.skynet.user.perspective.IUserNavigateItem"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <annotation> + <appInfo> + <meta.section type="since"/> + </appInfo> + <documentation> + [Enter the first release in which this extension point appears.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="examples"/> + </appInfo> + <documentation> + [Enter extension point usage example here.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="apiinfo"/> + </appInfo> + <documentation> + [Enter API information here.] + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="implementation"/> + </appInfo> + <documentation> + [Enter information about supplied implementation of this extension point.] + </documentation> + </annotation> + + +</schema> diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/CreateNewUser.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/CreateNewUser.java index aaa2a275a19..4cae81c1813 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/CreateNewUser.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/CreateNewUser.java @@ -49,7 +49,7 @@ public class CreateNewUser extends AbstractBlam { @Override public String getName() { - return "Create New User"; + return "Admin - Create New User"; } @Override diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PopulateUserGroupBlam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PopulateUserGroupBlam.java index d6e1875d231..8745a7e5455 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PopulateUserGroupBlam.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/PopulateUserGroupBlam.java @@ -42,7 +42,7 @@ public class PopulateUserGroupBlam extends AbstractBlam { @Override public String getName() { - return "Populate User Group"; + return "Admin - Populate User Group"; } @Override diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java index 85527e9be4e..77e880e4a73 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/blam/operation/UniqueNumberOfCurrentOseeUsers.java @@ -30,7 +30,7 @@ public class UniqueNumberOfCurrentOseeUsers extends AbstractBlam { @Override public String getName() { - return "Unique Number Of Current Osee Users"; + return "Admin - Unique Number Of Current Osee Users"; } @Override diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/OpenUsersInMassEditor.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/OpenUsersInMassEditor.java new file mode 100644 index 00000000000..d70b5283220 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/OpenUsersInMassEditor.java @@ -0,0 +1,52 @@ +/* + * Created on Jun 29, 2011 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.framework.ui.skynet.user; + +import java.util.List; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.osee.framework.core.enums.Active; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.plugin.core.util.IExceptionableRunnable; +import org.eclipse.osee.framework.plugin.core.util.Jobs; +import org.eclipse.osee.framework.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin; +import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor; + +public class OpenUsersInMassEditor extends Action { + + private final Active active; + + public OpenUsersInMassEditor(String name, Active active) { + super(name); + this.active = active; + } + + @Override + public void run() { + IExceptionableRunnable runnable = new IExceptionableRunnable() { + + @Override + public IStatus run(IProgressMonitor monitor) { + try { + List<User> users = active == Active.Active ? UserManager.getUsers() : UserManager.getUsersAll(); + + MassArtifactEditor.editArtifacts(active == Active.Active ? "Active Users" : "All Users", users); + } catch (OseeCoreException ex) { + OseeLog.log(SkynetGuiPlugin.class, OseeLevel.SEVERE_POPUP, ex); + return new Status(IStatus.ERROR, SkynetGuiPlugin.PLUGIN_ID, ex.getLocalizedMessage(), ex); + } + return Status.OK_STATUS; + } + }; + Jobs.runInJob(getText(), runnable, SkynetGuiPlugin.class, SkynetGuiPlugin.PLUGIN_ID); + } +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/IUserNavigateItem.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/IUserNavigateItem.java new file mode 100644 index 00000000000..1946455cf97 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/IUserNavigateItem.java @@ -0,0 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.user.perspective; + +import java.util.List; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; + +/** + * @author Donald G. Dunne + */ +public interface IUserNavigateItem { + + public List<XNavigateItem> getNavigateItems(XNavigateItem parentItem) throws OseeCoreException; + +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateView.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateView.java new file mode 100644 index 00000000000..b726283c08e --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateView.java @@ -0,0 +1,270 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.user.perspective; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IRegistryEventListener; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.IJobChangeEvent; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.jobs.JobChangeAdapter; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.osee.framework.core.client.ClientSessionManager; +import org.eclipse.osee.framework.core.operation.CompositeOperation; +import org.eclipse.osee.framework.core.operation.IOperation; +import org.eclipse.osee.framework.core.operation.Operations; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.plugin.core.IActionable; +import org.eclipse.osee.framework.skynet.core.SystemGroup; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.ui.plugin.OseeUiActions; +import org.eclipse.osee.framework.ui.plugin.xnavigate.IXNavigateEventListener; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.skynet.OseeStatusContributionItemFactory; +import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin; +import org.eclipse.osee.framework.ui.skynet.action.CollapseAllAction; +import org.eclipse.osee.framework.ui.skynet.action.ExpandAllAction; +import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite; +import org.eclipse.osee.framework.ui.skynet.util.LoadingComposite; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.osee.framework.ui.swt.Widgets; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.part.ViewPart; +import org.eclipse.ui.progress.UIJob; + +/** + * @author Donald G. Dunne + */ +public class UserNavigateView extends ViewPart implements IActionable, IXNavigateEventListener { + + public static final String VIEW_ID = "org.eclipse.osee.framework.ui.skynet.UserNavigateView"; + private static final String INPUT = "filter"; + private static final String FILTER_STR = "filterStr"; + + private String savedFilterStr; + private XNavigateComposite xNavComp; + private Composite parent; + private LoadingComposite loadingComposite; + + @Override + public void createPartControl(Composite parent) { + this.parent = parent; + loadingComposite = new LoadingComposite(parent); + refreshData(); + } + + @Override + public void refresh(XNavigateItem item) { + if (xNavComp != null && Widgets.isAccessible(xNavComp.getFilteredTree()) && Widgets.isAccessible(xNavComp.getFilteredTree().getViewer().getTree())) { + xNavComp.getFilteredTree().getViewer().refresh(item); + } + } + + public void refreshData() { + List<IOperation> ops = new ArrayList<IOperation>(); + ops.add(new UserNavigateViewItemsOperation()); + IOperation operation = new CompositeOperation("Load User Navigator", SkynetGuiPlugin.PLUGIN_ID, ops); + Operations.executeAsJob(operation, false, Job.LONG, new ReloadJobChangeAdapter(this)); + } + + private final class ReloadJobChangeAdapter extends JobChangeAdapter { + + private final UserNavigateView navView; + + private ReloadJobChangeAdapter(UserNavigateView navView) { + this.navView = navView; + } + + @Override + public void done(IJobChangeEvent event) { + Job job = new UIJob("Load Review Navigator") { + + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + try { + showBusy(false); + if (Widgets.isAccessible(loadingComposite)) { + loadingComposite.dispose(); + } + + if (!DbConnectionExceptionComposite.dbConnectionIsOk(parent)) { + return new Status(IStatus.ERROR, SkynetGuiPlugin.PLUGIN_ID, "Navigate View - !dbConnectionIsOk"); + } + + xNavComp = new XNavigateComposite(UserNavigateViewItems.getInstance(), parent, SWT.NONE); + + createToolBar(); + + Label label = new Label(xNavComp, SWT.None); + String str = getWhoAmI(); + if (SystemGroup.OseeAdmin.isCurrentUserMember()) { + str += " - Admin"; + } + if (!str.equals("")) { + if (SystemGroup.OseeAdmin.isCurrentUserMember()) { + label.setForeground(Displays.getSystemColor(SWT.COLOR_RED)); + } else { + label.setForeground(Displays.getSystemColor(SWT.COLOR_BLUE)); + } + } + label.setText(str); + label.setToolTipText(str); + + GridData gridData = new GridData(SWT.CENTER, SWT.CENTER, true, false); + gridData.heightHint = 15; + label.setLayoutData(gridData); + + if (savedFilterStr != null) { + xNavComp.getFilteredTree().getFilterControl().setText(savedFilterStr); + } + xNavComp.refresh(); + xNavComp.getFilteredTree().getFilterControl().setFocus(); + + parent.getParent().layout(true); + parent.layout(true); + + OseeStatusContributionItemFactory.addTo(navView, false); + addExtensionPointListenerBecauseOfWorkspaceLoading(); + + } catch (Exception ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex); + } + return Status.OK_STATUS; + } + }; + Operations.scheduleJob(job, false, Job.SHORT, null); + } + } + + private void addExtensionPointListenerBecauseOfWorkspaceLoading() { + IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry(); + extensionRegistry.addListener(new IRegistryEventListener() { + @Override + public void added(IExtension[] extensions) { + xNavComp.refresh(); + } + + @Override + public void added(IExtensionPoint[] extensionPoints) { + xNavComp.refresh(); + } + + @Override + public void removed(IExtension[] extensions) { + xNavComp.refresh(); + } + + @Override + public void removed(IExtensionPoint[] extensionPoints) { + xNavComp.refresh(); + } + }, "org.eclipse.osee.framework.ui.skynet.BlamOperation"); + } + + private String getWhoAmI() { + try { + String userName = UserManager.getUser().getName(); + return String.format("%s - %s:%s", userName, ClientSessionManager.getDataStoreName(), + ClientSessionManager.getDataStoreLoginName()); + } catch (Exception ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex); + return "Exception: " + ex.getLocalizedMessage(); + } + } + + protected void createToolBar() { + IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager(); + toolbarManager.add(new CollapseAllAction(xNavComp.getFilteredTree().getViewer())); + toolbarManager.add(new ExpandAllAction(xNavComp.getFilteredTree().getViewer())); + getViewSite().getActionBars().updateActionBars(); + + IActionBars bars = getViewSite().getActionBars(); + IMenuManager mm = bars.getMenuManager(); + mm.add(OseeUiActions.createBugAction(SkynetGuiPlugin.PLUGIN_ID, this, VIEW_ID, "User Navigator")); + + toolbarManager.update(true); + } + + public static UserNavigateView getNavigateView() { + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + try { + return (UserNavigateView) page.showView(UserNavigateView.VIEW_ID); + } catch (PartInitException e1) { + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Launch Error", + "Couldn't Launch OSEE User NavigateView " + e1.getMessage()); + } + return null; + } + + @Override + public String getActionDescription() { + IStructuredSelection sel = (IStructuredSelection) xNavComp.getFilteredTree().getViewer().getSelection(); + if (sel.iterator().hasNext()) { + return String.format("Currently Selected - %s", ((XNavigateItem) sel.iterator().next()).getName()); + } + return ""; + } + + @Override + public void saveState(IMemento memento) { + super.saveState(memento); + memento = memento.createChild(INPUT); + + if (xNavComp != null && xNavComp.getFilteredTree().getFilterControl() != null && !xNavComp.getFilteredTree().isDisposed()) { + String filterStr = xNavComp.getFilteredTree().getFilterControl().getText(); + memento.putString(FILTER_STR, filterStr); + } + } + + @Override + public void init(IViewSite site, IMemento memento) throws PartInitException { + super.init(site, memento); + try { + if (memento != null) { + memento = memento.getChild(INPUT); + if (memento != null) { + savedFilterStr = memento.getString(FILTER_STR); + } + } + } catch (Exception ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.WARNING, "NavigateView error on init", ex); + } + } + + @Override + public void setFocus() { + if (loadingComposite != null && !loadingComposite.isDisposed()) { + loadingComposite.setFocus(); + } + } + +}
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItems.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItems.java new file mode 100644 index 00000000000..899580253f9 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItems.java @@ -0,0 +1,114 @@ +/******************************************************************************* + * Copyright (c) 2011 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.user.perspective; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.logging.Level; +import org.eclipse.osee.framework.core.enums.Active; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.plugin.core.util.ExtensionDefinedObjects; +import org.eclipse.osee.framework.skynet.core.SystemGroup; +import org.eclipse.osee.framework.ui.plugin.OseeUiActivator; +import org.eclipse.osee.framework.ui.plugin.util.OpenPerspectiveNavigateItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.IXNavigateCommonItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateCommonItems; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction; +import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateViewItems; +import org.eclipse.osee.framework.ui.skynet.FrameworkImage; +import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin; +import org.eclipse.osee.framework.ui.skynet.blam.operation.CreateNewUser; +import org.eclipse.osee.framework.ui.skynet.blam.operation.PopulateUserGroupBlam; +import org.eclipse.osee.framework.ui.skynet.blam.operation.UniqueNumberOfCurrentOseeUsers; +import org.eclipse.osee.framework.ui.skynet.user.OpenUsersInMassEditor; +import org.eclipse.osee.framework.ui.skynet.widgets.xnavigate.XNavigateItemBlam; + +public class UserNavigateViewItems implements XNavigateViewItems, IXNavigateCommonItem { + + private final static UserNavigateViewItems instance = new UserNavigateViewItems(); + private final List<XNavigateItem> items = new CopyOnWriteArrayList<XNavigateItem>(); + private boolean ensurePopulatedRanOnce = false; + + public static UserNavigateViewItems getInstance() { + return instance; + } + + @Override + public List<XNavigateItem> getSearchNavigateItems() { + ensurePopulated(); + return items; + } + + private synchronized void ensurePopulated() { + if (!ensurePopulatedRanOnce) { + if (OseeUiActivator.areOSEEServicesAvailable().isFalse()) { + return; + } + this.ensurePopulatedRanOnce = true; + + try { + addOseePeerSectionChildren(null); + + XNavigateCommonItems.addCommonNavigateItems(items, Arrays.asList(getSectionId())); + } catch (OseeCoreException ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex); + } + } + } + + @SuppressWarnings("unused") + public void addOseePeerSectionChildren(XNavigateItem parentItem) throws OseeCoreException { + try { + items.add(new XNavigateItemAction(parentItem, new OpenUsersInMassEditor("Open Active Users", Active.Active), + FrameworkImage.USER)); + items.add(new XNavigateItemAction(parentItem, new OpenUsersInMassEditor("Open All Users", Active.Both), + FrameworkImage.USER)); + + if (SystemGroup.OseeAdmin.isCurrentUserMember()) { + items.add(new XNavigateItemBlam(parentItem, new CreateNewUser(), FrameworkImage.ADD_GREEN)); + items.add(new XNavigateItemBlam(parentItem, new PopulateUserGroupBlam(), FrameworkImage.GROUP)); + items.add(new XNavigateItemBlam(parentItem, new UniqueNumberOfCurrentOseeUsers(), FrameworkImage.USERS)); + } + + ExtensionDefinedObjects<IUserNavigateItem> objects = + new ExtensionDefinedObjects<IUserNavigateItem>("org.eclipse.osee.framework.ui.skynet.UserNavigateItem", + "UserNavigateItem", "classname"); + for (IUserNavigateItem newItem : objects.getObjects()) { + for (XNavigateItem item : newItem.getNavigateItems(parentItem)) { + items.add(item); + } + } + + } catch (OseeCoreException ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex); + } + } + + @Override + public void createCommonSection(List<XNavigateItem> items, List<String> excludeSectionIds) { + try { + XNavigateItem reviewItem = new XNavigateItem(null, "User Management", FrameworkImage.USER); + new OpenPerspectiveNavigateItem(reviewItem, "User Management", UserPerspective.ID, FrameworkImage.USER); + addOseePeerSectionChildren(reviewItem); + items.add(reviewItem); + } catch (OseeCoreException ex) { + OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, "Can't create OSEE Review section"); + } + } + + @Override + public String getSectionId() { + return "Users"; + } +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItemsOperation.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItemsOperation.java new file mode 100644 index 00000000000..7ba6ec21bb5 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserNavigateViewItemsOperation.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2010 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.user.perspective; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.osee.framework.core.operation.AbstractOperation; +import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin; + +/** + * @author Donald G. Dunne + */ +public class UserNavigateViewItemsOperation extends AbstractOperation { + + public UserNavigateViewItemsOperation() { + super("Loading User Navigate View Items", SkynetGuiPlugin.PLUGIN_ID); + } + + @Override + protected void doWork(IProgressMonitor monitor) throws Exception { + UserNavigateViewItems.getInstance().getSearchNavigateItems(); + } +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserPerspective.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserPerspective.java new file mode 100644 index 00000000000..22fcc09f77d --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/user/perspective/UserPerspective.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.user.perspective; + +import org.eclipse.osee.framework.ui.skynet.ArtifactExplorer; +import org.eclipse.osee.framework.ui.skynet.search.QuickSearchView; +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +public class UserPerspective implements IPerspectiveFactory { + public static String ID = "org.eclipse.framework.ui.skynet.UserPerspective"; + + @Override + public void createInitialLayout(final IPageLayout layout) { + defineActions(layout); + defineLayout(layout); + } + + public void defineActions(final IPageLayout layout) { + layout.addShowViewShortcut(UserNavigateView.VIEW_ID); + layout.addShowViewShortcut(ArtifactExplorer.VIEW_ID); + layout.addShowViewShortcut(QuickSearchView.VIEW_ID); + } + + public void defineLayout(final IPageLayout layout) { + final String editorArea = layout.getEditorArea(); + + final IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.2f, editorArea); + final IFolderLayout bottomLeft = layout.createFolder("bottomLeft", IPageLayout.BOTTOM, 0.7f, "left"); + + left.addView(UserNavigateView.VIEW_ID); + bottomLeft.addView(QuickSearchView.VIEW_ID); + } +} |