Skip to content

Commit e9ec580

Browse files
refactor to action button with rpc events
1 parent 37b6249 commit e9ec580

File tree

12 files changed

+91
-34
lines changed

12 files changed

+91
-34
lines changed

WebContent/WEB-INF/web.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@
88
<param-value>false</param-value>
99
</context-param>
1010
<servlet>
11-
<servlet-name>ResetButtonForTextField Application</servlet-name>
11+
<servlet-name>ActionButtonTextField Application</servlet-name>
1212
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
1313
<init-param>
1414
<description>
1515
Vaadin UI class to use</description>
1616
<param-name>UI</param-name>
17-
<param-value>org.vaadin.resetbuttonfortextfield.ResetButtonForTextFieldTestUI</param-value>
17+
<param-value>org.vaadin.actionbuttontextfield.ActionButtonTextFieldTestUI</param-value>
1818
</init-param>
1919
<init-param>
2020
<description>
2121
Application widgetset</description>
2222
<param-name>widgetset</param-name>
23-
<param-value>org.vaadin.resetbuttonfortextfield.widgetset.ResetButtonForTextFieldWidgetset</param-value>
23+
<param-value>org.vaadin.actionbuttontextfield.widgetset.ActionButtonForTextFieldWidgetset</param-value>
2424
</init-param>
2525
</servlet>
2626
<servlet-mapping>
27-
<servlet-name>ResetButtonForTextField Application</servlet-name>
27+
<servlet-name>ActionButtonTextField Application</servlet-name>
2828
<url-pattern>/*</url-pattern>
2929
</servlet-mapping>
3030
<welcome-file-list>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package org.vaadin.actionbuttontextfield;
2+
3+
import com.vaadin.server.AbstractClientConnector;
4+
import com.vaadin.server.AbstractExtension;
5+
import com.vaadin.ui.TextField;
6+
import com.vaadin.util.ReflectTools;
7+
import org.vaadin.actionbuttontextfield.widgetset.client.ActionButtonTextFieldRpc;
8+
9+
import java.lang.reflect.Method;
10+
import java.util.EventObject;
11+
12+
public class ActionButtonTextField extends AbstractExtension {
13+
14+
public static ActionButtonTextField extend(TextField field) {
15+
ActionButtonTextField me = new ActionButtonTextField();
16+
me.extend((AbstractClientConnector) field);
17+
return me;
18+
}
19+
20+
public interface ClickedActionButtonEventListener {
21+
static Method METHOD = ReflectTools.findMethod(ClickedActionButtonEventListener.class,
22+
"go", ClickedActionButtonEvent.class);
23+
24+
public void go(ClickedActionButtonEvent clickedActionButtonEvent);
25+
}
26+
27+
public class ClickedActionButtonEvent extends EventObject {
28+
29+
public ClickedActionButtonEvent(ActionButtonTextField actionButtonTextField) {
30+
super(actionButtonTextField);
31+
}
32+
33+
public ActionButtonTextField getTextField() {
34+
return (ActionButtonTextField) getSource();
35+
}
36+
37+
}
38+
39+
public ActionButtonTextField() {
40+
registerRpc(new ActionButtonTextFieldRpc() {
41+
@Override
42+
public void go() {
43+
fireEvent(new ClickedActionButtonEvent(ActionButtonTextField.this));
44+
}
45+
});
46+
}
47+
48+
public void addExtraButtonClickListener(ClickedActionButtonEventListener listener) {
49+
super.addListener(ClickedActionButtonEvent.class, listener, ClickedActionButtonEventListener.METHOD);
50+
}
51+
52+
public void removeRefreshListener(ClickedActionButtonEventListener listener) {
53+
super.removeListener(ClickedActionButtonEvent.class, listener,
54+
ClickedActionButtonEventListener.METHOD);
55+
}
56+
57+
}

src/org/vaadin/resetbuttonfortextfield/ResetButtonForTextFieldTestUI.java renamed to src/org/vaadin/actionbuttontextfield/ActionButtonTextFieldTestUI.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
package org.vaadin.resetbuttonfortextfield;
2-
3-
import java.util.Date;
1+
package org.vaadin.actionbuttontextfield;
42

53
import com.vaadin.data.Property;
64
import com.vaadin.data.Property.ValueChangeEvent;
75
import com.vaadin.event.FieldEvents;
86
import com.vaadin.event.FieldEvents.TextChangeEvent;
97
import com.vaadin.server.VaadinRequest;
10-
import com.vaadin.ui.Button;
8+
import com.vaadin.ui.*;
119
import com.vaadin.ui.Button.ClickEvent;
12-
import com.vaadin.ui.FormLayout;
13-
import com.vaadin.ui.Label;
14-
import com.vaadin.ui.TextField;
15-
import com.vaadin.ui.UI;
10+
11+
import java.util.Date;
1612

1713
@SuppressWarnings("serial")
18-
public class ResetButtonForTextFieldTestUI extends UI {
14+
public class ActionButtonTextFieldTestUI extends UI {
1915

2016
@Override
2117
protected void init(VaadinRequest request) {
@@ -24,7 +20,13 @@ protected void init(VaadinRequest request) {
2420
setContent(layout);
2521

2622
final TextField tf = new TextField("Type something, please");
27-
ResetButtonForTextField.extend(tf);
23+
ActionButtonTextField actionButtonTextField = ActionButtonTextField.extend(tf);
24+
actionButtonTextField.addExtraButtonClickListener(new ActionButtonTextField.ClickedActionButtonEventListener() {
25+
@Override
26+
public void go(ActionButtonTextField.ClickedActionButtonEvent clickedActionButtonEvent) {
27+
System.out.println("HERE!!!");
28+
}
29+
});
2830
layout.addComponent(tf);
2931
tf.setImmediate(true);
3032
tf.setWidth("300px");
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
33
<module>
44
<inherits name="com.vaadin.DefaultWidgetSet" />
5-
<stylesheet src="resetbuttonfortextfield/styles.css" />
5+
<stylesheet src="actionbuttontextfield/styles.css" />
66

77

88
<!--
@@ -18,8 +18,8 @@
1818
The value gecko1_8 is used for Firefox 3 and later and safari is used for
1919
webkit based browsers including Google Chrome.
2020
-->
21-
<!-- <set-property name="user.agent" value="gecko1_8"/> -->
22-
21+
<set-property name="user.agent" value="gecko1_8"/>
22+
2323
<!--
2424
To enable SuperDevMode, uncomment this line.
2525
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
package org.vaadin.resetbuttonfortextfield.widgetset.client;
2-
3-
import org.vaadin.resetbuttonfortextfield.ResetButtonForTextField;
1+
package org.vaadin.actionbuttontextfield.widgetset.client;
42

53
import com.google.gwt.core.client.Scheduler;
64
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -16,15 +14,17 @@
1614
import com.vaadin.client.extensions.AbstractExtensionConnector;
1715
import com.vaadin.client.ui.VTextField;
1816
import com.vaadin.shared.ui.Connect;
17+
import org.vaadin.actionbuttontextfield.ActionButtonTextField;
1918

20-
@Connect(ResetButtonForTextField.class)
21-
public class ResetButtonForTextFieldConnector extends
19+
@Connect(ActionButtonTextField.class)
20+
public class ActionButtonTextFieldConnector extends
2221
AbstractExtensionConnector implements KeyUpHandler,
2322
AttachEvent.Handler, StateChangeEvent.StateChangeHandler {
2423
private static final long serialVersionUID = -737765038361894693L;
2524

2625
public static final String CLASSNAME = "resetbuttonfortextfield";
2726

27+
2828
private VTextField textField;
2929
private Element resetButtonElement;
3030

@@ -57,7 +57,7 @@ public native void addResetButtonClickListener(Element el)
5757
/*-{
5858
var self = this;
5959
el.onclick = $entry(function() {
60-
self.@org.vaadin.resetbuttonfortextfield.widgetset.client.ResetButtonForTextFieldConnector::clearTextField()();
60+
self.@org.vaadin.actionbuttontextfield.widgetset.client.ActionButtonTextFieldConnector::clearTextField()();
6161
});
6262
}-*/;
6363

@@ -100,5 +100,6 @@ private void clearTextField() {
100100
textField.valueChange(true);
101101
updateResetButtonVisibility();
102102
textField.getElement().focus();
103+
getRpcProxy(ActionButtonTextFieldRpc.class).go();
103104
}
104105
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.vaadin.actionbuttontextfield.widgetset.client;
2+
3+
import com.vaadin.shared.communication.ServerRpc;
4+
5+
6+
public interface ActionButtonTextFieldRpc extends ServerRpc {
7+
public void go();
8+
}

0 commit comments

Comments
 (0)