Search in sources :

Example 1 with TimeData

use of eu.hansolo.tilesfx.tools.TimeData in project tilesfx by HanSolo.

the class Tile method init.

// ******************** Initialization ************************************
private void init() {
    _minValue = 0;
    _maxValue = 100;
    value = new DoublePropertyBase(_minValue) {

        private void update() {
            final double VALUE = get();
            withinSpeedLimit = !(Instant.now().minusMillis(getAnimationDuration()).isBefore(lastCall));
            lastCall = Instant.now();
            if (isAnimated() && withinSpeedLimit) {
                long animationDuration = isReturnToZero() ? (long) (0.2 * getAnimationDuration()) : getAnimationDuration();
                timeline.stop();
                final KeyValue KEY_VALUE = new KeyValue(currentValue, VALUE, Interpolator.SPLINE(0.5, 0.4, 0.4, 1.0));
                final KeyFrame KEY_FRAME = new KeyFrame(Duration.millis(animationDuration), KEY_VALUE);
                timeline.getKeyFrames().setAll(KEY_FRAME);
                timeline.play();
            } else {
                currentValue.set(VALUE);
                fireTileEvent(FINISHED_EVENT);
            }
            if (isAveragingEnabled()) {
                movingAverage.addData(new TimeData(VALUE));
            }
        }

        @Override
        protected void invalidated() {
            update();
        }

        @Override
        public void set(final double VALUE) {
            // only get invalid if the the new value is different from the old value
            if (Helper.equals(VALUE, getFormerValue())) {
                update();
            }
            super.set(VALUE);
            fireTileEvent(VALUE_EVENT);
        }

        @Override
        public Object getBean() {
            return Tile.this;
        }

        @Override
        public String getName() {
            return "value";
        }
    };
    oldValue = new SimpleDoubleProperty(Tile.this, "oldValue", value.get());
    currentValue = new DoublePropertyBase(value.get()) {

        @Override
        protected void invalidated() {
            final double VALUE = get();
            if (isCheckThreshold()) {
                double thrshld = getThreshold();
                if (formerValue.get() < thrshld && VALUE > thrshld) {
                    fireTileEvent(EXCEEDED_EVENT);
                } else if (formerValue.get() > thrshld && VALUE < thrshld) {
                    fireTileEvent(UNDERRUN_EVENT);
                }
            }
            if (VALUE < getMinMeasuredValue()) {
                setMinMeasuredValue(VALUE);
            } else if (VALUE > getMaxMeasuredValue()) {
                setMaxMeasuredValue(VALUE);
            }
            formerValue.set(VALUE);
        }

        @Override
        public void set(final double VALUE) {
            super.set(VALUE);
        }

        @Override
        public Object getBean() {
            return Tile.this;
        }

        @Override
        public String getName() {
            return "currentValue";
        }
    };
    formerValue = new SimpleDoubleProperty(Tile.this, "formerValue", value.get());
    _range = _maxValue - _minValue;
    _threshold = _maxValue;
    _referenceValue = _minValue;
    _autoReferenceValue = true;
    currentTime = new LongPropertyBase(getTime().toEpochSecond()) {

        @Override
        public Object getBean() {
            return Tile.this;
        }

        @Override
        public String getName() {
            return "currentTime";
        }
    };
    _title = "";
    _titleAlignment = TextAlignment.LEFT;
    _description = "";
    _descriptionAlignment = Pos.TOP_RIGHT;
    _unit = "";
    oldFlipText = "";
    _flipText = "";
    _active = false;
    _text = "";
    _textAlignment = TextAlignment.LEFT;
    _averagingEnabled = false;
    _averagingPeriod = 10;
    _duration = LocalTime.of(1, 0);
    _currentLocation = new Location(0, 0);
    _trackColor = TileColor.BLUE;
    _mapProvider = MapProvider.BW;
    flipTimeInMS = 500;
    _textSize = TextSize.NORMAL;
    _roundedCorners = true;
    _startFromZero = false;
    _returnToZero = false;
    _minMeasuredValue = _maxValue;
    _maxMeasuredValue = _minValue;
    _minMeasuredValueVisible = false;
    _maxMeasuredValueVisible = false;
    _oldValueVisible = false;
    _valueVisible = true;
    _foregroundColor = FOREGROUND;
    _backgroundColor = BACKGROUND;
    _borderColor = Color.TRANSPARENT;
    _borderWidth = 1;
    _knobColor = FOREGROUND;
    _activeColor = BLUE;
    _animated = false;
    animationDuration = 800;
    _startAngle = 0;
    _angleRange = 180;
    _angleStep = _angleRange / _range;
    _autoScale = true;
    _shadowsEnabled = false;
    _locale = Locale.US;
    _numberFormat = NumberFormat.getInstance(_locale);
    _decimals = 1;
    _tickLabelDecimals = 1;
    _needleColor = FOREGROUND;
    _hourColor = FOREGROUND;
    _minuteColor = FOREGROUND;
    _secondColor = FOREGROUND;
    _barColor = BLUE;
    _barBackgroundColor = BACKGROUND;
    _titleColor = FOREGROUND;
    _descriptionColor = FOREGROUND;
    _unitColor = FOREGROUND;
    _valueColor = FOREGROUND;
    _textColor = FOREGROUND;
    _dateColor = FOREGROUND;
    _hourTickMarkColor = FOREGROUND;
    _minuteTickMarkColor = FOREGROUND;
    _alarmColor = FOREGROUND;
    _thresholdColor = RED;
    _checkSectionsForValue = false;
    _checkThreshold = false;
    _innerShadowEnabled = false;
    _thresholdVisible = false;
    _averageVisible = false;
    _sectionsVisible = false;
    _sectionsAlwaysVisible = false;
    _sectionTextVisible = false;
    _sectionIconsVisible = false;
    _highlightSections = false;
    _orientation = Orientation.HORIZONTAL;
    _keepAspect = true;
    _customFontEnabled = false;
    _customFont = Fonts.latoRegular(12);
    _alert = false;
    _alertMessage = "";
    _smoothing = false;
    _secondsVisible = false;
    _discreteSeconds = true;
    _discreteMinutes = true;
    _discreteHours = false;
    _textVisible = true;
    _dateVisible = false;
    _running = false;
    _hourTickMarksVisible = true;
    _minuteTickMarksVisible = true;
    _alarmsEnabled = false;
    _alarmsVisible = false;
    _strokeWithGradient = false;
    _fillWithGradient = false;
    tooltip = new Tooltip(null);
    _xAxis = new CategoryAxis();
    _yAxis = new NumberAxis();
    _radarChartMode = Mode.POLYGON;
    _chartGridColor = Tile.GRAY;
    _sortedData = true;
    _dataPointsVisible = false;
    _snapToTicks = false;
    _minorTickCount = 0;
    _majorTickUnit = 1;
    _matrixSize = new int[] { 30, 25 };
    _chartType = ChartType.LINE;
    _tooltipTimeout = 2000;
    _notificationBackgroundColor = Tile.YELLOW;
    _notificationForegroundColor = Tile.BACKGROUND;
    updateInterval = LONG_INTERVAL;
    increment = 1;
    originalMinValue = -Double.MAX_VALUE;
    originalMaxValue = Double.MAX_VALUE;
    originalThreshold = Double.MAX_VALUE;
    lastCall = Instant.now();
    timeline = new Timeline();
    timeline.setOnFinished(e -> {
        if (isReturnToZero() && !Helper.equals(currentValue.get(), 0.0)) {
            final KeyValue KEY_VALUE2 = new KeyValue(value, 0, Interpolator.SPLINE(0.5, 0.4, 0.4, 1.0));
            final KeyFrame KEY_FRAME2 = new KeyFrame(Duration.millis((long) (0.8 * getAnimationDuration())), KEY_VALUE2);
            timeline.getKeyFrames().setAll(KEY_FRAME2);
            timeline.play();
        }
        fireTileEvent(FINISHED_EVENT);
    });
}
Also used : KeyValue(javafx.animation.KeyValue) NumberAxis(javafx.scene.chart.NumberAxis) Tooltip(javafx.scene.control.Tooltip) Timeline(javafx.animation.Timeline) CategoryAxis(javafx.scene.chart.CategoryAxis) TimeData(eu.hansolo.tilesfx.tools.TimeData) KeyFrame(javafx.animation.KeyFrame) Location(eu.hansolo.tilesfx.tools.Location)

Aggregations

Location (eu.hansolo.tilesfx.tools.Location)1 TimeData (eu.hansolo.tilesfx.tools.TimeData)1 KeyFrame (javafx.animation.KeyFrame)1 KeyValue (javafx.animation.KeyValue)1 Timeline (javafx.animation.Timeline)1 CategoryAxis (javafx.scene.chart.CategoryAxis)1 NumberAxis (javafx.scene.chart.NumberAxis)1 Tooltip (javafx.scene.control.Tooltip)1