Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogdan Gheorghe2011-12-01 04:35:18 +0000
committerBogdan Gheorghe2011-12-01 04:35:18 +0000
commit2a9dfa1c2abf51652efef1c4f7d5326296ce556c (patch)
tree25fe9fec4839c83c2148c10d290a1ab4a5d43b7b
parenta775b299d44822cbe192270b4dc82db2bee2f730 (diff)
downloadorg.eclipse.e4.tools-2a9dfa1c2abf51652efef1c4f7d5326296ce556c.tar.gz
org.eclipse.e4.tools-2a9dfa1c2abf51652efef1c4f7d5326296ce556c.tar.xz
org.eclipse.e4.tools-2a9dfa1c2abf51652efef1c4f7d5326296ce556c.zip
CSSEditorPreferences page
-rw-r--r--bundles/org.eclipse.e4.tools.css.editor.ui/META-INF/MANIFEST.MF59
-rw-r--r--bundles/org.eclipse.e4.tools.css.editor.ui/src/org/eclipse/e4/ui/preferences/CSSEditorPreferences.java353
2 files changed, 240 insertions, 172 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 8bbf8710..ff21a2d3 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
@@ -1,29 +1,30 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.e4.tools.css.editor.ui
-Bundle-Vendor: My Company
-Bundle-Version: 1.0.0
-Bundle-SymbolicName: org.eclipse.e4.tools.css.editor.ui; singleton:=true
-Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.e4.tools.css.editor;visibility:=reexport,
- org.eclipse.xtext.ui,
- org.eclipse.ui.editors;bundle-version="3.5.0",
- org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.xtext.ui.shared,
- org.eclipse.ui,
- org.eclipse.xtext.builder,
- org.antlr.runtime,
- org.eclipse.xtext.common.types.ui,
- 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.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
-Export-Package: org.eclipse.e4.ui.contentassist.antlr,
- org.eclipse.e4.ui.internal
-Bundle-Activator: org.eclipse.e4.ui.internal.CSSActivator
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.e4.tools.css.editor.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0
+Bundle-SymbolicName: org.eclipse.e4.tools.css.editor.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.e4.tools.css.editor;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui,
+ 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.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",
+ org.eclipse.core.filesystem;bundle-version="1.3.200"
+Import-Package: org.apache.log4j,
+ org.apache.commons.logging
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.e4.ui.contentassist.antlr,
+ org.eclipse.e4.ui.internal
+Bundle-Activator: org.eclipse.e4.ui.internal.CSSActivator
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
index e02d247b..3c5d5749 100644
--- 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
@@ -1,143 +1,210 @@
-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());
- }
- }
-
-
-}
+package org.eclipse.e4.ui.preferences;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.UnmappableCharacterException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.filebuffers.IFileBufferStatusCodes;
+import org.eclipse.core.internal.filebuffers.FileBuffersPlugin;
+import org.eclipse.core.internal.filebuffers.NLSUtility;
+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.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+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.jface.text.IDocument;
+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;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.xtext.ui.editor.XtextEditor;
+
+public class CSSEditorPreferences extends PreferencePageEnhancer {
+
+ ITheme selection;
+ XtextEditor 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);
+
+ IFile file = updateInput();
+
+ 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);
+ Object createdElement = renderer.createGui(editor, composite3, localContext);
+ partService.activate(editor);
+ IEditorPart tmpEditor = editor.getContext().get(IEditorPart.class);
+ if (tmpEditor instanceof XtextEditor) {
+ cssEditor = (XtextEditor) tmpEditor;
+ }
+ }
+
+ @Override
+ public void setSelection(Object sel) {
+ if (sel instanceof ITheme) {
+ ITheme newTheme = (ITheme) sel;
+ ITheme oldSelection = selection;
+ selection = newTheme;
+ if (oldSelection != null && !newTheme.getId().equals(oldSelection.getId())) {
+ IFile file = updateInput();
+ IEditorInput input = new FileEditorInput(file);
+ cssEditor.setInput(input);
+ }
+ }
+
+ }
+
+ @Override
+ public void performOK() {
+ if (cssEditor.isDirty()) {
+ // make a copy of file
+ // cssEditor.doSave(new NullProgressMonitor());
+ IDocumentProvider docProvider = cssEditor.getDocumentProvider();
+
+ IEditorInput editorInput = cssEditor.getEditorInput();
+ IDocument doc = docProvider.getDocument(editorInput);
+ String more = doc.get();
+ IPath path = new Path(
+ System.getProperty("user.home") + System.getProperty("file.separator") + ".e4css" + System.getProperty("file.separator") + editorInput.getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ byte[] bytes = more.getBytes();
+ FileOutputStream outputStream = null;
+ try {
+ outputStream = new FileOutputStream(path.toOSString());
+ outputStream.write(bytes, 0, bytes.length);
+ } catch (FileNotFoundException e) {
+ } catch (IOException e) {
+ } finally {
+ if (outputStream != null)
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ }
+ }
+
+ if (engine instanceof ThemeEngine) {
+ ArrayList<String> styleSheets = new ArrayList<String>();
+ styleSheets.add(path.toOSString());
+ ((ThemeEngine) engine).themeModified(selection, styleSheets );
+ }
+ cssEditor.doRevertToSaved();
+ }
+ }
+
+
+ IFile updateInput() {
+
+ 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);
+ ((ThemeEngine) engine).getCSSEngine().getResourcesLocatorManager();
+ 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();
+ }
+ return file;
+
+ }
+
+ @Override
+ public void performCancel() {
+ if (cssEditor.isDirty()) cssEditor.doRevertToSaved();
+ }
+
+ @Override
+ public void performDefaults() {
+ //reset
+ }
+
+}

Back to the top