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

Collapse All | Expand All

(-)plugin.properties (+11 lines)
Lines 31-35 Link Here
31
AddBookmark.label=Add Boo&kmark...
31
AddBookmark.label=Add Boo&kmark...
32
AddBookmark.tooltip=Add Bookmark...
32
AddBookmark.tooltip=Add Bookmark...
33
##
33
##
34
CleanupDocument_label=Cleanup Document...
35
CleanupDocument_tooltip=Cleanup Document
36
StructureSelectEnclosing_label=Enclosing Element
37
StructureSelectEnclosing_tooltip=Expand selection to include enclosing element
38
StructureSelectNext_label=Next Element
39
StructureSelectNext_tooltip=Expand selection to include next sibling
40
StructureSelectPrevious_label=Previous Element
41
StructureSelectPrevious_tooltip=Expand selection to include previous sibling
42
StructureSelectHistory_label=Restore Last Selection
43
StructureSelectHistory_tooltip=Restore last selection
44
##
34
All_CSS_context_type_Extension_Element.name=All CSS
45
All_CSS_context_type_Extension_Element.name=All CSS
35
CSS_New_context_type_Extension_Element.name=New CSS
46
CSS_New_context_type_Extension_Element.name=New CSS
(-)plugin.xml (-1 / +49 lines)
Lines 7-13 Link Here
7
			name="%CSS_Source_Page_Editor.name"
7
			name="%CSS_Source_Page_Editor.name"
8
			icon="icons/full/obj16/sourceEditor.gif"
8
			icon="icons/full/obj16/sourceEditor.gif"
9
			contributorClass="org.eclipse.wst.css.ui.internal.ActionContributorCSS"
9
			contributorClass="org.eclipse.wst.css.ui.internal.ActionContributorCSS"
10
			class="org.eclipse.wst.css.ui.internal.StructuredTextEditorCSS"
10
			class="org.eclipse.wst.sse.ui.internal.StructuredTextEditor"
11
			symbolicFontName="org.eclipse.wst.sse.ui.textfont"
11
			symbolicFontName="org.eclipse.wst.sse.ui.textfont"
12
			id="org.eclipse.wst.css.core.csssource.source">
12
			id="org.eclipse.wst.css.core.csssource.source">
13
			<contentTypeBinding
13
			<contentTypeBinding
Lines 163-166 Link Here
163
			translations="$nl$/templates/cssdefault-templates.properties">
163
			translations="$nl$/templates/cssdefault-templates.properties">
164
		</include>
164
		</include>
165
	</extension>
165
	</extension>
166
167
	<!-- CSS editor actions -->
168
	<extension point="org.eclipse.ui.editorActions">
169
		<editorContribution
170
			id="org.eclipse.wst.css.core.csssource.source.editorActions"
171
			targetID="org.eclipse.wst.css.core.csssource.source">
172
			<action
173
				id="CleanupDocument"
174
				label="%CleanupDocument_label"
175
				definitionId="org.eclipse.wst.sse.ui.cleanup.document"
176
				tooltip="%CleanupDocument_tooltip"
177
				class="org.eclipse.wst.css.ui.internal.edit.ui.CleanupActionCSSDelegate"
178
				actionID="CleanupDocument">
179
			</action>
180
			<action
181
				id="StructureSelectEnclosing"
182
				label="%StructureSelectEnclosing_label"
183
				definitionId="org.eclipse.wst.sse.ui.structure.select.enclosing"
184
				tooltip="%StructureSelectEnclosing_tooltip"
185
				class="org.eclipse.wst.css.ui.internal.selection.StructuredSelectEnclosingCSSActionDelegate"
186
				actionID="StructureSelectEnclosing">
187
			</action>
188
			<action
189
				id="StructureSelectNext"
190
				label="%StructureSelectNext_label"
191
				definitionId="org.eclipse.wst.sse.ui.structure.select.next"
192
				tooltip="%StructureSelectNext_tooltip"
193
				class="org.eclipse.wst.css.ui.internal.selection.StructuredSelectNextCSSActionDelegate"
194
				actionID="StructureSelectNext">
195
			</action>
196
			<action
197
				id="StructureSelectPrevious"
198
				label="%StructureSelectPrevious_label"
199
				definitionId="org.eclipse.wst.sse.ui.structure.select.previous"
200
				tooltip="%StructureSelectPrevious_tooltip"
