Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogdan Gheorghe2011-11-01 20:39:14 +0000
committerBogdan Gheorghe2011-11-01 20:39:14 +0000
commita775b299d44822cbe192270b4dc82db2bee2f730 (patch)
tree34efc18bdf32a8bb2fd5956270e4f986279613ed /bundles
parentcd425be3014e29aa152d45ed5fe77d17cc5d8ace (diff)
downloadorg.eclipse.e4.tools-a775b299d44822cbe192270b4dc82db2bee2f730.tar.gz
org.eclipse.e4.tools-a775b299d44822cbe192270b4dc82db2bee2f730.tar.xz
org.eclipse.e4.tools-a775b299d44822cbe192270b4dc82db2bee2f730.zip
Add CSSEditorPrefs tweakletI20111129-2100
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF5
-rw-r--r--bundles/org.eclipse.e4.tools.css.editor.ui/plugin.xml9
-rw-r--r--bundles/org.eclipse.e4.tools.css.editor.ui/src/org/eclipse/e4/ui/preferences/CSSEditorPreferences.java143
3 files changed, 156 insertions, 1 deletions
diff --git a/bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF
index afe56dcc..8bbf8710 100644
--- a/bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF
@@ -17,7 +17,10 @@ Require-Bundle: org.eclipse.e4.tools.css.editor;visibility:=reexport,
org.eclipse.xtext.ui.codetemplates.ui,
org.eclipse.e4.ui.css.core;bundle-version="0.10.0",
org.eclipse.e4.ui.css.swt;bundle-version="0.10.0",
- org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.1"
+ org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.1",
+ org.eclipse.e4.ui.model.workbench;bundle-version="0.10.0",
+ org.eclipse.e4.ui.workbench;bundle-version="0.10.1",
+ org.eclipse.e4.core.contexts;bundle-version="1.0.0"
Import-Package: org.apache.log4j,
org.apache.commons.logging
Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.e4.tools.css.editor.ui/plugin.xml b/bundles/org.eclipse.e4.tools.css.editor.ui/plugin.xml
index d2163aee..8a5ca157 100644
--- a/bundles/org.eclipse.e4.tools.css.editor.ui/plugin.xml
+++ b/bundles/org.eclipse.e4.tools.css.editor.ui/plugin.xml
@@ -186,6 +186,15 @@
class="org.eclipse.e4.ui.CSSExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator">
</markerResolutionGenerator>
</extension>
+ <extension
+ point="org.eclipse.ui.internalTweaklets">
+ <tweaklet
+ definition="org.eclipse.ui.internal.tweaklets.PreferencePageEnhancer"
+ id="org.eclipse.e4.tools.css.editor.ui.tweaklet"
+ implementation="org.eclipse.e4.ui.preferences.CSSEditorPreferences"
+ name="CSS Editor">
+ </tweaklet>
+ </extension>
</plugin>
diff --git a/bundles/org.eclipse.e4.tools.css.editor.ui/src/org/eclipse/e4/ui/preferences/CSSEditorPreferences.java b/bundles/org.eclipse.e4.tools.css.editor.ui/src/org/eclipse/e4/ui/preferences/CSSEditorPreferences.java
new file mode 100644
index 00000000..e02d247b
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.css.editor.ui/src/org/eclipse/e4/ui/preferences/CSSEditorPreferences.java
@@ -0,0 +1,143 @@
+package org.eclipse.e4.ui.preferences;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngine;
+import org.eclipse.e4.ui.css.swt.theme.ITheme;
+import org.eclipse.e4.ui.css.swt.theme.IThemeEngine;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.workbench.IPresentationEngine;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.EditorReference;
+import org.eclipse.ui.internal.WorkbenchPage;
+import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor;
+import org.eclipse.ui.internal.tweaklets.PreferencePageEnhancer;
+import org.eclipse.ui.part.FileEditorInput;
+
+public class CSSEditorPreferences extends PreferencePageEnhancer {
+
+ ITheme selection;
+ IEditorPart cssEditor;
+ IThemeEngine engine;
+
+ @SuppressWarnings("restriction")
+ @Override
+ public void createContents(Composite parent) {
+ IWorkbenchWindow wbw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ MWindow hostWin = (MWindow) wbw.getService(MWindow.class);
+ EPartService partService = hostWin.getContext().get(EPartService.class);
+ MPart editor = partService.createPart(CompatibilityEditor.MODEL_ELEMENT_ID);
+ engine = hostWin.getContext().get(IThemeEngine.class);
+ // File newFolder = create .e4Css in user home
+ // IFileStore prj = EFS
+ // .getLocalFileSystem()
+ // .getStore(
+ // new Path(
+ // System.getProperty("user.home") + System.getProperty("file.separator") + ".e4css")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ IProject newProject = ResourcesPlugin.getWorkspace().getRoot().getProject(".e4css"); //$NON-NLS-1$
+
+ URL styleSheetURL = null;
+
+ if (engine instanceof ThemeEngine) {
+ List<String> ss = ((ThemeEngine) engine).getStylesheets(selection);
+ if (ss.size() > 0) {
+ // For now just get the first element
+ String path = ss.get(0);
+ try {
+ styleSheetURL = FileLocator.toFileURL(new URL(path));
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ IProjectDescription desc = newProject.getWorkspace().newProjectDescription(
+ newProject.getName());
+ IFile file = null;
+ try {
+ if (!newProject.exists())
+ newProject.create(desc, null);
+ if (!newProject.isOpen()) {
+ newProject.open(null);
+ }
+ newProject.setHidden(true);
+ // currentTheme.
+ IPath location = new Path(styleSheetURL.getPath());
+ // IPath location = new Path(styleSheetURL.getPath());
+ file = newProject.getFile(location.lastSegment());
+ if (!file.exists())
+ file.createLink(location, IResource.NONE, null);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+
+ IEditorInput input = new FileEditorInput(file);
+
+ IWorkbenchPage wbPage = wbw.getActivePage();
+ EditorReference reference = ((WorkbenchPage) wbPage).createEditorReferenceForPart(editor,
+ input,
+ "org.eclipse.e4.CSS", null); //$NON-NLS-1$
+ IEclipseContext localContext = hostWin.getContext().createChild();
+ localContext.set(IEditorInput.class, input);
+ localContext.set(EditorReference.class, reference);
+ // This is subtle; unless the element is hooked into the model it won't
+ // fire events
+ hostWin.getSharedElements().add(editor);
+
+ // Render it
+ IPresentationEngine renderer = hostWin.getContext().get(IPresentationEngine.class);
+ Composite composite3 = new Composite(parent, SWT.BORDER);
+ composite3.setLayout(new FillLayout());
+ GridData data = new GridData(SWT.CENTER, SWT.CENTER, true, true, 2, 2);
+ data.widthHint = 500;
+ data.heightHint = 500;
+ composite3.setLayoutData(data);
+ renderer.createGui(editor, composite3, localContext);
+ partService.activate(editor);
+ cssEditor = editor.getContext().get(IEditorPart.class);
+ }
+
+ @Override
+ public void setSelection(Object sel) {
+ if (sel instanceof ITheme) {
+ selection = (ITheme) sel;
+ }
+
+ }
+
+ @Override
+ public void performOK() {
+ if (cssEditor.isDirty()) {
+ cssEditor.doSave(new NullProgressMonitor());
+ }
+ }
+
+
+}

Back to the top