blob: c556dda16fe02983c4c4abc394136cbe390a6fcd [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2010 Sony Ericsson/ST Ericsson 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
*
* Contributors:
* Sony Ericsson/ST Ericsson - initial API and implementation
*********************************************************************/
package org.eclipse.mylyn.internal.gerrit.ui.editor;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.mylyn.internal.gerrit.core.GerritConnector;
import org.eclipse.mylyn.internal.gerrit.core.GerritTaskSchema;
import org.eclipse.mylyn.reviews.ui.spi.editor.AbstractReviewTaskEditorPage;
import org.eclipse.mylyn.reviews.ui.spi.editor.ReviewDetailSection;
import org.eclipse.mylyn.reviews.ui.spi.editor.ReviewSetSection;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart;
import org.eclipse.mylyn.tasks.ui.editors.AttributeEditorFactory;
import org.eclipse.mylyn.tasks.ui.editors.LayoutHint;
import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.ColumnSpan;
import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.RowSpan;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorPartDescriptor;
/**
* @author Mikael Kober
* @author Thomas Westling
* @author Miles Parker
*/
public class GerritTaskEditorPage extends AbstractReviewTaskEditorPage {
public GerritTaskEditorPage(TaskEditor editor) {
super(editor, GerritTaskEditorPage.class.getName(), Messages.GerritTaskEditorPage_Gerrit_Page, GerritConnector.CONNECTOR_KIND);
setNeedsPrivateSection(true);
setNeedsSubmit(false);
setNeedsSubmitButton(false);
}
@Override
protected AttributeEditorFactory createAttributeEditorFactory() {
return new AttributeEditorFactory(getModel(), getTaskRepository(), getEditorSite()) {
@Override
public AbstractAttributeEditor createEditor(String type, TaskAttribute taskAttribute) {
if (taskAttribute.getId().equals(GerritTaskSchema.getDefault().CHANGE_ID.getKey())) {
AbstractAttributeEditor editor = super.createEditor(type, taskAttribute);
editor.setLayoutHint(new LayoutHint(RowSpan.SINGLE, ColumnSpan.MULTIPLE));
return editor;
} else if (taskAttribute.getId().equals(GerritTaskSchema.getDefault().PROJECT.getKey())) {
AbstractAttributeEditor editor = super.createEditor(type, taskAttribute);
editor.setLayoutHint(new LayoutHint(RowSpan.SINGLE, ColumnSpan.MULTIPLE));
return editor;
}
return super.createEditor(type, taskAttribute);
}
};
}
@Override
protected Set<TaskEditorPartDescriptor> createPartDescriptors() {
Set<TaskEditorPartDescriptor> descriptors = super.createPartDescriptors();
TaskEditorPartDescriptor commentsDescriptor = null;
TaskEditorPartDescriptor newCommentsDescriptor = null;
for (Iterator<TaskEditorPartDescriptor> it = descriptors.iterator(); it.hasNext();) {
TaskEditorPartDescriptor descriptor = it.next();
if (PATH_ACTIONS.equals(descriptor.getPath())) {
it.remove();
}
if (PATH_PEOPLE.equals(descriptor.getPath())) {
it.remove();
}
if (ID_PART_COMMENTS.equals(descriptor.getId())) {
it.remove();
commentsDescriptor = descriptor;
}
if (ID_PART_NEW_COMMENT.equals(descriptor.getId())) {
it.remove();
newCommentsDescriptor = descriptor;
}
}
descriptors.add(new TaskEditorPartDescriptor(ReviewDetailSection.class.getName()) {
@Override
public AbstractTaskEditorPart createPart() {
return new GerritReviewDetailSection();
}
});
descriptors.add(new TaskEditorPartDescriptor(ReviewSetSection.class.getName()) {
@Override
public AbstractTaskEditorPart createPart() {
return new PatchSetSection();
}
});
if (commentsDescriptor != null) {
descriptors.add(commentsDescriptor);
}
if (newCommentsDescriptor != null) {
descriptors.add(newCommentsDescriptor);
}
return descriptors;
}
}