Skip to content

Commit 534b96e

Browse files
committed
Adding live grid split view.
1 parent 477fc87 commit 534b96e

17 files changed

+1128
-183
lines changed

Diff for: application/src/main/java/com/sencha/gxt/demo/client/ClientFactory.java

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.sencha.gxt.demo.client.activity.ApplicationPlaceHistoryMapper;
1313
import com.sencha.gxt.demo.client.application.home.HomePlace;
1414
import com.sencha.gxt.demo.client.application.livegrid.LiveGridPlace;
15+
import com.sencha.gxt.demo.client.application.livesplitgrid.LiveSplitGridPlace;
1516
import com.sencha.gxt.demo.client.application.login.LoginPlace;
1617
import com.sencha.gxt.demo.client.application.simplegrid.SimpleGridPlace;
1718
import com.sencha.gxt.demo.client.application.splitgrid.SplitGridPlace;
@@ -110,5 +111,9 @@ public LiveGridPlace.Tokenizer getLiveGridTokenizer() {
110111
public SplitGridPlace.Tokenizer getSplitLiveGridTokenizer() {
111112
return new SplitGridPlace.Tokenizer();
112113
}
114+
115+
public LiveSplitGridPlace.Tokenizer getLiveSplitLiveGridTokenizer() {
116+
return new LiveSplitGridPlace.Tokenizer();
117+
}
113118

114119
}

Diff for: application/src/main/java/com/sencha/gxt/demo/client/GxtDemoGridsProjectEntryPoint.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,21 @@
22

33
import com.google.gwt.core.client.EntryPoint;
44
import com.google.gwt.user.client.ui.RootPanel;
5-
import com.sencha.gxt.widget.core.client.container.Viewport;
6-
75
import com.sencha.gxt.demo.client.application.ApplicationLayout;
6+
import com.sencha.gxt.widget.core.client.container.Viewport;
87

98
public class GxtDemoGridsProjectEntryPoint implements EntryPoint {
109

1110
private ClientFactory clientFactory;
12-
11+
1312
@Override
1413
public void onModuleLoad() {
1514
clientFactory = new ClientFactory();
16-
15+
1716
Viewport viewport = new Viewport();
1817
viewport.add(new ApplicationLayout(clientFactory));
1918

2019
RootPanel.get().add(viewport);
2120
}
22-
21+
2322
}

Diff for: application/src/main/java/com/sencha/gxt/demo/client/activity/ApplicationActivityMapper.java

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import com.sencha.gxt.demo.client.application.home.HomePlace;
99
import com.sencha.gxt.demo.client.application.livegrid.LiveGridActivity;
1010
import com.sencha.gxt.demo.client.application.livegrid.LiveGridPlace;
11+
import com.sencha.gxt.demo.client.application.livesplitgrid.LiveSplitGridActivity;
12+
import com.sencha.gxt.demo.client.application.livesplitgrid.LiveSplitGridPlace;
1113
import com.sencha.gxt.demo.client.application.login.LoginActivity;
1214
import com.sencha.gxt.demo.client.application.login.LoginPlace;
1315
import com.sencha.gxt.demo.client.application.simplegrid.SimpleGridActivity;
@@ -55,6 +57,10 @@ public Activity getActivity(Place place) {
5557

5658
} else if (place instanceof SplitGridPlace) {
5759
activity = new SplitGridActivity((SplitGridPlace) place, clientFactory);
60+
61+
} else if (place instanceof LiveSplitGridPlace) {
62+
activity = new LiveSplitGridActivity((LiveSplitGridPlace) place, clientFactory);
63+
5864
}
5965

6066
return activity;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.sencha.gxt.demo.client.application;
2+
import com.google.gwt.core.shared.GWT;
3+
import com.google.gwt.resources.client.ClientBundle;
4+
import com.google.gwt.resources.client.CssResource;
5+
6+
public interface AppBundle extends ClientBundle {
7+
8+
public static AppBundle INSTANCE = GWT.create(AppBundle.class);
9+
10+
// css selectors
11+
interface AppStyles extends CssResource {
12+
String hideScrollbar();
13+
}
14+
15+
// access to css selectors
16+
@Source("app_styles.gss")
17+
AppStyles appStyles();
18+
19+
}

