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 211610
Collapse All | Expand All

(-)src/org/eclipse/ui/forms/editor/SharedHeaderFormEditor.java (-20 / +2 lines)
Lines 16-29 Link Here
16
import org.eclipse.swt.widgets.Event;
16
import org.eclipse.swt.widgets.Event;
17
import org.eclipse.swt.widgets.Listener;
17
import org.eclipse.swt.widgets.Listener;
18
import org.eclipse.ui.IEditorPart;
18
import org.eclipse.ui.IEditorPart;
19
import org.eclipse.ui.IKeyBindingService;
20
import org.eclipse.ui.INestableKeyBindingService;
21
import org.eclipse.ui.forms.IFormPart;
19
import org.eclipse.ui.forms.IFormPart;
22
import org.eclipse.ui.forms.IManagedForm;
20
import org.eclipse.ui.forms.IManagedForm;
23
import org.eclipse.ui.forms.ManagedForm;
21
import org.eclipse.ui.forms.ManagedForm;
24
import org.eclipse.ui.forms.widgets.ScrolledForm;
22
import org.eclipse.ui.forms.widgets.ScrolledForm;
25
import org.eclipse.ui.internal.forms.widgets.FormUtil;
23
import org.eclipse.ui.internal.forms.widgets.FormUtil;
26
import org.eclipse.ui.internal.services.INestable;
27
24
28
/**
25
/**
29
 * A variation of {@link FormEditor}, this editor has a stable header that does
26
 * A variation of {@link FormEditor}, this editor has a stable header that does
Lines 131-158 Link Here
131
				public void handleEvent(Event event) {
128
				public void handleEvent(Event event) {
132
					boolean wasHeaderActive = event.widget != getContainer();
129
					boolean wasHeaderActive = event.widget != getContainer();
133
					
130
					
134
					// fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=177331
135
					int activePage = getActivePage();
131
					int activePage = getActivePage();
136
					if (SharedHeaderFormEditor.this.wasHeaderActive != wasHeaderActive && activePage != -1 && pages.get(activePage) instanceof IEditorPart) {
132
					if (SharedHeaderFormEditor.this.wasHeaderActive != wasHeaderActive && activePage != -1 && pages.get(activePage) instanceof IEditorPart) {
137
						IEditorPart activePart = (IEditorPart) pages.get(activePage);
138
						IKeyBindingService keyBindingService = getSite().getKeyBindingService();
139
						
133
						
140
						if (wasHeaderActive) {
134
						if (wasHeaderActive) {
141
							
135
							deactivateSite(true, true);
142
							if (activePart.getSite() instanceof INestable)
143
								((INestable) activePart.getSite()).deactivate();
144
							
145
							if (keyBindingService instanceof INestableKeyBindingService)
146
								((INestableKeyBindingService) keyBindingService).activateKeyBindingService(null);
147
							
148
						} else {
136
						} else {
149
							
137
							activateSite();
150
							if (keyBindingService instanceof INestableKeyBindingService)
151
								((INestableKeyBindingService) keyBindingService).activateKeyBindingService(activePart.getSite());
152
							
153
							if (activePart.getSite() instanceof INestable)
154
								((INestable) activePart.getSite()).activate();
155
							
156
						}
138
						}
157
					}
139
					}
158
					
140
					
(-)src/org/eclipse/ui/forms/editor/FormEditor.java (-2 / +1 lines)
Lines 620-629 Link Here
620
		// this should be called only when the editor is first opened
620
		// this should be called only when the editor is first opened
621
		if (pages.size() > pageIndex
621
		if (pages.size() > pageIndex
622
				&& pages.get(pageIndex) instanceof IFormPage) {
622
				&& pages.get(pageIndex) instanceof IFormPage) {
623
			pageChange(pageIndex);
623
			super.setActivePage(pageIndex);
624
			IFormPage activePage = (IFormPage) pages.get(pageIndex);
624
			IFormPage activePage = (IFormPage) pages.get(pageIndex);
625
			activePage.setActive(true);
625
			activePage.setActive(true);
626
			super.setActivePage(pageIndex);
627
		} else
626
		} else
628
			super.setActivePage(pageIndex);
627
			super.setActivePage(pageIndex);
629
		updateActionBarContributor(pageIndex);
628
		updateActionBarContributor(pageIndex);
(-)plugin.xml (+15 lines)
Lines 18-23 Link Here
18
      <import plugin="org.eclipse.ui.forms"/>
18
      <import plugin="org.eclipse.ui.forms"/>
19
      <import plugin="org.eclipse.core.runtime"/>
19
      <import plugin="org.eclipse.core.runtime"/>
20
      <import plugin="org.eclipse.ui.ide"/>
20
      <import plugin="org.eclipse.ui.ide"/>
21
      <import plugin="org.eclipse.core.expressions"/>
21
   </requires>
22
   </requires>
22
   <extension
23
   <extension
23
         point="org.eclipse.ui.commands">
24
         point="org.eclipse.ui.commands">
Lines 43-48 Link Here
43
            id="org.eclipse.ui.forms.examples.openDialog"
44
            id="org.eclipse.ui.forms.examples.openDialog"
44
            name="Open Form Dialog...">
45
            name="Open Form Dialog...">
45
      </command>
46
      </command>
47
      <command
48
            categoryId="org.eclipse.ui.forms.examples.category"
49
            id="org.eclipse.ui.forms.examples.showPage"
50
            name="Show Page">
51
      </command>
46
   </extension>
52
   </extension>
47
53
48
54
Lines 110-113 Link Here
110
            id="org.eclipse.ui.forms.examples.views.FormView">
116
            id="org.eclipse.ui.forms.examples.views.FormView">
111
      </view>
117
      </view>
112
   </extension>
118
   </extension>
119
   <extension
120
         point="org.eclipse.ui.bindings">
121
      <key
122
            commandId="org.eclipse.ui.forms.examples.showPage"
123
            contextId="org.eclipse.ui.contexts.window"
124
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
125
            sequence="CTRL+5 P">
126
      </key>
127
   </extension>
113
</plugin>
128
</plugin>
(-)src/org/eclipse/ui/forms/examples/internal/rcp/SingleHeaderEditor.java (-5 / +37 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.ui.forms.examples.internal.rcp;
11
package org.eclipse.ui.forms.examples.internal.rcp;
12
12
13
import org.eclipse.core.commands.AbstractHandler;
14
import org.eclipse.core.commands.ExecutionEvent;
15
import org.eclipse.core.commands.ExecutionException;
13
import org.eclipse.core.runtime.IProgressMonitor;
16
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.jface.action.Action;
17
import org.eclipse.jface.action.Action;
15
import org.eclipse.jface.action.ControlContribution;
18
import org.eclipse.jface.action.ControlContribution;
Lines 27-37 Link Here
27
import org.eclipse.ui.forms.widgets.Form;
30
import org.eclipse.ui.forms.widgets.Form;
28
import org.eclipse.ui.forms.widgets.FormToolkit;
31
import org.eclipse.ui.forms.widgets.FormToolkit;
29
import org.eclipse.ui.forms.widgets.ScrolledForm;
32
import org.eclipse.ui.forms.widgets.ScrolledForm;
33
import org.eclipse.ui.handlers.IHandlerService;
34
import org.eclipse.ui.services.IServiceLocator;
30
35
31
/**
36
/**
32
 * A form editor that has several pages but only one stable header.
37
 * A form editor that has several pages but only one stable header.
33
 */
