Author: sdzmitrovich
Date: 2009-02-16 06:07:46 -0500 (Mon, 16 Feb 2009)
New Revision: 13626
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/CSSClassDialog.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/StyleComposite.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/CSSModel.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/Util.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/tabs/TabPreviewControl.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-3791
https://jira.jboss.org/jira/browse/JBIDE-3726
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/CSSClassDialog.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/CSSClassDialog.java 2009-02-16
10:06:23 UTC (rev 13625)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/CSSClassDialog.java 2009-02-16
11:07:46 UTC (rev 13626)
@@ -50,6 +50,7 @@
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -387,11 +388,11 @@
if (result == SWT.YES) {
saveChanges(true);
} else {
- styleComposite.closePreview(false);
updateStyleComposite();
}
}
styleComposite.revertPreview();
+ releaseResources();
// open new CSS file and initialize dialog
boolean useRelativePath = true;
@@ -632,6 +633,11 @@
} else {
text.setText(file.getFullPath().toOSString());
}
+
+ Point selectionInFile = Util.getSelectionInFile(file);
+
+ currentClassStyle = cssModel.getSelectorByPosition(selectionInFile);
+
// fill in ComboBox component with CSS model selectors
// List<Selector> selectors = cssModel.getSelectors();
List<String> selectors = cssModel.getSelectorLabels();
@@ -757,6 +763,11 @@
return classComposite;
}
+
+ public void releaseResources(){
+
+ cssModel.releaseModel();
+ }
/**
* Method should be called in case of dialog closure operation.
@@ -765,9 +776,6 @@
styleComposite.updateStyle();
cssModel.setCSS(currentClassStyle, styleAttributes);
cssModel.saveModel();
- if (close) {
- styleComposite.closePreview(true);
- }
}
/**
@@ -806,22 +814,20 @@
*/
@Override
public boolean close() {
- int code = getReturnCode();
- switch (code) {
- case OK:
- if (styleChanged || classCombo.indexOf(currentClassStyle) == -1) {
- saveChanges(true);
- } else {
- styleComposite.closePreview(true);
- }
- break;
- case CANCEL:
- default:
- // make some closure operation
- styleComposite.closePreview(false);
+ int code = getReturnCode();
+ switch (code) {
+ case OK:
+ if (styleChanged || classCombo.indexOf(currentClassStyle) == -1) {
+ saveChanges(true);
+ }
+ break;
+ case CANCEL:
+ default:
+ // make some closure operation
}
- return super.close();
- }
+ releaseResources();
+ return super.close();
+ }
/**
* Add MessageDialogListener object.
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/StyleComposite.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/StyleComposite.java 2009-02-16
10:06:23 UTC (rev 13625)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/StyleComposite.java 2009-02-16
11:07:46 UTC (rev 13626)
@@ -472,17 +472,6 @@
}
}
- /**
- * Method is used to close preview tab correctly.
- *
- * @param save close editor with saving or not
- */
- public void closePreview(boolean save) {
- if (tabPreviewControl != null) {
- tabPreviewControl.closeEditor(save);
- }
- }
-
/**
* @param showPreviewTab the showPreviewTab to set
*/
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/CSSModel.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/CSSModel.java 2009-02-16
10:06:23 UTC (rev 13625)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/CSSModel.java 2009-02-16
11:07:46 UTC (rev 13626)
@@ -28,9 +28,11 @@
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IDocumentPartitioner;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.wst.css.core.internal.format.FormatProcessorCSS;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSDocument;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
+import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleSheet;
import org.eclipse.wst.css.core.internal.text.StructuredTextPartitionerForCSS;
import org.eclipse.wst.sse.core.StructuredModelManager;
@@ -331,10 +333,11 @@
* Release CSS model correctly from editing.
*/
public void releaseModel() {
- IModelManager modelManager = StructuredModelManager.getModelManager();
- if (!modelManager.isShared(model.getId()))
+ IModelManager modelManager = StructuredModelManager.getModelManager();
+ if (model != null && !modelManager.isShared(model.getId()))
model.releaseFromEdit();
- }
+ model = null;
+ }
/**
* Save model. Associate file will be saved automatically.
@@ -415,4 +418,30 @@
}
}
+
+ public String getSelectorByPosition(Point selectionInFile) {
+
+ ICSSNode node = (ICSSNode) model.getIndexedRegion(selectionInFile.x);
+
+ while (node != null) {
+
+ if (node.getNodeType() == ICSSNode.STYLERULE_NODE) {
+ break;
+ } else if (node.getNodeType() == ICSSNode.STYLESHEET_NODE) {
+ node = ((ICSSStyleSheet) node).getFirstChild();
+ break;
+ }
+
+ node = node.getParentNode();
+ }
+
+ Object rules= getRulesMapping();
+ if (node != null)
+ for (Entry<String, CSSStyleRule> rule : getRulesMapping()
+ .entrySet()) {
+ if (node.equals(rule.getValue()))
+ return rule.getKey();
+ }
+ return null;
+ }
}
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/Util.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/Util.java 2009-02-16
10:06:23 UTC (rev 13625)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/common/Util.java 2009-02-16
11:07:46 UTC (rev 13626)
@@ -21,14 +21,24 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.internal.EditorAreaHelper;
+import org.eclipse.ui.internal.WorkbenchPage;
+import org.eclipse.ui.internal.WorkbenchWindow;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleRule;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleSheet;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.jboss.tools.jst.jsp.JspEditorPlugin;
import org.jboss.tools.jst.jsp.outline.cssdialog.parsers.ColorParser;
@@ -70,6 +80,7 @@
private static String ZERO_STR = "0"; //$NON-NLS-1$
private static int NORMAL_MIN_VALUE = 10;
+ private final static String EDITOR_ID =
"org.eclipse.wst.css.core.csssource.source"; //$NON-NLS-1$
/**
* Method for checking contain or not css attribute folder
@@ -427,4 +438,21 @@
return className;
}
+
+ public static Point getSelectionInFile(IFile file) {
+
+ IEditorReference[] editorReference = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage().findEditors(
+ new FileEditorInput(file), EDITOR_ID,
+ IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
+ Point point = new Point(0, 0);
+ if ((editorReference != null) && (editorReference.length > 0)) {
+
+ IEditorPart editorPart = editorReference[0].getEditor(false);
+ if (editorPart != null)
+ point = ((StructuredTextEditor) editorPart).getTextViewer()
+ .getSelectedRange();
+ }
+ return point;
+ }
}
\ No newline at end of file
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/tabs/TabPreviewControl.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/tabs/TabPreviewControl.java 2009-02-16
10:06:23 UTC (rev 13625)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/cssdialog/tabs/TabPreviewControl.java 2009-02-16
11:07:46 UTC (rev 13626)
@@ -33,8 +33,6 @@
public class TabPreviewControl extends Composite {
/** Editor in which we open visual page. */
- protected final static String EDITOR_ID =
"org.eclipse.wst.css.core.csssource.source"; //$NON-NLS-1$
-
SourceViewer viewer = null;
private CSSModel cssModel = null;
@@ -114,19 +112,4 @@
}
}
- /**
- * Method is used to close CSS file editor correctly.
- *
- * @param save true if close editor with closure operation; false - otherwise
- */
- public void closeEditor(boolean save) {
-
- // TODO if copy of model is used then reverting will not be required
- if (!save)
- doRevertToSaved();
-
- if (cssModel != null) {
- cssModel.releaseModel();
- }
- }
}