Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Sternberg2009-12-06 12:10:48 +0000
committerRalf Sternberg2009-12-06 12:10:48 +0000
commitc274ad318741c02202b35377a16568a789b8ed8b (patch)
tree11a166fec1769fcd566463bca76e6786d2d8a35d
parent077dfe58f48077800b7f4d4c5482ac6fd22e3ec5 (diff)
downloadorg.eclipse.rap.incubator.themeeditor-c274ad318741c02202b35377a16568a789b8ed8b.tar.gz
org.eclipse.rap.incubator.themeeditor-c274ad318741c02202b35377a16568a789b8ed8b.tar.xz
org.eclipse.rap.incubator.themeeditor-c274ad318741c02202b35377a16568a789b8ed8b.zip
-rw-r--r--bundles/org.eclipse.rap.themeeditor/build.properties4
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/ThemeEditorPlugin.java3
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/CSSContentOutlinePage.java81
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/DefaultContentProvider.java (renamed from bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/rule/DefaultContentProvider.java)6
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSSourceEditor.java89
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSTokenScanner.java9
-rw-r--r--bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/ITokenChangedListener.java20
7 files changed, 71 insertions, 141 deletions
diff --git a/bundles/org.eclipse.rap.themeeditor/build.properties b/bundles/org.eclipse.rap.themeeditor/build.properties
index c8a64b4..54102bb 100644
--- a/bundles/org.eclipse.rap.themeeditor/build.properties
+++ b/bundles/org.eclipse.rap.themeeditor/build.properties
@@ -3,5 +3,7 @@ source.. = src/,\
output.. = bin/
bin.includes = .,\
META-INF/,\
- plugin.xml
+ plugin.xml,\
+ icons/
+src.includes = icons/
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/ThemeEditorPlugin.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/ThemeEditorPlugin.java
index 9ff7443..dacf334 100644
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/ThemeEditorPlugin.java
+++ b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/ThemeEditorPlugin.java
@@ -14,7 +14,7 @@ public class ThemeEditorPlugin extends AbstractUIPlugin {
public static final String IMG_FIELD_PRIVATE = "field_private_obj.gif";
public static final String IMG_PUBLIC = "public_co.gif";
- public static final String PLUGIN_ID = "org.eclipse.rap.themeeditor.csseditor"; //$NON-NLS-1$
+ public static final String PLUGIN_ID = "org.eclipse.rap.themeeditor";
private static ThemeEditorPlugin sharedInstance;
@@ -45,7 +45,6 @@ public class ThemeEditorPlugin extends AbstractUIPlugin {
return getImageRegistry().get( key );
}
-
public static ImageDescriptor getImageDescriptor( final String path ) {
return imageDescriptorFromPlugin( PLUGIN_ID, path );
}
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/CSSContentOutlinePage.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/CSSContentOutlinePage.java
index eab813d..c2c067c 100644
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/CSSContentOutlinePage.java
+++ b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/CSSContentOutlinePage.java
@@ -10,20 +10,16 @@
*******************************************************************************/
package org.eclipse.rap.themeeditor.editor;
-import java.util.HashMap;
-import java.util.Map;
-
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.rap.themeeditor.editor.rule.DefaultContentProvider;
+import org.eclipse.rap.themeeditor.editor.source.CSSSourceEditor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
/**
@@ -35,14 +31,11 @@ public class CSSContentOutlinePage extends ContentOutlinePage {
protected Object[] input;
protected IDocumentProvider documentProvider;
- protected ITextEditor textEditor;
+ protected CSSSourceEditor textEditor;
private boolean isSetSelectionEnabled = true;
- private int tabIndex = -1;
- private Map listenerMap;
- public CSSContentOutlinePage() {
- super();
- listenerMap = new HashMap();
+ public CSSContentOutlinePage( CSSSourceEditor cssSourceEditor ) {
+ textEditor = cssSourceEditor;
}
public void createControl( final Composite parent ) {
@@ -50,15 +43,11 @@ public class CSSContentOutlinePage extends ContentOutlinePage {
TreeViewer viewer = getTreeViewer();
viewer.setContentProvider( new DefaultContentProvider() );
viewer.setLabelProvider( new ContentOutlineLabelProvider() );
- viewer.addSelectionChangedListener( this );
- if( input != null )
+ if( input != null ) {
viewer.setInput( input );
+ }
}
- /**
- * Handles the SelectionChangedEvent if the Outline selection has been changed
- * by the user, and so it calls a possibly registered listener.
- */
public void selectionChanged( final SelectionChangedEvent event ) {
isSetSelectionEnabled = false;
super.selectionChanged( event );
@@ -72,17 +61,10 @@ public class CSSContentOutlinePage extends ContentOutlinePage {
TreeItem treeItem = getTreeViewer().getTree().getSelection()[ 0 ];
newIndex = getTreeViewer().getTree().indexOf( treeItem );
}
- IOutlineSelectionChangedListener listener = ( IOutlineSelectionChangedListener )listenerMap.get( new Integer( tabIndex ) );
- if( listener != null ) {
- listener.outlineSelectionChanged( newIndex, item );
- }
+ textEditor.outlineSelectionChanged( newIndex, item );
isSetSelectionEnabled = true;
}
- /**
- * Forces a SelectionChangedEvent, and so it calls a possibly registered
- * listener.
- */
public void forceSelectionChanged( final int newIndex ) {
if( getTreeViewer() != null ) {
isSetSelectionEnabled = false;
@@ -91,42 +73,16 @@ public class CSSContentOutlinePage extends ContentOutlinePage {
if( !selection.isEmpty() ) {
item = ( ( IStructuredSelection )selection ).getFirstElement();
}
- IOutlineSelectionChangedListener listener = ( IOutlineSelectionChangedListener )listenerMap.get( new Integer( tabIndex ) );
- if( listener != null ) {
- listener.outlineSelectionChanged( newIndex, item );
- }
+ textEditor.outlineSelectionChanged( newIndex, item );
isSetSelectionEnabled = true;
}
}
- /**
- * Sets a new input array for the Outline.
- */
- public void setInput( final Object[] input, final int tabIndex ) {
+ public void setInput( final Object[] input ) {
this.input = input;
- this.tabIndex = tabIndex;
update();
}
- /**
- * Updates the Outline. Called after the Outline input has changed.
- */
- private void update() {
- TreeViewer viewer = getTreeViewer();
- if( viewer != null ) {
- Control control = viewer.getControl();
- if( control != null && !control.isDisposed() ) {
- control.setRedraw( false );
- viewer.setInput( input );
- viewer.expandAll();
- control.setRedraw( true );
- }
- }
- }
-
- /**
- * Sets the selected item in the Outline programmatically to the given index.
- */
public void setSelection( final int index ) {
if( isSetSelectionEnabled && getTreeViewer() != null ) {
Tree tree = getTreeViewer().getTree();
@@ -139,13 +95,16 @@ public class CSSContentOutlinePage extends ContentOutlinePage {
}
}
- /**
- * Sets a listener that will be notified of the selected item in the Outline
- * changes.
- */
- public void setSelectionChangedListener( final IOutlineSelectionChangedListener listener,
- final int tabIndex )
- {
- listenerMap.put( new Integer( tabIndex ), listener );
+ private void update() {
+ TreeViewer viewer = getTreeViewer();
+ if( viewer != null ) {
+ Control control = viewer.getControl();
+ if( control != null && !control.isDisposed() ) {
+ control.setRedraw( false );
+ viewer.setInput( input );
+ viewer.expandAll();
+ control.setRedraw( true );
+ }
+ }
}
}
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/rule/DefaultContentProvider.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/DefaultContentProvider.java
index b2aa13c..b797a23 100644
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/rule/DefaultContentProvider.java
+++ b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/DefaultContentProvider.java
@@ -1,4 +1,3 @@
-package org.eclipse.rap.themeeditor.editor.rule;
/*******************************************************************************
* Copyright (c) 2008 Mathias Schaeffner and others.
* All rights reserved. This program and the accompanying materials
@@ -9,7 +8,7 @@ package org.eclipse.rap.themeeditor.editor.rule;
* Contributors:
* Mathias Schaeffner - initial API and implementation
*******************************************************************************/
-
+package org.eclipse.rap.themeeditor.editor;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -22,9 +21,6 @@ public class DefaultContentProvider extends ArrayContentProvider
implements ITreeContentProvider
{
- public DefaultContentProvider() {
- }
-
public Object[] getChildren( final Object parentElement ) {
return new Object[ 0 ];
}
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSSourceEditor.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSSourceEditor.java
index 920f0a7..37e7be1 100644
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSSourceEditor.java
+++ b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSSourceEditor.java
@@ -24,11 +24,13 @@ import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.IVerticalRuler;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.rap.themeeditor.editor.CSSContentOutlinePage;
import org.eclipse.rap.themeeditor.editor.IOutlineSelectionChangedListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.texteditor.ContentAssistAction;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
/**
* The general editor in the Source Tab. Providing content assists, syntax
@@ -39,16 +41,14 @@ public class CSSSourceEditor extends TextEditor
{
private CSSTokenScanner tokenScanner;
-
- public CSSSourceEditor() {
- super();
-// getCSSTokenScanner().setTokenChangedListener( editor );
-// outline.setSelectionChangedListener( this, ThemeEditor.SOURCE_TAB );
- }
+ private CSSContentOutlinePage outlinePage;
protected void initializeEditor() {
super.initializeEditor();
- setSourceViewerConfiguration( new CSSSourceViewerConfiguration( getCSSTokenScanner() ) );
+ tokenScanner = new CSSTokenScanner( this );
+ CSSSourceViewerConfiguration configuration
+ = new CSSSourceViewerConfiguration( tokenScanner );
+ setSourceViewerConfiguration( configuration );
}
public void createPartControl( Composite parent ) {
@@ -63,7 +63,8 @@ public class CSSSourceEditor extends TextEditor
}
public void documentChanged( DocumentEvent event ) {
- getCSSTokenScanner().setRange( doc, 0, doc.getLength() );
+ tokenScanner.setRange( doc, 0, doc.getLength() );
+ outlinePage.setInput( getSelectorTokens() );
}
} );
}
@@ -76,26 +77,7 @@ public class CSSSourceEditor extends TextEditor
}
public Object[] getSelectorTokens() {
- return getCSSTokenScanner().getOutlineRegionsArray();
- }
-
- /**
- * Returns the index of a rule in the StyleSheet at a given offset position
- * within the document.
- */
- private int getRuleNumber( final int offset ) {
- int result = -1;
- Iterator it = getCSSTokenScanner().getOutlineRegionsList().iterator();
- while( it.hasNext() ) {
- IRegion regionExt = ( IRegion )it.next();
- if( regionExt.getOffset() <= offset ) {
- result++;
- }
- }
- if( result < 0 ) {
- result = 0;
- }
- return result;
+ return tokenScanner.getOutlineRegionsArray();
}
protected void handleCursorPositionChanged() {
@@ -104,7 +86,9 @@ public class CSSSourceEditor extends TextEditor
if( selection instanceof ITextSelection ) {
int offset = ( ( ITextSelection )selection ).getOffset();
int index = getRuleNumber( offset );
-// editor.updateOutlineSelection( index );
+ if( outlinePage != null ) {
+ outlinePage.setSelection( index );
+ }
}
}
@@ -112,18 +96,6 @@ public class CSSSourceEditor extends TextEditor
handleCursorPositionChanged();
}
- private CSSTokenScanner getCSSTokenScanner() {
- if( tokenScanner == null ) {
- tokenScanner = new CSSTokenScanner( this );
- }
- return tokenScanner;
- }
-
- public void dispose() {
- tokenScanner.setTokenChangedListener( null );
- super.dispose();
- }
-
protected void createActions() {
super.createActions();
IAction action = new ContentAssistAction( getResourceBundle(),
@@ -170,16 +142,47 @@ public class CSSSourceEditor extends TextEditor
return getDocumentProvider().getDocument( getEditorInput() );
}
+ public Object getAdapter( Class adapter ) {
+ Object result;
+ if( IContentOutlinePage.class.equals( adapter ) ) {
+ if( outlinePage == null ) {
+ outlinePage = new CSSContentOutlinePage( this );
+ outlinePage.setInput( getSelectorTokens() );
+ }
+ result = outlinePage;
+ } else {
+ result = super.getAdapter( adapter );
+ }
+ return result;
+ }
+
+ /**
+ * Returns the index of a rule in the StyleSheet at a given offset position
+ * within the document.
+ */
+ private int getRuleNumber( final int offset ) {
+ int result = -1;
+ Iterator it = tokenScanner.getOutlineRegionsList().iterator();
+ while( it.hasNext() ) {
+ IRegion regionExt = ( IRegion )it.next();
+ if( regionExt.getOffset() <= offset ) {
+ result++;
+ }
+ }
+ if( result < 0 ) {
+ result = 0;
+ }
+ return result;
+ }
+
private ResourceBundle getResourceBundle() {
return new ResourceBundle() {
protected Object handleGetObject( String key ) {
- // TODO Auto-generated method stub
return null;
}
public Enumeration getKeys() {
- // TODO Auto-generated method stub
return null;
}
};
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSTokenScanner.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSTokenScanner.java
index 7bb294f..7eeb3fe 100644
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSTokenScanner.java
+++ b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/CSSTokenScanner.java
@@ -36,7 +36,6 @@ public class CSSTokenScanner implements ITokenScanner {
private IRegionExt lastState;
private int currentListPosition;
private int lastListPosition;
- private ITokenChangedListener listener = null;
private String oldContent;
private int oldListPosition;
private SelectorRegion lastSelector;
@@ -121,10 +120,6 @@ public class CSSTokenScanner implements ITokenScanner {
lastListPosition++;
}
oldListPosition = currentListPosition;
- // notify token changed listener if one is registered
- if( listener != null ) {
- listener.tokensChanged();
- }
}
}
@@ -147,10 +142,6 @@ public class CSSTokenScanner implements ITokenScanner {
return tokenList;
}
- public void setTokenChangedListener( final ITokenChangedListener listener ) {
- this.listener = listener;
- }
-
/**
* Returns the array of Outline regions that are directly used as the input
* items for the Outline.
diff --git a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/ITokenChangedListener.java b/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/ITokenChangedListener.java
deleted file mode 100644
index a337a91..0000000
--- a/bundles/org.eclipse.rap.themeeditor/src/org/eclipse/rap/themeeditor/editor/source/ITokenChangedListener.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Mathias Schaeffner 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:
- * Mathias Schaeffner - initial API and implementation
- *******************************************************************************/
-package org.eclipse.rap.themeeditor.editor.source;
-
-/**
- * Listener interface that is called whenever the token scanner was requested to
- * split the document again into tokens.
- */
-public interface ITokenChangedListener {
-
- public void tokensChanged();
-}

Back to the top