Revision 67d30f02

b/src/gr/grnet/pithos/web/client/PithosDisclosurePanel.java
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);
b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeView.java
157 157
    public OtherSharedTreeView(OtherSharedTreeViewModel viewModel, boolean ajaxLoader) {
158 158
        this.model = viewModel;
159 159
        
160
        PithosDisclosurePanel panel = new PithosDisclosurePanel((Resources) GWT.create(Resources.class), Const.TXT_SHARED_WITH_ME, false, ajaxLoader);
160
        PithosDisclosurePanel panel = new PithosDisclosurePanel((Resources) GWT.create(Resources.class), Const.TXT_SHARED_WITH_ME, ajaxLoader, false);
161 161
        /*
162 162
         * Create the tree using the model. We use <code>null</code> as the default
163 163
         * value of the root node. The default value will be passed to
......
165 165
         */
166 166
        CellTree.Resources res = GWT.create(BasicResources.class);
167 167
        tree = new CellTree(model, null, res);
168
        tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
168
        if(!ajaxLoader) {
169
            tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
170
        }
169 171

  
170 172
        panel.setContent(tree);
171 173
        initWidget(panel);

Also available in: Unified diff