ingo@523: package de.intevation.flys.client.client.ui.chart;
ingo@523:
ingo@523: import com.google.gwt.core.client.GWT;
raimund@1286: import com.google.gwt.user.client.rpc.AsyncCallback;
ingo@523:
ingo@523: import com.smartgwt.client.types.ListGridFieldType;
ingo@523: import com.smartgwt.client.widgets.grid.ListGridField;
ingo@523: import com.smartgwt.client.widgets.layout.VLayout;
raimund@1286: import com.smartgwt.client.widgets.grid.events.RowContextClickEvent;
raimund@1286: import com.smartgwt.client.widgets.grid.events.RowContextClickHandler;
raimund@1286: import com.smartgwt.client.widgets.menu.Menu;
raimund@1286: import com.smartgwt.client.widgets.menu.MenuItem;
raimund@1286: import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
raimund@1286: import com.smartgwt.client.widgets.menu.events.ClickHandler;
ingo@523:
ingo@523: import de.intevation.flys.client.shared.model.Collection;
ingo@524: import de.intevation.flys.client.shared.model.Theme;
ingo@805: import de.intevation.flys.client.shared.model.OutputMode;
raimund@1286: import de.intevation.flys.client.shared.model.FacetRecord;
raimund@1286: import de.intevation.flys.client.shared.model.CollectionItemAttribute;
ingo@523:
ingo@523: import de.intevation.flys.client.client.FLYSConstants;
ingo@805: import de.intevation.flys.client.client.ui.ThemePanel;
raimund@1286: import de.intevation.flys.client.client.Config;
raimund@1287: import de.intevation.flys.client.client.ui.CollectionView;
ingo@523:
felix@854: import de.intevation.flys.client.client.services.FeedService;
felix@854: import de.intevation.flys.client.client.services.FeedServiceAsync;
raimund@1286: import de.intevation.flys.client.client.services.CollectionItemAttributeService;
raimund@1286: import de.intevation.flys.client.client.services.CollectionItemAttributeServiceAsync;
ingo@523:
ingo@523: /**
ingo@523: * @author Ingo Weinzierl
ingo@523: */
ingo@805: public class ChartThemePanel extends ThemePanel {
ingo@805:
ingo@523: /** The interface that provides i18n messages. */
felix@858: protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
ingo@526:
raimund@1286: /** The collection */
raimund@1286: protected Collection collection;
raimund@1286:
raimund@1287: /** The collection view*/
raimund@1287: protected CollectionView view;
raimund@1287:
raimund@1286: /** The service used to get collection item attributes. */
raimund@1286: protected CollectionItemAttributeServiceAsync itemAttributeService =
raimund@1286: GWT.create(CollectionItemAttributeService.class);
raimund@1286:
felix@854: public static final String GRID_FIELD_ACTIVE = "active";
felix@854: public static final String GRID_FIELD_NAME = "name";
felix@854: public static final String GRID_FIELD_ACTIONS = "actions";
ingo@523:
felix@854: FeedServiceAsync feedService = GWT.create(
felix@854: de.intevation.flys.client.client.services.FeedService.class);
ingo@523:
ingo@523: public ChartThemePanel(Collection collection, OutputMode mode) {
ingo@805: super(collection, mode);
raimund@1286: this.collection = collection;
ingo@523:
ingo@523: initGrid();
ingo@523: initLayout();
ingo@523:
ingo@523: updateGrid();
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * Initializes the layout of this panel.
ingo@523: */
ingo@523: protected void initLayout() {
ingo@523: setWidth100();
ingo@523: setHeight100();
ingo@523:
ingo@523: VLayout layout = new VLayout();
ingo@523: layout.setWidth100();
ingo@523: layout.setHeight100();
ingo@523:
ingo@523: layout.addMember(list);
ingo@527: layout.addMember(navigation);
ingo@523:
ingo@523: addChild(layout);
ingo@523: }
ingo@523:
ingo@523:
ingo@523: /**
ingo@523: * Initializes the components (columns) of the theme grid.
ingo@523: */
ingo@523: protected void initGrid() {
ingo@523: list.setCanEdit(true);
ingo@523: list.setCanSort(false);
felix@858: list.setShowRecordComponents(false);
ingo@523: list.setShowRecordComponentsByCell(true);
ingo@523: list.setShowHeader(true);
ingo@523: list.setShowHeaderContextMenu(false);
ingo@523: list.setWidth100();
ingo@523: list.setHeight100();
ingo@523:
ingo@523: list.addEditCompleteHandler(this);
raimund@1286: list.addRowContextClickHandler(new RowContextClickHandler() {
raimund@1286: public void onRowContextClick(RowContextClickEvent event) {
raimund@1286: FacetRecord record = (FacetRecord) event.getRecord();
raimund@1286:
raimund@1286: Menu menu = createContextMenu(record);
raimund@1286: list.setContextMenu(menu);
raimund@1286: menu.showContextMenu();
raimund@1286:
raimund@1286: event.cancel();
raimund@1286: }
raimund@1286: });
ingo@523:
ingo@1288: ListGridField active = new ListGridField(GRID_FIELD_ACTIVE, " ", 20);
ingo@523: active.setType(ListGridFieldType.BOOLEAN);
ingo@523:
ingo@523: ListGridField name = new ListGridField(
ingo@523: GRID_FIELD_NAME, MSG.chart_themepanel_header_themes());
ingo@523: name.setType(ListGridFieldType.TEXT);
ingo@523:
felix@858: list.setFields(active, name);
ingo@523: }
ingo@523:
ingo@523:
raimund@1286: protected Menu createContextMenu(final FacetRecord record) {
raimund@1286: Menu menu = new Menu();
raimund@1286:
raimund@1286: MenuItem properties = new MenuItem(MSG.properties());
raimund@1286: properties.addClickHandler(new ClickHandler() {
raimund@1286: public void onClick(MenuItemClickEvent evt) {
raimund@1286: GWT.log("clicked properties");
raimund@1286: getItemAttributes(record);
raimund@1286: }
raimund@1286: });
raimund@1286: menu.addItem(properties);
raimund@1286: return menu;
raimund@1286: }
raimund@1286:
raimund@1286:
ingo@805: @Override
ingo@805: public void activateTheme(Theme theme, boolean active) {
ingo@805: theme.setActive(active ? 1 : 0);
ingo@527: }
raimund@1286:
raimund@1286:
raimund@1292: protected void getItemAttributes(final FacetRecord record) {
raimund@1286: Config config = Config.getInstance();
raimund@1286: String url = config.getServerUrl();
raimund@1286: String locale = config.getLocale();
raimund@1286:
raimund@1286: String artifact = record.getTheme().getArtifact();
raimund@1286:
raimund@1286: itemAttributeService.getCollectionItemAttribute(
raimund@1286: this.collection,
raimund@1286: artifact,
raimund@1286: url,
raimund@1286: locale,
raimund@1286: new AsyncCallback() {
raimund@1286: public void onFailure (Throwable caught) {
raimund@1286: GWT.log("Could not get Collection item attributes.");
raimund@1286: }
raimund@1286: public void onSuccess(CollectionItemAttribute cia) {
raimund@1286: GWT.log("Successfully loaded collectionitem attributes.");
raimund@1287: StyleEditorWindow win = new StyleEditorWindow(
raimund@1287: collection,
raimund@1292: cia,
raimund@1292: record);
raimund@1287: win.setCollectionView(view);
raimund@1287: win.show();
raimund@1286: }
raimund@1286: });
raimund@1286: }
raimund@1287:
raimund@1287:
raimund@1287: public void setCollectionView (CollectionView view) {
raimund@1287: this.view = view;
raimund@1287: }
ingo@523: }
ingo@523: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :