Author: scabanovich
Date: 2009-09-21 08:30:56 -0400 (Mon, 21 Sep 2009)
New Revision: 17676
Removed:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/editors/dnd/CssLinkAttributeValueLoader.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteTaglibInserter.java
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/problem/ProblemDialog.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4913
Splitting PaletteInsertHelper into jsp and non-jsp related parts.
Deleted:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/editors/dnd/CssLinkAttributeValueLoader.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/editors/dnd/CssLinkAttributeValueLoader.java 2009-09-21
11:42:44 UTC (rev 17675)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/editors/dnd/CssLinkAttributeValueLoader.java 2009-09-21
12:30:56 UTC (rev 17676)
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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:
- * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.common.model.ui.editors.dnd;
-
-public class CssLinkAttributeValueLoader extends AbsoluteFilePathAttributeValueLoader {
-
- public CssLinkAttributeValueLoader(String pathAttributeName) {
- super(pathAttributeName, null, null);
- }
-
- public void fillTagAttributes(IDropWizardModel model) {
- super.fillTagAttributes(model);
- model.setAttributeValue("rel", "stylesheet"); //$NON-NLS-1$
//$NON-NLS-2$
- model.setAttributeValue("type", "text/css"); //$NON-NLS-1$
//$NON-NLS-2$
- }
-
-}
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/problem/ProblemDialog.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/problem/ProblemDialog.java 2009-09-21
11:42:44 UTC (rev 17675)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/problem/ProblemDialog.java 2009-09-21
12:30:56 UTC (rev 17676)
@@ -76,12 +76,6 @@
super.buttonPressed(buttonId);
}
-/*
- public static int open(Shell shell, String message) {
- JspPreviewErrorDialog dialog = new JspPreviewErrorDialog(shell,
JspPreviewMessages.getString(DEFAULT_TITLE), message);
- return dialog.open();
- }
-*/
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#open()
*/
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java 2009-09-21
11:42:44 UTC (rev 17675)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteInsertHelper.java 2009-09-21
12:30:56 UTC (rev 17676)
@@ -56,8 +56,6 @@
public static final String PROPOPERTY_SELECTION_PROVIDER =
"selectionProvider"; //$NON-NLS-1$
public static final String PROPOPERTY_ADD_TAGLIB = TLDToPaletteHelper.ADD_TAGLIB;
- static PaletteTaglibInserter PaletteTaglibInserter = new PaletteTaglibInserter();
-
static PaletteInsertHelper instance = new PaletteInsertHelper();
public static PaletteInsertHelper getInstance() {
@@ -101,10 +99,8 @@
}
public void insertIntoEditor(final ISourceViewer v, Properties p) {
- String tagname = p.getProperty(PROPOPERTY_TAG_NAME);
String startText = p.getProperty(PROPOPERTY_START_TEXT);
String endText = p.getProperty(PROPOPERTY_END_TEXT);
- String uri = p.getProperty(PROPOPERTY_TAGLIBRARY_URI);
ISelectionProvider selProvider
= (ISelectionProvider)p.get(PROPOPERTY_SELECTION_PROVIDER);
@@ -113,18 +109,12 @@
}
IDocument d = v.getDocument();
+
String[] texts = new String[] {startText, endText};
+
+ //do any auxiliary job here
+ modify(v, p, texts);
- if(startText != null && startText.startsWith("<%@ taglib")) {
//$NON-NLS-1$
- if(PaletteTaglibInserter.inserTaglibInXml(v, p)) {
- return;
- }
- } else {
- p = PaletteTaglibInserter.inserTaglib(v, p);
- }
-
- String defaultPrefix = p.getProperty(PROPOPERTY_DEFAULT_PREFIX);
- applyPrefix(texts, d, tagname, uri, defaultPrefix);
startText = texts[0];
endText = texts[1];
@@ -155,6 +145,10 @@
}
}
+ protected void modify(ISourceViewer v, Properties p, String[] texts) {
+ //override
+ }
+
protected void insertIntoEditorInternal(IDocument doc, Properties p) {
String startText = p.getProperty(PROPOPERTY_START_TEXT);
String endText = p.getProperty(PROPOPERTY_END_TEXT);
@@ -496,102 +490,4 @@
}
}
- /**
- * adding prefix to tag
- */
- public static void applyPrefix(String[] text, ITextEditor editor, String tagname, String
uri, String defaultPrefix) {
- if(defaultPrefix == null || defaultPrefix.length() == 0) return;
- IDocument doc = null;
- if(editor != null && editor.getDocumentProvider() != null) {
- doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
- }
- applyPrefix(text, doc, tagname, uri, defaultPrefix);
- }
-
- public static void applyPrefix(String[] text, IDocument doc, String tagname, String uri,
String defaultPrefix) {
- if(doc == null) return;
- String body = doc.get();
- applyPrefix(text, body, tagname, uri, defaultPrefix);
- }
-
- public static void applyPrefix(String[] text, String body, String tagname, String uri,
String defaultPrefix) {
- if(uri == null || uri.length() == 0) return;
- Properties p = getPrefixes(body);
- String prefix = p.getProperty(uri, defaultPrefix);
- if(prefix == null || prefix.length() == 0) return;
- for (int i = 0; i < text.length; i++) text[i] = applyPrefix(text[i], tagname,
prefix, p);
- }
-
- static String applyPrefix(String text, String tagname, String prefix, Properties
prefixes) {
- if(text == null || text.length() == 0) return text;
- if(tagname == null || tagname.length() == 0) return text;
- while(true) {
- int i = text.indexOf("%prefix|"); //$NON-NLS-1$
- if(i < 0) break;
- int j = text.indexOf("%", i + 8); //$NON-NLS-1$
- if(j < 0) break;
- int j1 = text.indexOf("|", i + 8); //$NON-NLS-1$
- String uri = ""; //$NON-NLS-1$
- String defaultPrefix = ""; //$NON-NLS-1$
- String pr = ""; //$NON-NLS-1$
- uri = text.substring(i + 8, j1);
- defaultPrefix = text.substring(j1 + 1, j);
- pr = prefixes.getProperty(uri, defaultPrefix);
- if(pr.length() > 0) {
- text = text.substring(0, i) + pr + ":" + text.substring(j + 1);
//$NON-NLS-1$
- } else {
- text = text.substring(0, i) + text.substring(j + 1);
- }
- }
-
- int k = text.toLowerCase().indexOf(":" + tagname.toLowerCase());
//$NON-NLS-1$
- if(k >= 0) {
- int g = text.indexOf("</"); //$NON-NLS-1$
- if(g >= 0 && g < k) {
- return text.substring(0, g + 2) + prefix + text.substring(k);
- }
- g = text.indexOf("<"); //$NON-NLS-1$
- if(g >= 0 && g < k) {
- return text.substring(0, g + 1) + prefix + text.substring(k);
- }
- }
- k = text.toLowerCase().indexOf("<" + tagname.toLowerCase());
//$NON-NLS-1$
- if(k >= 0) {
- return text.substring(0, k + 1) + prefix + ":" + text.substring(k + 1);
//$NON-NLS-1$
- }
- k = text.toLowerCase().indexOf("</" + tagname.toLowerCase());
//$NON-NLS-1$
- if(k >= 0) {
- return text.substring(0, k + 2) + prefix + ":" + text.substring(k + 2);
//$NON-NLS-1$
- }
- return text;
- }
-
- static Properties getPrefixes(String body) {
- Properties p = new Properties();
- int i = 0;
- while(i >= 0 && i < body.length()) {
- i = body.indexOf("<%@ taglib ", i); //$NON-NLS-1$
- if(i < 0) break;
- int j = body.indexOf("%>", i); //$NON-NLS-1$
- if(j < 0) j = body.length();
- String taglib = body.substring(i, j);
- getPrefix(p, taglib);
- i = j + 1;
- }
- return p;
- }
-
- static void getPrefix(Properties p, String taglib) {
- int i = taglib.indexOf("uri=\""); //$NON-NLS-1$
- if(i < 0) return;
- int j = taglib.indexOf("\"", i + 5); //$NON-NLS-1$
- if(j < 0) return;
- String uri = taglib.substring(i + 5, j);
- i = taglib.indexOf("prefix=\""); //$NON-NLS-1$
- if(i < 0) return;
- j = taglib.indexOf("\"", i + 8); //$NON-NLS-1$
- if(j < 0) return;
- String prefix = taglib.substring(i + 8, j);
- p.setProperty(uri, prefix);
- }
}
\ No newline at end of file
Deleted:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteTaglibInserter.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteTaglibInserter.java 2009-09-21
11:42:44 UTC (rev 17675)
+++
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/views/palette/PaletteTaglibInserter.java 2009-09-21
12:30:56 UTC (rev 17676)
@@ -1,403 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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:
- * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.common.model.ui.views.palette;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Properties;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
-import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.jboss.tools.common.model.ui.ModelUIPlugin;
-import org.jboss.tools.jst.web.tld.TaglibData;
-import org.jboss.tools.jst.web.tld.VpeTaglibManager;
-import org.jboss.tools.jst.web.tld.VpeTaglibManagerProvider;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class PaletteTaglibInserter {
-
- private static final String JSP_SOURCE_ROOT_ELEMENT = "jsp:root";
//$NON-NLS-1$
- public static final String JSP_URI = "http://java.sun.com/JSP/Page";
//$NON-NLS-1$
- public static final String faceletUri = "http://java.sun.com/jsf/facelets";
//$NON-NLS-1$
-
- private static final String TAGLIB_START = "<%@ taglib"; //$NON-NLS-1$
-
- public Properties inserTaglib(ISourceViewer v, Properties p) {
- if(!inserTaglibInXml(v, p)) {
- inserTaglibInOldJsp(v, p);
- }
- return p;
- }
-
- private boolean checkProperties(Properties p) {
- return
"true".equalsIgnoreCase(p.getProperty(PaletteInsertHelper.PROPOPERTY_ADD_TAGLIB))
&& //$NON-NLS-1$
- p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI) != null &&
- p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI).length() > 0
&&
- !p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI).equals(JSP_URI)
&&
- p.getProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX) != null &&
- p.getProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX).length() > 0
&&
- p.getProperty(PaletteInsertHelper.PROPOPERTY_START_TEXT) != null;
- }
-
- public boolean inserTaglibInOldJsp(ISourceViewer v, Properties p) {
- if(!checkProperties(p)) {
- return false;
- }
-
- IDocument d = v.getDocument();
- IStructuredModel model = null;
-
- try {
- model = StructuredModelManager.getModelManager().getExistingModelForRead(d);
- IDOMDocument xmlDocument = (model instanceof IDOMModel) ? ((IDOMModel)
model).getDocument() : null;
- if (xmlDocument == null) {
- return false;
- }
- Properties tl = getPrefixes(v);
- if(tl == null) tl = PaletteInsertHelper.getPrefixes(d.get());
- Element root = xmlDocument.getDocumentElement();
-
- String uri_p = p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI);
- String defaultPrefix_p =
p.getProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX);
- String lineDelimiter = PaletteInsertHelper.getLineDelimiter(d);
- StringBuffer tg = new StringBuffer(TAGLIB_START).append("
uri=\"").append(uri_p).append("\"").append("
prefix=\"").append(defaultPrefix_p).append("\"%>").append(lineDelimiter);
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
- if (tl != null && !tl.isEmpty()) {
- //If taglib already exist check the prefix if changed
- if (tl.containsKey(uri_p)) {
- if (!tl.get(uri_p).equals(defaultPrefix_p)) {
- p.setProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX,
(String)tl.get(uri_p));
- }
- } else if(!tl.containsValue(defaultPrefix_p)) {
- if (checkplace(xmlDocument, d, "jsp:directive.taglib", tg, p, v) == false)
{ //$NON-NLS-1$
- d.replace(0, 0, tg.toString());
- mouveFocusOnPage(p,v, tg.toString().length(), 0);
- return true;
- }
- }
- } else if(xmlDocument instanceof DocumentImpl) {
- DocumentImpl docImpl = (DocumentImpl)xmlDocument;
- // Only for JSP
- if(docImpl.isJSPType()) {
- if (checkplace(xmlDocument, d, "jsp:directive.page", tg, p, v) == false) {
//$NON-NLS-1$
- d.replace(0, 0, tg.toString());
- mouveFocusOnPage(p,v, tg.toString().length(), 0);
- return true;
- }
- }
- }
- } catch (BadLocationException e) {
- ModelUIPlugin.getPluginLog().logError(e);
- } finally {
- if (model != null) model.releaseFromRead();
- }
- return false;
- }
-
- private static Node getSelectedNode(ISourceViewer v, Properties p){
- ISelectionProvider selProvider =
(ISelectionProvider)p.get(PaletteInsertHelper.PROPOPERTY_SELECTION_PROVIDER);
- if(selProvider == null) return null;
-
- ITextSelection selection = null;
-
- if(selProvider.getSelection() instanceof ITextSelection)
- selection = (ITextSelection)selProvider.getSelection();
- else return null;
-
- IndexedRegion region = ContentAssistUtils.getNodeAt(v, selection.getOffset());
- if(region == null) return null;
-
- if(!(region instanceof Node)) return null;
-
- Node text = (Node)region;
-
-
- if("#text".equals(text.getNodeName())) //$NON-NLS-1$
- return text.getParentNode();
- else
- return text;
- }
-
- private static boolean checkSelectedElement(HashMap<String,String> map,
ISourceViewer v, Properties p){
- String taglibUri = p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI);
- if(taglibUri == null) return false;
-
- Node selectedNode = getSelectedNode(v, p);
- if(selectedNode == null) return false;
-
- return checkElement(map, selectedNode, taglibUri);
- }
-
- private static boolean checkElement(HashMap<String,String> map, Node node, String
taglibUri){
-
- NamedNodeMap attrs = node.getAttributes();
- for (int j = 0; attrs != null && j < attrs.getLength(); j++) {
- Node a = attrs.item(j);
- String name = a.getNodeName();
-
- if (name.startsWith("xmlns:")) { //$NON-NLS-1$
- map.put(a.getNodeValue(), name.substring("xmlns:".length()));
//$NON-NLS-1$
- }
- }
-
- if (map.containsKey(taglibUri)) return true;
- else{
- if(node.getParentNode() == null) return false;
- else return checkElement(map, node.getParentNode(), taglibUri);
- }
- }
-
- public boolean inserTaglibInXml(ISourceViewer v, Properties p) {
- if(!checkProperties(p)) {
- return false;
- }
-
- IDocument d = v.getDocument();
- IStructuredModel model = null;
-
- try {
- model = StructuredModelManager.getModelManager().getExistingModelForRead(d);
- IDOMDocument xmlDocument = (model instanceof IDOMModel) ? ((IDOMModel)
model).getDocument() : null;
-
- if (xmlDocument == null) {
- return false;
- }
-
- Properties tl = getPrefixes(v);
- if(tl == null) tl = PaletteInsertHelper.getPrefixes(d.get());
- Element root = xmlDocument.getDocumentElement();
- if(root != null) {
- // for xhtml and jsp:root
- if (xmlDocument.getDoctype() != null /* && tagLibListConainsFacelet(tl)*/ )
{
- String publicId = xmlDocument.getDoctype().getPublicId();
- if (publicId!=null && publicId.toUpperCase().startsWith("-//W3C//DTD
XHTML")) { // &&
root.getNodeName().equalsIgnoreCase(HTML_SOURCE_ROOT_ELEMENT)) { //$NON-NLS-1$
- checkTL(root, v, p, d);
- return true;
- }
- } else if(xmlDocument.isXMLType() ||
root.getNodeName().equals(JSP_SOURCE_ROOT_ELEMENT)) {
- checkTL(root, v, p, d);
- return true;
- }
- }
- } finally {
- if (model != null) model.releaseFromRead();
- }
- return false;
- }
-
-// private static boolean tagLibListConainsFacelet(List tagLibList) {
-// if (tagLibList != null && !tagLibList.isEmpty()) {
-// for (int i = 0; i < tagLibList.size(); i++) {
-// TaglibData tgld = (TaglibData)tagLibList.get(i);
-// if(faceletUri.equals(tgld.getUri())) {
-// return true;
-// }
-// }
-// }
-// return false;
-// }
-
- /*
- * analyse source for taglib, return the list of taglib
- */
- private static Properties getPrefixes(ISourceViewer viewer) {
- VpeTaglibManager tldManager = null;
- if((tldManager == null) && (viewer instanceof VpeTaglibManagerProvider)) {
- tldManager = ((VpeTaglibManagerProvider)viewer).getTaglibManager();
- if(tldManager != null) {
- List list = tldManager.getTagLibs();
- Properties p = new Properties();
- for (int i = 0; i < list.size(); i++) {
- TaglibData data = (TaglibData)list.get(i);
- p.setProperty(data.getUri(), data.getPrefix());
- }
- return p;
- }
- }
- return null;
- }
-
- /*
- * for jsp:root and html check the taglib if exist check the prefix else add the taglib
- * with text formatting
- */
- private static Properties checkTL(Element root, ISourceViewer v, Properties p, IDocument
d) {
- String uri_p = p.getProperty(PaletteInsertHelper.PROPOPERTY_TAGLIBRARY_URI);
- String defaultPrefix_p = p.getProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX);
-
- HashMap<String,String> map = new HashMap<String,String>();
- NamedNodeMap attrs = root.getAttributes();
- for (int j = 0; attrs != null && j < attrs.getLength(); j++) {
- Node a = attrs.item(j);
- String name = a.getNodeName();
-
- if (name.startsWith("xmlns:")) { //$NON-NLS-1$
- map.put(a.getNodeValue(), name.substring("xmlns:".length()));
//$NON-NLS-1$
- }
- }
-
- if (map.containsKey(uri_p) || checkSelectedElement(map, v, p)) {
- if (!map.get(uri_p).equals(defaultPrefix_p)) {
- p.setProperty(PaletteInsertHelper.PROPOPERTY_DEFAULT_PREFIX, (String)
map.get(uri_p));
- }
- } else if(!map.containsValue(defaultPrefix_p)) {
- StringBuffer attribute = new
StringBuffer("xmlns:").append(defaultPrefix_p).append("=\"").append(uri_p).append("\"");
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- int so = ((IDOMElement)root).getStartOffset();
- int seo = ((IDOMElement)root).getStartEndOffset();
- try {
- String lineDelimiter = PaletteInsertHelper.getLineDelimiter(d);
- StringBuffer selectedSource = new StringBuffer().append(d.get(so, seo-so));
- int xmlns = selectedSource.indexOf("xmlns"); //$NON-NLS-1$
- attribute = new
StringBuffer().append(createEmptyCharArray(xmlns)).append("xmlns:").append(defaultPrefix_p).append("=\"").append(uri_p).append("\"");
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- if (d.getLineOffset(d.getLineOfOffset(so)) != so) {
- attribute.insert(0, analyseSubstring(d.get(d.getLineOffset(d.getLineOfOffset(so)),
so-d.getLineOffset(d.getLineOfOffset(so)))));
- }
- if(xmlns>0) {
- attribute.insert(0, lineDelimiter);
- } else {
- attribute.insert(0, ' ');
- }
- selectedSource.insert(selectedSource.length()-1, attribute);
- d.replace(so, seo-so, selectedSource.toString());
- } catch (BadLocationException t) {
- ModelUIPlugin.getPluginLog().logError("", t); //$NON-NLS-1$
- }
- }
- return p;
- }
-
- private static char[] createEmptyCharArray(int n){
- if(n<1) {
- return new char[0];
- }
- char[] ca = new char[n];
- for (int i = 0; i < n; i++)
- ca[i]=' ';
- return ca;
- }
-
- private static void mouveFocusOnPage(Properties p, ISourceViewer v, int length, int
pos){
- ISelectionProvider selProvider =
(ISelectionProvider)p.get(PaletteInsertHelper.PROPOPERTY_SELECTION_PROVIDER);
- IDocument doc = v.getDocument();
-
- if (doc== null || selProvider == null) return;
-
- ITextSelection selection = (ITextSelection)selProvider.getSelection();
- if (selection.getOffset() == 0) {
- v.setSelectedRange(length,0);
- p.put(PaletteInsertHelper.PROPOPERTY_SELECTION_PROVIDER,v.getSelectionProvider());
- }
- else
- if (selection.getOffset() == pos ){
- v.setSelectedRange(length, 0);
- p.put(PaletteInsertHelper.PROPOPERTY_SELECTION_PROVIDER,v.getSelectionProvider());
- }
- }
-
- /*
- * analyse the space between the left corner and the start offset o the text
- */
- private static StringBuffer analyseSubstring(String str){
- StringBuffer st = new StringBuffer().append(str);
- for (int i = 0; i < st.length(); i++) {
- if (st.charAt(i) != ' ' && st.charAt(i) !='\t' ) {
- st.setCharAt(i, ' ');
- }
- }
- return st;
- }
-
- private static boolean checkplace(IDOMDocument xmlDocument, IDocument d, String st,
StringBuffer tg, Properties p, ISourceViewer v) throws BadLocationException {
- NodeList nl = xmlDocument.getChildNodes();
- boolean docType = false;
- IndexedRegion irdt = null;
-
- if (xmlDocument.getDoctype() != null) {
- docType = true;
- String publicId = xmlDocument.getDoctype().getPublicId();
- if (publicId!=null && publicId.toUpperCase().startsWith("-//W3C//DTD
HTML")) { //$NON-NLS-1$
- irdt = (xmlDocument.getDoctype() instanceof IndexedRegion) ?
- (IndexedRegion)xmlDocument.getDoctype(): null;
- }
- }
-
- if (nl != null && nl.getLength() != 0) {
- for (int i=0; i < nl.getLength(); i++) {
- Node n = nl.item(i);
- //fing the first taglib to insert before
- if (n.getNodeName().equals(st) &&
st.equals("jsp:directive.taglib")) { //$NON-NLS-1$
- //calculate the space between taglib and left page corner
- int so = ((ElementImpl)n).getStartOffset();
- //taglib is at left corner
- if (d.getLineOffset(d.getLineOfOffset(so)) == so) {
- d.replace(so, 0, tg.toString());
- } else {
- StringBuffer left = new StringBuffer().
- append(analyseSubstring(d.get(d.getLineOffset(d.getLineOfOffset(so)),
so-d.getLineOffset(d.getLineOfOffset(so)))));
- tg.insert(tg.length(), left);
- d.replace(so, 0, tg.toString());
- }
- return true;
- }
- if ((n.getNodeName().equals(st) &&
st.equals("jsp:directive.page")) ) { //$NON-NLS-1$
- tg.delete(tg.lastIndexOf(PaletteInsertHelper.getLineDelimiter(d)), tg.length());
- int so = ((ElementImpl)n).getStartOffset();
- int eo = ((ElementImpl)n).getEndStartOffset();
- StringBuffer tgleft = new
StringBuffer().append(PaletteInsertHelper.getLineDelimiter(d));
- if (d.getLineOffset(d.getLineOfOffset(so)) == so) {
- tgleft.append(tg);
- d.replace(eo, 0, tgleft.toString());
- mouveFocusOnPage(p,v, eo + tgleft.length(), eo);
- } else {
- tgleft.append(analyseSubstring(d.get(d.getLineOffset(d.getLineOfOffset(so)),
so-d.getLineOffset(d.getLineOfOffset(so)))));
- tgleft.append(tg);
- d.replace(eo, 0, tgleft.toString());
- mouveFocusOnPage(p,v, eo + tgleft.length(), eo);
- }
- return true;
- }
- if (docType && irdt != null) {
- tg.delete(tg.lastIndexOf(PaletteInsertHelper.getLineDelimiter(d)), tg.length());
- int so = irdt.getStartOffset();
- int eo = irdt.getEndOffset();
- StringBuffer tgleft = new
StringBuffer().append(PaletteInsertHelper.getLineDelimiter(d));
- if (d.getLineOffset(d.getLineOfOffset(so)) == so) {
- tgleft.append(tg);
- d.replace(eo, 0, tgleft.toString());
- mouveFocusOnPage(p,v, eo + tgleft.length(), eo);
- } else {
- tgleft.append(analyseSubstring(d.get(d.getLineOffset(d.getLineOfOffset(so)),
so-d.getLineOffset(d.getLineOfOffset(so)))));
- tgleft.append(tg);
- d.replace(eo, 0, tgleft.toString());
- mouveFocusOnPage(p,v, eo + tgleft.length(), eo);
- }
- return true;
- }
- }
- }
- return false;
- }
-}
\ No newline at end of file