/******************************************************************************* * Copyright (c) 2013, 2014 Tasktop Technologies, 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: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.reviews.ui.spi.editor; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.mylyn.internal.tasks.ui.editors.AbstractTaskEditorSection; import org.eclipse.mylyn.reviews.core.model.IRepository; import org.eclipse.mylyn.reviews.core.model.IReview; import org.eclipse.mylyn.reviews.core.spi.remote.review.IReviewRemoteFactoryProvider; import org.eclipse.mylyn.reviews.ui.spi.factories.IUiContext; import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.IFormColors; import org.eclipse.ui.forms.events.ExpansionAdapter; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Section; /** * @author Miles Parker * @author Steffen Pingel */ public abstract class AbstractReviewSection extends AbstractTaskEditorSection implements IUiContext { protected Composite composite; protected FormToolkit toolkit; protected boolean modelContentsCurrent; @Override protected Control createContent(FormToolkit toolkit, Composite parent) { this.toolkit = toolkit; composite = toolkit.createComposite(parent); GridLayoutFactory.fillDefaults().extendedMargins(0, 0, 0, 5).applyTo(composite); return composite; } public Label addTextClient(final FormToolkit toolkit, final Section section, String text) { return addTextClient(toolkit, section, text, true); } public Label addTextClient(final FormToolkit toolkit, final Section section, String text, boolean hideOnExpand) { final Label label = new Label(section, SWT.NONE); label.setText(" " + text); //$NON-NLS-1$ label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); section.setTextClient(label); if (hideOnExpand) { label.setVisible(!section.isExpanded()); section.addExpansionListener(new ExpansionAdapter() { @Override public void expansionStateChanged(ExpansionEvent e) { label.setVisible(!section.isExpanded()); } }); } return label; } public static void appendMessage(Section section, String message) { Control textClient = section.getTextClient(); if (textClient instanceof Label && !textClient.isDisposed()) { final Label textClientLabel = (Label) textClient; textClientLabel.setText(" " + message); //$NON-NLS-1$ textClientLabel.getParent().layout(true, true); } } public Composite getComposite() { return composite; } public FormToolkit getToolkit() { return toolkit; } public TaskEditor getEditor() { return getTaskEditorPage().getEditor(); } public Shell getShell() { return getTaskEditorPage().getSite().getShell(); } public ITask getTask() { return getTaskEditorPage().getTask(); } public IReview getReview() { return getReviewEditorPage().getReview(); } public TaskRepository getTaskRepository() { return getReviewEditorPage().getTaskRepository(); } public IRepository getModelRepository() { return getReview().getRepository(); } public IReviewRemoteFactoryProvider getFactoryProvider() { return getReviewEditorPage().getFactoryProvider(); } public AbstractReviewTaskEditorPage getReviewEditorPage() { return (AbstractReviewTaskEditorPage) getTaskEditorPage(); } }