Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java1175
1 files changed, 0 insertions, 1175 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java
deleted file mode 100644
index a66c166de..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java
+++ /dev/null
@@ -1,1175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 Tasktop Technologies 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
- * Eric Booth - initial prototype
- *******************************************************************************/
-
-package org.eclipse.mylyn.tasks.ui.editors;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ContributionManager;
-import org.eclipse.jface.action.ControlContribution;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.ToolBarManager;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.mylyn.commons.core.StatusHandler;
-import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
-import org.eclipse.mylyn.internal.provisional.commons.ui.CommonTextSupport;
-import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil;
-import org.eclipse.mylyn.internal.provisional.commons.ui.SelectionProviderAdapter;
-import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
-import org.eclipse.mylyn.internal.provisional.commons.ui.editor.EditorBusyIndicator;
-import org.eclipse.mylyn.internal.provisional.commons.ui.editor.IBusyEditor;
-import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
-import org.eclipse.mylyn.internal.tasks.core.TaskList;
-import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylyn.internal.tasks.ui.actions.TaskEditorScheduleAction;
-import org.eclipse.mylyn.internal.tasks.ui.actions.ToggleTaskActivationAction;
-import org.eclipse.mylyn.internal.tasks.ui.editors.EditorUtil;
-import org.eclipse.mylyn.internal.tasks.ui.editors.Messages;
-import org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorActionContributor;
-import org.eclipse.mylyn.internal.tasks.ui.util.PlatformUtil;
-import org.eclipse.mylyn.internal.tasks.ui.util.TaskDragSourceListener;
-import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
-import org.eclipse.mylyn.tasks.core.ITask;
-import org.eclipse.mylyn.tasks.core.TaskRepository;
-import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylyn.tasks.ui.TasksUiImages;
-import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.ControlAdapter;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.forms.IFormColors;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.IFormPage;
-import org.eclipse.ui.forms.editor.SharedHeaderFormEditor;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Form;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ImageHyperlink;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.internal.forms.widgets.BusyIndicator;
-import org.eclipse.ui.internal.forms.widgets.FormHeading;
-import org.eclipse.ui.internal.forms.widgets.TitleRegion;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.part.WorkbenchPart;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- * @author Steffen Pingel
- * @author Thomas Ehrnhoefer
- * @since 2.0
- */
-public class TaskEditor extends SharedHeaderFormEditor {
-
- /**
- * @since 2.0
- */
- public static final String ID_EDITOR = "org.eclipse.mylyn.tasks.ui.editors.task"; //$NON-NLS-1$
-
- /**
- * @since 3.2
- */
- public static final String ID_TOOLBAR_HEADER = "org.eclipse.mylyn.tasks.ui.editors.task.toolbar.header"; //$NON-NLS-1$
-
- private static final String ID_LEFT_TOOLBAR_HEADER = "org.eclipse.mylyn.tasks.ui.editors.task.toolbar.header.left"; //$NON-NLS-1$
-
- private static final int LEFT_TOOLBAR_HEADER_TOOLBAR_PADDING = 3;
-
- private ToggleTaskActivationAction activateAction;
-
- @Deprecated
- private final IEditorPart contentOutlineProvider = null;
-
- private EditorBusyIndicator editorBusyIndicator;
-
- private MenuManager menuManager;
-
- private IHyperlinkListener messageHyperLinkListener;
-
- private ITask task;
-
- private TaskEditorInput taskEditorInput;
-
- private TaskDragSourceListener titleDragSourceListener;
-
- private Composite editorParent;
-
- private IMenuService menuService;
-
- private IToolBarManager toolBarManager;
-
- private ToolBarManager leftToolBarManager;
-
- private ToolBar leftToolBar;
-
- private Image headerImage;
-
-// private int initialLeftToolbarSize;
-
- private boolean noExtraPadding;
-
-// private boolean headerLabelInitialized;
-
- private BusyIndicator busyLabel;
-
- private StyledText titleLabel;
-
- private CommonTextSupport textSupport;
-
- private static boolean toolBarFailureLogged;
-
- public TaskEditor() {
- }
-
- @Override
- protected Composite createPageContainer(Composite parent) {
- this.editorParent = parent;
- Composite composite = super.createPageContainer(parent);
-
- EditorUtil.initializeScrollbars(getHeaderForm().getForm());
-
- // create left tool bar that replaces form heading label
- try {
- FormHeading heading = (FormHeading) getHeaderForm().getForm().getForm().getHead();
-
- Field field = FormHeading.class.getDeclaredField("titleRegion"); //$NON-NLS-1$
- field.setAccessible(true);
-
- TitleRegion titleRegion = (TitleRegion) field.get(heading);
-
- leftToolBarManager = new ToolBarManager(SWT.FLAT);
- leftToolBar = leftToolBarManager.createControl(titleRegion);
- leftToolBar.addControlListener(new ControlAdapter() {
- private boolean ignoreResizeEvents;
-
- @Override
- public void controlResized(ControlEvent e) {
- if (ignoreResizeEvents) {
- return;
- }
- ignoreResizeEvents = true;
- try {
- // the tool bar contents has changed, update state
- updateHeaderImage();
- updateHeaderLabel();
- } finally {
- ignoreResizeEvents = false;
- }
- }
- });
-
- //titleLabel = new Label(titleRegion, SWT.NONE);
- // need a viewer for copy support
- TextViewer titleViewer = new TextViewer(titleRegion, SWT.READ_ONLY);
- // Eclipse 3.3 needs a document, otherwise an NPE is thrown
- titleViewer.setDocument(new Document());
-
- titleLabel = titleViewer.getTextWidget();
- titleLabel.setForeground(heading.getForeground());
- titleLabel.setFont(heading.getFont());
- // XXX work-around problem that causes field to maintain selection when unfocused
- titleLabel.addFocusListener(new FocusAdapter() {
- @Override
- public void focusLost(FocusEvent e) {
- titleLabel.setSelection(0);
- }
- });
-
- titleRegion.addControlListener(new ControlAdapter() {
- @Override
- public void controlResized(ControlEvent e) {
- // do not create busyLabel to avoid recurssion
- updateSizeAndLocations();
- }
- });
-
- IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
- if (handlerService != null) {
- textSupport = new CommonTextSupport(handlerService);
- textSupport.install(titleViewer, false);
- }
- } catch (Exception e) {
- if (!toolBarFailureLogged) {
- StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- "Failed to obtain busy label toolbar", e)); //$NON-NLS-1$
- }
- if (titleLabel != null) {
- titleLabel.dispose();
- titleLabel = null;
- }
- if (leftToolBar != null) {
- leftToolBar.dispose();
- leftToolBar = null;
- }
- if (leftToolBarManager != null) {
- leftToolBarManager.dispose();
- leftToolBarManager = null;
- }
- }
-
- updateHeader();
-
- return composite;
- }
-
- private BusyIndicator getBusyLabel() {
- if (busyLabel != null) {
- return busyLabel;
- }
- try {
- FormHeading heading = (FormHeading) getHeaderForm().getForm().getForm().getHead();
- // ensure that busy label exists
- heading.setBusy(true);
- heading.setBusy(false);
-
- Field field = FormHeading.class.getDeclaredField("titleRegion"); //$NON-NLS-1$
- field.setAccessible(true);
-
- TitleRegion titleRegion = (TitleRegion) field.get(heading);
-
- for (Control child : titleRegion.getChildren()) {
- if (child instanceof BusyIndicator) {
- busyLabel = (BusyIndicator) child;
- }
- }
- if (busyLabel == null) {
- return null;
- }
- busyLabel.addControlListener(new ControlAdapter() {
- @Override
- public void controlMoved(ControlEvent e) {
- updateSizeAndLocations();
- }
- });
- // the busy label may get disposed if it has no image
- busyLabel.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- busyLabel.setMenu(null);
- busyLabel = null;
- }
- });
-
- if (leftToolBar != null) {
- leftToolBar.moveAbove(busyLabel);
- }
- if (titleLabel != null) {
- titleLabel.moveAbove(busyLabel);
- }
-
- updateSizeAndLocations();
-
- return busyLabel;
- } catch (Exception e) {
- if (!toolBarFailureLogged) {
- StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- "Failed to obtain busy label toolbar", e)); //$NON-NLS-1$
- }
- busyLabel = null;
- }
- return busyLabel;
- }
-
- private void updateSizeAndLocations() {
- if (busyLabel == null || busyLabel.isDisposed()) {
- return;
- }
-
- Point leftToolBarSize = new Point(0, 0);
- if (leftToolBar != null && !leftToolBar.isDisposed()) {
- // bottom align tool bar in title region
- leftToolBarSize = leftToolBar.getSize();
- int y = leftToolBar.getParent().getSize().y - leftToolBarSize.y - 2;
- if (!hasLeftToolBar()) {
- // hide tool bar to avoid overlaying busyLabel on windows
- leftToolBarSize.x = 0;
- }
- leftToolBar.setBounds(busyLabel.getLocation().x, y, leftToolBarSize.x, leftToolBarSize.y);
- }
- if (titleLabel != null && !titleLabel.isDisposed()) {
- // center align title text in title region
- Point size = titleLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- int y = (titleLabel.getParent().getSize().y - size.y) / 2;
- titleLabel.setBounds(busyLabel.getLocation().x + LEFT_TOOLBAR_HEADER_TOOLBAR_PADDING + leftToolBarSize.x,
- y, size.x, size.y);
- }
- }
-
- Composite getEditorParent() {
- return editorParent;
- }
-
- @Override
- protected void addPages() {
- initialize();
-
- // determine factories
- Set<String> conflictingIds = new HashSet<String>();
- ArrayList<AbstractTaskEditorPageFactory> pageFactories = new ArrayList<AbstractTaskEditorPageFactory>();
- for (AbstractTaskEditorPageFactory pageFactory : TasksUiPlugin.getDefault().getTaskEditorPageFactories()) {
- if (pageFactory.canCreatePageFor(getTaskEditorInput()) && WorkbenchUtil.allowUseOf(pageFactory)) {
- pageFactories.add(pageFactory);
- String[] ids = pageFactory.getConflictingIds(getTaskEditorInput());
- if (ids != null) {
- conflictingIds.addAll(Arrays.asList(ids));
- }
- }
- }
- for (Iterator<AbstractTaskEditorPageFactory> it = pageFactories.iterator(); it.hasNext();) {
- if (conflictingIds.contains(it.next().getId())) {
- it.remove();
- }
- }
-
- // sort by priority
- Collections.sort(pageFactories, new Comparator<AbstractTaskEditorPageFactory>() {
- public int compare(AbstractTaskEditorPageFactory o1, AbstractTaskEditorPageFactory o2) {
- return o1.getPriority() - o2.getPriority();
- }
- });
-
- // create pages
- for (AbstractTaskEditorPageFactory factory : pageFactories) {
- try {
- IFormPage page = factory.createPage(this);
- int index = addPage(page);
- setPageImage(index, factory.getPageImage());
- setPageText(index, factory.getPageText());
- if (factory.getPriority() == AbstractTaskEditorPageFactory.PRIORITY_TASK) {
- setActivePage(index);
- }
- if (page instanceof ISelectionProvider) {
- ((ISelectionProvider) page).addSelectionChangedListener(getActionBarContributor());
- }
- } catch (Exception e) {
- StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- "Could not create editor via factory: " + factory, e)); //$NON-NLS-1$
- }
- }
-
- updateTitleImage();
- updateHeaderToolBar();
- installTitleDrag(getHeaderForm().getForm().getForm());
-
- // do this late to allow pages to replace the selection provider
- getEditorSite().registerContextMenu(menuManager, getEditorSite().getSelectionProvider(), true);
- }
-
- private void initialize() {
- editorBusyIndicator = new EditorBusyIndicator(new IBusyEditor() {
- public Image getTitleImage() {
- return TaskEditor.this.getTitleImage();
- }
-
- public void setTitleImage(Image image) {
- TaskEditor.this.setTitleImage(image);
- }
- });
-
- menuManager = new MenuManager();
- configureContextMenuManager(menuManager);
- Menu menu = menuManager.createContextMenu(getContainer());
- getContainer().setMenu(menu);
-
- // install context menu on form heading and title
- getHeaderForm().getForm().setMenu(menu);
- Composite head = getHeaderForm().getForm().getForm().getHead();
- if (head != null) {
- CommonUiUtil.setMenu(head, menu);
- }
- }
-
- /**
- * @since 3.0
- */
- @Deprecated
- public void configureContextMenuManager(MenuManager manager) {
- if (manager == null) {
- return;
- }
- IMenuListener listener = new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
- }
- };
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(listener);
- }
-
- @Deprecated
- protected void contextMenuAboutToShow(IMenuManager manager) {
- TaskEditorActionContributor contributor = getActionBarContributor();
- if (contributor != null) {
- contributor.contextMenuAboutToShow(manager);
- }
- }
-
- @Override
- protected FormToolkit createToolkit(Display display) {
- // create a toolkit that shares colors between editors.
- return new FormToolkit(TasksUiPlugin.getDefault().getFormColors(display));
- }
-
- @Override
- protected void createHeaderContents(IManagedForm headerForm) {
- getToolkit().decorateFormHeading(headerForm.getForm().getForm());
- }
-
- @Override
- public void dispose() {
- if (headerImage != null) {
- headerImage.dispose();
- }
- if (editorBusyIndicator != null) {
- editorBusyIndicator.stop();
- }
- if (activateAction != null) {
- activateAction.dispose();
- }
- if (menuService != null && toolBarManager instanceof ContributionManager) {
- menuService.releaseContributions((ContributionManager) toolBarManager);
- }
- if (textSupport != null) {
- textSupport.dispose();
- }
- super.dispose();
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- page.doSave(monitor);
- }
- }
-
- editorDirtyStateChanged();
- }
-
- @Override
- public void doSaveAs() {
- throw new UnsupportedOperationException();
- }
-
- private TaskEditorActionContributor getActionBarContributor() {
- return (TaskEditorActionContributor) getEditorSite().getActionBarContributor();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Object getAdapter(Class adapter) {
- if (contentOutlineProvider != null) {
- return contentOutlineProvider.getAdapter(adapter);
- } else if (IContentOutlinePage.class.equals(adapter)) {
- IFormPage[] pages = getPages();
- for (IFormPage page : pages) {
- Object outlinePage = page.getAdapter(adapter);
- if (outlinePage != null) {
- return outlinePage;
- }
- }
- }
- return super.getAdapter(adapter);
- }
-
- /**
- * @since 3.0
- */
- public Menu getMenu() {
- return getContainer().getMenu();
- }
-
- @SuppressWarnings("unchecked")
- IFormPage[] getPages() {
- ArrayList formPages = new ArrayList();
- if (pages != null) {
- for (int i = 0; i < pages.size(); i++) {
- Object page = pages.get(i);
- if (page instanceof IFormPage) {
- formPages.add(page);
- }
- }
- }
- return (IFormPage[]) formPages.toArray(new IFormPage[formPages.size()]);
- }
-
- @Deprecated
- protected IWorkbenchSiteProgressService getProgressService() {
- Object siteService = getEditorSite().getAdapter(IWorkbenchSiteProgressService.class);
- if (siteService != null) {
- return (IWorkbenchSiteProgressService) siteService;
- }
- return null;
- }
-
- @Deprecated
- public ISelection getSelection() {
- if (getSite() != null && getSite().getSelectionProvider() != null) {
- return getSite().getSelectionProvider().getSelection();
- } else {
- return StructuredSelection.EMPTY;
- }
- }
-
- public TaskEditorInput getTaskEditorInput() {
- return taskEditorInput;
- }
-
- @Deprecated
- public Form getTopForm() {
- return this.getHeaderForm().getForm().getForm();
- }
-
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- if (!(input instanceof TaskEditorInput)) {
- throw new PartInitException("Invalid editor input \"" + input.getClass() + "\""); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- super.init(site, input);
-
- this.taskEditorInput = (TaskEditorInput) input;
- this.task = taskEditorInput.getTask();
-
- // initialize selection
- site.getSelectionProvider().setSelection(new StructuredSelection(task));
-
- setPartName(input.getName());
-
- // activate context
- IContextService contextSupport = (IContextService) site.getService(IContextService.class);
- if (contextSupport != null) {
- contextSupport.activateContext(ID_EDITOR);
- }
- }
-
- private void installTitleDrag(Form form) {
- if (titleDragSourceListener == null /*&& !hasLeftToolBar()*/) {
- Transfer[] transferTypes;
- if (null == task) {
- transferTypes = new Transfer[] { TextTransfer.getInstance() };
- } else {
- transferTypes = new Transfer[] { LocalSelectionTransfer.getTransfer(), TextTransfer.getInstance(),
- FileTransfer.getInstance() };
- }
- titleDragSourceListener = new TaskDragSourceListener(new SelectionProviderAdapter() {
- @Override
- public ISelection getSelection() {
- return new StructuredSelection(task);
- }
- });
-
- if (titleLabel != null) {
- DragSource source = new DragSource(titleLabel, DND.DROP_MOVE | DND.DROP_LINK);
- source.setTransfer(transferTypes);
- source.addDragListener(titleDragSourceListener);
- } else {
- form.addTitleDragSupport(DND.DROP_MOVE | DND.DROP_LINK, transferTypes, titleDragSourceListener);
- }
- }
- }
-
- @Override
- public boolean isDirty() {
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Deprecated
- public void markDirty() {
- firePropertyChange(PROP_DIRTY);
- }
-
- /**
- * Refresh editor with new contents (if any)
- *
- * @since 3.0
- */
- public void refreshPages() {
- for (IFormPage page : getPages()) {
- if (page instanceof AbstractTaskEditorPage) {
- ((AbstractTaskEditorPage) page).refreshFormContent();
- } else if (page instanceof BrowserFormPage) {
- // XXX 3.3 replace by invocation of refreshFromContent();
- ((BrowserFormPage) page).init(getEditorSite(), getEditorInput());
- }
- }
- }
-
- @Override
- public void setFocus() {
- IFormPage page = getActivePageInstance();
- if (page != null) {
- page.setFocus();
- } else {
- super.setFocus();
- }
- }
-
- @Deprecated
- public void setFocusOfActivePage() {
- if (this.getActivePage() > -1) {
- IFormPage page = this.getPages()[this.getActivePage()];
- if (page != null) {
- page.setFocus();
- }
- }
- }
-
- public void setMessage(String message, int type) {
- setMessage(message, type, null);
- }
-
- private boolean isHeaderFormDisposed() {
- return getHeaderForm() == null || getHeaderForm().getForm() == null || getHeaderForm().getForm().isDisposed();
- }
-
- /**
- * @since 2.3
- */
- public void setMessage(String message, int type, IHyperlinkListener listener) {
- if (isHeaderFormDisposed()) {
- return;
- }
-
- try {
- // avoid flicker of the left header toolbar
- getHeaderForm().getForm().setRedraw(false);
-
- Form form = getHeaderForm().getForm().getForm();
- form.setMessage(message, type);
- if (messageHyperLinkListener != null) {
- form.removeMessageHyperlinkListener(messageHyperLinkListener);
- }
- if (listener != null) {
- form.addMessageHyperlinkListener(listener);
- }
- messageHyperLinkListener = listener;
-
- // make sure the busyLabel image is large enough to accommodate the tool bar
- if (hasLeftToolBar()) {
- BusyIndicator busyLabel = getBusyLabel();
- if (message != null && busyLabel != null) {
- setHeaderImage(busyLabel.getImage());
- } else {
- setHeaderImage(null);
- }
- }
- } finally {
- getHeaderForm().getForm().setRedraw(true);
- }
- }
-
- private void setHeaderImage(final Image image) {
- BusyIndicator busyLabel = getBusyLabel();
- if (busyLabel == null) {
- return;
- }
-
- final Point size = leftToolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- Point titleSize = titleLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- size.x += titleSize.x + LEFT_TOOLBAR_HEADER_TOOLBAR_PADDING;
- size.y = Math.max(titleSize.y, size.y);
-
- // padding between toolbar and image, ensure image is at least one pixel wide to avoid SWT error
- final int padding = (size.x > 0 && !noExtraPadding) ? 10 : 1;
- final Rectangle imageBounds = (image != null) ? image.getBounds() : new Rectangle(0, 0, 0, 0);
- int tempHeight = (image != null) ? Math.max(size.y + 1, imageBounds.height) : size.y + 1;
- // avoid extra padding due to margin added by TitleRegion.VMARGIN
- final int height = (tempHeight > imageBounds.height + 5) ? tempHeight - 5 : tempHeight;
-
- CompositeImageDescriptor descriptor = new CompositeImageDescriptor() {
- @Override
- protected void drawCompositeImage(int width, int height) {
- if (image != null) {
- drawImage(image.getImageData(), size.x + padding, (height - image.getBounds().height) / 2);
- }
- }
-
- @Override
- protected Point getSize() {
- return new Point(size.x + padding + imageBounds.width, height);
- }
-
- };
- Image newHeaderImage = descriptor.createImage();
-
- // directly set on busyLabel since getHeaderForm().getForm().setImage() does not update
- // the image if a message is currently displayed
- busyLabel.setImage(newHeaderImage);
-
- if (headerImage != null) {
- headerImage.dispose();
- }
- headerImage = newHeaderImage;
-
- // avoid extra padding due to large title font
- // TODO reset font in case tool bar is empty
- //leftToolBar.getParent().setFont(JFaceResources.getDefaultFont());
- getHeaderForm().getForm().reflow(true);
- }
-
- /**
- * @since 3.1
- */
- public String getMessage() {
- if (getHeaderForm() != null && getHeaderForm().getForm() != null) {
- if (!getHeaderForm().getForm().isDisposed()) {
- Form form = getHeaderForm().getForm().getForm();
- return form.getMessage();
- }
- }
- return null;
- }
-
- /**
- * @since 3.0
- */
- public void setStatus(String message, final String title, final IStatus status) {
- setMessage(message, IMessageProvider.ERROR, new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent event) {
- TasksUiInternal.displayStatus(title, status);
- }
- });
- }
-
- @Override
- public void showBusy(boolean busy) {
- if (editorBusyIndicator != null) {
- if (busy) {
- if (TasksUiInternal.isAnimationsEnabled()) {
- editorBusyIndicator.start();
- }
- } else {
- editorBusyIndicator.stop();
- }
- }
-
- if (!isHeaderFormDisposed()) {
- Form form = getHeaderForm().getForm().getForm();
- if (form != null && !form.isDisposed()) {
- // TODO consider only disabling certain actions
- IToolBarManager toolBarManager = form.getToolBarManager();
- if (toolBarManager instanceof ToolBarManager) {
- ToolBar control = ((ToolBarManager) toolBarManager).getControl();
- if (control != null) {
- control.setEnabled(!busy);
- }
- }
-
- if (leftToolBar != null) {
- leftToolBar.setEnabled(!busy);
- }
- if (titleLabel != null) {
- titleLabel.setEnabled(!busy);
- }
-
- CommonUiUtil.setEnabled(form.getBody(), !busy);
- for (IFormPage page : getPages()) {
- if (page instanceof WorkbenchPart) {
- WorkbenchPart part = (WorkbenchPart) page;
- part.showBusy(busy);
- }
- }
- }
- }
- }
-
- private void updateHeader() {
- IEditorInput input = getEditorInput();
- updateHeaderImage();
- updateHeaderLabel();
- setTitleToolTip(input.getToolTipText());
- setPartName(input.getName());
- }
-
- /**
- * @since 3.0
- */
- public void updateHeaderToolBar() {
- if (isHeaderFormDisposed()) {
- return;
- }
-
- final Form form = getHeaderForm().getForm().getForm();
- toolBarManager = form.getToolBarManager();
-
- toolBarManager.removeAll();
-// toolBarManager.update(true);
-
- TaskRepository outgoingNewRepository = TasksUiUtil.getOutgoingNewTaskRepository(task);
- final TaskRepository taskRepository = (outgoingNewRepository != null) ? outgoingNewRepository
- : taskEditorInput.getTaskRepository();
- ControlContribution repositoryLabelControl = new ControlContribution(Messages.AbstractTaskEditorPage_Title) {
- @Override
- protected Control createControl(Composite parent) {
- FormToolkit toolkit = getHeaderForm().getToolkit();
- Composite composite = toolkit.createComposite(parent);
- RowLayout layout = new RowLayout();
- if (PlatformUtil.hasNarrowToolBar()) {
- layout.marginTop = 0;
- layout.marginBottom = 0;
- EditorUtil.center(layout);
- }
- composite.setLayout(layout);
- composite.setBackground(null);
- String label = taskRepository.getRepositoryLabel();
- if (label.indexOf("//") != -1) { //$NON-NLS-1$
- label = label.substring((taskRepository.getRepositoryUrl().indexOf("//") + 2)); //$NON-NLS-1$
- }
-
- ImageHyperlink link = new ImageHyperlink(composite, SWT.NONE);
- link.setText(label);
- link.setFont(JFaceResources.getBannerFont());
- link.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
- link.addHyperlinkListener(new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent e) {
- TasksUiUtil.openEditRepositoryWizard(taskRepository);
- }
- });
-
- return composite;
- }
- };
- toolBarManager.add(repositoryLabelControl);
-
- toolBarManager.add(new GroupMarker("repository")); //$NON-NLS-1$
- toolBarManager.add(new GroupMarker("new")); //$NON-NLS-1$
- toolBarManager.add(new GroupMarker("open")); //$NON-NLS-1$
- toolBarManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-
- final String taskUrl = task.getUrl();
- if (taskUrl != null && taskUrl.length() > 0) {
- Action openWithBrowserAction = new Action() {
- @Override
- public void run() {
- TasksUiUtil.openUrl(taskUrl);
- }
- };
-// ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(taskRepository.getConnectorKind());
-// ImageDescriptor compositeDescriptor = new TaskListImageDescriptor(TasksUiImages.REPOSITORY_SMALL_TOP,
-// overlay, false, true);
- openWithBrowserAction.setImageDescriptor(CommonImages.WEB);
- //openWithBrowserAction.setImageDescriptor(CommonImages.BROWSER_OPEN_TASK);
- openWithBrowserAction.setToolTipText(Messages.AbstractTaskEditorPage_Open_with_Web_Browser);
- toolBarManager.appendToGroup("open", openWithBrowserAction); //$NON-NLS-1$
- }
-
- if (activateAction == null) {
- activateAction = new ToggleTaskActivationAction(task) {
- @Override
- public void run() {
- TaskList taskList = TasksUiPlugin.getTaskList();
- if (taskList.getTask(task.getRepositoryUrl(), task.getTaskId()) == null) {
- setMessage(Messages.TaskEditor_Task_added_to_the_Uncategorized_container,
- IMessageProvider.INFORMATION);
- }
- super.run();
- }
- };
- }
-
- toolBarManager.add(new Separator("planning")); //$NON-NLS-1$
- toolBarManager.add(new TaskEditorScheduleAction(task));
-
- toolBarManager.add(new GroupMarker("page")); //$NON-NLS-1$
- for (IFormPage page : getPages()) {
- if (page instanceof TaskFormPage) {
- TaskFormPage taskEditorPage = (TaskFormPage) page;
- taskEditorPage.fillToolBar(toolBarManager);
- }
- }
-
- toolBarManager.add(new Separator("activation")); //$NON-NLS-1$
-
-// ContributionItem spacer = new ContributionItem() {
-// @Override
-// public void fill(ToolBar toolbar, int index) {
-// ToolItem item = new ToolItem(toolbar, SWT.NONE);
-// int scaleHeight = 42;
-// if (PlatformUtil.needsCarbonToolBarFix()) {
-// scaleHeight = 32;
-// }
-// final Image image = new Image(toolbar.getDisplay(), CommonImages.getImage(CommonImages.BLANK)
-// .getImageData()
-// .scaledTo(1, scaleHeight));
-// item.setImage(image);
-// item.addDisposeListener(new DisposeListener() {
-// public void widgetDisposed(DisposeEvent e) {
-// image.dispose();
-// }
-// });
-// item.setWidth(5);
-// item.setEnabled(false);
-// }
-// };
-// toolBarManager.add(spacer);
-
-// for (IFormPage page : getPages()) {
-// if (page instanceof AbstractTaskEditorPage) {
-// AbstractTaskEditorPage taskEditorPage = (AbstractTaskEditorPage) page;
-// taskEditorPage.fillLeftHeaderToolBar(toolBarManager);
-// } else if (page instanceof TaskPlanningEditor) {
-// TaskPlanningEditor taskEditorPage = (TaskPlanningEditor) page;
-// taskEditorPage.fillLeftHeaderToolBar(toolBarManager);
-// }
-// }
-
- // add external contributions
- menuService = (IMenuService) getSite().getService(IMenuService.class);
- if (menuService != null && toolBarManager instanceof ContributionManager) {
- menuService.populateContributionManager((ContributionManager) toolBarManager, "toolbar:" //$NON-NLS-1$
- + ID_TOOLBAR_HEADER + "." + taskRepository.getConnectorKind()); //$NON-NLS-1$
- }
-
- toolBarManager.update(true);
-
- // XXX move this call
- updateLeftHeaderToolBar();
- updateHeader();
- }
-
- private void updateLeftHeaderToolBar() {
- leftToolBarManager.removeAll();
-
- leftToolBarManager.add(new Separator("activation")); //$NON-NLS-1$
- leftToolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-
-// initialLeftToolbarSize = leftToolBarManager.getSize();
-
- leftToolBarManager.add(activateAction);
-
-// for (IFormPage page : getPages()) {
-// if (page instanceof AbstractTaskEditorPage) {
-// AbstractTaskEditorPage taskEditorPage = (AbstractTaskEditorPage) page;
-// taskEditorPage.fillLeftHeaderToolBar(leftToolBarManager);
-// } else if (page instanceof TaskPlanningEditor) {
-// TaskPlanningEditor taskEditorPage = (TaskPlanningEditor) page;
-// taskEditorPage.fillLeftHeaderToolBar(leftToolBarManager);
-// }
-// }
-
- // add external contributions
- menuService = (IMenuService) getSite().getService(IMenuService.class);
- if (menuService != null && leftToolBarManager instanceof ContributionManager) {
- TaskRepository outgoingNewRepository = TasksUiUtil.getOutgoingNewTaskRepository(task);
- TaskRepository taskRepository = (outgoingNewRepository != null) ? outgoingNewRepository
- : taskEditorInput.getTaskRepository();
- menuService.populateContributionManager(leftToolBarManager, "toolbar:" + ID_LEFT_TOOLBAR_HEADER + "." //$NON-NLS-1$ //$NON-NLS-2$
- + taskRepository.getConnectorKind());
- }
-
- leftToolBarManager.update(true);
-
- if (hasLeftToolBar()) {
- // XXX work around a bug in Gtk that causes the toolbar size to be incorrect if no
- // tool bar buttons are contributed
-// if (leftToolBar != null) {
-// Point size = leftToolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
-// boolean changed = false;
-// for (Control control : leftToolBar.getChildren()) {
-// final Point childSize = control.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
-// if (childSize.y > size.y) {
-// size.y = childSize.y;
-// changed = true;
-// }
-// }
-// if (changed) {
-// leftToolBar.setSize(size);
-// }
-// }
-//
-// if (PlatformUtil.isToolBarHeightBroken(leftToolBar)) {
-// ToolItem item = new ToolItem(leftToolBar, SWT.NONE);
-// item.setEnabled(false);
-// item.setImage(CommonImages.getImage(CommonImages.BLANK));
-// item.setWidth(1);
-// noExtraPadding = true;
-// } else if (PlatformUtil.needsToolItemToForceToolBarHeight()) {
-// ToolItem item = new ToolItem(leftToolBar, SWT.NONE);
-// item.setEnabled(false);
-// int scaleHeight = 22;
-// if (PlatformUtil.needsCarbonToolBarFix()) {
-// scaleHeight = 32;
-// }
-// final Image image = new Image(item.getDisplay(), CommonImages.getImage(CommonImages.BLANK)
-// .getImageData()
-// .scaledTo(1, scaleHeight));
-// item.setImage(image);
-// item.addDisposeListener(new DisposeListener() {
-// public void widgetDisposed(DisposeEvent e) {
-// image.dispose();
-// }
-// });
-// item.setWidth(1);
-// noExtraPadding = true;
-// }
-
- // fix size of toolbar on Gtk with Eclipse 3.3
- Point size = leftToolBar.getSize();
- if (size.x == 0 && size.y == 0) {
- size = leftToolBar.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- leftToolBar.setSize(size);
- }
- }
- }
-
- private void updateHeaderImage() {
- if (hasLeftToolBar()) {
- setHeaderImage(null);
- } else {
- getHeaderForm().getForm().setImage(getBrandingImage());
- }
- }
-
- private Image getBrandingImage() {
- String connectorKind;
- TaskRepository outgoingNewRepository = TasksUiUtil.getOutgoingNewTaskRepository(task);
- if (outgoingNewRepository != null) {
- connectorKind = outgoingNewRepository.getConnectorKind();
- } else {
- connectorKind = task.getConnectorKind();
- }
-
- if (LocalRepositoryConnector.CONNECTOR_KIND.equals(connectorKind)) {
- return CommonImages.getImage(TasksUiImages.TASK);
- } else {
- ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(connectorKind);
- Image image = CommonImages.getImageWithOverlay(TasksUiImages.REPOSITORY, overlay, false, false);
- return image;
- }
- }
-
- private boolean hasLeftToolBar() {
- return leftToolBar != null && leftToolBarManager != null;
-// && leftToolBarManager.getSize() > initialLeftToolbarSize;
- }
-
- private void updateHeaderLabel() {
- TaskRepository outgoingNewRepository = TasksUiUtil.getOutgoingNewTaskRepository(task);
- final TaskRepository taskRepository = (outgoingNewRepository != null) ? outgoingNewRepository
- : taskEditorInput.getTaskRepository();
-
-// if (taskRepository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND)) {
-// getHeaderForm().getForm().setText(Messages.TaskEditor_Task_ + task.getSummary());
-// } else {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskRepository.getConnectorKind());
- String kindLabel = Messages.TaskEditor_Task;
- if (connectorUi != null) {
- kindLabel = connectorUi.getTaskKindLabel(task);
- }
-
- String idLabel = task.getTaskKey();
- if (idLabel != null) {
- kindLabel += " " + idLabel; //$NON-NLS-1$
- }
-
- if (hasLeftToolBar() && titleLabel != null) {
- titleLabel.setText(kindLabel);
- getHeaderForm().getForm().setText(null);
- setHeaderImage(null);
- } else {
- getHeaderForm().getForm().setText(kindLabel);
- }
- }
-
- /**
- * Update the title of the editor.
- *
- * @deprecated use {@link #updateHeaderToolBar()} instead
- */
- @Deprecated
- public void updateTitle(String name) {
- updateHeader();
- }
-
- private void updateTitleImage() {
- if (task != null) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(task.getConnectorKind());
- if (connectorUi != null) {
- ImageDescriptor overlayDescriptor = connectorUi.getTaskKindOverlay(task);
- setTitleImage(CommonImages.getCompositeTaskImage(TasksUiImages.TASK, overlayDescriptor, false));
- } else {
- setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
- }
-// } else if (getEditorInput() instanceof AbstractRepositoryTaskEditorInput) {
-// setTitleImage(CommonImages.getImage(TasksUiImages.TASK_REMOTE));
- } else {
- setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
- }
- }
-
-}

Back to the top