diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java')
-rw-r--r-- | plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java | 1000 |
1 files changed, 500 insertions, 500 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java index 3ed9c333c7e..69abac7ca8c 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/DefectXViewer.java @@ -1,500 +1,500 @@ -/*******************************************************************************
- * 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.ats.util.widgets.defect;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.nebula.widgets.xviewer.IXViewerFactory;
-import org.eclipse.nebula.widgets.xviewer.XPromptChange;
-import org.eclipse.nebula.widgets.xviewer.XPromptChange.Option;
-import org.eclipse.nebula.widgets.xviewer.XViewer;
-import org.eclipse.nebula.widgets.xviewer.XViewerColumn;
-import org.eclipse.nebula.widgets.xviewer.util.EnumStringSingleSelectionDialog;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Disposition;
-import org.eclipse.osee.ats.util.widgets.defect.DefectItem.InjectionActivity;
-import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity;
-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.skynet.core.User;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserListDialog;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-
-/**
- * @author Donald G. Dunne
- */
-public class DefectXViewer extends XViewer {
-
- private final XDefectViewer xDefectViewer;
- private Action editSeverityAction;
- private Action editDispositionAction;
- private Action editClosedAction;
- private Action editUserAction;
- private Action editCreatedDateAction;
- private Action editInjectionAction;
- private Action editDescriptionAction;
- private Action editLocationAction;
- private Action editResolutionAction;
-
- /**
- * @param parent
- * @param style
- */
- DefectXViewer(Composite parent, int style, XDefectViewer xDefectViewer) {
- this(parent, style, new DefectXViewerFactory(), xDefectViewer);
- }
-
- public DefectXViewer(Composite parent, int style, IXViewerFactory xViewerFactory, XDefectViewer xDefectViewer) {
- super(parent, style, xViewerFactory);
- this.xDefectViewer = xDefectViewer;
- }
-
- @Override
- protected void createSupportWidgets(Composite parent) {
- super.createSupportWidgets(parent);
- parent.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- ((DefectContentProvider) getContentProvider()).clear();
- }
- });
- createMenuActions();
- }
-
- public void createMenuActions() {
- setColumnMultiEditEnabled(true);
- MenuManager mm = getMenuManager();
- mm.createContextMenu(getControl());
-
- editSeverityAction = new Action("Edit Severity", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Severity_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editClosedAction = new Action("Edit Closed ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Closed_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editCreatedDateAction = new Action("Edit Created Date ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Created_Date_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editDescriptionAction = new Action("Edit Description ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Description_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editDispositionAction = new Action("Edit Disposition ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Disposition_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editInjectionAction = new Action("Edit Injection ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Injection_Activity_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editLocationAction = new Action("Edit Location ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Location_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editResolutionAction = new Action("Edit Resolution ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.Resolution_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
-
- editUserAction = new Action("Edit User ", Action.AS_PUSH_BUTTON) {
- @Override
- public void run() {
- boolean columnMultiEdit = false;
- // grab the data, prompt change
- try {
- promptChangeData(DefectXViewerFactory.User_Col, getSelectedDefectItems(), columnMultiEdit);
- } catch (OseeCoreException ex) {
- OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString());
- }
- }
- };
- }
-
- public void updateEditMenuActions() {
- MenuManager mm = getMenuManager();
- // EDIT MENU BLOCK
- mm.insertBefore(MENU_GROUP_PRE, editSeverityAction);
- editSeverityAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editClosedAction);
- editClosedAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editCreatedDateAction);
- editCreatedDateAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editDescriptionAction);
- editDescriptionAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editDispositionAction);
- editDispositionAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editInjectionAction);
- editInjectionAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editLocationAction);
- editLocationAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editResolutionAction);
- editResolutionAction.setEnabled(true);
- mm.insertBefore(MENU_GROUP_PRE, editUserAction);
- editUserAction.setEnabled(true);
-
- }
-
- @Override
- public void updateMenuActionsForTable() {
- MenuManager mm = getMenuManager();
- updateEditMenuActions();
- mm.insertBefore(MENU_GROUP_PRE, new Separator());
- }
-
- public Collection<DefectItem> getLoadedDefectItems() {
- return ((DefectContentProvider) getContentProvider()).getRootSet();
- }
-
- public void add(Collection<DefectItem> defectItems) {
- if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).add(defectItems);
- }
-
- public void set(Collection<? extends DefectItem> defectItems) {
- if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).set(defectItems);
- }
-
- public void clear() {
- if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).clear();
- }
-
- /**
- * Release resources
- */
- @Override
- public void dispose() {
- // Dispose of the table objects is done through separate dispose listener off tree
- // Tell the label provider to release its resources
- getLabelProvider().dispose();
- }
-
- public ArrayList<DefectItem> getSelectedDefectItems() {
- ArrayList<DefectItem> arts = new ArrayList<DefectItem>();
- TreeItem items[] = getTree().getSelection();
- if (items.length > 0) for (TreeItem item : items)
- arts.add((DefectItem) item.getData());
- return arts;
- }
-
- @Override
- public void handleColumnMultiEdit(TreeColumn treeColumn, Collection<TreeItem> treeItems) {
- if (!xDefectViewer.isEditable()) {
- return;
- }
- ArrayList<DefectItem> defectItems = new ArrayList<DefectItem>();
- for (TreeItem item : treeItems) {
- defectItems.add((DefectItem) item.getData());
- }
- try {
- promptChangeData((XViewerColumn) treeColumn.getData(), defectItems, isColumnMultiEditEnabled());
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public boolean handleLeftClickInIconArea(TreeColumn treeColumn, TreeItem treeItem) {
- XViewerColumn xCol = (XViewerColumn) treeColumn.getData();
- if (xCol.equals(DefectXViewerFactory.User_Col) || xCol.equals(DefectXViewerFactory.Injection_Activity_Col) || xCol.equals(DefectXViewerFactory.Closed_Col) || xCol.equals(DefectXViewerFactory.Severity_Col)) {
- return handleAltLeftClick(treeColumn, treeItem);
- }
- return false;
- }
-
- @Override
- public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem) {
- if (!xDefectViewer.isEditable()) {
- return false;
- }
- try {
- XViewerColumn xCol = (XViewerColumn) treeColumn.getData();
- DefectItem defectItem = (DefectItem) treeItem.getData();
- List<DefectItem> defectItems = new ArrayList<DefectItem>();
- defectItems.add(defectItem);
- if (xCol.equals(DefectXViewerFactory.Severity_Col) || xCol.equals(DefectXViewerFactory.Disposition_Col) || xCol.equals(DefectXViewerFactory.Created_Date_Col) || xCol.equals(DefectXViewerFactory.Closed_Col) || xCol.equals(DefectXViewerFactory.Description_Col) || xCol.equals(DefectXViewerFactory.Resolution_Col) || xCol.equals(DefectXViewerFactory.Location_Col) || xCol.equals(DefectXViewerFactory.User_Col) || xCol.equals(DefectXViewerFactory.Injection_Activity_Col)) {
- return promptChangeData(xCol, defectItems, false);
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return false;
- }
-
- private boolean setInjectionActivity(Collection<DefectItem> defectItems, InjectionActivity newInjectionActivity) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getInjectionActivity().equals(newInjectionActivity)) {
- defectItem.setInjectionActivity(newInjectionActivity);
- // at least one in the list has been changed.
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setUser(Collection<DefectItem> defectItems, User user) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getUser().equals(user)) {
- defectItem.setUser(user);
- // at least one in the list has been changed.
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setLocation(Collection<DefectItem> defectItems, String loc) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getLocation().equals(loc)) {
- defectItem.setLocation(loc);
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setDescription(Collection<DefectItem> defectItems, String desc) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.toString().equals(desc)) {
- defectItem.setDescription(desc);
- if (!modified) modified = true;
- }
-
- }
- return modified;
- }
-
- private boolean setClosed(Collection<DefectItem> defectItems, boolean closed) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (defectItem.isClosed() != closed) {
- defectItem.setClosed(closed);
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setSeverity(Collection<DefectItem> defectItems, Severity severity) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getSeverity().equals(severity)) {
- defectItem.setSeverity(severity);
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setDisposition(Collection<DefectItem> defectItems, Disposition disposition) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getDisposition().equals(disposition)) {
- defectItem.setDisposition(disposition);
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setDate(Collection<DefectItem> defectItems, Date date) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- if (!defectItem.getDate().equals(date)) {
- defectItem.setDate(date);
- if (!modified) modified = true;
- }
- }
- return modified;
- }
-
- private boolean setResolution(Collection<DefectItem> defectItems, String resolution) {
- boolean modified = false;
- for (DefectItem defectItem : defectItems) {
- defectItem.setResolution(resolution);
- if (!modified) modified = true;
- }
- return modified;
- }
-
- public boolean promptChangeData(XViewerColumn xCol, Collection<DefectItem> defectItems, boolean columnMultiEdit) throws OseeCoreException {
- boolean modified = false;
- if (defectItems != null && !defectItems.isEmpty()) {
- DefectItem defectItem = (DefectItem) defectItems.toArray()[0];
- if (xCol.equals(DefectXViewerFactory.Severity_Col)) {
- EnumStringSingleSelectionDialog enumDialog =
- XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), Severity.strValues(),
- ((columnMultiEdit) ? null : defectItem.getSeverity().name()));
- if (enumDialog != null && enumDialog.getResult() != null) {
- modified = setSeverity(defectItems, Severity.valueOf((String) enumDialog.getResult()[0]));
- }
- } else if (xCol.equals(DefectXViewerFactory.Disposition_Col)) {
- EnumStringSingleSelectionDialog enumDialog =
- XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), Disposition.strValues(),
- ((columnMultiEdit) ? null : defectItem.getDisposition().name()));
- if (enumDialog != null && enumDialog.getResult() != null) {
- modified = setDisposition(defectItems, Disposition.valueOf((String) enumDialog.getResult()[0]));
- }
- } else if (xCol.equals(DefectXViewerFactory.Created_Date_Col)) {
- Date selDate =
- XPromptChange.promptChangeDate(xCol.getName(), ((columnMultiEdit) ? defectItem.getDate() : null));
- if (selDate != null) {
- modified = setDate(defectItems, selDate);
- }
- } else if (xCol.equals(DefectXViewerFactory.Closed_Col)) {
- Boolean closed =
- XPromptChange.promptChangeBoolean(xCol.getName(), xCol.getName(),
- ((columnMultiEdit) ? false : defectItem.isClosed()));
- if (closed != null) {
- modified = setClosed(defectItems, closed);
- }
- } else if (xCol.equals(DefectXViewerFactory.Description_Col)) {
- String desc =
- XPromptChange.promptChangeString(xCol.getName(),
- ((columnMultiEdit) ? null : defectItem.getDescription()), null, Option.MULTI_LINE);
- if (desc != null) {
- modified = setDescription(defectItems, desc);
- }
- } else if (xCol.equals(DefectXViewerFactory.Resolution_Col)) {
- String resolution =
- XPromptChange.promptChangeString(xCol.getName(),
- (columnMultiEdit ? null : defectItem.getResolution()), null, Option.MULTI_LINE);
- if (resolution != null) {
- modified = setResolution(defectItems, resolution);
- }
- } else if (xCol.equals(DefectXViewerFactory.Location_Col)) {
- String loc =
- XPromptChange.promptChangeString(xCol.getName(),
- ((columnMultiEdit) ? null : defectItem.getLocation()), null, Option.MULTI_LINE);
- if (loc != null) {
- modified = setLocation(defectItems, loc);
- }
- } else if (xCol.equals(DefectXViewerFactory.User_Col)) {
- UserListDialog ld = new UserListDialog(Displays.getActiveShell(), "Select New User");
- int result = ld.open();
- if (result == 0) {
- modified = setUser(defectItems, ld.getSelection());
- }
- } else if (xCol.equals(DefectXViewerFactory.Injection_Activity_Col)) {
- EnumStringSingleSelectionDialog enumDialog =
- XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), InjectionActivity.strValues(),
- ((columnMultiEdit) ? null : defectItem.getInjectionActivity().name()));
- if (enumDialog != null && enumDialog.getResult() != null) {
- modified =
- setInjectionActivity(defectItems, InjectionActivity.valueOf((String) enumDialog.getResult()[0]));
- }
- }
- if (modified) {
- return executeTransaction(defectItems);
- }
- }
- return false;
- }
-
- public boolean executeTransaction(Collection<DefectItem> defectItems) throws OseeCoreException {
- SkynetTransaction transaction =
- new SkynetTransaction(xDefectViewer.getReviewArt().getArtifact().getBranch(), "Modify Review Defects");
- for (DefectItem defectItem : defectItems) {
- xDefectViewer.getReviewArt().getDefectManager().addOrUpdateDefectItem(defectItem, false, transaction);
- update(defectItem, null);
- }
- transaction.execute();
- xDefectViewer.notifyXModifiedListeners();
- return true;
- }
-}
+/******************************************************************************* + * 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.ats.util.widgets.defect; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.nebula.widgets.xviewer.IXViewerFactory; +import org.eclipse.nebula.widgets.xviewer.XPromptChange; +import org.eclipse.nebula.widgets.xviewer.XPromptChange.Option; +import org.eclipse.nebula.widgets.xviewer.XViewer; +import org.eclipse.nebula.widgets.xviewer.XViewerColumn; +import org.eclipse.nebula.widgets.xviewer.util.EnumStringSingleSelectionDialog; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Disposition; +import org.eclipse.osee.ats.util.widgets.defect.DefectItem.InjectionActivity; +import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity; +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.skynet.core.User; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserListDialog; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.TreeColumn; +import org.eclipse.swt.widgets.TreeItem; + +/** + * @author Donald G. Dunne + */ +public class DefectXViewer extends XViewer { + + private final XDefectViewer xDefectViewer; + private Action editSeverityAction; + private Action editDispositionAction; + private Action editClosedAction; + private Action editUserAction; + private Action editCreatedDateAction; + private Action editInjectionAction; + private Action editDescriptionAction; + private Action editLocationAction; + private Action editResolutionAction; + + /** + * @param parent + * @param style + */ + DefectXViewer(Composite parent, int style, XDefectViewer xDefectViewer) { + this(parent, style, new DefectXViewerFactory(), xDefectViewer); + } + + public DefectXViewer(Composite parent, int style, IXViewerFactory xViewerFactory, XDefectViewer xDefectViewer) { + super(parent, style, xViewerFactory); + this.xDefectViewer = xDefectViewer; + } + + @Override + protected void createSupportWidgets(Composite parent) { + super.createSupportWidgets(parent); + parent.addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + ((DefectContentProvider) getContentProvider()).clear(); + } + }); + createMenuActions(); + } + + public void createMenuActions() { + setColumnMultiEditEnabled(true); + MenuManager mm = getMenuManager(); + mm.createContextMenu(getControl()); + + editSeverityAction = new Action("Edit Severity", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Severity_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editClosedAction = new Action("Edit Closed ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Closed_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editCreatedDateAction = new Action("Edit Created Date ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Created_Date_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editDescriptionAction = new Action("Edit Description ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Description_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editDispositionAction = new Action("Edit Disposition ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Disposition_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editInjectionAction = new Action("Edit Injection ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Injection_Activity_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editLocationAction = new Action("Edit Location ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Location_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editResolutionAction = new Action("Edit Resolution ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.Resolution_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + + editUserAction = new Action("Edit User ", Action.AS_PUSH_BUTTON) { + @Override + public void run() { + boolean columnMultiEdit = false; + // grab the data, prompt change + try { + promptChangeData(DefectXViewerFactory.User_Col, getSelectedDefectItems(), columnMultiEdit); + } catch (OseeCoreException ex) { + OseeLog.log(DefectXViewer.class, OseeLevel.SEVERE_POPUP, ex.toString()); + } + } + }; + } + + public void updateEditMenuActions() { + MenuManager mm = getMenuManager(); + // EDIT MENU BLOCK + mm.insertBefore(MENU_GROUP_PRE, editSeverityAction); + editSeverityAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editClosedAction); + editClosedAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editCreatedDateAction); + editCreatedDateAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editDescriptionAction); + editDescriptionAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editDispositionAction); + editDispositionAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editInjectionAction); + editInjectionAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editLocationAction); + editLocationAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editResolutionAction); + editResolutionAction.setEnabled(true); + mm.insertBefore(MENU_GROUP_PRE, editUserAction); + editUserAction.setEnabled(true); + + } + + @Override + public void updateMenuActionsForTable() { + MenuManager mm = getMenuManager(); + updateEditMenuActions(); + mm.insertBefore(MENU_GROUP_PRE, new Separator()); + } + + public Collection<DefectItem> getLoadedDefectItems() { + return ((DefectContentProvider) getContentProvider()).getRootSet(); + } + + public void add(Collection<DefectItem> defectItems) { + if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).add(defectItems); + } + + public void set(Collection<? extends DefectItem> defectItems) { + if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).set(defectItems); + } + + public void clear() { + if (((DefectContentProvider) getContentProvider()) != null) ((DefectContentProvider) getContentProvider()).clear(); + } + + /** + * Release resources + */ + @Override + public void dispose() { + // Dispose of the table objects is done through separate dispose listener off tree + // Tell the label provider to release its resources + getLabelProvider().dispose(); + } + + public ArrayList<DefectItem> getSelectedDefectItems() { + ArrayList<DefectItem> arts = new ArrayList<DefectItem>(); + TreeItem items[] = getTree().getSelection(); + if (items.length > 0) for (TreeItem item : items) + arts.add((DefectItem) item.getData()); + return arts; + } + + @Override + public void handleColumnMultiEdit(TreeColumn treeColumn, Collection<TreeItem> treeItems) { + if (!xDefectViewer.isEditable()) { + return; + } + ArrayList<DefectItem> defectItems = new ArrayList<DefectItem>(); + for (TreeItem item : treeItems) { + defectItems.add((DefectItem) item.getData()); + } + try { + promptChangeData((XViewerColumn) treeColumn.getData(), defectItems, isColumnMultiEditEnabled()); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + + @Override + public boolean handleLeftClickInIconArea(TreeColumn treeColumn, TreeItem treeItem) { + XViewerColumn xCol = (XViewerColumn) treeColumn.getData(); + if (xCol.equals(DefectXViewerFactory.User_Col) || xCol.equals(DefectXViewerFactory.Injection_Activity_Col) || xCol.equals(DefectXViewerFactory.Closed_Col) || xCol.equals(DefectXViewerFactory.Severity_Col)) { + return handleAltLeftClick(treeColumn, treeItem); + } + return false; + } + + @Override + public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem) { + if (!xDefectViewer.isEditable()) { + return false; + } + try { + XViewerColumn xCol = (XViewerColumn) treeColumn.getData(); + DefectItem defectItem = (DefectItem) treeItem.getData(); + List<DefectItem> defectItems = new ArrayList<DefectItem>(); + defectItems.add(defectItem); + if (xCol.equals(DefectXViewerFactory.Severity_Col) || xCol.equals(DefectXViewerFactory.Disposition_Col) || xCol.equals(DefectXViewerFactory.Created_Date_Col) || xCol.equals(DefectXViewerFactory.Closed_Col) || xCol.equals(DefectXViewerFactory.Description_Col) || xCol.equals(DefectXViewerFactory.Resolution_Col) || xCol.equals(DefectXViewerFactory.Location_Col) || xCol.equals(DefectXViewerFactory.User_Col) || xCol.equals(DefectXViewerFactory.Injection_Activity_Col)) { + return promptChangeData(xCol, defectItems, false); + } + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + return false; + } + + private boolean setInjectionActivity(Collection<DefectItem> defectItems, InjectionActivity newInjectionActivity) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getInjectionActivity().equals(newInjectionActivity)) { + defectItem.setInjectionActivity(newInjectionActivity); + // at least one in the list has been changed. + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setUser(Collection<DefectItem> defectItems, User user) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getUser().equals(user)) { + defectItem.setUser(user); + // at least one in the list has been changed. + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setLocation(Collection<DefectItem> defectItems, String loc) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getLocation().equals(loc)) { + defectItem.setLocation(loc); + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setDescription(Collection<DefectItem> defectItems, String desc) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.toString().equals(desc)) { + defectItem.setDescription(desc); + if (!modified) modified = true; + } + + } + return modified; + } + + private boolean setClosed(Collection<DefectItem> defectItems, boolean closed) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (defectItem.isClosed() != closed) { + defectItem.setClosed(closed); + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setSeverity(Collection<DefectItem> defectItems, Severity severity) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getSeverity().equals(severity)) { + defectItem.setSeverity(severity); + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setDisposition(Collection<DefectItem> defectItems, Disposition disposition) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getDisposition().equals(disposition)) { + defectItem.setDisposition(disposition); + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setDate(Collection<DefectItem> defectItems, Date date) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + if (!defectItem.getDate().equals(date)) { + defectItem.setDate(date); + if (!modified) modified = true; + } + } + return modified; + } + + private boolean setResolution(Collection<DefectItem> defectItems, String resolution) { + boolean modified = false; + for (DefectItem defectItem : defectItems) { + defectItem.setResolution(resolution); + if (!modified) modified = true; + } + return modified; + } + + public boolean promptChangeData(XViewerColumn xCol, Collection<DefectItem> defectItems, boolean columnMultiEdit) throws OseeCoreException { + boolean modified = false; + if (defectItems != null && !defectItems.isEmpty()) { + DefectItem defectItem = (DefectItem) defectItems.toArray()[0]; + if (xCol.equals(DefectXViewerFactory.Severity_Col)) { + EnumStringSingleSelectionDialog enumDialog = + XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), Severity.strValues(), + ((columnMultiEdit) ? null : defectItem.getSeverity().name())); + if (enumDialog != null && enumDialog.getResult() != null) { + modified = setSeverity(defectItems, Severity.valueOf((String) enumDialog.getResult()[0])); + } + } else if (xCol.equals(DefectXViewerFactory.Disposition_Col)) { + EnumStringSingleSelectionDialog enumDialog = + XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), Disposition.strValues(), + ((columnMultiEdit) ? null : defectItem.getDisposition().name())); + if (enumDialog != null && enumDialog.getResult() != null) { + modified = setDisposition(defectItems, Disposition.valueOf((String) enumDialog.getResult()[0])); + } + } else if (xCol.equals(DefectXViewerFactory.Created_Date_Col)) { + Date selDate = + XPromptChange.promptChangeDate(xCol.getName(), ((columnMultiEdit) ? defectItem.getDate() : null)); + if (selDate != null) { + modified = setDate(defectItems, selDate); + } + } else if (xCol.equals(DefectXViewerFactory.Closed_Col)) { + Boolean closed = + XPromptChange.promptChangeBoolean(xCol.getName(), xCol.getName(), + ((columnMultiEdit) ? false : defectItem.isClosed())); + if (closed != null) { + modified = setClosed(defectItems, closed); + } + } else if (xCol.equals(DefectXViewerFactory.Description_Col)) { + String desc = + XPromptChange.promptChangeString(xCol.getName(), + ((columnMultiEdit) ? null : defectItem.getDescription()), null, Option.MULTI_LINE); + if (desc != null) { + modified = setDescription(defectItems, desc); + } + } else if (xCol.equals(DefectXViewerFactory.Resolution_Col)) { + String resolution = + XPromptChange.promptChangeString(xCol.getName(), + (columnMultiEdit ? null : defectItem.getResolution()), null, Option.MULTI_LINE); + if (resolution != null) { + modified = setResolution(defectItems, resolution); + } + } else if (xCol.equals(DefectXViewerFactory.Location_Col)) { + String loc = + XPromptChange.promptChangeString(xCol.getName(), + ((columnMultiEdit) ? null : defectItem.getLocation()), null, Option.MULTI_LINE); + if (loc != null) { + modified = setLocation(defectItems, loc); + } + } else if (xCol.equals(DefectXViewerFactory.User_Col)) { + UserListDialog ld = new UserListDialog(Displays.getActiveShell(), "Select New User"); + int result = ld.open(); + if (result == 0) { + modified = setUser(defectItems, ld.getSelection()); + } + } else if (xCol.equals(DefectXViewerFactory.Injection_Activity_Col)) { + EnumStringSingleSelectionDialog enumDialog = + XPromptChange.promptChangeSingleSelectEnumeration(xCol.getName(), InjectionActivity.strValues(), + ((columnMultiEdit) ? null : defectItem.getInjectionActivity().name())); + if (enumDialog != null && enumDialog.getResult() != null) { + modified = + setInjectionActivity(defectItems, InjectionActivity.valueOf((String) enumDialog.getResult()[0])); + } + } + if (modified) { + return executeTransaction(defectItems); + } + } + return false; + } + + public boolean executeTransaction(Collection<DefectItem> defectItems) throws OseeCoreException { + SkynetTransaction transaction = + new SkynetTransaction(xDefectViewer.getReviewArt().getArtifact().getBranch(), "Modify Review Defects"); + for (DefectItem defectItem : defectItems) { + xDefectViewer.getReviewArt().getDefectManager().addOrUpdateDefectItem(defectItem, false, transaction); + update(defectItem, null); + } + transaction.execute(); + xDefectViewer.notifyXModifiedListeners(); + return true; + } +} |