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 87586 | Differences between
and this patch

Collapse All | Expand All

(-)LaunchViewContextListener.java (-12 / +16 lines)
Lines 116-122 Link Here
116
	 * closed.
116
	 * closed.
117
	 * 
117
	 * 
118
	 * Key: perspective id
118
	 * Key: perspective id
119
	 * Value: ArrayList of view ids open in a perspective
119
	 * Value: HashSet of view ids open in a perspective
120
	 */
120
	 */
121
	private Map openedViewIds= new HashMap();
121
	private Map openedViewIds= new HashMap();
122
	
122
	
Lines 376-382 Link Here
376
		Iterator iter= map.keySet().iterator();
376
		Iterator iter= map.keySet().iterator();
377
		while (iter.hasNext()) {
377
		while (iter.hasNext()) {
378
			String perspId = (String) iter.next();
378
			String perspId = (String) iter.next();
379
			ArrayList viewIds = (ArrayList)map.get(perspId);
379
			Set viewIds = (Set)map.get(perspId);
380
			views.append("/"); //$NON-NLS-1$
380
			views.append("/"); //$NON-NLS-1$
381
			views.append(perspId);
381
			views.append(perspId);
382
			if (viewIds != null && !viewIds.isEmpty())
382
			if (viewIds != null && !viewIds.isEmpty())
Lines 478-484 Link Here
478
					String perspId = data[0];
478
					String perspId = data[0];
479
					
479
					
480
					String[] viewIds = data[1].split(","); //$NON-NLS-1$
480
					String[] viewIds = data[1].split(","); //$NON-NLS-1$
481
					ArrayList list = new ArrayList();
481
					Set list = new HashSet();
482
					for (int j=0; j<viewIds.length; j++)
482
					for (int j=0; j<viewIds.length; j++)
483
					{
483
					{
484
						list.add(viewIds[j]);
484
						list.add(viewIds[j]);
Lines 549-566 Link Here
549
		Iterator iterator= viewsToOpen.iterator();
549
		Iterator iterator= viewsToOpen.iterator();
550
		
550
		
551
		String id = page.getPerspective().getId();
551
		String id = page.getPerspective().getId();
552
		ArrayList views = (ArrayList)openedViewIds.get(id);
552
		Set views = (Set)openedViewIds.get(id);
553
		if (views == null)
553
		if (views == null)
554
		{
554
		{
555
			views = new ArrayList();
555
			views = new HashSet();
556
		}
556
		}
557
		
557
		
558
		while (iterator.hasNext()) {
558
		while (iterator.hasNext()) {
559
			String viewId = (String) iterator.next();
559
			String viewId = (String) iterator.next();
560
			try {
560
			try {
561
				IViewPart view = page.showView(viewId, null, IWorkbenchPage.VIEW_CREATE);
561
				IViewPart view = page.showView(viewId, null, IWorkbenchPage.VIEW_CREATE);
562
				if (!views.contains(viewId))
562
				views.add(viewId);
563
					views.add(viewId);
564
563
565
				viewsToShow.add(view);
564
				viewsToShow.add(view);
566
			} catch (PartInitException e) {
565
			} catch (PartInitException e) {
Lines 672-678 Link Here
672
		Iterator iter= viewsToClose.iterator();
671
		Iterator iter= viewsToClose.iterator();
673
		
672
		
674
		String perspId = page.getPerspective().getId();
673
		String perspId = page.getPerspective().getId();
675
		ArrayList viewIds = (ArrayList)openedViewIds.get(perspId);
674
		Set viewIds = (Set)openedViewIds.get(perspId);
676
		
675
		
677
		while (iter.hasNext()) {
676
		while (iter.hasNext()) {
678
			String viewId= (String) iter.next();
677
			String viewId= (String) iter.next();
Lines 683-692 Link Here
683
				{
682
				{
684
					// remove opened view from perspective
683
					// remove opened view from perspective
685
					viewIds.remove(viewId);
684
					viewIds.remove(viewId);
686
					openedViewIds.put(perspId, viewIds);
687
				}
685
				}
688
			}
686
			}
689
		}
687
		}
688
		
689
		if (viewIds != null)
690
			openedViewIds.put(perspId, viewIds);
691
		
690
		saveOpenedViews();
692
		saveOpenedViews();
691
		
693
		
692
		// reset if this setting is previously changed
694
		// reset if this setting is previously changed
Lines 707-713 Link Here
707
		Set viewIdsToKeepOpen= getViewIdsForEnabledContexts();
709
		Set viewIdsToKeepOpen= getViewIdsForEnabledContexts();
708
		Iterator contexts = contextIds.iterator();
710
		Iterator contexts = contextIds.iterator();
709
		String currentPerspId = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getPerspective().getId();
711
		String currentPerspId = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getPerspective().getId();
710
		ArrayList viewIds = (ArrayList)openedViewIds.get(currentPerspId);
712
		Set viewIds = (Set)openedViewIds.get(currentPerspId);
711
		while (contexts.hasNext()) {
713
		while (contexts.hasNext()) {
712
			String contextId = (String) contexts.next();
714
			String contextId = (String) contexts.next();
713
			List list = getConfigurationElements(contextId);
715
			List list = getConfigurationElements(contextId);
Lines 1094-1105 Link Here
1094
		{
1096
		{
1095
			String perspId = (String)keys.next();
1097
			String perspId = (String)keys.next();
1096
			
1098
			
1097
			ArrayList views = (ArrayList)openedViewIds.get(perspId);
1099
			Set views = (Set)openedViewIds.get(perspId);
1098
			if (views != null && views.contains(viewId))
1100
			if (views != null && views.contains(viewId))
1099
			{
1101
			{
1100
				views.remove(viewId);
1102
				views.remove(viewId);
1101
				openedViewIds.put(perspId, views);
1102
			}
1103
			}
1104
			
1105
			if (views != null)
1106
				openedViewIds.put(perspId, views);
1103
		}
1107
		}
1104
	}
1108
	}
1105
	
1109
	

Return to bug 87586