/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2014, Geomatys * * This library 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; * version 2.1 of the License. * * This library 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. */ package org.geotoolkit.gui.javafx.style.graduation; import org.geotoolkit.display2d.ext.graduation.GraduationSymbolizer; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.geometry.HPos; import javafx.scene.control.Label; import javafx.scene.layout.GridPane; import static javafx.scene.layout.GridPane.setHalignment; import org.geotoolkit.gui.javafx.style.FXFont; import org.geotoolkit.gui.javafx.style.FXListExpression; import org.geotoolkit.gui.javafx.style.FXMode; import org.geotoolkit.gui.javafx.style.FXNumberExpression; import org.geotoolkit.gui.javafx.style.FXStroke; import org.geotoolkit.gui.javafx.style.FXStyleElementController; import org.geotoolkit.gui.javafx.style.FXTextExpression; /** * * @author Johann Sorel (Geomatys) */ public class FXGraduation extends FXStyleElementController<GraduationSymbolizer.Graduation> { @FXML private GridPane uiGrid; @FXML private FXNumberExpression uiSize; @FXML private FXNumberExpression uiStart; @FXML private FXNumberExpression uiOffset; @FXML private Label uiOffsetLbl; @FXML private FXNumberExpression uiStep; @FXML private FXListExpression uiReverse; @FXML private Label uiReverseLbl; @FXML private FXListExpression uiSide; @FXML private Label uiSideLbl; @FXML private FXTextExpression uiUnit; @FXML private FXTextExpression uiFormat; @FXML private Label uiFormatLbl; @FXML private FXStroke uiStroke; @FXML private FXFont uiFont; @Override public Class<GraduationSymbolizer.Graduation> getEditedClass() { return GraduationSymbolizer.Graduation.class; } @Override public GraduationSymbolizer.Graduation newValue() { return new GraduationSymbolizer.Graduation(); } @Override public void initialize() { super.initialize(); uiSide.getEditor().setItems(FXCollections.observableArrayList( GraduationSymbolizer.SIDE_LEFT, GraduationSymbolizer.SIDE_RIGHT, GraduationSymbolizer.SIDE_BOTH)); uiReverse.getEditor().setItems(FXCollections.observableArrayList( GraduationSymbolizer.DIRECTION_FORWARD, GraduationSymbolizer.DIRECTION_REVERSE)); final ChangeListener changeListener = (ChangeListener) (ObservableValue observable, Object oldValue, Object newValue) -> { if(updating) return; final GraduationSymbolizer.Graduation element = new GraduationSymbolizer.Graduation(); element.setSize(uiSize.valueProperty().get()); element.setStart(uiStart.valueProperty().get()); element.setOffset(uiOffset.valueProperty().get()); element.setStep(uiStep.valueProperty().get()); element.setReverse(uiReverse.valueProperty().get()); element.setSide(uiSide.valueProperty().get()); element.setUnit(uiUnit.valueProperty().get()); element.setFormat(uiFormat.valueProperty().get()); element.setStroke(uiStroke.valueProperty().get()); element.setFont(uiFont.valueProperty().get()); value.set(element); }; uiSize.valueProperty().addListener(changeListener); uiStart.valueProperty().addListener(changeListener); uiOffset.valueProperty().addListener(changeListener); uiStep.valueProperty().addListener(changeListener); uiReverse.valueProperty().addListener(changeListener); uiSide.valueProperty().addListener(changeListener); uiUnit.valueProperty().addListener(changeListener); uiFormat.valueProperty().addListener(changeListener); uiStroke.valueProperty().addListener(changeListener); uiFont.valueProperty().addListener(changeListener); FXStyleElementController.configureAdvancedProperty( uiFormat,uiFormatLbl, uiSide,uiSideLbl, uiReverse,uiReverseLbl, uiOffset,uiOffsetLbl ); final FXMode mode = new FXMode(); uiGrid.add(mode, 1, 0, 2, 1); setHalignment(mode, HPos.RIGHT); } @Override protected void updateEditor(GraduationSymbolizer.Graduation styleElement) { if(styleElement!=null){ uiSize.valueProperty().setValue(styleElement.getSize()); uiStart.valueProperty().setValue(styleElement.getStart()); uiOffset.valueProperty().setValue(styleElement.getOffset()); uiStep.valueProperty().setValue(styleElement.getStep()); uiReverse.valueProperty().setValue(styleElement.getReverse()); uiSide.valueProperty().setValue(styleElement.getSide()); uiUnit.valueProperty().setValue(styleElement.getUnit()); uiFormat.valueProperty().setValue(styleElement.getFormat()); uiStroke.valueProperty().setValue(styleElement.getStroke()); uiFont.valueProperty().setValue(styleElement.getFont()); } } }