Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritrimble2008-03-01 09:02:24 +0000
committeritrimble2008-03-01 09:02:24 +0000
commitd7ba26d9eb32b055de808e454dcf35a0176f62df (patch)
treee27c206d03add06a8cdb22a306f623b839484da6
parent1af85eb1abaab330a6461c485f2ac9224da8c350 (diff)
downloadwebtools.jsf-d7ba26d9eb32b055de808e454dcf35a0176f62df.tar.gz
webtools.jsf-d7ba26d9eb32b055de808e454dcf35a0176f62df.tar.xz
webtools.jsf-d7ba26d9eb32b055de808e454dcf35a0176f62df.zip
Update Trinidad Tag Support:
- enhanced editing support for tr:panelTabbed/tr:showDetailItem
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadUtils.java67
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/PanelTabbedOperation.java27
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/elementedit/PanelTabbedElementEdit.java15
3 files changed, 99 insertions, 10 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadUtils.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadUtils.java
new file mode 100644
index 000000000..de19971ce
--- /dev/null
+++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/TrinidadUtils.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2008 Oracle Corporation 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:
+ * Oracle Corporation - initial API and implementation
+ */
+package org.eclipse.jst.jsf.apache.trinidad.tagsupport;
+
+import org.w3c.dom.Node;
+
+/**
+ * Utility class for the Trinidad Tag Support plug-in.
+ *
+ * @author Ian Trimble - Oracle
+ */
+public class TrinidadUtils {
+
+ private static final String KEY_DISCLOSED_CHILD_INDEX =
+ "KEY_DISCLOSED_CHILD_INDEX";
+
+ /**
+ * Sets the index of the Node instance's "disclosed" child as user data on
+ * the Node instance.
+ *
+ * @param node Node instance on which to set index.
+ * @param index Index of node's "disclosed" child.
+ * @return true if index has changed, else false.
+ */
+ public static boolean setDisclosedChildIndex(Node node, int index) {
+ boolean indexChanged = false;
+ if (node != null) {
+ int currentIndex = getDisclosedChildIndex(node);
+ if (currentIndex != index) {
+ node.setUserData(
+ KEY_DISCLOSED_CHILD_INDEX,
+ new Integer(index),
+ null);
+ indexChanged = true;
+ }
+ }
+ return indexChanged;
+ }
+
+ /**
+ * Gets the index of the Node instance's "disclosed child from user data on
+ * the Node instance.
+ *
+ * @param node Node instance from which to get index.
+ * @return Index of node's "disclosed" child. A value of -1 indicates
+ * inability to get index from node.
+ */
+ public static int getDisclosedChildIndex(Node node) {
+ int index = -1;
+ if (node != null) {
+ Object obj = node.getUserData(KEY_DISCLOSED_CHILD_INDEX);
+ if (obj instanceof Integer) {
+ index = ((Integer)obj).intValue();
+ }
+ }
+ return index;
+ }
+
+}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/PanelTabbedOperation.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/PanelTabbedOperation.java
index 82ff9e336..2563b05f3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/PanelTabbedOperation.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/converter/operations/PanelTabbedOperation.java
@@ -14,6 +14,7 @@ import java.util.Iterator;
import java.util.List;
import org.eclipse.jst.jsf.apache.trinidad.tagsupport.Messages;
+import org.eclipse.jst.jsf.apache.trinidad.tagsupport.TrinidadUtils;
import org.eclipse.jst.pagedesigner.converter.ConvertPosition;
import org.eclipse.jst.pagedesigner.dtmanager.converter.ITransformOperation;
import org.eclipse.jst.pagedesigner.dtmanager.converter.operations.AbstractTransformOperation;
@@ -57,7 +58,8 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
//get child showDetailItem elements
@SuppressWarnings("unchecked")
- List<Node> showDetailItems = getChildElements(srcElement, "showDetailItem"); //$NON-NLS-1$
+ List<Node> showDetailItems = getChildElements(
+ srcElement, "showDetailItem"); //$NON-NLS-1$
if (showDetailItems.size() > 0) {
//determine tabs position ("both", "above", or "below" - default "both")
@@ -79,7 +81,8 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
}
//copy "disclosed" child showDetailItem
- int disclosedItem = calculateDisclosedShowDetailItem(showDetailItems);
+ int disclosedItem =
+ calculateDisclosedShowDetailItem(srcElement, showDetailItems);
int curItem = 0;
Iterator<Node> itItems = showDetailItems.iterator();
while (itItems.hasNext()) {
@@ -144,7 +147,8 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
Node nodeItem = itItems.next();
if (nodeItem instanceof Element) {
Element elemItem = (Element)nodeItem;
- appendShowDetailItemTD(trElement, elemItem, disclosedItem == curItem);
+ appendShowDetailItemTD(
+ trElement, elemItem, disclosedItem == curItem);
if (curItem < showDetailItems.size() - 1) {
appendSeparatorTD(trElement);
}
@@ -234,6 +238,16 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
}
}
+ private int calculateDisclosedShowDetailItem(
+ Element srcElement, List<Node> showDetailItems) {
+ int disclosedItem = TrinidadUtils.getDisclosedChildIndex(srcElement);
+ if (disclosedItem == -1) {
+ disclosedItem = calculateDisclosedShowDetailItem(showDetailItems);
+ TrinidadUtils.setDisclosedChildIndex(srcElement, disclosedItem);
+ }
+ return disclosedItem;
+ }
+
private int calculateDisclosedShowDetailItem(List<Node> showDetailItems) {
int disclosedItem = -1;
int curItem = 0;
@@ -243,14 +257,15 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
if (item instanceof Element) {
Element elemItem = (Element)item;
String attrDisclosedVal = elemItem.getAttribute("disclosed"); //$NON-NLS-1$
- if (Boolean.TRUE.toString().equalsIgnoreCase(attrDisclosedVal)) {
+ if (Boolean.TRUE.toString().equalsIgnoreCase(
+ attrDisclosedVal)) {
disclosedItem = curItem;
break;
}
}
curItem++;
}
- //if none explicitly disclosed, consider first non-disabled tab "disclosed"
+ //if none explicitly disclosed, consider first non-disabled tab disclosed
if (disclosedItem == -1) {
curItem = 0;
itItems = showDetailItems.iterator();
@@ -267,7 +282,7 @@ public class PanelTabbedOperation extends AbstractTransformOperation {
curItem++;
}
}
- //if none explicitly disclosed and all disabled, consider first tab "disclosed"
+ //if none explicitly disclosed and all disabled, consider first tab disclosed
if (disclosedItem == -1) {
disclosedItem = 0;
}
diff --git a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/elementedit/PanelTabbedElementEdit.java b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/elementedit/PanelTabbedElementEdit.java
index fb36e1cc4..8d52c7a0f 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/elementedit/PanelTabbedElementEdit.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport/src/org/eclipse/jst/jsf/apache/trinidad/tagsupport/elementedit/PanelTabbedElementEdit.java
@@ -13,11 +13,12 @@ package org.eclipse.jst.jsf.apache.trinidad.tagsupport.elementedit;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.DragTracker;
+import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.requests.LocationRequest;
import org.eclipse.jst.jsf.apache.trinidad.tagsupport.ITrinidadConstants;
-import org.eclipse.jst.jsf.apache.trinidad.tagsupport.TrinidadTagSupportActivator;
+import org.eclipse.jst.jsf.apache.trinidad.tagsupport.TrinidadUtils;
import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory;
import org.eclipse.jst.pagedesigner.editpolicies.ElementResizableEditPolicy;
import org.eclipse.jst.pagedesigner.parts.ElementEditPart;
@@ -64,9 +65,14 @@ public class PanelTabbedElementEdit extends DefaultTrinidadCoreElementEdit {
ObjectModeDragTracker dragTracker = new ObjectModeDragTracker(getHost()) {
protected boolean handleButtonDown(int button) {
if (button == 1) {
- TrinidadTagSupportActivator.logInfo(
- "Tab clicked: index == " +
- String.valueOf(getTabIndex(getLocation())));
+ int tabIndex = getTabIndex(getLocation());
+ EditPart editPart = getSourceEditPart();
+ if (editPart instanceof ElementEditPart) {
+ Node node = ((ElementEditPart)part).getDOMNode();
+ if (TrinidadUtils.setDisclosedChildIndex(node, tabIndex)) {
+ ((ElementEditPart)part).refresh(true);
+ }
+ }
}
return super.handleButtonDown(button);
}
@@ -113,6 +119,7 @@ public class PanelTabbedElementEdit extends DefaultTrinidadCoreElementEdit {
}
return count;
}
+
}
}

Back to the top