201
				class="org.eclipse.wst.css.ui.internal.selection.StructuredSelectPreviousCSSActionDelegate"
202
				actionID="StructureSelectPrevious">
203
			</action>
204
			<action
205
				id="StructureSelectHistory"
206
				label="%StructureSelectHistory_label"
207
				definitionId="org.eclipse.wst.sse.ui.structure.select.last"
208
				tooltip="%StructureSelectHistory_tooltip"
209
				class="org.eclipse.wst.sse.ui.internal.selection.StructuredSelectHistoryActionDelegate"
210
				actionID="StructureSelectHistory">
211
			</action>
212
		</editorContribution>
213
	</extension>
166
</plugin>
214
</plugin>
(-)src/org/eclipse/wst/css/ui/internal/StructuredTextEditorCSS.java (-8 / +9 lines)
Lines 17-28 Link Here
17
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
17
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
18
import org.eclipse.wst.sse.ui.internal.actions.ActionDefinitionIds;
18
import org.eclipse.wst.sse.ui.internal.actions.ActionDefinitionIds;
19
import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;
19
import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;
20
import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;
21
import org.eclipse.wst.sse.ui.internal.selection.StructureSelectHistoryAction;
20
import org.eclipse.wst.sse.ui.internal.selection.StructureSelectHistoryAction;
22
21
22
/**
23
 * @deprecated CSS editor is created from StructuredTextEditor with
24
 *             CSS configurations
25
 */
23
public class StructuredTextEditorCSS extends StructuredTextEditor {
26
public class StructuredTextEditorCSS extends StructuredTextEditor {
24
	private static final String UNDERSCORE = "_"; //$NON-NLS-1$
27
	private static final String UNDERSCORE = "_"; //$NON-NLS-1$
25
	
28
26
	protected void createActions() {
29
	protected void createActions() {
27
		super.createActions();
30
		super.createActions();
28
31
Lines 30-52 Link Here
30
		action.setActionDefinitionId(ActionDefinitionIds.CLEANUP_DOCUMENT);
33
		action.setActionDefinitionId(ActionDefinitionIds.CLEANUP_DOCUMENT);
31
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_CLEANUP_DOCUMENT, action);
34
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_CLEANUP_DOCUMENT, action);
32
35
33
		SelectionHistory selectionHistory = new SelectionHistory(this);
36
		action = new StructureSelectEnclosingCSSAction(this);
34
		action = new StructureSelectEnclosingCSSAction(this, selectionHistory);
35
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_ENCLOSING);
37
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_ENCLOSING);
36
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_ENCLOSING, action);
38
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_ENCLOSING, action);
37
39
38
		action = new StructureSelectNextCSSAction(this, selectionHistory);
40
		action = new StructureSelectNextCSSAction(this);
39
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_NEXT);
41
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_NEXT);
40
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_NEXT, action);
42
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_NEXT, action);
41
43
42
		action = new StructureSelectPreviousCSSAction(this, selectionHistory);
44
		action = new StructureSelectPreviousCSSAction(this);
43
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_PREVIOUS);
45
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_PREVIOUS);
44
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_PREVIOUS, action);
46
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_PREVIOUS, action);
45
47
46
		action = new StructureSelectHistoryAction(this, selectionHistory);
48
		action = new StructureSelectHistoryAction(this);
47
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_HISTORY);
49
		action.setActionDefinitionId(ActionDefinitionIds.STRUCTURE_SELECT_HISTORY);
48
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_HISTORY, action);
50
		setAction(StructuredTextEditorActionConstants.ACTION_NAME_STRUCTURE_SELECT_HISTORY, action);
49
		selectionHistory.setHistoryAction((StructureSelectHistoryAction) action);
50
	}
51
	}
