Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 153573 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java (-1 / +17 lines)
Lines 16-21 Link Here
16
import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
16
import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
17
import org.eclipse.mylar.tasks.core.ITask;
17
import org.eclipse.mylar.tasks.core.ITask;
18
import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
18
import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
19
import org.eclipse.mylar.tasks.core.ITaskListElement;
19
import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
20
import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
20
import org.eclipse.ui.IWorkingSet;
21
import org.eclipse.ui.IWorkingSet;
21
import org.eclipse.ui.IWorkingSetUpdater;
22
import org.eclipse.ui.IWorkingSetUpdater;
Lines 35-46 Link Here
35
	// IWorkingSetUpdater
36
	// IWorkingSetUpdater
36
	
37
	
37
	public void add(IWorkingSet workingSet) {
38
	public void add(IWorkingSet workingSet) {
38
		// checkElementExistence(workingSet);
39
		checkElementExistence(workingSet);
39
		synchronized (workingSets) {
40
		synchronized (workingSets) {
40
			workingSets.add(workingSet);
41
			workingSets.add(workingSet);
41
		}
42
		}
42
	}
43
	}
43
44
45
	private void checkElementExistence(IWorkingSet workingSet) {
46
		ArrayList<IAdaptable> list = new ArrayList<IAdaptable>();
47
		for (IAdaptable adaptable : workingSet.getElements()) {
48
			if (adaptable instanceof AbstractTaskContainer) {
49
				String handle = ((AbstractTaskContainer) adaptable).getHandleIdentifier();
50
				for (ITaskListElement element : TasksUiPlugin.getTaskListManager().getTaskList().getRootElements()) {
51
					if (element instanceof AbstractTaskContainer && element.getHandleIdentifier().equals(handle)) {
52
						list.add(adaptable);
53
					}
54
				}
55
			}
56
		}
57
		workingSet.setElements(list.toArray(new IAdaptable[list.size()]));
58
	}
59
44
	public boolean contains(IWorkingSet workingSet) {
60
	public boolean contains(IWorkingSet workingSet) {
45
		synchronized(workingSets) {
61
		synchronized(workingSets) {
46
			return workingSets.contains(workingSet);
62
			return workingSets.contains(workingSet);
(-)plugin.xml (-5 / +22 lines)
Lines 788-801 Link Here
788
	<extension
788
	<extension
789
		point="org.eclipse.ui.workingSets">
789
		point="org.eclipse.ui.workingSets">
790
		<workingSet
790
		<workingSet
791
        elementAdapterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetElementAdapter"
791
                 elementAdapterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetElementAdapter"
792
        icon="icons/etool16/open-task.gif"
792
        icon="icons/etool16/open-task.gif"
793
        id="org.eclipse.mylar.tasks.ui.workingSet"
793
                 id="org.eclipse.mylar.tasks.ui.workingSet"
794
        name="Tasks"
794
                 name="Tasks"
795
        pageClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetPage"
795
                 pageClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetPage"
796
        updaterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetUpdater">
796
                 updaterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetUpdater">
797
		</workingSet>
797
		</workingSet>
798
	</extension>
798
	</extension>
799
 <extension
800
       point="org.eclipse.core.runtime.adapters">
801
    <factory
802
          adaptableType="org.eclipse.mylar.tasks.core.AbstractTaskContainer"
803
          class="org.eclipse.mylar.internal.tasks.ui.workingset.TaskAdapterFactory">
804
       <adapter
805
             type="org.eclipse.ui.IPersistableElement">
806
       </adapter>
807
    </factory>
808
 </extension>
809
 <extension
810
       point="org.eclipse.ui.elementFactories">
811
    <factory
812
          class="org.eclipse.mylar.internal.tasks.ui.workingset.TaskElementFactory"
813
          id="org.eclipse.mylar.tasks.ui.elementFactory">
814
    </factory>
815
 </extension>
799
   
816
   
800
</plugin>
817
</plugin>
801
818
(-)src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskAdapterFactory.java (+52 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004 - 2006 Mylar committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylar.internal.tasks.ui.workingset;
10
11
import org.eclipse.core.runtime.IAdapterFactory;
12
import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
13
import org.eclipse.ui.IMemento;
14
import org.eclipse.ui.IPersistableElement;
15
16
/**
17
 * Adapter factory used to adapt AbstractTaskContainer to IPersistableElement
18
 *    
19
 * @author Eugene Kuleshov
20
 */
21
public class TaskAdapterFactory implements IAdapterFactory {
22
23
	private static final String TASK_ELEMENT_FACTORY_ID = "org.eclipse.mylar.tasks.ui.elementFactory";
24
	
25
	@SuppressWarnings("unchecked")
26
	private static final Class[] ADAPTER_TYPES = new Class[] { IPersistableElement.class };
27
	
28
	@SuppressWarnings("unchecked") 
29
	public Class[] getAdapterList() {
30
		return ADAPTER_TYPES;
31
	}
32
33
	public Object getAdapter(final Object adaptableObject, @SuppressWarnings("unchecked") Class adapterType) {
34
	    if (adapterType == IPersistableElement.class && adaptableObject instanceof AbstractTaskContainer) {
35
	    	// 
36
	    	return new IPersistableElement() {
37
				public void saveState(IMemento memento) {
38
					AbstractTaskContainer container = (AbstractTaskContainer) adaptableObject;
39
					memento.putString(TaskElementFactory.HANDLE_ID, container.getHandleIdentifier());
40
				}
41
42
				public String getFactoryId() {
43
					return TASK_ELEMENT_FACTORY_ID;
44
				}
45
	    	};
46
		}
47
		
48
		return null;
49
	}
50
51
}
52
(-)src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskElementFactory.java (+40 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004 - 2006 Mylar committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylar.internal.tasks.ui.workingset;
10
11
import org.eclipse.core.runtime.IAdaptable;
12
import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
13
import org.eclipse.mylar.tasks.core.ITaskListElement;
14
import org.eclipse.mylar.tasks.core.TaskList;
15
import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
16
import org.eclipse.ui.IElementFactory;
17
import org.eclipse.ui.IMemento;
18
19
/**
20
 * Element factory used to restore task containers for working sets
21
 * 
22
 * @author Eugene Kuleshov
23
 */
24
public class TaskElementFactory implements IElementFactory {
25
26
	public static final String HANDLE_ID = "handle";
27
28
	public IAdaptable createElement(IMemento memento) {
29
		TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
30
31
		String handle = memento.getString(HANDLE_ID);
32
		for (ITaskListElement element : taskList.getRootElements()) {
33
			if (element instanceof AbstractTaskContainer && element.getHandleIdentifier().equals(handle)) {
34
				return (IAdaptable) element;
35
			}
36
		}
37
		return null;
38
	}
39
40
}

Return to bug 153573