Search in sources :

Example 1 with Portal

use of com.extjs.gxt.ui.client.widget.custom.Portal in project geo-platform by geosdi.

the class TimeRangePanel method buildComponents.

private void buildComponents() {
    this.dimensionRadioGroup = new RadioGroup();
    this.dimensionRadioGroup.setFieldLabel(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_dimensionRadioLabelText());
    fixedDimensionRadio.setBoxLabel(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_fixedDimensionRadioLabelText());
    fixedDimensionRadio.setHideLabel(Boolean.TRUE);
    this.dimensionRadioGroup.add(fixedDimensionRadio);
    variableDimensionRadio.setBoxLabel(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_variableDimensionRadioLabelText());
    variableDimensionRadio.setHideLabel(Boolean.TRUE);
    this.dimensionRadioGroup.add(variableDimensionRadio);
    this.fixedDimensionContainer.setVisible(Boolean.FALSE);
    this.variableDimensionContainer.setVisible(Boolean.FALSE);
    this.fixedDimensionRadio.addListener(Events.Change, new Listener<FieldEvent>() {

        @Override
        public void handleEvent(FieldEvent fe) {
            if (fixedDimensionRadio.getValue()) {
                fixedDimensionContainer.setVisible(Boolean.TRUE);
                variableDimensionContainer.setVisible(Boolean.FALSE);
            }
        }
    });
    this.variableDimensionRadio.addListener(Events.Change, new Listener<FieldEvent>() {

        @Override
        public void handleEvent(FieldEvent fe) {
            if (variableDimensionRadio.getValue()) {
                variableDimensionContainer.setVisible(Boolean.TRUE);
                fixedDimensionContainer.setVisible(Boolean.FALSE);
            }
        }
    });
    this.startStore = new ListStore<DimensionData>();
    this.startDimensionComboBox = new ComboBox<DimensionData>();
    this.startDimensionComboBox.setFieldLabel(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_startDimensionComboLabelText());
    this.startDimensionComboBox.setStore(this.startStore);
    this.startDimensionComboBox.setDisplayField(DimensionData.DIMENSION_KEY);
    this.startDimensionComboBox.setEditable(Boolean.FALSE);
    this.startDimensionComboBox.setTypeAhead(Boolean.TRUE);
    this.startDimensionComboBox.setTriggerAction(ComboBox.TriggerAction.ALL);
    this.startDimensionComboBox.addSelectionChangedListener(new SelectionChangedListener<DimensionData>() {

        @Override
        public void selectionChanged(SelectionChangedEvent<DimensionData> se) {
            if (se.getSelectedItem() != null) {
                endStore.removeAll();
                int indexStart = startStore.getModels().indexOf(se.getSelectedItem()) + 1;
                // System.out.println("Sublist end: " + (startStore.getModels().size() - 1));
                if (indexStart < startStore.getModels().size()) {
                    endDimensionComboBox.enable();
                    endStore.add(startStore.getModels().subList(startStore.indexOf(se.getSelectedItem()) + 1, startStore.getModels().size()));
                } else {
                    endDimensionComboBox.disable();
                }
            }
        }
    });
    this.endStore = new ListStore<DimensionData>();
    this.endDimensionComboBox = new ComboBox<DimensionData>();
    this.endDimensionComboBox.setFieldLabel(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_endDimensionComboLabelText());
    this.endDimensionComboBox.setStore(this.endStore);
    this.endDimensionComboBox.setDisplayField(DimensionData.DIMENSION_KEY);
    this.endDimensionComboBox.disable();
    this.endDimensionComboBox.setEditable(Boolean.FALSE);
    this.endDimensionComboBox.setTypeAhead(Boolean.TRUE);
    this.endDimensionComboBox.setTriggerAction(ComboBox.TriggerAction.ALL);
    dimensionSizeLabel = new Label();
    dimensionSizeLabel.setStyleAttribute("font-size", "12px");
    this.startFilterNumberField = new NumberField();
    this.startFilterNumberField.setFireChangeEventOnSetValue(Boolean.TRUE);
    this.startFilterNumberField.addListener(Events.Change, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            if (checkStartFieldValue()) {
                int fromFilter = startFilterNumberField.getValue().intValue();
                int position = startStore.getModels().size() - fromFilter - 1;
                String tooltip = (String) startStore.getModels().get(position).get(DimensionData.DIMENSION_KEY);
                // startStore.getModels().size() - fromFilter - 1).get(
                startFilterNumberField.setToolTip(tooltip);
                startTimeLabel.setHtml(tooltip);
                slider.setValue(position);
            } else {
                startTimeLabel.setHtml("");
                startFilterNumberField.setToolTip("");
            }
        }
    });
    startTimeLabel = new Label();
    startTimeLabel.setStyleAttribute("font-size", "1.3em");
    this.startFilterNumberField.setSize(50, 30);
    this.endFilterNumberField = new NumberField();
    this.endFilterNumberField.setFireChangeEventOnSetValue(Boolean.TRUE);
    endTimeLabel = new Label();
    endTimeLabel.setStyleAttribute("font-size", "1.3em");
    this.endFilterNumberField.addListener(Events.Change, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            if (checkEndFieldValue()) {
                int endFilter = endFilterNumberField.getValue().intValue();
                String tooltip = (String) startStore.getModels().get(endFilter).get(DimensionData.DIMENSION_KEY);
                // startStore.getModels().size() - endFilter - 1).
                endFilterNumberField.setToolTip(tooltip);
                endTimeLabel.setHtml(tooltip);
            } else {
                endTimeLabel.setHtml("");
                endFilterNumberField.setToolTip("");
            }
        }
    });
    this.endFilterNumberField.setSize(50, 30);
    FormPanel panel = new FormPanel();
    panel.setHeaderVisible(Boolean.FALSE);
    panel.setFrame(Boolean.TRUE);
    panel.setBorders(Boolean.FALSE);
    panel.setHeight(WIDGET_HEIGHT - 67);
    panel.add(this.dimensionRadioGroup);
    panel.setStyleAttribute("background-color", "white");
    this.variableDimensionContainer.add(dimensionSizeLabel, new FormData("100%"));
    Portal portal = new Portal(3);
    portal.setBorders(false);
    portal.setColumnWidth(0, .20);
    portal.setColumnWidth(1, .60);
    portal.setColumnWidth(2, .20);
    Portlet portlet = new Portlet();
    portlet.setLayout(new FitLayout());
    portlet.setHeaderVisible(false);
    portlet.setSize(50, 30);
    portlet.add(this.startFilterNumberField);
    portal.add(portlet, 0);
    portlet = new Portlet(new CenterLayout());
    portlet.setHeaderVisible(false);
    portlet.setSize(100, 30);
    this.rangeCheckBox = new CheckBox();
    rangeCheckBox.setValue(true);
    rangeCheckBox.setBoxLabel("range");
    portlet.add(rangeCheckBox);
    portlet.setBorders(false);
    portal.add(portlet, 1);
    portlet = new Portlet();
    portlet.setHeaderVisible(false);
    portlet.setSize(50, 30);
    portlet.add(this.endFilterNumberField);
    portal.add(portlet, 2);
    this.variableDimensionContainer.add(portal, new FormData("99%"));
    // 
    this.slider = new Slider() {

        @Override
        public void setValue(int value) {
            super.setValue(value);
            super.setMessage("" + (startStore.getModels().size() - value));
        }
    };
    slider.setIncrement(1);
    this.variableDimensionContainer.add(slider, new FormData("98%"));
    this.fixedDimensionContainer.add(this.startDimensionComboBox);
    this.fixedDimensionContainer.add(this.endDimensionComboBox);
    panel.add(this.fixedDimensionContainer, new FormData("100%"));
    panel.add(this.variableDimensionContainer, new FormData("100%"));
    super.add(panel);
    this.playSelectioListener = new SelectionListener<ButtonEvent>() {

        @Override
        public void componentSelected(ButtonEvent ce) {
            // System.out.println("Play button status: ");
            if (!playButton.isPressed()) {
                playButton.setText(ButtonsConstants.INSTANCE.playText());
                playButton.setIcon(AbstractImagePrototype.create(LayerResources.ICONS.playTime()));
                animationTimer.cancel();
            } else {
                Number startValueNumber = startFilterNumberField.getValue();
                if (startValueNumber == null) {
                    GeoPlatformMessage.alertMessage(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_timeFilterWarningTitleText(), LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_timeFilterWarningBodyText());
                } else {
                    slider.setValue(startStore.getModels().size() - startValueNumber.intValue() - 1);
                    playButton.setIcon(AbstractImagePrototype.create(LayerResources.ICONS.pauseTime()));
                    playButton.setText(ButtonsConstants.INSTANCE.pauseText());
                    playTimeFilter();
                }
            }
        }
    };
    playButton.addSelectionListener(playSelectioListener);
    playButton.setHeight(30);
    panel.addButton(playButton);
    Button apply = new Button(ButtonsConstants.INSTANCE.applyText());
    this.applyFilterSelectionListener = new SelectionListener<ButtonEvent>() {

        @Override
        public void componentSelected(ButtonEvent ce) {
            GPLayerTreeModel layerSelected = (GPLayerTreeModel) treePanel.getSelectionModel().getSelectedItem();
            IMementoSave mementoSave = MementoModuleInjector.MainInjector.getInstance().getMementoSave();
            AbstractMementoOriginalProperties memento = mementoSave.copyOriginalProperties(layerSelected);
            String layerName;
            if (layerSelected.getAlias() != null && layerSelected.getAlias().indexOf(LAYER_TIME_DELIMITER) != -1) {
                layerName = layerSelected.getAlias().substring(0, layerSelected.getAlias().indexOf(LAYER_TIME_DELIMITER));
            } else {
                layerName = layerSelected.getLabel();
            }
            if (fixedDimensionRadio.getValue()) {
                String timeFilter = (String) startDimensionComboBox.getValue().get(DimensionData.DIMENSION_KEY);
                if (endDimensionComboBox.getValue() != null) {
                    timeFilter += "/" + (String) endDimensionComboBox.getValue().get(DimensionData.DIMENSION_KEY);
                }
                layerSelected.setTimeFilter(timeFilter);
                layerSelected.setVariableTimeFilter(null);
                layerSelected.setAlias(layerName + LAYER_TIME_DELIMITER + layerSelected.getTimeFilter() + "]");
                WidgetPropertiesHandlerManager.fireEvent(labelEvent);
            } else {
                if ((rangeCheckBox.getValue() && !checkEndFieldValue()) || !checkStartFieldValue()) {
                    GeoPlatformMessage.errorMessage(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_timeFilterErrorTitleText(), LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_timeFilterErrorBodyText());
                    return;
                } else {
                    int fromFilter = slider.getValue();
                    String timeFilter = "" + (startStore.getModels().size() - fromFilter - 1);
                    String variableTimeFilter = (String) startStore.getModels().get(fromFilter).get(DimensionData.DIMENSION_KEY);
                    if (rangeCheckBox.getValue() && playButton.isPressed()) {
                        fromFilter = startStore.getModels().size() - startFilterNumberField.getValue().intValue() - 1;
                        timeFilter = "" + startFilterNumberField.getValue().intValue();
                        variableTimeFilter = (String) startStore.getModels().get(fromFilter).get(DimensionData.DIMENSION_KEY);
                        // 
                        int toFilter = slider.getValue();
                        timeFilter += "/" + (startStore.getModels().size() - slider.getValue() - 1);
                        variableTimeFilter += "/" + (String) startStore.getModels().get(toFilter).get(DimensionData.DIMENSION_KEY);
                    } else // This is usefull when press Apply button to show all the elements in range
                    if (rangeCheckBox.getValue() && endFilterNumberField.getValue() != null) {
                        fromFilter = startStore.getModels().size() - startFilterNumberField.getValue().intValue() - 1;
                        timeFilter = "" + startFilterNumberField.getValue().intValue();
                        variableTimeFilter = (String) startStore.getModels().get(fromFilter).get(DimensionData.DIMENSION_KEY);
                        // 
                        int toFilter = startStore.getModels().size() - endFilterNumberField.getValue().intValue() - 1;
                        timeFilter += "/" + endFilterNumberField.getValue().intValue();
                        variableTimeFilter += "/" + (String) startStore.getModels().get(toFilter).get(DimensionData.DIMENSION_KEY);
                    }
                    layerSelected.setTimeFilter(timeFilter);
                    layerSelected.setVariableTimeFilter(variableTimeFilter);
                    layerSelected.setAlias(layerName + LAYER_TIME_DELIMITER + layerSelected.getVariableTimeFilter() + "]");
                    WidgetPropertiesHandlerManager.fireEvent(labelEvent);
                    slider.setMessage(variableTimeFilter);
                    GeoPlatformMessage.infoMessage(LayerModuleConstants.INSTANCE.LayerTimeFilterWidget_timeFilterMessageTitleText(), LayerModuleMessages.INSTANCE.LayerTimeFilterWidget_layerStatusShowedMessage(timeFilter));
                }
            }
            mementoSave.putOriginalPropertiesInCache(memento);
            timeFilterLayerMapEvent.setLayerBean(layerSelected);
            GPHandlerManager.fireEvent(timeFilterLayerMapEvent);
            treePanel.refresh(layerSelected);
        }
    };
    apply.addSelectionListener(applyFilterSelectionListener);
    panel.addButton(apply);
    Button close = new Button(ButtonsConstants.INSTANCE.closeText(), new SelectionListener<ButtonEvent>() {

        @Override
        public void componentSelected(ButtonEvent ce) {
            startFilterNumberField.clear();
            startTimeLabel.setHtml("");
            endTimeLabel.setHtml("");
            endFilterNumberField.clear();
            WidgetPropertiesHandlerManager.fireEvent(new GPHideFilterWidgetEvent());
        }
    });
    panel.addButton(close);
}
Also used : Portlet(com.extjs.gxt.ui.client.widget.custom.Portlet) Slider(com.extjs.gxt.ui.client.widget.Slider) IMementoSave(org.geosdi.geoplatform.gui.client.model.memento.save.IMementoSave) Label(com.extjs.gxt.ui.client.widget.Label) DimensionData(org.geosdi.geoplatform.gui.client.widget.time.DimensionData) AbstractMementoOriginalProperties(org.geosdi.geoplatform.gui.client.model.memento.save.storage.AbstractMementoOriginalProperties) ToggleButton(com.extjs.gxt.ui.client.widget.button.ToggleButton) Button(com.extjs.gxt.ui.client.widget.button.Button) Portal(com.extjs.gxt.ui.client.widget.custom.Portal) CenterLayout(com.extjs.gxt.ui.client.widget.layout.CenterLayout) FitLayout(com.extjs.gxt.ui.client.widget.layout.FitLayout) FormData(com.extjs.gxt.ui.client.widget.layout.FormData) GPLayerTreeModel(org.geosdi.geoplatform.gui.model.tree.GPLayerTreeModel) GPHideFilterWidgetEvent(org.geosdi.geoplatform.gui.client.puregwt.filter.event.GPHideFilterWidgetEvent)