38
 */
34
public class SingleHeaderEditor extends SharedHeaderFormEditor {
39
public class SingleHeaderEditor extends SharedHeaderFormEditor {
40
	private static final String SHOW_PAGE_ID = "org.eclipse.ui.forms.examples.showPage";
41
35
	/**
42
	/**
36
	 * 
43
	 * 
37
	 */
44
	 */
Lines 51-57 Link Here
51
58
52
	protected void createHeaderContents(IManagedForm headerForm) {
59
	protected void createHeaderContents(IManagedForm headerForm) {
53
		final ScrolledForm sform = headerForm.getForm();
60
		final ScrolledForm sform = headerForm.getForm();
54
		//sform.setText("Shared header for all the pages");
61
		// sform.setText("Shared header for all the pages");
55
		getToolkit().decorateFormHeading(sform.getForm());
62
		getToolkit().decorateFormHeading(sform.getForm());
56
		addToolBar(sform.getForm());
63
		addToolBar(sform.getForm());
57
		sform.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(
64
		sform.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(
Lines 61-69 Link Here
61
				sform.setText("<Another text>");
68
				sform.setText("<Another text>");
62
			}
69
			}
63
		});
70
		});
64
		//sform.setMessage("Static text", 0);
71
		// sform.setMessage("Static text", 0);
65
	}
72
	}
66
73
74
	private static class PageHandler extends AbstractHandler {
75
		private int page;
76
		public PageHandler(int i) {
77
			page = i;
78
		}
79
		public Object execute(ExecutionEvent event) throws ExecutionException {
80
			System.out.println("Now on page " + page);
81
			return null;
82
		}
83
		
84
	}
67
	/*
85
	/*
68
	 * (non-Javadoc)
86
	 * (non-Javadoc)
69
	 * 
87
	 * 
Lines 71-79 Link Here
71
	 */
89
	 */
72
	protected void addPages() {
90
	protected void addPages() {
73
		try {
91
		try {
74
			addPage(new HeadlessPage(this, 1));
92
			int idx = addPage(new HeadlessPage(this, 1));
75
			addPage(new HeadlessPage(this, 2));
93
			IServiceLocator pageSite = getPageSite(idx);
76
			addPage(new HeadlessPage(this, 3));
94
			IHandlerService handlers = (IHandlerService) pageSite
95
					.getService(IHandlerService.class);
96
			handlers.activateHandler(SHOW_PAGE_ID, new PageHandler(1));
97
			
98
			idx = addPage(new HeadlessPage(this, 2));
99
			pageSite = getPageSite(idx);
100
			handlers = (IHandlerService) pageSite
101
					.getService(IHandlerService.class);
102
			handlers.activateHandler(SHOW_PAGE_ID, new PageHandler(2));
103
			
104
			idx = addPage(new HeadlessPage(this, 3));
105
			pageSite = getPageSite(idx);
106
			handlers = (IHandlerService) pageSite
107
					.getService(IHandlerService.class);
108
			handlers.activateHandler(SHOW_PAGE_ID, new PageHandler(3));
77
		} catch (PartInitException e) {
109
		} catch (PartInitException e) {
78
			//
110
			//
79
		}
111
		}

Return to bug 211610