You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by an...@apache.org on 2009/10/03 22:47:51 UTC
svn commit: r821409 - in /incubator/ace/trunk: core/ webui/ webui/lib/
webui/src/org/apache/ace/ webui/src/org/apache/ace/client/
Author: angelos
Date: Sat Oct 3 20:47:50 2009
New Revision: 821409
URL: http://svn.apache.org/viewvc?rev=821409&view=rev
Log:
ACE-41 Added an initial version of using drag-and-drop for creating associations. This also means the checkboxes and the '<->' buttons are gone.
Added:
incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5-javadoc.jar (with props)
incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5.jar (with props)
Modified:
incubator/ace/trunk/core/build.xml
incubator/ace/trunk/webui/.classpath
incubator/ace/trunk/webui/build.xml
incubator/ace/trunk/webui/src/org/apache/ace/client/BundleTable.java
incubator/ace/trunk/webui/src/org/apache/ace/client/GroupTable.java
incubator/ace/trunk/webui/src/org/apache/ace/client/LicenseTable.java
incubator/ace/trunk/webui/src/org/apache/ace/client/Main.java
incubator/ace/trunk/webui/src/org/apache/ace/client/ObjectTable.java
incubator/ace/trunk/webui/src/org/apache/ace/client/TargetTable.java
incubator/ace/trunk/webui/src/org/apache/ace/webui.gwt.xml
Modified: incubator/ace/trunk/core/build.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/core/build.xml?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/core/build.xml (original)
+++ incubator/ace/trunk/core/build.xml Sat Oct 3 20:47:50 2009
@@ -521,7 +521,7 @@
<target name="package-webui" unless="webui.uptodate">
<!-- TODO add an activator to bridge between OSGi and GWT -->
<copy file="../webui/webui.war" tofile="deploy/bundle/org.apache.ace.webui-1.0.0.jar"/>
- <echo file="org.apache.ace.webui-1.0.0.bnd">Import-Package: org.apache.ace.log,org.apache.ace.client.repository,org.apache.ace.client.repository.object,org.apache.ace.client.repository.repository,org.apache.ace.client.repository.stateful,org.apache.ace.client.repository.helper,org.apache.ace.client.repository.helper.bundle,org.xml.sax, javax.xml.parsers, junit.framework;resolution:=optional, com.google.gwt.benchmarks;resolution:=optional, *
+ <echo file="org.apache.ace.webui-1.0.0.bnd">Import-Package: org.apache.ace.log,org.apache.ace.client.repository,org.apache.ace.client.repository.object,org.apache.ace.client.repository.repository,org.apache.ace.client.repository.stateful,org.apache.ace.client.repository.helper,org.apache.ace.client.repository.helper.bundle,org.xml.sax, javax.xml.parsers, junit.framework;resolution:=optional, com.google.gwt.benchmarks;resolution:=optional, com.allen_sauer.gwt.dnd.client;resolution:=optional, com.allen_sauer.gwt.dnd.client.drop;resolution:=optional, *
Dynamic-ImportPackage: *
Bundle-Name: Apache ACE Client Web UI
Bundle-ClassPath: WEB-INF/classes, WEB-INF/lib/gwt-servlet.jar
@@ -532,7 +532,7 @@
<bnd-wrap jars="deploy/bundle/org.apache.ace.webui-1.0.0.jar" output="deploy/bundle/org.apache.ace.webui-1.0.0.jar"/>
<jar file="deploy/bundle/org.apache.ace.webui-1.0.0.jar" update="true">
<manifest>
- <attribute name="Bundle-ClassPath" value="WEB-INF/classes, WEB-INF/lib/gwt-servlet.jar, WEB-INF/lib/felix.jar, ."/>
+ <attribute name="Bundle-ClassPath" value="WEB-INF/classes, WEB-INF/lib/gwt-servlet.jar, ."/>
</manifest>
</jar>
<delete file="org.apache.ace.webui-1.0.0.bnd"/>
Modified: incubator/ace/trunk/webui/.classpath
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/.classpath?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/.classpath (original)
+++ incubator/ace/trunk/webui/.classpath Sat Oct 3 20:47:50 2009
@@ -7,5 +7,10 @@
<classpathentry combineaccessrules="false" kind="src" path="/core"/>
<classpathentry combineaccessrules="false" kind="src" path="/server"/>
<classpathentry kind="lib" path="lib/gwt/gwt-user.jar"/>
+ <classpathentry kind="lib" path="lib/gwt-dnd-2.6.5.jar">
+ <attributes>
+ <attribute name="javadoc_location" value="jar:platform:/resource/webui/lib/gwt-dnd-2.6.5-javadoc.jar!/"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>
Modified: incubator/ace/trunk/webui/build.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/build.xml?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/build.xml (original)
+++ incubator/ace/trunk/webui/build.xml Sat Oct 3 20:47:50 2009
@@ -10,6 +10,7 @@
<path refid="bnd.classpath" />
<fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/>
<!-- Add any additional non-server libs (such as JUnit) -->
+ <fileset dir="../webui/lib" includes="gwt-dnd-2.6.5.jar"/>
<fileset dir="war/WEB-INF/lib" includes="**/*.jar"/>
</path>
Added: incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5-javadoc.jar
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5-javadoc.jar?rev=821409&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5-javadoc.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5.jar
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5.jar?rev=821409&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/ace/trunk/webui/lib/gwt-dnd-2.6.5.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/BundleTable.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/BundleTable.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/BundleTable.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/BundleTable.java Sat Oct 3 20:47:50 2009
@@ -19,10 +19,15 @@
package org.apache.ace.client;
import org.apache.ace.client.Main.StatusHandler;
+import org.apache.ace.client.services.AssociationService;
+import org.apache.ace.client.services.AssociationServiceAsync;
import org.apache.ace.client.services.BundleDescriptor;
import org.apache.ace.client.services.BundleService;
import org.apache.ace.client.services.BundleServiceAsync;
+import org.apache.ace.client.services.Descriptor;
+import org.apache.ace.client.services.GroupDescriptor;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -31,9 +36,10 @@
*/
public class BundleTable extends ObjectTable<BundleDescriptor> {
private BundleServiceAsync m_bundleService = GWT.create(BundleService.class);
+ private AssociationServiceAsync m_associationService = GWT.create(AssociationService.class);
- BundleTable(StatusHandler handler, Main main) {
- super(handler, main);
+ BundleTable(StatusHandler handler, PickupDragController dragController, Main main) {
+ super(handler, dragController, main);
}
@Override
@@ -55,4 +61,11 @@
protected void remove(BundleDescriptor object, AsyncCallback<Void> callback) {
m_bundleService.remove(object, callback);
}
+
+ @Override
+ protected void link(BundleDescriptor object, Descriptor other, AsyncCallback<Void> callback) {
+ if (other instanceof GroupDescriptor) {
+ m_associationService.link(object, (GroupDescriptor) other, callback);
+ }
+ }
}
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/GroupTable.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/GroupTable.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/GroupTable.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/GroupTable.java Sat Oct 3 20:47:50 2009
@@ -19,10 +19,16 @@
package org.apache.ace.client;
import org.apache.ace.client.Main.StatusHandler;
+import org.apache.ace.client.services.AssociationService;
+import org.apache.ace.client.services.AssociationServiceAsync;
+import org.apache.ace.client.services.BundleDescriptor;
+import org.apache.ace.client.services.Descriptor;
import org.apache.ace.client.services.GroupDescriptor;
import org.apache.ace.client.services.GroupService;
import org.apache.ace.client.services.GroupServiceAsync;
+import org.apache.ace.client.services.LicenseDescriptor;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -32,9 +38,10 @@
*/
public class GroupTable extends ObjectTable<GroupDescriptor> {
private GroupServiceAsync m_groupService = GWT.create(GroupService.class);
+ private AssociationServiceAsync m_associationService = GWT.create(AssociationService.class);
- GroupTable(StatusHandler handler, Main main) {
- super(handler, main);
+ GroupTable(StatusHandler handler, PickupDragController dragController, Main main) {
+ super(handler, dragController, main);
}
@Override
@@ -71,4 +78,14 @@
m_groupService.remove(object, callback);
}
+ @Override
+ protected void link(GroupDescriptor object, Descriptor other, AsyncCallback<Void> callback) {
+ if (other instanceof BundleDescriptor) {
+ m_associationService.link((BundleDescriptor) other, object, callback);
+ }
+ else if (other instanceof LicenseDescriptor) {
+ m_associationService.link(object, (LicenseDescriptor) other, callback);
+ }
+ }
+
}
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/LicenseTable.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/LicenseTable.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/LicenseTable.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/LicenseTable.java Sat Oct 3 20:47:50 2009
@@ -19,10 +19,16 @@
package org.apache.ace.client;
import org.apache.ace.client.Main.StatusHandler;
+import org.apache.ace.client.services.AssociationService;
+import org.apache.ace.client.services.AssociationServiceAsync;
+import org.apache.ace.client.services.Descriptor;
+import org.apache.ace.client.services.GroupDescriptor;
import org.apache.ace.client.services.LicenseDescriptor;
import org.apache.ace.client.services.LicenseService;
import org.apache.ace.client.services.LicenseServiceAsync;
+import org.apache.ace.client.services.TargetDescriptor;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -32,9 +38,10 @@
*/
public class LicenseTable extends ObjectTable<LicenseDescriptor> {
private LicenseServiceAsync m_licenseService = GWT.create(LicenseService.class);
+ private AssociationServiceAsync m_associationService = GWT.create(AssociationService.class);
- LicenseTable(StatusHandler handler, Main main) {
- super(handler, main);
+ LicenseTable(StatusHandler handler, PickupDragController dragController, Main main) {
+ super(handler, dragController, main);
}
@Override
@@ -70,4 +77,14 @@
protected void remove(LicenseDescriptor object, AsyncCallback<Void> callback) {
m_licenseService.remove(object, callback);
}
-}
+
+ @Override
+ protected void link(LicenseDescriptor object, Descriptor other, AsyncCallback<Void> callback) {
+ if (other instanceof GroupDescriptor) {
+ m_associationService.link((GroupDescriptor) other, object, callback);
+ }
+ else if (other instanceof TargetDescriptor) {
+ m_associationService.link(object, (TargetDescriptor) other, callback);
+ }
+ }
+}
\ No newline at end of file
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/Main.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/Main.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/Main.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/Main.java Sat Oct 3 20:47:50 2009
@@ -26,12 +26,11 @@
import org.apache.ace.client.services.AssociationService;
import org.apache.ace.client.services.AssociationServiceAsync;
import org.apache.ace.client.services.Descriptor;
-import org.apache.ace.client.services.GroupDescriptor;
-import org.apache.ace.client.services.LicenseDescriptor;
import org.apache.ace.client.services.TargetDescriptor;
import org.apache.ace.client.services.TargetService;
import org.apache.ace.client.services.TargetServiceAsync;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.impl.StringBuilderImpl;
@@ -53,13 +52,15 @@
public class Main implements EntryPoint {
private static final int REFRESH_INTERVAL = 2000;
private StatusLabel m_statusLabel = new StatusLabel();
- private BundleTable m_bundleTable = new BundleTable(m_statusLabel, this);
- private GroupTable m_groupTable = new GroupTable(m_statusLabel, this);
- private LicenseTable m_licenseTable = new LicenseTable(m_statusLabel, this);
- private TargetTable m_targetTable = new TargetTable(m_statusLabel, this);
+ private PickupDragController m_dragController = new PickupDragController(RootPanel.get(), false);
+ private BundleTable m_bundleTable = new BundleTable(m_statusLabel, m_dragController, this);
+ private GroupTable m_groupTable = new GroupTable(m_statusLabel, m_dragController, this);
+ private LicenseTable m_licenseTable = new LicenseTable(m_statusLabel, m_dragController, this);
+ private TargetTable m_targetTable = new TargetTable(m_statusLabel, m_dragController, this);
AssociationServiceAsync m_assocationService = GWT.create(AssociationService.class);
+
/**
* Interface for the columns, that they can use to indicate their status of
* communication with the server.
@@ -139,50 +140,6 @@
// targetScrollPanel.setHeight("30em");
targetScrollPanel.setStyleName("objectTable");
- // Create the association buttons
- Button b2g = new Button("<->");
- b2g.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- m_assocationService.link(m_bundleTable.getCheckedObject(), m_groupTable.getCheckedObject(), new AsyncCallback<Void>() {
- public void onFailure(Throwable caught) {
- Window.alert("Error creating association: " + caught);
- }
- public void onSuccess(Void result) {
- updateHighlight();
- }
- });
- }
- });
-
- Button g2l = new Button("<->");
- g2l.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- GroupDescriptor group = m_groupTable.getCheckedObject();
- LicenseDescriptor license = m_licenseTable.getCheckedObject();
- m_assocationService.link(group, license, new AsyncCallback<Void>() {
- public void onFailure(Throwable caught) {
- Window.alert("Error creating association: " + caught);
- }
- public void onSuccess(Void result) {
- updateHighlight();
- }
- });
- }
- });
- Button l2t = new Button("<->");
- l2t.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent event) {
- m_assocationService.link(m_licenseTable.getCheckedObject(), m_targetTable.getCheckedObject(), new AsyncCallback<Void>() {
- public void onFailure(Throwable caught) {
- Window.alert("Error creating association: " + caught);
- }
- public void onSuccess(Void result) {
- updateHighlight();
- }
- });
- }
- });
-
FlexTable rootPanel = new FlexTable();
FlexCellFormatter formatter = rootPanel.getFlexCellFormatter();
rootPanel.setWidth("100%");
@@ -190,30 +147,27 @@
rootPanel.setHTML(1, 0, "Bundle");
formatter.setWidth(1, 0, "25%");
rootPanel.setWidget(2, 0, addBundleButton);
- rootPanel.setWidget(2, 1, b2g);
- formatter.setStyleName(2, 1, "fixedColumn");
rootPanel.setWidget(3, 0, bundleScrollPanel);
formatter.setHeight(3, 0, "90%");
- rootPanel.setHTML(1, 2, "Group");
+ rootPanel.setHTML(1, 1, "Group");
+ formatter.setWidth(1, 1, "25%");
+ rootPanel.setWidget(2, 1, addGroupButton);
+ rootPanel.setWidget(3, 1, groupScrollPanel);
+ rootPanel.setHTML(1, 2, "License");
formatter.setWidth(1, 2, "25%");
- rootPanel.setWidget(2, 2, addGroupButton);
- rootPanel.setWidget(2, 3, g2l);
- formatter.setStyleName(2, 3, "fixedColumn");
- rootPanel.setWidget(3, 2, groupScrollPanel);
- rootPanel.setHTML(1, 4, "License");
- formatter.setWidth(1, 4, "25%");
- rootPanel.setWidget(2, 4, addLicenseButton);
- rootPanel.setWidget(2, 5, l2t);
- formatter.setStyleName(2, 5, "fixedColumn");
- rootPanel.setWidget(3, 4, licenseScrollPanel);
- rootPanel.setHTML(1, 6, "Target");
- formatter.setWidth(1, 6, "25%");
- rootPanel.setWidget(3, 6, targetScrollPanel);
+ rootPanel.setWidget(2, 2, addLicenseButton);
+ rootPanel.setWidget(3, 2, licenseScrollPanel);
+ rootPanel.setHTML(1, 3, "Target");
+ formatter.setWidth(1, 3, "25%");
+ rootPanel.setWidget(3, 3, targetScrollPanel);
rootPanel.setWidget(0, 0, new CheckoutPanel(this));
- formatter.setColSpan(0, 0, 7);
+ formatter.setColSpan(0, 0, 4);
rootPanel.setWidget(4, 0, m_statusLabel);
- formatter.setColSpan(4, 0, 7);
+ formatter.setColSpan(4, 0, 4);
RootPanel.get("body").add(rootPanel);
+
+ m_dragController.setBehaviorDragProxy(true);
+ m_dragController.setBehaviorDragStartSensitivity(4);
}
/**
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/ObjectTable.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/ObjectTable.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/ObjectTable.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/ObjectTable.java Sat Oct 3 20:47:50 2009
@@ -27,22 +27,27 @@
import org.apache.ace.client.services.AssociationServiceAsync;
import org.apache.ace.client.services.Descriptor;
+import com.allen_sauer.gwt.dnd.client.DragContext;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
+import com.allen_sauer.gwt.dnd.client.drop.DropController;
+import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FocusPanel;
+import com.google.gwt.user.client.ui.Label;
/**
* Basic table for using a valueobject per row.
*/
public abstract class ObjectTable<T extends Descriptor> extends FlexTable {
private final StatusHandler m_handler;
+ private final PickupDragController m_dragController;
private final Main m_main;
private final Map<T, ObjectPanel> m_panels = new HashMap<T, ObjectPanel>();
@@ -64,7 +69,6 @@
ObjectPanel panel = m_panels.get(t);
if (panel == null) {
panel = new ObjectPanel(t);
- panel.addToGroup(m_buttonGroup);
m_panels.put(t, panel);
}
panel.setText(getText(t));
@@ -82,24 +86,11 @@
};
/**
- * Deselects all other checkboxes in the same group when one gets clicked;
- * this way, we end up with a single selected button.
- */
- private final ClickHandler m_buttonGroup = new ClickHandler() {
- public void onClick(ClickEvent event) {
- for (ObjectPanel w : m_panels.values()) {
- if (!w.owns(event.getSource())) {
- w.setChecked(false);
- }
- }
- }
- };
-
- /**
* Sole constructor for this class; all subclasses must delegate to this one.
*/
- public ObjectTable(StatusHandler handler, Main main) {
+ public ObjectTable(StatusHandler handler, PickupDragController dragController, Main main) {
m_handler = handler;
+ m_dragController = dragController;
m_main = main;
}
@@ -127,23 +118,15 @@
protected abstract void remove(T object, AsyncCallback<Void> callback);
/**
- * States whether removal of this object is allowed.
+ * Links an object of ours with some other, that has been dropped onto our object.
*/
- protected boolean canDelete() {
- return true;
- }
+ protected abstract void link(T object, Descriptor other, AsyncCallback<Void> callback);
-
/**
- * Finds the currently checked object, or <code>null</code> if none is found.
+ * States whether removal of this object is allowed.
*/
- public T getCheckedObject() {
- for (Map.Entry<T, ObjectPanel> entry : m_panels.entrySet()) {
- if (entry.getValue().isChecked()) {
- return entry.getKey();
- }
- }
- return null;
+ protected boolean canDelete() {
+ return true;
}
/**
@@ -195,15 +178,17 @@
* unlink and delete the related object.
*/
private class ObjectPanel extends FocusPanel {
- private final CheckBox m_checkbox;
+ private final Label m_label;
private boolean m_selected;
+ private final T m_object;
public ObjectPanel(final T object) {
+ m_object = object;
DockPanel mainPanel = new DockPanel();
- m_checkbox = new CheckBox(getText(object));
- m_checkbox.setStylePrimaryName("objectpaneltext");
- mainPanel.add(m_checkbox, DockPanel.WEST);
+ m_label = new Label(getText(object));
+ m_label.setStylePrimaryName("objectpaneltext");
+ mainPanel.add(m_label, DockPanel.WEST);
if (canDelete()) {
Button delete = new Button("x");
@@ -235,7 +220,6 @@
public void onSuccess(Void result) {
m_main.updateHighlight();
}
-
});
event.stopPropagation(); // we don't want the panel to get the click
}
@@ -252,14 +236,30 @@
m_main.updateHighlight();
}
});
+
+ m_dragController.makeDraggable(this);
+ DropController dropController = new SimpleDropController(this) {
+ @Override
+ public void onDrop(DragContext context) {
+ Object other = ((ObjectPanel) context.draggable).getObject();
+ if (other instanceof Descriptor) {
+ link(object, (Descriptor) other, new AsyncCallback<Void>() {
+ public void onFailure(Throwable caught) {
+ Window.alert("Error linking objects.");
+ }
+ public void onSuccess(Void result) {
+ // Hurrah!
+ m_main.updateHighlight();
+ }
+ });
+ }
+ }
+ };
+ m_dragController.registerDropController(dropController);
}
- public boolean isChecked() {
- return m_checkbox.getValue();
- }
-
- public void setChecked(boolean b) {
- m_checkbox.setValue(b);
+ public T getObject() {
+ return m_object;
}
public boolean isSelected() {
@@ -270,40 +270,16 @@
m_selected = selected;
if (selected) {
addStyleDependentName("selected");
- m_checkbox.addStyleDependentName("selected");
+ m_label.addStyleDependentName("selected");
}
else {
removeStyleDependentName("selected");
- m_checkbox.removeStyleDependentName("selected");
+ m_label.removeStyleDependentName("selected");
}
}
- public void setRelated(boolean related) {
- if (related) {
- addStyleDependentName("related");
- }
- else {
- removeStyleDependentName("related");
- }
- }
-
public void setText(String text) {
- m_checkbox.setText(text);
- }
-
- /**
- * Returns whether the given object is 'owned' by this panel.
- */
- public boolean owns(Object object) {
- return object.equals(m_checkbox);
- }
-
- /**
- * Registers a clickhandler with the checkbox; this is used to make sure that at most one
- * checkbox in a column is checked.
- */
- public void addToGroup(ClickHandler handler) {
- m_checkbox.addClickHandler(handler);
+ m_label.setText(text);
}
}
}
Modified: incubator/ace/trunk/webui/src/org/apache/ace/client/TargetTable.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/client/TargetTable.java?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/client/TargetTable.java (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/client/TargetTable.java Sat Oct 3 20:47:50 2009
@@ -19,10 +19,15 @@
package org.apache.ace.client;
import org.apache.ace.client.Main.StatusHandler;
+import org.apache.ace.client.services.AssociationService;
+import org.apache.ace.client.services.AssociationServiceAsync;
+import org.apache.ace.client.services.Descriptor;
+import org.apache.ace.client.services.LicenseDescriptor;
import org.apache.ace.client.services.TargetDescriptor;
import org.apache.ace.client.services.TargetService;
import org.apache.ace.client.services.TargetServiceAsync;
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -31,9 +36,10 @@
*/
public class TargetTable extends ObjectTable<TargetDescriptor> {
private TargetServiceAsync m_targetService = GWT.create(TargetService.class);
+ private AssociationServiceAsync m_associationService = GWT.create(AssociationService.class);
- TargetTable(StatusHandler handler, Main main) {
- super(handler, main);
+ TargetTable(StatusHandler handler, PickupDragController dragController, Main main) {
+ super(handler, dragController, main);
}
@Override
@@ -60,4 +66,11 @@
protected boolean canDelete() {
return false;
}
+
+ @Override
+ protected void link(TargetDescriptor object, Descriptor other, AsyncCallback<Void> callback) {
+ if (other instanceof LicenseDescriptor) {
+ m_associationService.link((LicenseDescriptor) other, object, callback);
+ }
+ }
}
Modified: incubator/ace/trunk/webui/src/org/apache/ace/webui.gwt.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/webui/src/org/apache/ace/webui.gwt.xml?rev=821409&r1=821408&r2=821409&view=diff
==============================================================================
--- incubator/ace/trunk/webui/src/org/apache/ace/webui.gwt.xml (original)
+++ incubator/ace/trunk/webui/src/org/apache/ace/webui.gwt.xml Sat Oct 3 20:47:50 2009
@@ -12,7 +12,8 @@
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits -->
-
+ <inherits name='com.allen_sauer.gwt.dnd.gwt-dnd'/>
+
<!-- Specify the app entry point class. -->
<entry-point class='org.apache.ace.client.Main'/>
</module>