| // $codepro.audit.disable com.instantiations.assist.eclipse.analysis.audit.rule.effectivejava.alwaysOverridetoString.alwaysOverrideToString, com.instantiations.assist.eclipse.analysis.deserializeabilitySecurity, com.instantiations.assist.eclipse.analysis.disallowReturnMutable, com.instantiations.assist.eclipse.analysis.enforceCloneableUsageSecurity, com.instantiations.assist.eclipse.analysis.instanceFieldSecurity, com.instantiations.assist.eclipse.analysis.mutabilityOfArrays |
| /******************************************************************************* |
| * Copyright (c) 2010, 2012 Ericsson AB 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 |
| * |
| * Description: |
| * |
| * This class implements the Review Group element of the UI model |
| * |
| * Contributors: |
| * Sebastien Dubois - Created for Mylyn Review R4E project |
| * Jacques Bouthillier - Add method to read the group path file for Report |
| * |
| ******************************************************************************/ |
| |
| package org.eclipse.mylyn.reviews.r4e.ui.internal.model; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.jface.dialogs.ErrorDialog; |
| import org.eclipse.jface.window.Window; |
| import org.eclipse.mylyn.reviews.frame.core.model.Review; |
| import org.eclipse.mylyn.reviews.frame.core.model.ReviewComponent; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EDecision; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReview; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewDecision; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewGroup; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewPhase; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewState; |
| import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewType; |
| import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory; |
| import org.eclipse.mylyn.reviews.r4e.core.model.serial.Persistence.RModelFactoryExt; |
| import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.CompatibilityException; |
| import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.OutOfSyncException; |
| import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException; |
| import org.eclipse.mylyn.reviews.r4e.ui.R4EUIPlugin; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.dialogs.IReviewInputDialog; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.dialogs.R4EUIDialogFactory; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.preferences.PreferenceConstants; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.properties.general.ReviewGroupProperties; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.R4EUIConstants; |
| import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.UIUtils; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.ui.views.properties.IPropertySource; |
| |
| /** |
| * @author Sebastien Dubois |
| * @version $Revision: 1.0 $ |
| */ |
| public class R4EUIReviewGroup extends R4EUIModelElement { |
| |
| // ------------------------------------------------------------------------ |
| // Constants |
| // ------------------------------------------------------------------------ |
| |
| /** |
| * Field REVIEW_GROUP_ICON_FILE. (value is ""icons/obj16/revgrp_obj.gif"") |
| */ |
| public static final String REVIEW_GROUP_ICON_FILE = "icons/obj16/revgrp_obj.gif"; |
| |
| /** |
| * Field REVIEW_GROUP_CLOSED_ICON_FILE. (value is ""icons/obj16/revgrpclsd_obj.gif"") |
| */ |
| public static final String REVIEW_GROUP_CLOSED_ICON_FILE = "icons/obj16/revgrpclsd_obj.gif"; |
| |
| /** |
| * Field NEW_CHILD_ELEMENT_COMMAND_NAME. (value is ""New Review..."") |
| */ |
| private static final String NEW_CHILD_ELEMENT_COMMAND_NAME = "New Review..."; |
| |
| /** |
| * Field NEW_CHILD_ELEMENT_COMMAND_TOOLTIP. (value is ""Add a new review to the current review group"") |
| */ |
| private static final String NEW_CHILD_ELEMENT_COMMAND_TOOLTIP = "Add a New Review to the Current Review Group"; |
| |
| /** |
| * Field OPEN_ELEMENT_COMMAND_NAME. (value is ""Open Review Group"") |
| */ |
| private static final String OPEN_ELEMENT_COMMAND_NAME = "Open Review Group"; |
| |
| /** |
| * Field OPEN_ELEMENT_COMMAND_TOOLTIP. (value is ""Open and Load Data for this Review Group"") |
| */ |
| private static final String OPEN_ELEMENT_COMMAND_TOOLTIP = "Open and Load Data for this Review Group"; |
| |
| /** |
| * Field CLOSE_ELEMENT_COMMAND_NAME. (value is ""Close Review Group"") |
| */ |
| private static final String CLOSE_ELEMENT_COMMAND_NAME = "Close Review Group"; |
| |
| /** |
| * Field CLOSE_ELEMENT_COMMAND_TOOLTIP. (value is ""Close and Unload Data for this Review Group"") |
| */ |
| private static final String CLOSE_ELEMENT_COMMAND_TOOLTIP = "Close and Unload Data for this Review Group"; |
| |
| /** |
| * Field REMOVE_ELEMENT_ACTION_NAME. (value is ""Disable Review Group"") |
| */ |
| private static final String REMOVE_ELEMENT_COMMAND_NAME = "Disable Review Group"; |
| |
| /** |
| * Field REMOVE_ELEMENT_ACTION_TOOLTIP. (value is ""Disable this Review Group"") |
| */ |
| private static final String REMOVE_ELEMENT_COMMAND_TOOLTIP = "Disable this Review Group"; |
| |
| /** |
| * Field RESTORE_ELEMENT_COMMAND_NAME. (value is ""Restore Review Group"") |
| */ |
| private static final String RESTORE_ELEMENT_COMMAND_NAME = "Restore Review Group"; |
| |
| /** |
| * Field RESTORE_ELEMENT_ACTION_TOOLTIP. (value is ""Restore this disabled Review Group"") |
| */ |
| private static final String RESTORE_ELEMENT_COMMAND_TOOLTIP = "Restore this disabled Review Group"; |
| |
| // ------------------------------------------------------------------------ |
| // Member variables |
| // ------------------------------------------------------------------------ |
| |
| /** |
| * Field fGroup. |
| */ |
| protected R4EReviewGroup fGroup; |
| |
| /** |
| * Field fGroupFileURI. |
| */ |
| private final URI fGroupFileURI; |
| |
| /** |
| * Field fReviews. |
| */ |
| private final List<R4EUIReviewBasic> fReviews; |
| |
| /** |
| * Field fRuleSets. |
| */ |
| private final List<R4EUIRuleSet> fRuleSets; |
| |
| // ------------------------------------------------------------------------ |
| // Constructors |
| // ------------------------------------------------------------------------ |
| |
| /** |
| * Constructor for R4EUIReviewGroup. |
| * |
| * @param aParent |
| * IR4EUIModelElement |
| * @param aGroup |
| * R4EReviewGroup |
| * @param aOpen |
| * boolean |
| */ |
| public R4EUIReviewGroup(IR4EUIModelElement aParent, R4EReviewGroup aGroup, boolean aOpen) { |
| super(aParent, aGroup.getName()); |
| fReadOnly = false; |
| fGroup = aGroup; |
| fGroupFileURI = aGroup.eResource().getURI(); |
| fReviews = new ArrayList<R4EUIReviewBasic>(); |
| fRuleSets = new ArrayList<R4EUIRuleSet>(); |
| fOpen = aOpen; |
| } |
| |
| // ------------------------------------------------------------------------ |
| // Methods |
| // ------------------------------------------------------------------------ |
| |
| /** |
| * Method getImageLocation. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getImageLocation() |
| */ |
| public String getImageLocation() { |
| if (isOpen()) { |
| return REVIEW_GROUP_ICON_FILE; |
| } |
| return REVIEW_GROUP_CLOSED_ICON_FILE; |
| } |
| |
| /** |
| * Method getToolTip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getToolTip() |
| */ |
| @Override |
| public String getToolTip() { |
| return R4EUIConstants.FILE_LOCATION_LABEL + URI.decode(fGroupFileURI.devicePath()); |
| } |
| |
| /** |
| * Method getAdapter. |
| * |
| * @param adapter |
| * Class |
| * @return Object |
| * @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class) |
| */ |
| @Override |
| public Object getAdapter(@SuppressWarnings("rawtypes") |
| Class adapter) { |
| if (IR4EUIModelElement.class.equals(adapter)) { |
| return this; |
| } |
| if (IPropertySource.class.equals(adapter)) { |
| return new ReviewGroupProperties(this); |
| } |
| return null; |
| } |
| |
| //Attributes |
| |
| /** |
| * Method getReviewGroup. |
| * |
| * @return R4EReviewGroup |
| */ |
| public R4EReviewGroup getReviewGroup() { |
| return fGroup; |
| } |
| |
| /** |
| * Method getGroupFile. |
| * |
| * @return R4EReviewGroup |
| */ |
| public String getGroupFile() { |
| return URI.decode(fGroupFileURI.devicePath()); |
| } |
| |
| /** |
| * Method getRuleSets. |
| * |
| * @return List<R4EUIRuleSet> |
| */ |
| public List<R4EUIRuleSet> getRuleSets() { |
| return fRuleSets; |
| } |
| |
| /** |
| * Set serialization model data by copying it from the passed-in object |
| * |
| * @param aModelComponent |
| * - a serialization model element to copy information from |
| * @throws ResourceHandlingException |
| * @throws OutOfSyncException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#setModelData(R4EReviewComponent) |
| */ |
| @Override |
| public void setModelData(ReviewComponent aModelComponent) throws ResourceHandlingException, OutOfSyncException { |
| //Set data in model element |
| final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fGroup, R4EUIModelController.getReviewer()); |
| fGroup.setDescription(((R4EReviewGroup) aModelComponent).getDescription()); |
| fGroup.getAvailableProjects().addAll(((R4EReviewGroup) aModelComponent).getAvailableProjects()); |
| fGroup.getAvailableComponents().addAll(((R4EReviewGroup) aModelComponent).getAvailableComponents()); |
| fGroup.setDefaultEntryCriteria(((R4EReviewGroup) aModelComponent).getDefaultEntryCriteria()); |
| fGroup.getDesignRuleLocations().addAll(((R4EReviewGroup) aModelComponent).getDesignRuleLocations()); |
| R4EUIModelController.FResourceUpdater.checkIn(bookNum); |
| } |
| |
| /** |
| * Create a serialization model element object |
| * |
| * @return the new serialization element object |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#createChildModelDataElement() |
| */ |
| @Override |
| public List<ReviewComponent> createChildModelDataElement() { |
| //Get comment from user and set it in model data |
| final List<ReviewComponent> tempReviews = new ArrayList<ReviewComponent>(); |
| |
| final IReviewInputDialog dialog = R4EUIDialogFactory.getInstance().getReviewInputDialog(this); |
| dialog.create(); |
| final int result = dialog.open(); |
| if (result == Window.OK) { |
| R4EReview tempReview; |
| |
| //All reviews |
| final R4EReviewType type = dialog.getReviewTypeValue(); |
| if (type.equals(R4EReviewType.R4E_REVIEW_TYPE_FORMAL)) { |
| tempReview = RModelFactory.eINSTANCE.createR4EFormalReview(); |
| } else { |
| tempReview = RModelFactory.eINSTANCE.createR4EReview(); |
| } |
| tempReview.setType(type); |
| tempReview.setName(dialog.getReviewNameValue()); |
| tempReview.setExtraNotes(dialog.getReviewDescriptionValue()); |
| tempReview.setDueDate(dialog.getDueDate()); |
| tempReview.setProject(dialog.getProjectValue()); |
| for (String component : dialog.getComponentsValues()) { |
| tempReview.getComponents().add(component); |
| } |
| tempReview.setEntryCriteria(dialog.getEntryCriteriaValue()); |
| tempReview.setObjectives(dialog.getObjectivesValue()); |
| tempReview.setReferenceMaterial(dialog.getReferenceMaterialValue()); |
| //Set default exit decision for INFORMAL review |
| final R4EReviewDecision reviewDecision = RModelFactoryExt.eINSTANCE.createR4EReviewDecision(); |
| if (type.equals(R4EReviewType.R4E_REVIEW_TYPE_INFORMAL)) { |
| reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_ACCEPTED); |
| } else { |
| reviewDecision.setValue(R4EDecision.R4E_REVIEW_DECISION_NONE); |
| } |
| |
| tempReview.setDecision(reviewDecision); |
| tempReviews.add(tempReview); |
| } |
| return tempReviews; |
| } |
| |
| /** |
| * Close the model element (i.e. disable it) |
| * |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#close() |
| */ |
| @Override |
| public void close() { |
| //Remove all children references |
| R4EUIReviewBasic review = null; |
| final int reviewsSize = fReviews.size(); |
| for (int i = 0; i < reviewsSize; i++) { |
| |
| review = fReviews.get(i); |
| if (!review.isOpen()) { |
| continue; //skip reviews that are already closed |
| } |
| review.close(); |
| } |
| fReviews.clear(); |
| fRuleSets.clear(); |
| fOpen = false; |
| fReadOnly = false; |
| R4EUIModelController.FModelExt.closeR4EReviewGroup(fGroup); //Notify model |
| fImage = UIUtils.loadIcon(REVIEW_GROUP_CLOSED_ICON_FILE); |
| } |
| |
| /** |
| * Open the model element (i.e. enable it) |
| * |
| * @throws ResourceHandlingException |
| * @throws CompatibilityException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#open() |
| */ |
| @Override |
| public void open() throws ResourceHandlingException, CompatibilityException { |
| //Load model information |
| fGroup = R4EUIModelController.FModelExt.openR4EReviewGroup(fGroupFileURI); |
| if (checkCompatibility()) { |
| final EList<Review> reviews = fGroup.getReviews(); |
| if (null != reviews) { |
| final int reviewsSize = reviews.size(); |
| R4EReview review = null; |
| R4EUIReviewBasic uiReview = null; |
| |
| for (int i = 0; i < reviewsSize; i++) { |
| review = (R4EReview) reviews.get(i); |
| if (review.isEnabled() |
| || R4EUIPlugin.getDefault() |
| .getPreferenceStore() |
| .getBoolean(PreferenceConstants.P_SHOW_DISABLED)) { |
| uiReview = null; |
| if (review.getType().equals(R4EReviewType.R4E_REVIEW_TYPE_FORMAL)) { |
| uiReview = new R4EUIReviewExtended(this, review, review.getType(), false); |
| ((R4EUIReviewExtended) uiReview).setName(((R4EUIReviewExtended) uiReview).getPhaseString(((R4EReviewState) review.getState()).getState()) |
| + ": " + uiReview.getName()); |
| } else { |
| uiReview = new R4EUIReviewBasic(this, review, review.getType(), false); |
| } |
| addChildren(uiReview); |
| } |
| } |
| } |
| |
| //Close and Reopen the RulesSet to make sure we have the latest information |
| final List<String> ruleSetlocations = fGroup.getDesignRuleLocations(); |
| for (String ruleSetlocation : ruleSetlocations) { |
| for (R4EUIRuleSet ruleSet : ((R4EUIRootElement) getParent()).getRuleSets()) { |
| if (ruleSet.getRuleSet().getName().equals(ruleSetlocation)) { |
| fRuleSets.add(ruleSet); |
| break; |
| } |
| } |
| } |
| fOpen = true; |
| fImage = UIUtils.loadIcon(REVIEW_GROUP_ICON_FILE); |
| } else { |
| R4EUIModelController.FModelExt.closeR4EReviewGroup(fGroup); //Notify model |
| } |
| } |
| |
| /** |
| * Check version compatibility between the element(s) to load and the current R4E application |
| * |
| * @return boolean |
| */ |
| private boolean checkCompatibility() { |
| final int checkResult = fGroup.getCompatibility(); |
| switch (checkResult) { |
| case R4EUIConstants.VERSION_APPLICATION_OLDER: |
| UIUtils.displayCompatibilityErrorDialog(); |
| return false; |
| case R4EUIConstants.VERSION_APPLICATION_NEWER: |
| final int result = UIUtils.displayCompatibilityWarningDialog(fGroup.getFragmentVersion(), |
| fGroup.getApplicationVersion()); |
| switch (result) { |
| case R4EUIConstants.OPEN_NORMAL: |
| //Upgrade version immediately |
| try { |
| final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fGroup, |
| R4EUIModelController.getReviewer()); |
| fGroup.setFragmentVersion(fGroup.getApplicationVersion()); |
| R4EUIModelController.FResourceUpdater.checkIn(bookNum); |
| } catch (ResourceHandlingException e) { |
| UIUtils.displayResourceErrorDialog(e); |
| return false; |
| } catch (OutOfSyncException e) { |
| UIUtils.displaySyncErrorDialog(e); |
| return false; |
| } |
| fReadOnly = false; |
| return true; |
| case R4EUIConstants.OPEN_READONLY: |
| fReadOnly = true; |
| return true; |
| default: |
| //Assume Cancel |
| return false; |
| } |
| default: |
| //Normal case, do nothing |
| fReadOnly = false; |
| return true; |
| } |
| } |
| |
| /** |
| * Method setEnabled. |
| * |
| * @param aEnabled |
| * boolean |
| * @throws ResourceHandlingException |
| * @throws OutOfSyncException |
| * @throws CompatibilityException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#setEnabled(boolean) |
| */ |
| @Override |
| public void setEnabled(boolean aEnabled) throws ResourceHandlingException, OutOfSyncException, |
| CompatibilityException { |
| //NOTE we need to open the model element temporarly to be able to set the enabled state |
| fGroup = R4EUIModelController.FModelExt.openR4EReviewGroup(fGroupFileURI); |
| final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fGroup, R4EUIModelController.getReviewer()); |
| fGroup.setEnabled(aEnabled); |
| R4EUIModelController.FResourceUpdater.checkIn(bookNum); |
| R4EUIModelController.FModelExt.closeR4EReviewGroup(fGroup); |
| } |
| |
| /** |
| * Method isEnabled. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isEnabled() |
| */ |
| @Override |
| public boolean isEnabled() { |
| return fGroup.isEnabled(); |
| } |
| |
| //Hierarchy |
| |
| /** |
| * Method getChildren. |
| * |
| * @return IR4EUIModelElement[] |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getChildren() |
| */ |
| @Override |
| public IR4EUIModelElement[] getChildren() { |
| return fReviews.toArray(new R4EUIReviewBasic[fReviews.size()]); |
| } |
| |
| /** |
| * Method hasChildren |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#hasChildren() |
| */ |
| @Override |
| public boolean hasChildren() { |
| if (isOpen()) { |
| if (fReviews.size() > 0) { |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| /** |
| * Method createChildren. |
| * |
| * @param aModelComponent |
| * - the serialization model component object |
| * @return IR4EUIModelElement |
| * @throws ResourceHandlingException |
| * @throws OutOfSyncException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#createChildren(R4EReviewComponent) |
| */ |
| @Override |
| public IR4EUIModelElement createChildren(ReviewComponent aModelComponent) throws ResourceHandlingException, |
| OutOfSyncException { |
| |
| final String reviewName = ((R4EReview) aModelComponent).getName(); |
| final R4EReviewType type = ((R4EReview) aModelComponent).getType(); |
| |
| //Check if review already exists. If so it cannot be recreated |
| for (R4EUIReviewBasic review : fReviews) { |
| if (review.getReview().getName().equals(reviewName)) { |
| final ErrorDialog dialog = new ErrorDialog(null, R4EUIConstants.DIALOG_TITLE_ERROR, |
| "Error while creating new review ", new Status(IStatus.ERROR, R4EUIPlugin.PLUGIN_ID, 0, |
| "Review " + reviewName + " already exists", null), IStatus.ERROR); |
| Display.getDefault().syncExec(new Runnable() { |
| public void run() { |
| dialog.open(); |
| } |
| }); |
| return null; |
| } |
| } |
| |
| final R4EUIReviewBasic addedChild; |
| if (type.equals(R4EReviewType.R4E_REVIEW_TYPE_FORMAL)) { |
| addedChild = new R4EUIReviewExtended(this, R4EUIModelController.FModelExt.createR4EFormalReview( |
| getReviewGroup(), reviewName, R4EUIModelController.getReviewer()), type, true); |
| ((R4EUIReviewExtended) addedChild).updatePhase(R4EReviewPhase.R4E_REVIEW_PHASE_STARTED); |
| } else { |
| addedChild = new R4EUIReviewBasic(this, R4EUIModelController.FModelExt.createR4EReview(getReviewGroup(), |
| reviewName, R4EUIModelController.getReviewer()), type, true); |
| addedChild.updatePhase(R4EReviewPhase.R4E_REVIEW_PHASE_STARTED); |
| } |
| addedChild.setModelData(aModelComponent); |
| addChildren(addedChild); |
| return addedChild; |
| } |
| |
| /** |
| * Method addChildren. |
| * |
| * @param aChildToAdd |
| * IR4EUIModelElement |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#addChildren(IR4EUIModelElement) |
| */ |
| @Override |
| public void addChildren(IR4EUIModelElement aChildToAdd) { |
| fReviews.add((R4EUIReviewBasic) aChildToAdd); |
| } |
| |
| /** |
| * Method removeChildren. |
| * |
| * @param aChildToRemove |
| * IR4EUIModelElement |
| * @param aFileRemove |
| * - also remove from file (hard remove) |
| * @throws OutOfSyncException |
| * @throws ResourceHandlingException |
| * @throws CompatibilityException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#removeChildren(IR4EUIModelElement) |
| */ |
| @Override |
| public void removeChildren(IR4EUIModelElement aChildToRemove, boolean aFileRemove) |
| throws ResourceHandlingException, OutOfSyncException, CompatibilityException { |
| //This was the current review, so tell the controller that no review is now active |
| if (((R4EUIReviewBasic) aChildToRemove).isOpen()) { |
| R4EUIModelController.setActiveReview(null); |
| } |
| |
| final R4EUIReviewBasic removedElement = fReviews.get(fReviews.indexOf(aChildToRemove)); |
| |
| //Also recursively remove all children |
| removedElement.removeAllChildren(aFileRemove); |
| |
| /* TODO uncomment when core model supports hard-removing of elements |
| if (aFileRemove) removedElement.getReview().remove()); |
| else */ |
| removedElement.setEnabled(false); |
| |
| //Remove element from UI if the show disabled element option is off |
| if (!(R4EUIPlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.P_SHOW_DISABLED))) { |
| fReviews.remove(removedElement); |
| } |
| } |
| |
| /** |
| * Method removeAllChildren. |
| * |
| * @param aFileRemove |
| * boolean |
| * @throws OutOfSyncException |
| * @throws ResourceHandlingException |
| * @throws CompatibilityException |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#removeAllChildren(boolean) |
| */ |
| @Override |
| public void removeAllChildren(boolean aFileRemove) throws ResourceHandlingException, OutOfSyncException, |
| CompatibilityException { |
| //Recursively remove all children |
| for (R4EUIReviewBasic review : fReviews) { |
| removeChildren(review, aFileRemove); |
| } |
| } |
| |
| //Listeners |
| |
| /* *//** |
| * Method addListener. |
| * |
| * @param aProvider |
| * ReviewNavigatorContentProvider |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#addListener(ReviewNavigatorContentProvider) |
| */ |
| /* |
| @Override |
| public void addListener(ReviewNavigatorContentProvider aProvider) { |
| super.addListener(aProvider); |
| if (null != fReviews) { |
| R4EUIReviewBasic element = null; |
| for (final Iterator<R4EUIReviewBasic> iterator = fReviews.iterator(); iterator.hasNext();) { |
| element = iterator.next(); |
| element.addListener(aProvider); |
| } |
| } |
| } |
| |
| *//** |
| * Method removeListener. |
| * |
| * @param aProvider |
| * ReviewNavigatorContentProvider |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#removeListener() |
| */ |
| /* |
| @Override |
| public void removeListener(ReviewNavigatorContentProvider aProvider) { |
| super.removeListener(aProvider); |
| if (null != fReviews) { |
| R4EUIReviewBasic element = null; |
| for (final Iterator<R4EUIReviewBasic> iterator = fReviews.iterator(); iterator.hasNext();) { |
| element = iterator.next(); |
| element.removeListener(aProvider); |
| } |
| } |
| }*/ |
| |
| //Commands |
| |
| /** |
| * Method isOpenElementCmd. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isOpenElementCmd() |
| */ |
| @Override |
| public boolean isOpenElementCmd() { |
| if (!isEnabled() || isOpen()) { |
| return false; |
| } |
| return true; |
| } |
| |
| /** |
| * Method getOpenElementCmdName. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getOpenElementCmdName() |
| */ |
| @Override |
| public String getOpenElementCmdName() { |
| return OPEN_ELEMENT_COMMAND_NAME; |
| } |
| |
| /** |
| * Method getOpenElementCmdTooltip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getOpenElementCmdTooltip() |
| */ |
| @Override |
| public String getOpenElementCmdTooltip() { |
| return OPEN_ELEMENT_COMMAND_TOOLTIP; |
| } |
| |
| /** |
| * Method isCloseElementCmd. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isCloseElementCmd() |
| */ |
| @Override |
| public boolean isCloseElementCmd() { |
| if (isEnabled() && isOpen()) { |
| return true; |
| } |
| return false; |
| } |
| |
| /** |
| * Method getCloseElementCmdName. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getCloseElementCmdName() |
| */ |
| @Override |
| public String getCloseElementCmdName() { |
| return CLOSE_ELEMENT_COMMAND_NAME; |
| } |
| |
| /** |
| * Method getCloseElementCmdTooltip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getCloseElementCmdTooltip() |
| */ |
| @Override |
| public String getCloseElementCmdTooltip() { |
| return CLOSE_ELEMENT_COMMAND_TOOLTIP; |
| } |
| |
| /** |
| * Method isAddChildElementCmd. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isNewChildElementCmd() |
| */ |
| @Override |
| public boolean isNewChildElementCmd() { |
| if (isEnabled() && isOpen() && !isReadOnly()) { |
| return true; |
| } |
| return false; |
| } |
| |
| /** |
| * Method getAddChildElementCmdName. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getNewChildElementCmdName() |
| */ |
| @Override |
| public String getNewChildElementCmdName() { |
| return NEW_CHILD_ELEMENT_COMMAND_NAME; |
| } |
| |
| /** |
| * Method getAddChildElementCmdTooltip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getNewChildElementCmdTooltip() |
| */ |
| @Override |
| public String getNewChildElementCmdTooltip() { |
| return NEW_CHILD_ELEMENT_COMMAND_TOOLTIP; |
| } |
| |
| /** |
| * Method isRemoveElementCmd. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isRemoveElementCmd() |
| */ |
| @Override |
| public boolean isRemoveElementCmd() { |
| if (!isOpen() && isEnabled() && !isReadOnly()) { |
| return true; |
| } |
| return false; |
| } |
| |
| /** |
| * Method getRemoveElementCmdName. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getRemoveElementCmdName() |
| */ |
| @Override |
| public String getRemoveElementCmdName() { |
| return REMOVE_ELEMENT_COMMAND_NAME; |
| } |
| |
| /** |
| * Method getRemoveElementCmdTooltip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getRemoveElementCmdTooltip() |
| */ |
| @Override |
| public String getRemoveElementCmdTooltip() { |
| return REMOVE_ELEMENT_COMMAND_TOOLTIP; |
| } |
| |
| /** |
| * Method isRestoreElementCmd. |
| * |
| * @return boolean |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#iisRestoreElementCmd() |
| */ |
| @Override |
| public boolean isRestoreElementCmd() { |
| if (isOpen() || isEnabled() || isReadOnly()) { |
| return false; |
| } |
| return true; |
| } |
| |
| /** |
| * Method getRestoreElementCmdName. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getRestoreElementCmdName() |
| */ |
| @Override |
| public String getRestoreElementCmdName() { |
| return RESTORE_ELEMENT_COMMAND_NAME; |
| } |
| |
| /** |
| * Method getRestoreElementCmdTooltip. |
| * |
| * @return String |
| * @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getRestoreElementCmdTooltip() |
| */ |
| @Override |
| public String getRestoreElementCmdTooltip() { |
| return RESTORE_ELEMENT_COMMAND_TOOLTIP; |
| } |
| } |