diff options
2 files changed, 83 insertions, 66 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorRichTextPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorRichTextPart.java index 5e704fded..38c170511 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorRichTextPart.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorRichTextPart.java @@ -16,7 +16,6 @@ import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.provisional.commons.ui.CommonFormUtil; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.editors.RichTextEditor.State; @@ -27,7 +26,6 @@ import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor; import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.forms.widgets.ExpandableComposite; @@ -47,8 +45,6 @@ public class TaskEditorRichTextPart extends AbstractTaskEditorPart { private int sectionStyle; - private ToggleToMaximizePartAction toggleToMaximizePartAction; - private Action toggleEditAction; private Action toggleBrowserAction; @@ -165,68 +161,6 @@ public class TaskEditorRichTextPart extends AbstractTaskEditorPart { } } - protected Action getMaximizePartAction() { - if (toggleToMaximizePartAction == null) { - toggleToMaximizePartAction = new ToggleToMaximizePartAction(); - } - return toggleToMaximizePartAction; - } - - private class ToggleToMaximizePartAction extends Action { - - private static final String COMMAND_ID = "org.eclipse.mylyn.tasks.ui.command.maximizePart"; //$NON-NLS-1$ - - private/*static*/final String MAXIMIZE = Messages.TaskEditorRichTextPart_Maximize; - - private static final int SECTION_HEADER_HEIGHT = 50; - - private int originalHeight = -2; - - public ToggleToMaximizePartAction() { - super("", SWT.TOGGLE); //$NON-NLS-1$ - setImageDescriptor(CommonImages.PART_MAXIMIZE); - setToolTipText(MAXIMIZE); - setActionDefinitionId(COMMAND_ID); - setChecked(false); - } - - @Override - public void run() { - if (!(getEditor().getControl().getLayoutData() instanceof GridData)) { - return; - } - - GridData gd = (GridData) getEditor().getControl().getLayoutData(); - - if (originalHeight == -2) { - originalHeight = gd.heightHint; - } - - try { - getTaskEditorPage().setReflow(false); - - int heightHint; - if (isChecked()) { - heightHint = getManagedForm().getForm().getClientArea().height - SECTION_HEADER_HEIGHT; - } else { - heightHint = originalHeight; - } - - // ignore when not necessary - if (gd.heightHint == heightHint) { - return; - } - gd.heightHint = heightHint; - gd.minimumHeight = heightHint; - } finally { - getTaskEditorPage().setReflow(true); - } - - getTaskEditorPage().reflow(); - CommonFormUtil.ensureVisible(getEditor().getControl()); - } - } - @Override protected void fillToolBar(ToolBarManager manager) { if (getEditor().hasPreview()) { @@ -298,4 +232,9 @@ public class TaskEditorRichTextPart extends AbstractTaskEditorPart { super.fillToolBar(manager); } + @Override + protected Control getLayoutControl() { + return (getEditor() != null) ? getEditor().getControl() : null; + } + } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPart.java index 28efefdc8..42b0f6d4a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPart.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPart.java @@ -11,15 +11,20 @@ package org.eclipse.mylyn.tasks.ui.editors; +import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.mylyn.internal.provisional.commons.ui.CommonFormUtil; +import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; +import org.eclipse.mylyn.internal.tasks.ui.editors.Messages; import org.eclipse.mylyn.internal.tasks.ui.editors.RichTextAttributeEditor; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; import org.eclipse.mylyn.tasks.core.data.TaskData; import org.eclipse.mylyn.tasks.core.data.TaskDataModel; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -47,6 +52,8 @@ public abstract class AbstractTaskEditorPart extends AbstractFormPart { private boolean expandVertically; + private MaximizePartAction maximizePartAction; + public AbstractTaskEditorPart() { } @@ -166,4 +173,75 @@ public abstract class AbstractTaskEditorPart extends AbstractFormPart { this.expandVertically = expandVertically; } + /** + * Returns an action for maximizing the part. + * + * @since 3.5 + */ + protected Action getMaximizePartAction() { + if (maximizePartAction == null) { + maximizePartAction = new MaximizePartAction(); + } + return maximizePartAction; + } + + /** + * Returns the control that determines the size of the part. + * + * @see #getMaximizePartAction() + * @since 3.5 + */ + protected Control getLayoutControl() { + return getControl(); + } + + private class MaximizePartAction extends Action { + + private static final String COMMAND_ID = "org.eclipse.mylyn.tasks.ui.command.maximizePart"; //$NON-NLS-1$ + + private static final int SECTION_HEADER_HEIGHT = 50; + + private int originalHeight = -2; + + public MaximizePartAction() { + super(Messages.TaskEditorRichTextPart_Maximize, SWT.TOGGLE); + setImageDescriptor(CommonImages.PART_MAXIMIZE); + setToolTipText(Messages.TaskEditorRichTextPart_Maximize); + setActionDefinitionId(COMMAND_ID); + setChecked(false); + } + + @Override + public void run() { + Control control = getLayoutControl(); + if (control == null || !(control.getLayoutData() instanceof GridData)) { + return; + } + + GridData gd = (GridData) control.getLayoutData(); + + // initialize originalHeight on first invocation + if (originalHeight == -2) { + originalHeight = gd.heightHint; + } + + int heightHint; + if (isChecked()) { + heightHint = getManagedForm().getForm().getClientArea().height - SECTION_HEADER_HEIGHT; + } else { + heightHint = originalHeight; + } + + // ignore when not necessary + if (gd.heightHint == heightHint) { + return; + } + gd.heightHint = heightHint; + gd.minimumHeight = heightHint; + + getTaskEditorPage().reflow(); + CommonFormUtil.ensureVisible(control); + } + } + } |