Aggregations

Label (com.extjs.gxt.ui.client.widget.Label)1 Slider (com.extjs.gxt.ui.client.widget.Slider)1 Button (com.extjs.gxt.ui.client.widget.button.Button)1 ToggleButton (com.extjs.gxt.ui.client.widget.button.ToggleButton)1 Portal (com.extjs.gxt.ui.client.widget.custom.Portal)1 Portlet (com.extjs.gxt.ui.client.widget.custom.Portlet)1 CenterLayout (com.extjs.gxt.ui.client.widget.layout.CenterLayout)1 FitLayout (com.extjs.gxt.ui.client.widget.layout.FitLayout)1 FormData (com.extjs.gxt.ui.client.widget.layout.FormData)1 IMementoSave (org.geosdi.geoplatform.gui.client.model.memento.save.IMementoSave)1 AbstractMementoOriginalProperties (org.geosdi.geoplatform.gui.client.model.memento.save.storage.AbstractMementoOriginalProperties)1 GPHideFilterWidgetEvent (org.geosdi.geoplatform.gui.client.puregwt.filter.event.GPHideFilterWidgetEvent)1 DimensionData (org.geosdi.geoplatform.gui.client.widget.time.DimensionData)1 GPLayerTreeModel (org.geosdi.geoplatform.gui.model.tree.GPLayerTreeModel)1