Diff for: application/src/main/java/com/sencha/gxt/demo/client/application/ApplicationLayout.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ public void setClientFactory(ClientFactory clientFactory) {
4444
@Override
4545
public Widget asWidget() {
4646
if (widget == null) {
47+
// Be sure to inject the gss styles!
48+
AppBundle.INSTANCE.appStyles().ensureInjected();
49+
4750
header = new SimpleContainer();
4851
header.add(createHeader());
4952

@@ -104,7 +107,8 @@ private Widget createHeader() {
104107
Anchor anchorHome = new Anchor("Home", "#home:");
105108
Anchor anchorGrid = new Anchor("Simple Grid", "#simplegrid:");
106109
Anchor anchorLiveGrid = new Anchor("Live Grid", "#livegrid:");
107-
Anchor anchorSplitLiveGrid = new Anchor("Split Grid", "#splitgrid:");
110+
Anchor anchorSplitGrid = new Anchor("Split Grid", "#splitgrid:");
111+
Anchor anchorLiveSplitGrid = new Anchor("Live Split Grid", "#livesplitgrid:");
108112
Anchor anchorLogin = new Anchor("Login", "#login:");
109113

110114
BoxLayoutData layoutData = new BoxLayoutData();
@@ -114,11 +118,13 @@ private Widget createHeader() {
114118
flex.setFlex(1);
115119

116120
HBoxLayoutContainer header = new HBoxLayoutContainer(HBoxLayoutAlign.MIDDLE);
121+
header.setEnableOverflow(false);
117122
header.add(new HTML("Company"), layoutData);
118123
header.add(anchorHome, layoutData);
119124
header.add(anchorGrid, layoutData);
120125
header.add(anchorLiveGrid, layoutData);
121-
header.add(anchorSplitLiveGrid, layoutData);
126+
header.add(anchorSplitGrid, layoutData);
127+
header.add(anchorLiveSplitGrid, layoutData);
122128
header.add(new SimpleContainer(), flex); // align next item to the right
123129
header.add(anchorLogin, layoutData);
124130

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/*
2+
Styles for the app.
3+
*/
4+
5+
/* Hide the split left grid vertical scroll bar */
6+
.hideScrollbar {
7+
overflow: hidden !important;
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.sencha.gxt.demo.client.application.livesplitgrid;
2+
3+
import com.google.gwt.activity.shared.AbstractActivity;
4+
import com.google.gwt.event.shared.EventBus;
5+
import com.google.gwt.place.shared.Place;
6+
import com.google.gwt.user.client.ui.AcceptsOneWidget;
7+
8+
import com.sencha.gxt.demo.client.ClientFactory;
9+
10+
public class LiveSplitGridActivity extends AbstractActivity implements LiveSplitGridPresenter {
11+
12+
private LiveSplitGridView view;
13+
private ClientFactory clientFactory;
14+
private boolean running;
15+
16+
public LiveSplitGridActivity(LiveSplitGridPlace place, ClientFactory clientFactory) {
17+
this.clientFactory = clientFactory;
18+
}
19+
20+
/**
21+
* Invoked by the ActivityManager to start a new Activity
22+
*/
23+
@Override
24+
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {
25+
if (view == null) {
26+
view = new LiveSplitGridView();
27+
}
28+
29+
view.setPresenter(this);
30+
containerWidget.setWidget(view.asWidget());
31+
view.start();
32+
}
33+
34+
@Override
35+
public String mayStop() {
36+
String s = null;
37+
if (running == true) {
38+
s = "Please hold on. This activity is stopping.";
39+
}
40+
41+
return s;
42+
}
43+
44+
@Override
45+
public void goTo(Place place) {
46+
clientFactory.getPlaceController().goTo(place);
47+
}
48+
49+
@Override
50+
public void setRunning(boolean running) {
51+
this.running = running;
52+
}
53+
54+
@Override
55+
public ClientFactory getClientFactory() {
56+
return clientFactory;
57+
}
58+
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.sencha.gxt.demo.client.application.livesplitgrid;
2+
3+
import com.google.gwt.place.shared.Place;
4+
import com.google.gwt.place.shared.PlaceTokenizer;
5+
import com.google.gwt.place.shared.Prefix;
6+
7+
public class LiveSplitGridPlace extends Place {
8+
9+
/**
10+
* I'm not really using the tokenizer here, but good for example
11+
*/
12+
@Prefix("livesplitgrid")
13+
public static class Tokenizer implements PlaceTokenizer<LiveSplitGridPlace> {
14+
15+
public Tokenizer() {
16+
}
17+
18+
@Override
19+
public String getToken(LiveSplitGridPlace place) {
20+
String token = place.getToken();
21+
return token;
22+
}
23+
24+
@Override
25+
public LiveSplitGridPlace getPlace(String token) {
26+
return new LiveSplitGridPlace(token);
27+
}
28+
29+
}
30+
31+
private String token;
32+
33+
public LiveSplitGridPlace(String token) {
34+
this.token = token;
35+
}
36+
37+
public String getToken() {
38+
return token;
39+
}
40+
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.sencha.gxt.demo.client.application.livesplitgrid;
2+
3+
import com.sencha.gxt.demo.client.application.Presenter;
4+
5+
public interface LiveSplitGridPresenter extends Presenter {
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.sencha.gxt.demo.client.application.livesplitgrid;
2+
3+
import com.google.gwt.user.client.ui.HTML;
4+
import com.google.gwt.user.client.ui.IsWidget;
5+
import com.google.gwt.user.client.ui.Widget;
6+
import com.sencha.gxt.core.client.util.Margins;
7+
import com.sencha.gxt.demo.client.application.Presenter;
8+
import com.sencha.gxt.demo.client.application.livesplitgrid.widgets.LiveSplitGridsWidget;
9+
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
10+
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
11+
12+
public class LiveSplitGridView implements IsWidget {
13+
14+
private Presenter presenter;
15+
16+
private VerticalLayoutContainer widget;
17+
private LiveSplitGridsWidget gridWidget;
18+
19+
public void setPresenter(Presenter presenter) {
20+
this.presenter = presenter;
21+
}
22+
23+
public void start() {
24+
}
25+
26+
@Override
27+
public Widget asWidget() {
28+
if (widget == null) {
29+
HTML html = new HTML("This is a split or locking grid with the LiveGridView. This displays only renders data into the visible rows.");
30+
31+
gridWidget = new LiveSplitGridsWidget();
32+
33+
widget = new VerticalLayoutContainer();
34+
widget.add(html, new VerticalLayoutData(1, -1, new Margins(0, 10, 0, 10)));
35+
widget.add(gridWidget, new VerticalLayoutData(1, 1, new Margins(0, 0, 0, 0)));
36+
}
37+
38+
return widget;
39+
}
40+
41+
}

0 commit comments

Comments
 (0)