// $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.mutabilityOfArrays, explicitThisUsage | |
/******************************************************************************* | |
* 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 Comment element of the UI model | |
* | |
* Contributors: | |
* Sebastien Dubois - Created for Mylyn Review R4E project | |
* | |
******************************************************************************/ | |
package org.eclipse.mylyn.reviews.r4e.ui.internal.model; | |
import org.eclipse.mylyn.reviews.frame.core.model.Comment; | |
import org.eclipse.mylyn.reviews.frame.core.model.ReviewComponent; | |
import org.eclipse.mylyn.reviews.r4e.core.model.R4EComment; | |
import org.eclipse.mylyn.reviews.r4e.core.model.R4EReviewComponent; | |
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.serial.impl.OutOfSyncException; | |
import org.eclipse.mylyn.reviews.r4e.core.model.serial.impl.ResourceHandlingException; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.properties.general.CommentProperties; | |
import org.eclipse.mylyn.reviews.r4e.ui.internal.utils.R4EUIConstants; | |
import org.eclipse.ui.views.properties.IPropertySource; | |
/** | |
* @author Sebastien Dubois | |
* @version $Revision: 1.0 $ | |
*/ | |
public class R4EUIComment extends R4EUIModelElement { | |
// ------------------------------------------------------------------------ | |
// Constants | |
// ------------------------------------------------------------------------ | |
/** | |
* Field fCommentFile. (value is ""icons/obj16/cmmnt_obj.gif"") | |
*/ | |
private static final String COMMENT_ICON_FILE = "icons/obj16/cmmnt_obj.gif"; | |
/** | |
* Field REMOVE_ELEMENT_ACTION_NAME. (value is ""Delete Comment"") | |
*/ | |
private static final String REMOVE_ELEMENT_COMMAND_NAME = "Disable Comment"; | |
/** | |
* Field REMOVE_ELEMENT_ACTION_TOOLTIP. (value is ""Remove this comment from its parent anomaly"") | |
*/ | |
private static final String REMOVE_ELEMENT_COMMAND_TOOLTIP = "Disable (and Optionally Remove) this Comment " | |
+ "from its parent anomaly"; | |
/** | |
* Field RESTORE_ELEMENT_COMMAND_NAME. (value is ""Restore Comment"") | |
*/ | |
private static final String RESTORE_ELEMENT_COMMAND_NAME = "Restore Comment"; | |
/** | |
* Field RESTORE_ELEMENT_ACTION_TOOLTIP. (value is ""Restore this disabled Comment"") | |
*/ | |
private static final String RESTORE_ELEMENT_COMMAND_TOOLTIP = "Restore this disabled Comment"; | |
/** | |
* Field COMMENT_LABEL_LENGTH. (value is 25) | |
*/ | |
private static final int COMMENT_LABEL_LENGTH = 25; | |
// ------------------------------------------------------------------------ | |
// Member variables | |
// ------------------------------------------------------------------------ | |
/** | |
* Field fComment. | |
*/ | |
private final R4EComment fComment; | |
// ------------------------------------------------------------------------ | |
// Constructors | |
// ------------------------------------------------------------------------ | |
/** | |
* Constructor for R4EUIComment. | |
* | |
* @param aParent | |
* IR4EUIModelElement | |
* @param aComment | |
* R4EComment | |
*/ | |
public R4EUIComment(IR4EUIModelElement aParent, R4EComment aComment) { | |
super(aParent, buildCommentName(aComment.getDescription())); | |
fReadOnly = aParent.isReadOnly(); | |
fComment = aComment; | |
setImage(COMMENT_ICON_FILE); | |
} | |
// ------------------------------------------------------------------------ | |
// Methods | |
// ------------------------------------------------------------------------ | |
/** | |
* Method getToolTip. | |
* | |
* @return String | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#getToolTip() | |
*/ | |
@Override | |
public String getToolTip() { | |
return fComment.getUser().getId() + ": " + fComment.getDescription(); | |
} | |
/** | |
* 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 CommentProperties(this); | |
} | |
return null; | |
} | |
/** | |
* Method buildCommentName. | |
* | |
* @param aDescription | |
* String | |
* @return String | |
*/ | |
private static String buildCommentName(String aDescription) { | |
//Only consider first line | |
if (null != aDescription) { | |
final String[] lines = aDescription.split(R4EUIConstants.LINE_FEED); | |
if (lines[0].length() > COMMENT_LABEL_LENGTH) { | |
return lines[0].substring(0, COMMENT_LABEL_LENGTH) + R4EUIConstants.ELLIPSIS_STR; | |
} else { | |
if (lines.length > 1) { | |
return lines[0] + R4EUIConstants.ELLIPSIS_STR; | |
} else { | |
return lines[0]; | |
} | |
} | |
} | |
return aDescription; | |
} | |
//Attributes | |
/** | |
* Method getComment. | |
* | |
* @return R4EComment | |
*/ | |
public R4EComment getComment() { | |
return fComment; | |
} | |
/** | |
* 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(fComment, | |
R4EUIModelController.getReviewer()); | |
fComment.setDescription(((Comment) aModelComponent).getDescription()); | |
R4EUIModelController.FResourceUpdater.checkIn(bookNum); | |
} | |
/** | |
* Method setEnabled. | |
* | |
* @param aEnabled | |
* boolean | |
* @throws ResourceHandlingException | |
* @throws OutOfSyncException | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#setEnabled(boolean) | |
*/ | |
@Override | |
public void setEnabled(boolean aEnabled) throws ResourceHandlingException, OutOfSyncException { | |
final Long bookNum = R4EUIModelController.FResourceUpdater.checkOut(fComment, | |
R4EUIModelController.getReviewer()); | |
fComment.setEnabled(true); | |
R4EUIModelController.FResourceUpdater.checkIn(bookNum); | |
} | |
/** | |
* Method isEnabled. | |
* | |
* @return boolean | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isEnabled() | |
*/ | |
@Override | |
public boolean isEnabled() { | |
return fComment.isEnabled(); | |
} | |
//Commands | |
/** | |
* Method isOpenEditorCmd. | |
* | |
* @return boolean | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isOpenEditorCmd() | |
*/ | |
@Override | |
public boolean isOpenEditorCmd() { | |
final IR4EUIModelElement ancestorElement = getParent().getParent().getParent(); | |
if (!(ancestorElement instanceof R4EUIFileContext)) { | |
return false; | |
} | |
if (isEnabled() && null != ((R4EUIFileContext) ancestorElement).getTargetFileVersion()) { | |
return true; | |
} | |
return false; | |
} | |
/** | |
* Method isRemoveElementCmd. | |
* | |
* @return boolean | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isRemoveElementCmd() | |
*/ | |
@Override | |
public boolean isRemoveElementCmd() { | |
if (isEnabled() | |
&& !isReadOnly() | |
&& !(((R4EReviewState) R4EUIModelController.getActiveReview().getReview().getState()).getState().equals(R4EReviewPhase.R4E_REVIEW_PHASE_COMPLETED))) { | |
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 (!(getParent().isEnabled())) { | |
return false; | |
} | |
if (isEnabled() | |
|| isReadOnly() | |
|| ((R4EReviewState) R4EUIModelController.getActiveReview().getReview().getState()).getState().equals( | |
R4EReviewPhase.R4E_REVIEW_PHASE_COMPLETED)) { | |
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; | |
} | |
/** | |
* Method isSendEmailCmd. | |
* | |
* @return boolean | |
* @see org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement#isSendEmailCmd() | |
*/ | |
@Override | |
public boolean isSendEmailCmd() { | |
if (isEnabled()) { | |
return true; | |
} | |
return false; | |
} | |
} |