### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java,v retrieving revision 1.125 diff -u -r1.125 AbstractTaskEditorPage.java --- src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java 29 May 2009 23:11:26 -0000 1.125 +++ src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java 30 May 2009 04:39:55 -0000 @@ -862,18 +862,18 @@ toolBarManager.add(clearOutgoingAction); } - if (task.getSynchronizationState() != SynchronizationState.OUTGOING_NEW) { - synchronizeEditorAction = new SynchronizeEditorAction(); - synchronizeEditorAction.selectionChanged(new StructuredSelection(getTaskEditor())); - toolBarManager.add(synchronizeEditorAction); - } - NewSubTaskAction newSubTaskAction = new NewSubTaskAction(); newSubTaskAction.selectionChanged(newSubTaskAction, new StructuredSelection(task)); if (newSubTaskAction.isEnabled()) { toolBarManager.add(newSubTaskAction); } + if (task.getSynchronizationState() != SynchronizationState.OUTGOING_NEW) { + synchronizeEditorAction = new SynchronizeEditorAction(); + synchronizeEditorAction.selectionChanged(new StructuredSelection(getTaskEditor())); + toolBarManager.add(synchronizeEditorAction); + } + AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskData.getConnectorKind()); if (connectorUi != null) { final String historyUrl = connectorUi.getTaskHistoryUrl(taskRepository, task); @@ -1504,8 +1504,21 @@ ControlContribution submitButtonContribution = new ControlContribution( "org.eclipse.mylyn.tasks.toolbars.submit") { //$NON-NLS-1$ @Override + protected int computeWidth(Control control) { + return super.computeWidth(control) + 5; + } + + @Override protected Control createControl(Composite parent) { - submitButton = toolkit.createButton(parent, Messages.TaskEditorActionPart_Submit + " ", SWT.NONE); //$NON-NLS-1$ + Composite composite = new Composite(parent, SWT.NONE); + composite.setBackground(null); + GridLayout layout = new GridLayout(); + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.marginLeft = 10; + composite.setLayout(layout); + + submitButton = toolkit.createButton(composite, Messages.TaskEditorActionPart_Submit + " ", SWT.NONE); //$NON-NLS-1$ submitButton.setImage(CommonImages.getImage(TasksUiImages.REPOSITORY_SUBMIT)); submitButton.setBackground(null); submitButton.addListener(SWT.Selection, new Listener() { @@ -1513,11 +1526,11 @@ doSubmit(); } }); - return submitButton; + GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.BOTTOM).applyTo(submitButton); + return composite; } }; toolBarManager.add(submitButtonContribution); } } - } Index: src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java,v retrieving revision 1.153 diff -u -r1.153 TaskEditor.java --- src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java 29 May 2009 23:15:27 -0000 1.153 +++ src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java 30 May 2009 04:39:55 -0000 @@ -26,7 +26,6 @@ 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.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; @@ -37,14 +36,12 @@ import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.JFaceResources; -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.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; @@ -55,7 +52,6 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.ToggleTaskActivationAction; 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.editors.TaskPlanningEditor; 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; @@ -65,21 +61,19 @@ import org.eclipse.mylyn.tasks.ui.TasksUiImages; import org.eclipse.mylyn.tasks.ui.TasksUiUtil; import org.eclipse.swt.SWT; -import org.eclipse.swt.dnd.DND; -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.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; 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.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; @@ -89,7 +83,6 @@ 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; @@ -98,7 +91,6 @@ 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.Hyperlink; import org.eclipse.ui.internal.forms.widgets.BusyIndicator; import org.eclipse.ui.internal.forms.widgets.FormHeading; import org.eclipse.ui.internal.forms.widgets.TitleRegion; @@ -163,6 +155,8 @@ private boolean noExtraPadding; + private boolean headerLabelInitialized; + public TaskEditor() { } @@ -494,22 +488,22 @@ } 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); - } - }); - form.addTitleDragSupport(DND.DROP_MOVE | DND.DROP_LINK, transferTypes, titleDragSourceListener); - } +// 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); +// } +// }); +// form.addTitleDragSupport(DND.DROP_MOVE | DND.DROP_LINK, transferTypes, titleDragSourceListener); +// } } @Override @@ -740,33 +734,33 @@ 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); - composite.setLayout(new RowLayout()); - composite.setBackground(null); - String label = taskRepository.getRepositoryLabel(); - if (label.indexOf("//") != -1) { //$NON-NLS-1$ - label = label.substring((taskRepository.getRepositoryUrl().indexOf("//") + 2)); //$NON-NLS-1$ - } - - Hyperlink link = new Hyperlink(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); +// ControlContribution repositoryLabelControl = new ControlContribution(Messages.AbstractTaskEditorPage_Title) { +// @Override +// protected Control createControl(Composite parent) { +// FormToolkit toolkit = getHeaderForm().getToolkit(); +// Composite composite = toolkit.createComposite(parent); +// composite.setLayout(new RowLayout()); +// composite.setBackground(null); +// String label = taskRepository.getRepositoryLabel(); +// if (label.indexOf("//") != -1) { //$NON-NLS-1$ +// label = label.substring((taskRepository.getRepositoryUrl().indexOf("//") + 2)); //$NON-NLS-1$ +// } +// +// Hyperlink link = new Hyperlink(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 Separator(IWorkbenchActionConstants.MB_ADDITIONS)); @@ -810,6 +804,39 @@ toolBarManager.add(new Separator("activation")); //$NON-NLS-1$ toolBarManager.add(activateAction); +// 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) { @@ -833,15 +860,15 @@ initialLeftToolbarSize = leftToolBarManager.getSize(); - 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); - } - } +// 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); @@ -932,28 +959,52 @@ if (hasLeftToolBar()) { getHeaderForm().getForm().setText(null); } else { - String connectorKind; TaskRepository outgoingNewRepository = TasksUiUtil.getOutgoingNewTaskRepository(task); - if (outgoingNewRepository != null) { - connectorKind = outgoingNewRepository.getConnectorKind(); - } else { - connectorKind = task.getConnectorKind(); - } + final TaskRepository taskRepository = (outgoingNewRepository != null) ? outgoingNewRepository + : taskEditorInput.getTaskRepository(); - if (connectorKind.equals(LocalRepositoryConnector.CONNECTOR_KIND)) { - getHeaderForm().getForm().setText(Messages.TaskEditor_Task_ + task.getSummary()); - } else { - AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(connectorKind); - String kindLabel = ""; //$NON-NLS-1$ - if (connectorUi != null) { - kindLabel = connectorUi.getTaskKindLabel(task); - } +// if (connectorKind.equals(LocalRepositoryConnector.CONNECTOR_KIND)) { +// getHeaderForm().getForm().setText(Messages.TaskEditor_Task_ + task.getSummary()); +// } else { +// AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(connectorKind); +// String kindLabel = ""; //$NON-NLS-1$ +// if (connectorUi != null) { +// kindLabel = connectorUi.getTaskKindLabel(task); +// } +// +// String idLabel = task.getTaskKey(); +// if (idLabel != null) { +// getHeaderForm().getForm().setText(kindLabel + " " + idLabel); //$NON-NLS-1$ +// } else { +// getHeaderForm().getForm().setText(kindLabel); +// } +// } + String label = taskRepository.getRepositoryLabel(); + if (label.indexOf("//") != -1) { //$NON-NLS-1$ + label = label.substring((taskRepository.getRepositoryUrl().indexOf("//") + 2)); //$NON-NLS-1$ + } + if (!headerLabelInitialized) { + headerLabelInitialized = true; + getHeaderForm().getForm().setText(label); + getHeaderForm().getForm().setFont(JFaceResources.getBannerFont()); + try { + FormHeading heading = (FormHeading) getHeaderForm().getForm().getForm().getHead(); - String idLabel = task.getTaskKey(); - if (idLabel != null) { - getHeaderForm().getForm().setText(kindLabel + " " + idLabel); //$NON-NLS-1$ - } else { - getHeaderForm().getForm().setText(kindLabel); + Field field = FormHeading.class.getDeclaredField("titleRegion"); //$NON-NLS-1$ + field.setAccessible(true); + + TitleRegion titleRegion = (TitleRegion) field.get(heading); + Label titleLabel = (Label) titleRegion.getChildren()[0]; + titleLabel.addMouseListener(new MouseAdapter() { + @Override + public void mouseDown(MouseEvent e) { + TasksUiUtil.openEditRepositoryWizard(taskRepository); + } + }); + titleLabel.setCursor(Display.getDefault().getSystemCursor(SWT.CURSOR_HAND)); + } catch (Exception e) { + StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, + "Failed to register mouse listener in header", e)); //$NON-NLS-1$ } } }