51
52
52
	protected void initializeEditor() {
53
	protected void initializeEditor() {
(-)src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSS.java (+3 lines)
Lines 17-22 Link Here
17
import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
17
import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
18
import org.eclipse.wst.sse.ui.internal.actions.CleanupAction;
18
import org.eclipse.wst.sse.ui.internal.actions.CleanupAction;
19
19
20
/**
21
 * @deprecated Use CleanupActionCSSDelegate instead.
22
 */
20
public class CleanupActionCSS extends CleanupAction {
23
public class CleanupActionCSS extends CleanupAction {
21
	protected IStructuredCleanupProcessor fCleanupProcessor;
24
	protected IStructuredCleanupProcessor fCleanupProcessor;
22
25
(-)src/org/eclipse/wst/css/ui/internal/selection/StructureSelectCSSAction.java (-4 / +7 lines)
Lines 12-23 Link Here
12
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
12
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
13
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
13
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
14
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
14
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
15
import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;
16
import org.eclipse.wst.sse.ui.internal.selection.StructureSelectAction;
15
import org.eclipse.wst.sse.ui.internal.selection.StructureSelectAction;
17
16
17
/**
18
 * @deprecated use StructuredSelectActionDelegate instead
19
 */
18
public abstract class StructureSelectCSSAction extends StructureSelectAction {
20
public abstract class StructureSelectCSSAction extends StructureSelectAction {
19
	public StructureSelectCSSAction(StructuredTextEditor editor, SelectionHistory history) {
21
	public StructureSelectCSSAction(StructuredTextEditor editor) {
20
		super(editor, history);
22
		super(editor);
21
	}
23
	}
22
24
23
	public void run() {
25
	public void run() {
Lines 42-48 Link Here
42
				try {
44
				try {
43
					fHistory.ignoreSelectionChanges();
45
					fHistory.ignoreSelectionChanges();
44
					fEditor.selectAndReveal(newRegion.getOffset(), newRegion.getLength());
46
					fEditor.selectAndReveal(newRegion.getOffset(), newRegion.getLength());
45
				} finally {
47
				}
48
				finally {
46
					fHistory.listenToSelectionChanges();
49
					fHistory.listenToSelectionChanges();
47
				}
50
				}
48
			}
51
			}
(-)src/org/eclipse/wst/css/ui/internal/selection/StructureSelectEnclosingCSSAction.java (-3 / +5 lines)
Lines 13-24 Link Here
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
16
import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;
17
import org.w3c.dom.Node;
16
import org.w3c.dom.Node;
18
17
18
/**
19
 * @deprecated use StructureSelectionEnclosingCSSActionDelegate instead
20
 */
19
public class StructureSelectEnclosingCSSAction extends StructureSelectCSSAction {
21
public class StructureSelectEnclosingCSSAction extends StructureSelectCSSAction {
20
	public StructureSelectEnclosingCSSAction(StructuredTextEditor editor, SelectionHistory history) {
22
	public StructureSelectEnclosingCSSAction(StructuredTextEditor editor) {
21
		super(editor, history);
23
		super(editor);
22
		setText(CSSUIMessages.StructureSelectEnclosing_label);
24
		setText(CSSUIMessages.StructureSelectEnclosing_label);
23
		setToolTipText(CSSUIMessages.StructureSelectEnclosing_tooltip);
25
		setToolTipText(CSSUIMessages.StructureSelectEnclosing_tooltip);
24
		setDescription(CSSUIMessages.StructureSelectEnclosing_description);
26
		setDescription(CSSUIMessages.StructureSelectEnclosing_description);
(-)src/org/eclipse/wst/css/ui/internal/selection/StructureSelectNextCSSAction.java (-3 / +5 lines)
Lines 13-24 Link Here
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
16
import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;
17
import org.w3c.dom.Node;
16
import org.w3c.dom.Node;
18
17
18
/**
19
 * @deprecated use StructuredSelectNextCSSActionDelegate instead
20
 */
19
public class StructureSelectNextCSSAction extends StructureSelectCSSAction {
21
public class StructureSelectNextCSSAction extends StructureSelectCSSAction {
20
	public StructureSelectNextCSSAction(StructuredTextEditor editor, SelectionHistory history) {
22
	public StructureSelectNextCSSAction(StructuredTextEditor editor) {
21
		super(editor, history);
23
		super(editor);
22
		setText(CSSUIMessages.StructureSelectNext_label);
24
		setText(CSSUIMessages.StructureSelectNext_label);
23
		setToolTipText(CSSUIMessages.StructureSelectNext_tooltip);
25
		setToolTipText(CSSUIMessages.StructureSelectNext_tooltip);
24
		setDescription(CSSUIMessages.StructureSelectNext_description);
26
		setDescription(CSSUIMessages.StructureSelectNext_description);
(-)src/org/eclipse/wst/css/ui/internal/selection/StructureSelectPreviousCSSAction.java (-4 / +7 lines)
Lines 13-24 Link Here
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
13
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
14
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
15
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
16
import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;
17
import org.w3c.dom.Node;
16
import org.w3c.dom.Node;
18
17
18
/**
19
 * @deprecated use StructuredSelectPreviousCSSActionDelegate instead
20
 */
19
public class StructureSelectPreviousCSSAction extends StructureSelectCSSAction {
21
public class StructureSelectPreviousCSSAction extends StructureSelectCSSAction {
20
	public StructureSelectPreviousCSSAction(StructuredTextEditor editor, SelectionHistory history) {
22
	public StructureSelectPreviousCSSAction(StructuredTextEditor editor) {
21
		super(editor, history);
23
		super(editor);
22
		setText(CSSUIMessages.StructureSelectPrevious_label);
24
		setText(CSSUIMessages.StructureSelectPrevious_label);
23
		setToolTipText(CSSUIMessages.StructureSelectPrevious_tooltip);
25
		setToolTipText(CSSUIMessages.StructureSelectPrevious_tooltip);
24
		setDescription(CSSUIMessages.StructureSelectPrevious_description);
26
		setDescription(CSSUIMessages.StructureSelectPrevious_description);
Lines 43-49 Link Here
43
				IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
45
				IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
44
				newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
46
				newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
45
			}
47
			}
46
		} else {
48
		}
49
		else {
47
			if (newNode instanceof IndexedRegion) {
50
			if (newNode instanceof IndexedRegion) {
48
				IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
51
				IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
49
				newRegion = new Region(newIndexedRegion.getStartOffset(), region.getOffset() + region.getLength() - newIndexedRegion.getStartOffset());
52
				newRegion = new Region(newIndexedRegion.getStartOffset(), region.getOffset() + region.getLength() - newIndexedRegion.getStartOffset());
(-)src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSSDelegate.java (+124 lines)
Added Link Here
1
package org.eclipse.wst.css.ui.internal.edit.ui;
2
3
import org.eclipse.jface.action.IAction;
4
import org.eclipse.jface.dialogs.Dialog;
5
import org.eclipse.jface.text.ITextSelection;
6
import org.eclipse.jface.viewers.ISelection;
7
import org.eclipse.jface.window.Window;
8
import org.eclipse.swt.custom.BusyIndicator;
9
import org.eclipse.swt.widgets.Event;
10
import org.eclipse.ui.IActionDelegate2;
11
import org.eclipse.ui.IEditorActionDelegate;
12
import org.eclipse.ui.IEditorPart;
13
import org.eclipse.ui.IViewActionDelegate;
14
import org.eclipse.ui.IViewPart;
15
import org.eclipse.wst.css.core.internal.cleanup.CleanupProcessorCSS;
16
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
17
import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
18
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
19
import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
20
import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
21
import org.eclipse.wst.sse.ui.internal.StructuredTextEditor;
22
23
/**
24
 * Cleanup action delegate for CSS editor
25
 */
26
public class CleanupActionCSSDelegate implements IEditorActionDelegate, IActionDelegate2, IViewActionDelegate {
27
	private IEditorPart fEditor;
28
	private IStructuredCleanupProcessor fCleanupProcessor;
29
30
	public void setActiveEditor(IAction action, IEditorPart targetEditor) {
31
		fEditor = targetEditor;
32
	}
33
34
	public void dispose() {
35
		// nulling out just in case
36
		fEditor = null;
37
		fCleanupProcessor = null;
38
	}
39
40
	public void init(IAction action) {
41
		if (action != null) {
42
			action.setText(CSSUIMessages.CleanupDocument_label);
43
			action.setToolTipText(CSSUIMessages.CleanupDocument_tooltip);
44
			action.setDescription(CSSUIMessages.CleanupDocument_description);
45
		}
46
	}
47
48
	public void runWithEvent(IAction action, Event event) {
49
		run(action);
50
	}
51
52
	public void init(IViewPart view) {
53
		// do nothing
54
	}
55
56
	public void run(IAction action) {
57
		if (fEditor instanceof StructuredTextEditor) {
58
			final StructuredTextEditor editor = (StructuredTextEditor) fEditor;
59
			Dialog cleanupDialog = new CleanupDialogCSS(editor.getSite().getShell());
60
			if (cleanupDialog.open() == Window.OK) {
61
				// setup runnable
62
				Runnable runnable = new Runnable() {
63
					public void run() {
64
						IStructuredCleanupProcessor cleanupProcessor = getCleanupProcessor();
65
						if (cleanupProcessor != null) {
66
							IStructuredModel model = null;
67
							try {
68
								model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
69
								if (model != null)
70
									cleanupProcessor.cleanupModel(model);
71
							}
72
							finally {
73
								if (model != null)
74
									model.releaseFromEdit();
75
							}
76
						}
77
					}
78
				};
79
80
				// TODO: make independent of 'model'.
81
				IStructuredModel model = null;
82
				try {
83
					model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
84
					if (model != null) {
85
						// begin recording
86
						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
87
						model.beginRecording(this, SSEUIMessages.Cleanup_Document_UI_, SSEUIMessages.Cleanup_Document_UI_, selection.getOffset(), selection.getLength()); //$NON-NLS-1$ //$NON-NLS-2$
88
89
						// tell the model that we are about to make a big
90
						// model change
91
						model.aboutToChangeModel();
92
93
						// run
94
						BusyIndicator.showWhile(editor.getTextViewer().getControl().getDisplay(), runnable);
95
					}
96
				}
97
				finally {
98
					if (model != null) {
99
						// tell the model that we are done with the big
100
						// model
101
						// change
102
						model.changedModel();
103
104
						// end recording
105
						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
106
						model.endRecording(this, selection.getOffset(), selection.getLength());
107
						model.releaseFromEdit();
108
					}
109
				}
110
			}
111
		}
112
	}
113
114
	public void selectionChanged(IAction action, ISelection selection) {
115
		// do nothing
116
	}
117
118
	IStructuredCleanupProcessor getCleanupProcessor() {
119
		if (fCleanupProcessor == null)
120
			fCleanupProcessor = new CleanupProcessorCSS();
121
122
		return fCleanupProcessor;
123
	}
124
}
(-)src/org/eclipse/wst/css/ui/internal/selection/StructuredSelectEnclosingCSSActionDelegate.java (+64 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2005 IBM Corporation 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
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     
11
 *******************************************************************************/
12
13
package org.eclipse.wst.css.ui.internal.selection;
14
15
import org.eclipse.jface.action.IAction;
16
import org.eclipse.jface.text.IDocument;
17
import org.eclipse.jface.text.ITextSelection;
18
import org.eclipse.jface.text.Region;
19
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
20
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
21
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
22
import org.eclipse.wst.sse.ui.internal.selection.StructuredSelectActionDelegate;
23
24
/**
25
 * Selects enclosing CSS element
26
 */
27
public class StructuredSelectEnclosingCSSActionDelegate extends StructuredSelectActionDelegate {
28
	public void init(IAction action) {
29
		if (action != null) {
30
			action.setText(CSSUIMessages.StructureSelectEnclosing_label);
31
			action.setToolTipText(CSSUIMessages.StructureSelectEnclosing_tooltip);
32
			action.setDescription(CSSUIMessages.StructureSelectEnclosing_description);
33
		}
34
	}
35
36
	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
37
		IndexedRegion indexedRegion = null;
38
39
		indexedRegion = getIndexedRegion(document, textSelection.getOffset());
40
41
		return indexedRegion;
42
	}
43
44
	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
45
		Region newRegion = null;
46
		if (indexedRegion instanceof ICSSNode) {
47
			ICSSNode cursorNode = (ICSSNode) indexedRegion;
48
			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
49
			int currentOffset = textSelection.getOffset();
50
			int currentEndOffset = currentOffset + textSelection.getLength();
51
			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
52
				ICSSNode newNode = cursorNode.getParentNode();
53
54
				if (newNode instanceof IndexedRegion) {
55
					IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
56
					newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
57
				}
58
			}
59
			else
60
				newRegion = cursorNodeRegion;
61
		}
62
		return newRegion;
63
	}
64
}
(-)src/org/eclipse/wst/css/ui/internal/selection/StructuredSelectNextCSSActionDelegate.java (+81 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2005 IBM Corporation 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
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     
11
 *******************************************************************************/
12
13
package org.eclipse.wst.css.ui.internal.selection;
14
15
import org.eclipse.jface.action.IAction;
16
import org.eclipse.jface.text.IDocument;
17
import org.eclipse.jface.text.ITextSelection;
18
import org.eclipse.jface.text.Region;
19
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
20
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
21
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
22
import org.eclipse.wst.sse.ui.internal.selection.StructuredSelectActionDelegate;
23
24
/**
25
 * Selects next CSS element
26
 */
27
public class StructuredSelectNextCSSActionDelegate extends StructuredSelectActionDelegate {
28
29
	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
30
		int offset = textSelection.getOffset() + textSelection.getLength();
31
		if (offset < 0)
32
			offset = 0;
33
34
		IndexedRegion indexedRegion = null;
35
36
		indexedRegion = getIndexedRegion(document, offset);
37
38
		return indexedRegion;
39
	}
40
41
	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
42
		Region newRegion = null;
43
44
		if (indexedRegion instanceof ICSSNode) {
45
			ICSSNode cursorNode = (ICSSNode) indexedRegion;
46
47
			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
48
			int currentOffset = textSelection.getOffset();
49
			int currentEndOffset = currentOffset + textSelection.getLength();
50
			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
51
				ICSSNode newNode = cursorNode.getNextSibling();
52
				if (newNode == null) {
53
					newNode = cursorNode.getParentNode();
54
55
					if (newNode instanceof IndexedRegion) {
56
						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
57
						newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
58
					}
59
				}
60
				else {
61
					if (newNode instanceof IndexedRegion) {
62
						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
63
						newRegion = new Region(currentOffset, newIndexedRegion.getEndOffset() - currentOffset);
64
					}
65
				}
66
			}
67
			else
68
				newRegion = cursorNodeRegion;
69
		}
70
		return newRegion;
71
	}
72
73
	public void init(IAction action) {
74
		if (action != null) {
75
			action.setText(CSSUIMessages.StructureSelectNext_label);
76
			action.setToolTipText(CSSUIMessages.StructureSelectNext_tooltip);
77
			action.setDescription(CSSUIMessages.StructureSelectNext_description);
78
		}
79
	}
80
81
}
(-)src/org/eclipse/wst/css/ui/internal/selection/StructuredSelectPreviousCSSActionDelegate.java (+76 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2005 IBM Corporation 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
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *     
11
 *******************************************************************************/
12
13
package org.eclipse.wst.css.ui.internal.selection;
14
15
import org.eclipse.jface.action.IAction;
16
import org.eclipse.jface.text.IDocument;
17
import org.eclipse.jface.text.ITextSelection;
18
import org.eclipse.jface.text.Region;
19
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
20
import org.eclipse.wst.css.ui.internal.CSSUIMessages;
21
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
22
import org.eclipse.wst.sse.ui.internal.selection.StructuredSelectActionDelegate;
23
24
/**
25
 * Selects previous CSS element
26
 */
27
public class StructuredSelectPreviousCSSActionDelegate extends StructuredSelectActionDelegate {
28
29
	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
30
		IndexedRegion indexedRegion = null;
31
32
		indexedRegion = getIndexedRegion(document, textSelection.getOffset());
33
34
		return indexedRegion;
35
	}
36
37
	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
38
		Region newRegion = null;
39
		if (indexedRegion instanceof ICSSNode) {
40
			ICSSNode cursorNode = (ICSSNode) indexedRegion;
41
42
			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
43
			int currentOffset = textSelection.getOffset();
44
			int currentEndOffset = currentOffset + textSelection.getLength();
45
			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
46
				ICSSNode newNode = cursorNode.getPreviousSibling();
47
				if (newNode == null) {
48
					newNode = cursorNode.getParentNode();
49
50
					if (newNode instanceof IndexedRegion) {
51
						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
52
						newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
53
					}
54
				}
55
				else {
56
					if (newNode instanceof IndexedRegion) {
57
						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
58
						newRegion = new Region(newIndexedRegion.getStartOffset(), currentEndOffset - newIndexedRegion.getStartOffset());
59
					}
60
				}
61
			}
62
			else
63
				newRegion = cursorNodeRegion;
64
		}
65
		return newRegion;
66
	}
67
68
	public void init(IAction action) {
69
		if (action != null) {
70
			action.setText(CSSUIMessages.StructureSelectPrevious_label);
71
			action.setToolTipText(CSSUIMessages.StructureSelectPrevious_tooltip);
72
			action.setDescription(CSSUIMessages.StructureSelectPrevious_description);
73
		}
74
	}
75
76
}

Return to bug 109468