42 |
42 |
import com.google.gwt.resources.client.ClientBundle;
|
43 |
43 |
import com.google.gwt.resources.client.CssResource;
|
44 |
44 |
import com.google.gwt.resources.client.ImageResource;
|
45 |
|
import com.google.gwt.user.client.ui.Composite;
|
46 |
|
import com.google.gwt.user.client.ui.DisclosurePanel;
|
47 |
|
import com.google.gwt.user.client.ui.HTML;
|
48 |
|
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
49 |
|
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
50 |
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
51 |
|
import com.google.gwt.user.client.ui.Image;
|
52 |
|
import com.google.gwt.user.client.ui.Widget;
|
|
45 |
import com.google.gwt.user.client.ui.*;
|
53 |
46 |
|
54 |
47 |
public class PithosDisclosurePanel extends Composite {
|
55 |
48 |
|
... | ... | |
80 |
73 |
ImageResource ajaxLoader();
|
81 |
74 |
}
|
82 |
75 |
|
83 |
|
DisclosurePanel panel;
|
84 |
|
|
85 |
|
Resources resources;
|
86 |
|
|
87 |
|
final boolean ajaxLoader;
|
|
76 |
private final DisclosurePanel panel;
|
|
77 |
private final Resources resources;
|
|
78 |
private final String title;
|
88 |
79 |
|
89 |
80 |
public PithosDisclosurePanel(final Resources _resources, final String title, boolean open) {
|
90 |
|
this(_resources, title, open, false);
|
|
81 |
this(_resources, title, false, open);
|
91 |
82 |
}
|
92 |
83 |
|
93 |
|
public PithosDisclosurePanel(final Resources _resources, final String title, boolean open, boolean ajaxLoader) {
|
94 |
|
this.ajaxLoader = ajaxLoader;
|
|
84 |
public PithosDisclosurePanel(final Resources _resources, final String title, boolean ajaxLoader, boolean open) {
|
|
85 |
this.title = title;
|
95 |
86 |
|
96 |
|
resources = _resources;
|
|
87 |
this.resources = _resources;
|
97 |
88 |
resources.pithosDisclosurePanelCss().ensureInjected();
|
98 |
|
panel = new DisclosurePanel();
|
|
89 |
this.panel = new DisclosurePanel();
|
99 |
90 |
panel.addStyleName(resources.pithosDisclosurePanelCss().disclosurePanel());
|
100 |
|
panel.setHeader(createHeader(resources, title, open));
|
|
91 |
panel.setHeader(createHeader(resources, title, ajaxLoader, open));
|
101 |
92 |
panel.setOpen(open);
|
102 |
|
panel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
|
103 |
|
|
104 |
|
@Override
|
105 |
|
public void onOpen(OpenEvent<DisclosurePanel> event) {
|
106 |
|
panel.setHeader(createHeader(resources, title, true));
|
107 |
|
}
|
108 |
|
});
|
109 |
|
panel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
|
110 |
|
|
111 |
|
@Override
|
112 |
|
public void onClose(CloseEvent<DisclosurePanel> event) {
|
113 |
|
panel.setHeader(createHeader(resources, title, false));
|
114 |
|
}
|
115 |
|
});
|
116 |
|
|
|
93 |
|
|
94 |
if(!ajaxLoader) {
|
|
95 |
addOpenCloseHandlers();
|
|
96 |
}
|
|
97 |
|
117 |
98 |
initWidget(panel);
|
118 |
99 |
}
|
|
100 |
|
|
101 |
private void addOpenCloseHandlers() {
|
|
102 |
panel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
|
|
103 |
@Override
|
|
104 |
public void onOpen(OpenEvent<DisclosurePanel> event) {
|
|
105 |
panel.setHeader(createHeader(resources, title, false, true));
|
|
106 |
}
|
|
107 |
});
|
|
108 |
panel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
|
|
109 |
|
|
110 |
@Override
|
|
111 |
public void onClose(CloseEvent<DisclosurePanel> event) {
|
|
112 |
panel.setHeader(createHeader(resources, title, false, false));
|
|
113 |
}
|
|
114 |
});
|
|
115 |
}
|
|
116 |
|
|
117 |
public void setLoaded(boolean open) {
|
|
118 |
this.panel.setHeader(createHeader(resources, title, false, open));
|
|
119 |
addOpenCloseHandlers();
|
|
120 |
}
|
119 |
121 |
|
120 |
|
Widget createHeader(Resources resources, String title, boolean open) {
|
|
122 |
Widget createHeader(Resources resources, String title, boolean ajaxLoader, boolean open) {
|
121 |
123 |
HorizontalPanel header = new HorizontalPanel();
|
122 |
124 |
|
123 |
125 |
Image img = new Image(resources.icon());
|
124 |
126 |
header.add(img);
|
125 |
|
if(ajaxLoader) {
|
126 |
|
final Image alImg = new Image(resources.ajaxLoader());
|
127 |
|
header.add(alImg);
|
128 |
|
}
|
129 |
127 |
header.setCellVerticalAlignment(img, HasVerticalAlignment.ALIGN_MIDDLE);
|
130 |
128 |
header.setCellWidth(img, "32px");
|
131 |
129 |
HTML titleHtml = new HTML(title);
|
132 |
130 |
header.add(titleHtml);
|
133 |
131 |
header.setCellVerticalAlignment(titleHtml, HasVerticalAlignment.ALIGN_MIDDLE);
|
134 |
|
Image arrow = new Image(open ? resources.open() : resources.closed());
|
|
132 |
Image arrow = new Image(ajaxLoader ? resources.ajaxLoader() : open ? resources.open() : resources.closed());
|
135 |
133 |
arrow.addStyleName(resources.pithosDisclosurePanelCss().arrow());
|
136 |
134 |
header.add(arrow);
|
137 |
135 |
header.setCellHorizontalAlignment(arrow, HasHorizontalAlignment.ALIGN_RIGHT);
|