import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.ui.FocusListener;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
-public class ApplicationConnection implements EntryPoint {
+public class ApplicationConnection implements EntryPoint, FocusListener {
private String appUri;
private Vector pendingVariables = new Vector();
- private HashMap paintables = new HashMap();
+ private HashMap idToPaintable = new HashMap();
+
+ private HashMap paintableToId = new HashMap();
private WidgetFactory widgetFactory = new DefaultWidgetFactory();
}
public void registerPaintable(String id, Paintable paintable) {
- paintables.put(id, paintable);
+ idToPaintable.put(id, paintable);
+ paintableToId.put(paintable, id);
+ }
+
+ public void unregisterPaintable(Paintable p) {
+ idToPaintable.remove(paintableToId.get(p));
+ paintableToId.remove(p);
}
+ /**
+ * Returns Paintable element by its id
+ * @param id Paintable ID
+ */
public Paintable getPaintable(String id) {
- return (Paintable) paintables.get(id);
+ return (Paintable) idToPaintable.get(id);
}
private void addVariableToQueue(String paintableId, String variableName,
}
return contextMenu;
}
+
+ public void onFocus(Widget sender) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void onLostFocus(Widget sender) {
+ // TODO Auto-generated method stub
+
+ }
}
/** Paintable ID of this paintable */
private String pid;
+ private ApplicationConnection client;
+
public ICustomLayout() {
setElement(DOM.createDiv());
}
/** Update the layout from UIDL */
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-
+ this.client = client;
// Client manages general cases
if (client.updateComponent(this, uidl, false))
return;
/** Removes given widget from the layout */
public boolean remove(Widget w) {
+ client.unregisterPaintable((Paintable) w);
String location = getLocation(w);
if (location != null)
locationToWidget.remove(location);
locationToWidget.clear();
widgetToCaptionWrapper.clear();
}
-
}