diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets')
8 files changed, 0 insertions, 1169 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/Messages.java deleted file mode 100644 index 02b1ae0c0..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/Messages.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import org.eclipse.osgi.util.NLS; - -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.tasks.ui.workingsets.messages"; //$NON-NLS-1$ - - static { - // load message values from bundle file - reloadMessages(); - } - - public static void reloadMessages() { - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - public static String TaskWorkingSetPage_The_name_must_not_be_empty; - - public static String TaskWorkingSetPage_The_name_must_not_have_a_leading_or_trailing_whitespace; - - public static String TaskWorkingSetPage_No_categories_queries_selected; - - public static String TaskWorkingSetPage_Resources; - - public static String TaskWorkingSetPage_Select_Working_Set_Elements; - - public static String TaskWorkingSetPage_Tasks; - - public static String TaskWorkingSetPage_Page_Description; - - public static String TaskWorkingSetPage_A_working_set_with_the_same_name_already_exists; - - public static String TaskWorkingSetPage_Select_All; - - public static String TaskWorkingSetPage_Deselect_All; -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetAdapterFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetAdapterFactory.java deleted file mode 100644 index 322add9c7..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetAdapterFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Eugene Kuleshov 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: - * Eugene Kuleshov - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IAdapterFactory; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.IRepositoryElement; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.IPersistableElement; - -/** - * Adapter factory used to adapt AbstractTaskContainer to IPersistableElement - * - * @author Eugene Kuleshov - */ -public class TaskWorkingSetAdapterFactory implements IAdapterFactory { - - private static final String TASK_ELEMENT_FACTORY_ID = "org.eclipse.mylyn.tasks.ui.workingSets.elementFactory"; //$NON-NLS-1$ - - @SuppressWarnings("unchecked") - private static final Class[] ADAPTER_TYPES = new Class[] { IPersistableElement.class }; - - @SuppressWarnings("unchecked") - public Class[] getAdapterList() { - return ADAPTER_TYPES; - } - - public Object getAdapter(final Object adaptableObject, @SuppressWarnings("unchecked") Class adapterType) { - if (adapterType == IPersistableElement.class && adaptableObject instanceof AbstractTaskContainer) { - return new IPersistableElement() { - public void saveState(IMemento memento) { - IRepositoryElement container = (IRepositoryElement) adaptableObject; - memento.putString(TaskWorkingSetElementFactory.HANDLE_TASK, container.getHandleIdentifier()); - } - - public String getFactoryId() { - return TASK_ELEMENT_FACTORY_ID; - } - }; - } else if (adapterType == IPersistableElement.class && adaptableObject instanceof IProject) { - return new IPersistableElement() { - public void saveState(IMemento memento) { - IProject project = (IProject) adaptableObject; - memento.putString(TaskWorkingSetElementFactory.HANDLE_PROJECT, project.getName()); - } - - public String getFactoryId() { - return TASK_ELEMENT_FACTORY_ID; - } - }; - } - return null; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java deleted file mode 100644 index ea0f3d395..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementAdapter.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Eugene Kuleshov 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: - * Eugene Kuleshov - initial API and implementation - * Tasktop Technologies - improvements - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.ui.IWorkingSet; -import org.eclipse.ui.IWorkingSetElementAdapter; - -/** - * @author Eugene Kuleshov - * @author Mik Kersten - */ -public class TaskWorkingSetElementAdapter implements IWorkingSetElementAdapter { - - public IAdaptable[] adaptElements(IWorkingSet workingSet, IAdaptable[] elements) { - for (IAdaptable adaptable : elements) { - if (!(adaptable instanceof AbstractTaskContainer)) { - return selectContainers(elements); - } - } - return elements; - } - - private IAdaptable[] selectContainers(IAdaptable[] elements) { - List<IAdaptable> containers = new ArrayList<IAdaptable>(elements.length); - for (IAdaptable adaptable : elements) { - if (adaptable instanceof AbstractTaskContainer) { - containers.add(adaptable); - } else if (adaptable instanceof IProject) { - containers.add(adaptable); - } - } - return containers.toArray(new IAdaptable[containers.size()]); - } - - public void dispose() { - // ignore - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java deleted file mode 100644 index 49e664f75..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetElementFactory.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Eugene Kuleshov 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: - * Eugene Kuleshov - initial API and implementation - * Tasktop Technologies - improvements - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.TaskList; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.ui.IElementFactory; -import org.eclipse.ui.IMemento; - -/** - * Element factory used to restore task containers and projects for Task+Resource working sets. - * - * @author Eugene Kuleshov - * @author Mik Kersten - */ -public class TaskWorkingSetElementFactory implements IElementFactory { - - static final String HANDLE_TASK = "handle.task"; //$NON-NLS-1$ - - static final String HANDLE_PROJECT = "handle.project"; //$NON-NLS-1$ - - public IAdaptable createElement(IMemento memento) { - String taskHandle = memento.getString(HANDLE_TASK); - if (taskHandle != null) { - // TOOD: this does not support projects and categories/queries have the same name - TaskList taskList = TasksUiPlugin.getTaskList(); - for (AbstractTaskContainer element : taskList.getRootElements()) { - if (element.getHandleIdentifier().equals(taskHandle)) { - return element; - } - } - } - String projectHandle = memento.getString(HANDLE_PROJECT); - if (projectHandle != null) { - try { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectHandle); - if (project != null) { - return project; - } - } catch (Throwable t) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Could not not determine project for handle: " + projectHandle, t)); //$NON-NLS-1$ - } - } - // prior to mylyn 3.0.2 task handles and project handles were identical - if (taskHandle != null) { - try { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(taskHandle); - if (project != null) { - return project; - } - } catch (Throwable t) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Could not not determine project for handle: " + taskHandle, t)); //$NON-NLS-1$ - } - } - return null; - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java deleted file mode 100644 index a46f9acde..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java +++ /dev/null @@ -1,579 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Eugene Kuleshov 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: - * Eugene Kuleshov - initial API and implementation - * Tasktop Technologies - improvements - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTreeViewer; -import org.eclipse.jface.viewers.DecoratingLabelProvider; -import org.eclipse.jface.viewers.ICheckStateListener; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoryLabelProvider; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.TaskElementLabelProvider; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.mylyn.tasks.ui.TasksUiImages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.BusyIndicator; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkingSet; -import org.eclipse.ui.IWorkingSetManager; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.IWorkingSetPage; -import org.eclipse.ui.internal.IWorkbenchGraphicConstants; -import org.eclipse.ui.internal.WorkbenchImages; -import org.eclipse.ui.model.IWorkbenchAdapter; -import org.eclipse.ui.model.WorkbenchLabelProvider; - -/** - * Adapted from org.eclipse.ui.internal.ide.dialogs.ResourceWorkingSetPage - * - * @author Eugene Kuleshov - * @author Mik Kersten - */ -public class TaskWorkingSetPage extends WizardPage implements IWorkingSetPage { - - private final static int SIZING_SELECTION_WIDGET_WIDTH = 50; - - private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200; - - private Text text; - - private CheckboxTreeViewer treeViewer; - - private IWorkingSet workingSet; - - private final WorkingSetPageContentProvider workingSetPageContentProvider = new WorkingSetPageContentProvider(); - - private boolean firstCheck = false; - - private final class WorkingSetPageContentProvider implements ITreeContentProvider { - - private ElementCategory tasksContainer; - - private ElementCategory resourcesContainer; - - private final Map<IRepositoryQuery, TaskRepository> queryMap = new HashMap<IRepositoryQuery, TaskRepository>(); - - private final Map<IProject, TaskRepositoryProjectMapping> projectMap = new HashMap<IProject, TaskRepositoryProjectMapping>(); - - public Object[] getChildren(Object parentElement) { - if (parentElement instanceof List) { - List<IAdaptable> taskRepositoriesContainers = new ArrayList<IAdaptable>(); - List<IAdaptable> resourcesRepositoriesContainers = new ArrayList<IAdaptable>(); - - for (AbstractTaskContainer category : TasksUiInternal.getTaskList().getCategories()) { - taskRepositoriesContainers.add(category); - } - - IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); - Set<IProject> unmappedProjects = new HashSet<IProject>(); - for (Object container : (List<?>) parentElement) { - if (container instanceof TaskRepository) { - // NOTE: looking down, high complexity - if (hasChildren(container)) { - taskRepositoriesContainers.add((TaskRepository) container); - } - - // NOTE: O(n^2) complexity, could fix - Set<IProject> mappedProjects = new HashSet<IProject>(); - - for (IProject project : projects) { - TaskRepository taskRepository = TasksUiPlugin.getDefault() - .getRepositoryForResource(project); - if (container.equals(taskRepository)) { - mappedProjects.add(project); - } else if (taskRepository == null) { - unmappedProjects.add(project); - } - } - if (!mappedProjects.isEmpty()) { - TaskRepositoryProjectMapping projectMapping = new TaskRepositoryProjectMapping( - (TaskRepository) container, mappedProjects); - resourcesRepositoriesContainers.add(projectMapping); - for (IProject mappedProject : mappedProjects) { - projectMap.put(mappedProject, projectMapping); - } - } - } - } - resourcesRepositoriesContainers.addAll(unmappedProjects); - tasksContainer = new ElementCategory(Messages.TaskWorkingSetPage_Tasks, taskRepositoriesContainers); - resourcesContainer = new ElementCategory(Messages.TaskWorkingSetPage_Resources, - resourcesRepositoriesContainers); - return new Object[] { tasksContainer, resourcesContainer }; - } else if (parentElement instanceof TaskRepository) { - List<IAdaptable> taskContainers = new ArrayList<IAdaptable>(); - for (AbstractTaskContainer element : TasksUiPlugin.getTaskList().getRepositoryQueries( - ((TaskRepository) parentElement).getRepositoryUrl())) { - if (element instanceof IRepositoryQuery) { - taskContainers.add(element); - queryMap.put((IRepositoryQuery) element, (TaskRepository) parentElement); - } - } - - return taskContainers.toArray(); - } else if (parentElement instanceof TaskRepositoryProjectMapping) { - return ((TaskRepositoryProjectMapping) parentElement).getProjects().toArray(); - } else if (parentElement instanceof ElementCategory) { - return ((ElementCategory) parentElement).getChildren(parentElement); - } else { - return new Object[0]; - } - } - - public boolean hasChildren(Object element) { - return getChildren(element).length > 0; - } - - public Object[] getElements(Object element) { - return getChildren(element); - } - - public Object getParent(Object element) { - if (element instanceof AbstractTaskCategory || element instanceof TaskRepository) { - return tasksContainer; - } else if (element instanceof IRepositoryQuery) { - return queryMap.get(element); - } else if (element instanceof TaskRepositoryProjectMapping) { - return resourcesContainer; - } else if (element instanceof IProject) { - Object repository = projectMap.get(element); - if (repository != null) { - return repository; - } else { - return resourcesContainer; - } - } else { - return null; - } - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - } - - private class TaskRepositoryProjectMapping extends PlatformObject { - - private final TaskRepository taskRepository; - - private final Set<IProject> projects; - - public TaskRepositoryProjectMapping(TaskRepository taskRepository, Set<IProject> mappedProjects) { - this.taskRepository = taskRepository; - this.projects = mappedProjects; - } - - public Set<IProject> getProjects() { - return projects; - } - - public TaskRepository getTaskRepository() { - return taskRepository; - } - } - - class ElementCategory extends PlatformObject implements IWorkbenchAdapter { - - private final String label; - - private final List<IAdaptable> children; - - public ElementCategory(String label, List<IAdaptable> children) { - this.label = label; - this.children = children; - } - - public Object[] getChildren(Object o) { - return children.toArray(); - } - - public ImageDescriptor getImageDescriptor(Object object) { - return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_WORKING_SETS); - } - - public String getLabel(Object o) { - return label; - } - - public Object getParent(Object o) { - return null; - } - - } - - class AggregateLabelProvider implements ILabelProvider { - - private final TaskElementLabelProvider taskLabelProvider = new TaskElementLabelProvider(false); - - private final TaskRepositoryLabelProvider taskRepositoryLabelProvider = new TaskRepositoryLabelProvider(); - - private final WorkbenchLabelProvider workbenchLabelProvider = new WorkbenchLabelProvider(); - - public Image getImage(Object element) { - if (element instanceof AbstractTaskContainer) { - return taskLabelProvider.getImage(element); - } else if (element instanceof TaskRepository) { - return taskRepositoryLabelProvider.getImage(element); - } else if (element instanceof TaskRepositoryProjectMapping) { - return getImage(((TaskRepositoryProjectMapping) element).getTaskRepository()); - } else { - return workbenchLabelProvider.getImage(element); - } - } - - public String getText(Object element) { - if (element instanceof AbstractTaskContainer) { - return taskLabelProvider.getText(element); - } else if (element instanceof TaskRepository) { - return taskRepositoryLabelProvider.getText(element); - } else if (element instanceof TaskRepositoryProjectMapping) { - return getText(((TaskRepositoryProjectMapping) element).getTaskRepository()); - } else { - return workbenchLabelProvider.getText(element); - } - } - - public void addListener(ILabelProviderListener listener) { - } - - public void dispose() { - } - - public boolean isLabelProperty(Object element, String property) { - return false; - } - - public void removeListener(ILabelProviderListener listener) { - } - } - - class CustomSorter extends ViewerSorter { - - @Override - public int compare(Viewer viewer, Object e1, Object e2) { - if (e1 instanceof TaskRepository || e1 instanceof TaskRepositoryProjectMapping) { - return -1; - } else if (e2 instanceof TaskRepository || e2 instanceof TaskRepositoryProjectMapping) { - return 1; - } else if (e1 instanceof ElementCategory - && ((ElementCategory) e1).getLabel(e1).equals(Messages.TaskWorkingSetPage_Tasks)) { - return -1; - } else if (e2 instanceof ElementCategory - && ((ElementCategory) e1).getLabel(e1).equals(Messages.TaskWorkingSetPage_Tasks)) { - return 1; - } else { - return super.compare(viewer, e1, e2); - } - } - } - - public TaskWorkingSetPage() { - super("taskWorkingSetPage", Messages.TaskWorkingSetPage_Select_Working_Set_Elements, null); //$NON-NLS-1$ - setDescription(Messages.TaskWorkingSetPage_Page_Description); - setImageDescriptor(TasksUiImages.BANNER_WORKING_SET); - } - - public void finish() { - Object[] elements = treeViewer.getCheckedElements(); - Set<IAdaptable> validElements = new HashSet<IAdaptable>(); - for (Object element : elements) { - if (element instanceof AbstractTaskContainer || element instanceof IProject) { - validElements.add((IAdaptable) element); - } - } - - addSpecialContainers(validElements); - - if (workingSet == null) { - IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); - workingSet = workingSetManager.createWorkingSet(getWorkingSetName(), - validElements.toArray(new IAdaptable[validElements.size()])); - } else { - workingSet.setName(getWorkingSetName()); - workingSet.setElements(validElements.toArray(new IAdaptable[validElements.size()])); - } - } - - private void addSpecialContainers(Set<IAdaptable> validElements) { - HashSet<AbstractTaskContainer> specialContainers = new HashSet<AbstractTaskContainer>(); - for (IAdaptable element : validElements) { - if (element instanceof IRepositoryQuery) { - IRepositoryQuery query = (IRepositoryQuery) element; - if (query.getRepositoryUrl() != null) { - // Add Unmatched - AbstractTaskContainer orphansContainer = TasksUiPlugin.getTaskList().getUnmatchedContainer( - query.getRepositoryUrl()); - if (orphansContainer != null) { - specialContainers.add(orphansContainer); - } - - // Add Unsubmitted - AbstractTaskContainer unsubmittedContainer = TasksUiPlugin.getTaskList().getUnsubmittedContainer( - query.getRepositoryUrl()); - if (unsubmittedContainer != null) { - specialContainers.add(unsubmittedContainer); - } - } - } - } - validElements.addAll(specialContainers); - } - - public IWorkingSet getSelection() { - return workingSet; - } - - public void setSelection(IWorkingSet workingSet) { - this.workingSet = workingSet; - if (getShell() != null && text != null) { - firstCheck = true; - initializeCheckedState(); - text.setText(workingSet.getName()); - } - } - - private String getWorkingSetName() { - return text.getText(); - } - - public void createControl(Composite parent) { - initializeDialogUnits(parent); - - Composite composite = new Composite(parent, SWT.NULL); - - GridLayout layout = new GridLayout(); - layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); - layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); - composite.setLayout(layout); - composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - setControl(composite); - - // PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IIDEHelpContextIds.WORKING_SET_RESOURCE_PAGE); - Label label = new Label(composite, SWT.WRAP); - label.setText(""); //$NON-NLS-1$ - label.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL - | GridData.VERTICAL_ALIGN_CENTER)); - - text = new Text(composite, SWT.SINGLE | SWT.BORDER); - text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); - text.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - validateInput(); - } - }); - text.setFocus(); - // text.setBackground(FieldAssistColors.getRequiredFieldBackgroundColor(text)); - - label = new Label(composite, SWT.WRAP); - label.setText(""); //$NON-NLS-1$ - label.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL - | GridData.VERTICAL_ALIGN_CENTER)); - - treeViewer = new CheckboxTreeViewer(composite); - treeViewer.setUseHashlookup(true); - treeViewer.setContentProvider(workingSetPageContentProvider); - - treeViewer.setLabelProvider(new DecoratingLabelProvider(new AggregateLabelProvider(), PlatformUI.getWorkbench() - .getDecoratorManager() - .getLabelDecorator())); - treeViewer.setSorter(new CustomSorter()); - - ArrayList<Object> containers = new ArrayList<Object>(); - for (TaskRepository repository : TasksUi.getRepositoryManager().getAllRepositories()) { - containers.add(repository); - } - - containers.addAll(Arrays.asList(ResourcesPlugin.getWorkspace().getRoot().getProjects())); - - treeViewer.setInput(containers); - - // tree.setComparator(new ResourceComparator(ResourceComparator.NAME)); - - GridData data = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL); - data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT; - data.widthHint = SIZING_SELECTION_WIDGET_WIDTH; - treeViewer.getControl().setLayoutData(data); - - treeViewer.addCheckStateListener(new ICheckStateListener() { - public void checkStateChanged(CheckStateChangedEvent event) { - handleCheckStateChange(event); - } - }); - - // Add select / deselect all buttons for bug 46669 - Composite buttonComposite = new Composite(composite, SWT.NONE); - layout = new GridLayout(2, false); - layout.marginWidth = 0; - layout.marginHeight = 0; - layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); - buttonComposite.setLayout(layout); - buttonComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - Button selectAllButton = new Button(buttonComposite, SWT.PUSH); - selectAllButton.setText(Messages.TaskWorkingSetPage_Select_All); - selectAllButton.setToolTipText(""); //$NON-NLS-1$ - selectAllButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent selectionEvent) { - treeViewer.setCheckedElements(workingSetPageContentProvider.getElements(treeViewer.getInput())); - validateInput(); - } - }); - setButtonLayoutData(selectAllButton); - - Button deselectAllButton = new Button(buttonComposite, SWT.PUSH); - deselectAllButton.setText(Messages.TaskWorkingSetPage_Deselect_All); - deselectAllButton.setToolTipText(""); //$NON-NLS-1$ - deselectAllButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent selectionEvent) { - treeViewer.setCheckedElements(new Object[0]); - validateInput(); - } - }); - setButtonLayoutData(deselectAllButton); - - if (workingSet != null) { - for (Object object : workingSet.getElements()) { - treeViewer.expandToLevel(object, 1); - } - } else { - treeViewer.expandToLevel(2); - } - initializeCheckedState(); - - if (workingSet != null) { - text.setText(workingSet.getName()); - } - - setPageComplete(false); - Dialog.applyDialogFont(composite); - } - - private void initializeCheckedState() { - BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() { - public void run() { - Object[] items = null; - if (workingSet != null) { - items = workingSet.getElements(); - if (items != null) { - // see bug 191342 - treeViewer.setCheckedElements(new Object[] {}); - for (Object item : items) { - if (item != null) { - treeViewer.setChecked(item, true); - } - } - } - } - } - }); - } - - protected void handleCheckStateChange(final CheckStateChangedEvent event) { - BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() { - public void run() { - IAdaptable element = (IAdaptable) event.getElement(); - handleCheckStateChangeHelper(event, element); - validateInput(); - } - - private void handleCheckStateChangeHelper(final CheckStateChangedEvent event, IAdaptable element) { - if (element instanceof AbstractTaskContainer || element instanceof IProject) { - treeViewer.setGrayed(element, false); - } else if (element instanceof ElementCategory) { - for (Object child : ((ElementCategory) element).getChildren(null)) { - treeViewer.setChecked(child, event.getChecked()); - if (child instanceof IAdaptable) { - handleCheckStateChangeHelper(event, (IAdaptable) child); - } - } - } else if (element instanceof TaskRepository || element instanceof TaskRepositoryProjectMapping) { - for (Object child : workingSetPageContentProvider.getChildren(element)) { - treeViewer.setChecked(child, event.getChecked()); - } - } - } - }); - } - - protected void validateInput() { - String errorMessage = null; - String infoMessage = null; - String newText = text.getText(); - - if (!newText.equals(newText.trim())) { - errorMessage = Messages.TaskWorkingSetPage_The_name_must_not_have_a_leading_or_trailing_whitespace; - } else if (firstCheck) { - firstCheck = false; - return; - } - if ("".equals(newText)) { //$NON-NLS-1$ - errorMessage = Messages.TaskWorkingSetPage_The_name_must_not_be_empty; - } - if (errorMessage == null && (workingSet == null || !newText.equals(workingSet.getName()))) { - IWorkingSet[] workingSets = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets(); - for (IWorkingSet workingSet2 : workingSets) { - if (newText.equals(workingSet2.getName())) { - errorMessage = Messages.TaskWorkingSetPage_A_working_set_with_the_same_name_already_exists; - } - } - } - if (treeViewer.getCheckedElements().length == 0) { - infoMessage = Messages.TaskWorkingSetPage_No_categories_queries_selected; - } - setMessage(infoMessage, INFORMATION); - setErrorMessage(errorMessage); - setPageComplete(errorMessage == null); - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java deleted file mode 100644 index d65e85f11..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetUpdater.java +++ /dev/null @@ -1,312 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 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: - * Eugene Kuleshov - initial API and implementation - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; -import org.eclipse.mylyn.internal.tasks.core.TaskCategory; -import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; -import org.eclipse.mylyn.tasks.core.IRepositoryElement; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.IWorkingSet; -import org.eclipse.ui.IWorkingSetUpdater; -import org.eclipse.ui.PlatformUI; - -/** - * @author Eugene Kuleshov - * @author Mik Kersten - * @author Steffen Pingel - */ -public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChangeListener, IResourceChangeListener { - - public static String ID_TASK_WORKING_SET = "org.eclipse.mylyn.tasks.ui.workingSet"; //$NON-NLS-1$ - - private final List<IWorkingSet> workingSets = new CopyOnWriteArrayList<IWorkingSet>(); - - private static class TaskWorkingSetDelta { - - private final IWorkingSet workingSet; - - private final List<Object> elements; - - private boolean changed; - - public TaskWorkingSetDelta(IWorkingSet workingSet) { - this.workingSet = workingSet; - this.elements = new ArrayList<Object>(Arrays.asList(workingSet.getElements())); - } - - public int indexOf(Object element) { - return elements.indexOf(element); - } - - public void set(int index, Object element) { - elements.set(index, element); - changed = true; - } - - public void remove(int index) { - if (elements.remove(index) != null) { - changed = true; - } - } - - public void process() { - if (changed) { - workingSet.setElements(elements.toArray(new IAdaptable[elements.size()])); - } - } - } - - public TaskWorkingSetUpdater() { - TasksUiInternal.getTaskList().addChangeListener(this); - ResourcesPlugin.getWorkspace().addResourceChangeListener(this); - } - - public void dispose() { - TasksUiInternal.getTaskList().removeChangeListener(this); - } - - public void add(IWorkingSet workingSet) { - checkElementExistence(workingSet); - synchronized (workingSets) { - workingSets.add(workingSet); - } - } - - private void checkElementExistence(IWorkingSet workingSet) { - ArrayList<IAdaptable> list = new ArrayList<IAdaptable>(); - for (IAdaptable adaptable : workingSet.getElements()) { - if (adaptable instanceof AbstractTaskContainer) { - String handle = ((AbstractTaskContainer) adaptable).getHandleIdentifier(); - for (IRepositoryElement element : TasksUiPlugin.getTaskList().getRootElements()) { - if (element != null && element.getHandleIdentifier().equals(handle)) { - list.add(adaptable); - } - } - } else if (adaptable instanceof IProject) { - IProject project = ResourcesPlugin.getWorkspace() - .getRoot() - .getProject(((IProject) adaptable).getName()); - if (project != null && project.exists()) { - list.add(project); - } - } - } - workingSet.setElements(list.toArray(new IAdaptable[list.size()])); - } - - public boolean contains(IWorkingSet workingSet) { - synchronized (workingSets) { - return workingSets.contains(workingSet); - } - } - - public boolean remove(IWorkingSet workingSet) { - synchronized (workingSets) { - return workingSets.remove(workingSet); - } - } - - public void containersChanged(Set<TaskContainerDelta> delta) { - for (TaskContainerDelta taskContainerDelta : delta) { - if (taskContainerDelta.getElement() instanceof TaskCategory - || taskContainerDelta.getElement() instanceof IRepositoryQuery) { - synchronized (workingSets) { - switch (taskContainerDelta.getKind()) { - case REMOVED: - // Remove from all - for (IWorkingSet workingSet : workingSets) { - ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>( - Arrays.asList(workingSet.getElements())); - elements.remove(taskContainerDelta.getElement()); - workingSet.setElements(elements.toArray(new IAdaptable[elements.size()])); - } - break; - case ADDED: - // Add to the active working set - for (IWorkingSet workingSet : TaskWorkingSetUpdater.getEnabledSets()) { - ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>( - Arrays.asList(workingSet.getElements())); - elements.add(taskContainerDelta.getElement()); - workingSet.setElements(elements.toArray(new IAdaptable[elements.size()])); - } - break; - } - } - } - } - } - - // TODO: consider putting back, but evaluate policy and note bug 197257 -// public void taskActivated(AbstractTask task) { -// Set<AbstractTaskContainer> taskContainers = new HashSet<AbstractTaskContainer>( -// TasksUiPlugin.getTaskList().getQueriesForHandle(task.getHandleIdentifier())); -// taskContainers.addAll(task.getParentContainers()); -// -// Set<AbstractTaskContainer> allActiveWorkingSetContainers = new HashSet<AbstractTaskContainer>(); -// for (IWorkingSet workingSet : PlatformUI.getWorkbench() -// .getActiveWorkbenchWindow() -// .getActivePage() -// .getWorkingSets()) { -// ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements())); -// for (IAdaptable adaptable : elements) { -// if (adaptable instanceof AbstractTaskContainer) { -// allActiveWorkingSetContainers.add((AbstractTaskContainer) adaptable); -// } -// } -// } -// boolean isContained = false; -// for (AbstractTaskContainer taskContainer : allActiveWorkingSetContainers) { -// if (taskContainers.contains(taskContainer)) { -// isContained = true; -// break; -// } -// } -// -// ; -// if (!isContained) { -// IWorkingSet matchingWorkingSet = null; -// for (IWorkingSet workingSet : PlatformUI.getWorkbench().getWorkingSetManager().getAllWorkingSets()) { -// ArrayList<IAdaptable> elements = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements())); -// for (IAdaptable adaptable : elements) { -// if (adaptable instanceof AbstractTaskContainer) { -// if (((AbstractTaskContainer)adaptable).contains(task.getHandleIdentifier())) { -// matchingWorkingSet = workingSet; -// } -// } -// } -// } -// -// if (matchingWorkingSet != null) { -// new ToggleWorkingSetAction(matchingWorkingSet).run(); -// } else { -// new ToggleAllWorkingSetsAction(PlatformUI.getWorkbench().getActiveWorkbenchWindow()).run(); -// } -// } -// } - - public static IWorkingSet[] getEnabledSets() { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null) { - IWorkbenchPage page = window.getActivePage(); - if (page != null) { - return page.getWorkingSets(); - } - } - return new IWorkingSet[0]; - } - - /** - * TODO: move - */ - public static boolean areNoTaskWorkingSetsEnabled() { - IWorkingSet[] workingSets = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets(); - for (IWorkingSet workingSet : workingSets) { - if (workingSet != null && workingSet.getId().equalsIgnoreCase(ID_TASK_WORKING_SET)) { - if (isWorkingSetEnabled(workingSet)) { - return false; - } - } - } - return true; - } - - public static boolean isWorkingSetEnabled(IWorkingSet set) { - IWorkingSet[] enabledSets = TaskWorkingSetUpdater.getEnabledSets(); - for (IWorkingSet enabledSet : enabledSets) { - if (enabledSet.equals(set)) { - return true; - } - } - return false; - } - - public static boolean isOnlyTaskWorkingSetEnabled(IWorkingSet set) { - if (!TaskWorkingSetUpdater.isWorkingSetEnabled(set)) { - return false; - } - - IWorkingSet[] enabledSets = TaskWorkingSetUpdater.getEnabledSets(); - for (int i = 0; i < enabledSets.length; i++) { - if (!enabledSets[i].equals(set) - && enabledSets[i].getId().equalsIgnoreCase(TaskWorkingSetUpdater.ID_TASK_WORKING_SET)) { - return false; - } - } - return true; - } - - private void processResourceDelta(TaskWorkingSetDelta result, IResourceDelta delta) { - IResource resource = delta.getResource(); - int type = resource.getType(); - int index = result.indexOf(resource); - int kind = delta.getKind(); - int flags = delta.getFlags(); - if (kind == IResourceDelta.CHANGED && type == IResource.PROJECT && index != -1) { - if ((flags & IResourceDelta.OPEN) != 0) { - result.set(index, resource); - } - } - if (index != -1 && kind == IResourceDelta.REMOVED) { - if ((flags & IResourceDelta.MOVED_TO) != 0) { - result.set(index, ResourcesPlugin.getWorkspace().getRoot().findMember(delta.getMovedToPath())); - } else { - result.remove(index); - } - } - - // Don't dive into closed or opened projects - if (projectGotClosedOrOpened(resource, kind, flags)) { - return; - } - - IResourceDelta[] children = delta.getAffectedChildren(); - for (IResourceDelta element : children) { - processResourceDelta(result, element); - } - } - - private boolean projectGotClosedOrOpened(IResource resource, int kind, int flags) { - return resource.getType() == IResource.PROJECT && kind == IResourceDelta.CHANGED - && (flags & IResourceDelta.OPEN) != 0; - } - - public void resourceChanged(IResourceChangeEvent event) { - for (IWorkingSet workingSet : workingSets) { - TaskWorkingSetDelta workingSetDelta = new TaskWorkingSetDelta(workingSet); - if (event.getDelta() != null) { - processResourceDelta(workingSetDelta, event.getDelta()); - } - workingSetDelta.process(); - } - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/WorkingSetLabelComparator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/WorkingSetLabelComparator.java deleted file mode 100644 index 4af6c3c79..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/WorkingSetLabelComparator.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Willian Mitsuda 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: - * Willian Mitsuda - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.workingsets; - -import java.text.Collator; -import java.util.Comparator; - -import org.eclipse.ui.IWorkingSet; - -/** - * @author Willian Mitsuda - */ -public class WorkingSetLabelComparator implements Comparator<IWorkingSet> { - - public int compare(IWorkingSet ws1, IWorkingSet ws2) { - return Collator.getInstance().compare(ws1.getLabel(), ws2.getLabel()); - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/messages.properties deleted file mode 100644 index 3f82c779e..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/workingsets/messages.properties +++ /dev/null @@ -1,10 +0,0 @@ -TaskWorkingSetPage_The_name_must_not_be_empty=The name must not be empty. -TaskWorkingSetPage_The_name_must_not_have_a_leading_or_trailing_whitespace=The name must not have a leading or trailing whitespace. -TaskWorkingSetPage_No_categories_queries_selected=No categories/queries selected. -TaskWorkingSetPage_Resources=Resources -TaskWorkingSetPage_Select_Working_Set_Elements=Select Working Set Elements -TaskWorkingSetPage_Tasks=Tasks -TaskWorkingSetPage_Page_Description=When this Working Set is selected views will be filtered just to show only these elements if the Window Working Set is enabled in the view. -TaskWorkingSetPage_A_working_set_with_the_same_name_already_exists=A working set with the same name already exists. -TaskWorkingSetPage_Select_All=Select All -TaskWorkingSetPage_Deselect_All=Deselect All |