/**
* Copyright (C) Gadglet .
*
* This file is part of Gadglet
*
* Gadglet is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Gadglet is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Gadglet. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gadglet.gadgets.personalNotes.client;
import com.gadglet.client.gwt.GadgetNativeUtils;
import com.gadglet.client.gwt.GadgetUtils;
import com.gadglet.client.gwt.core.GadgletQuery;
import com.gadglet.client.gwt.core.GadgletRequest;
import com.gadglet.client.gwt.core.GadgletResponse;
import com.gadglet.client.gwt.ui.DebugDialogBox;
import com.gadglet.client.gwt.ui.ProfileViewMainPanel;
import com.gadglet.client.gwt.ui.SimpleDialogBox;
import com.gadglet.gadgets.personalNotes.shared.Params;
import com.gadglet.params.ReqActionTypes;
import com.gadglet.params.ReqTypes;
import com.gadglet.params.SortTypes;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.gadgets.client.ContentSection;
import com.google.gwt.gadgets.client.Gadget.ContentType;
import com.google.gwt.gadgets.client.Gadget.InjectContent;
import com.google.gwt.gadgets.client.PreferencesFeature;
import com.google.gwt.gadgets.client.PreferencesProvider;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* The Gadget Profile view
* <br>
* This view is used in Gmail Side bar and enables to :
* <li> view items
* <li> Navigate to Canvas view
*
*/
@InjectContent(files = "home.html")
@ContentType(type = "html", views = {"profile"})
public class PersonalNotesProfileView extends ContentSection<PersonalNotesGadget>{
private DebugDialogBox debug = null;
final GadgletQuery viewPersonalNotesQry = new GadgletQuery(
ReqTypes.MINGLET);
final ViewPersonalNotes viewPersonalNotesRequest = new ViewPersonalNotes(
viewPersonalNotesQry);
final Grid results = new Grid();
protected final HorizontalPanel paging = new HorizontalPanel();
final Button prevButton = new Button();
final Button nextButton = new Button();
final PreferencesFeature prefsUtils = PreferencesProvider.get();
final SimpleDialogBox serverMessage = SimpleDialogBox.getMesseageDialogBox();
@Override
public void init(PersonalNotesGadget gadget ) {
Image expand = new Image(GadgetUtils.getIconURL("expand",
null, false));
expand.setTitle(prefsUtils.getMsg("gadgetLabelgadgetLabelExpand"));
expand.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
try {
GadgetNativeUtils.requestNavigateToCanvas("");
} catch (Exception e) {
serverMessage.showError( e.getMessage());
}
}
});
debug = DebugDialogBox.getErrorNotifier();
prevButton.setText(prefsUtils.getMsg("gadgetLabelPrevious"));
nextButton.setText(prefsUtils.getMsg("gadgetLabelNext"));
final ProfileViewMainPanel mainPanel = new ProfileViewMainPanel();
mainPanel.getHeader().add(expand);
final VerticalPanel priority= new VerticalPanel();
final RadioButton highPriority = new RadioButton("priorityFilter",prefsUtils.getMsg("gadgetLabelHigh"));
final RadioButton medPriority = new RadioButton("priorityFilter",prefsUtils.getMsg("gadgetLabelMedium"));
final RadioButton lowPriority = new RadioButton("priorityFilter",prefsUtils.getMsg("gadgetLabelLow"));
lowPriority.setValue(true);
priority.add(highPriority);
priority.add(medPriority);
priority.add(lowPriority);
final PrioritySelection selection = new PrioritySelection(viewPersonalNotesQry,viewPersonalNotesRequest);
mainPanel.add(selection.getPanel());
mainPanel.add(results);
RootPanel.get().add(mainPanel.getGadgetPanel());
viewPersonalNotesQry.setRequestAction(ReqActionTypes.VIEW);
viewPersonalNotesQry.addSortBy("gadgetCreation", SortTypes.ASC);
viewPersonalNotesQry
.setReturnField("personalNotesMessage,gadgetCreation");
viewPersonalNotesQry.setStartItemsFrom(0);
viewPersonalNotesQry.setItemsNum(5);
viewPersonalNotesRequest.makeRequest();
prevButton.setVisible(false);
prevButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
viewPersonalNotesQry.setStartItemsFrom(viewPersonalNotesQry
.getStartFrom()
- viewPersonalNotesQry.getItemNum());
viewPersonalNotesRequest.makeRequest();
}
});
paging.add(prevButton);
nextButton.setVisible(false);
nextButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
viewPersonalNotesQry.setStartItemsFrom(viewPersonalNotesQry
.getStartFrom()
+ viewPersonalNotesQry.getItemNum());
viewPersonalNotesRequest.makeRequest();
}
});
paging.add(nextButton);
}
public class ViewPersonalNotes extends GadgletRequest {
GadgletResponse jResponse;
ViewPersonalNotes(GadgletQuery req) {
super(req);
}
/*
* Process the results and add to UI
*/
@Override
protected void processResults(GadgletResponse data) {
jResponse = data;
if (jResponse.isSuccessful()) {
results.resize(1, 4);
results.clear();
int index;
for (index = 0; index < jResponse.getRootItemsNum(); index++){
results.setWidget(index, 0, new Image(GadgetUtils.getGadgetIconURL(jResponse.getStringItemValue(
Params.PRIORITY.getParamName(), index), null, false)));
results.setWidget(index, 1, new HTML(jResponse.getStringItemValue(
Params.MESSAGE.getParamName(), index)));
results.resize(index+3, 4);
}
if (viewPersonalNotesQry.getStartFrom() > 0)
prevButton.setVisible(true);
else
prevButton.setVisible(false);
if (jResponse.hasMoreItems())
nextButton.setVisible(true);
else
nextButton.setVisible(false);
results.setWidget(index, 0, paging);
}
else {
debug.showError(1, jResponse.getError());
}
}
}
}