All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.hansolo.steelseries.tools.Data Maven / Gradle / Ivy

package eu.hansolo.steelseries.tools;


/**
 *
 * @author Gerrit Grunwald 
 */
public class Data implements DataModel
{
    // 
    private javax.swing.event.ChangeEvent changeEvent;
    private final javax.swing.event.EventListenerList LISTENER_LIST = new javax.swing.event.EventListenerList();    
    private double minValue;
    private double maxValue;
    private double range;
    private double value;
    private double oldValue;
    private double peakValue;
    private boolean autoResetToZero;
    private double threshold;
    private double minMeasuredValue;
    private double maxMeasuredValue;
    private double trackStart;
    private double trackSection;
    private double trackStop;
    private final java.util.ArrayList SECTIONS;
    private final java.util.ArrayList AREAS;
    private final java.util.ArrayList TICKMARK_SECTIONS;
    private eu.hansolo.steelseries.tools.GaugeType gaugeType;
    private double freeAreaAngle;
    private double angleStep;
    private double rotationOffset;
    private double tickmarkOffset;
    // 
    
    // 
    public Data()
    {        
        SECTIONS = new java.util.ArrayList(10);
        AREAS = new java.util.ArrayList(10);
        TICKMARK_SECTIONS = new java.util.ArrayList(10);
        init();
    }
    
    private void init()
    {
        minValue = 0;
        maxValue = 100;
        range = maxValue - minValue;
        value = minValue;
        oldValue = minValue;
        peakValue = minValue;
        autoResetToZero = false;
        threshold = range / 2.0;
        minMeasuredValue = maxValue;
        maxMeasuredValue = minValue;
        trackStart = minValue;
        trackSection = range / 2.0;
        trackStop = maxValue;
        SECTIONS.clear();
        AREAS.clear();
        gaugeType = eu.hansolo.steelseries.tools.GaugeType.TYPE4;
        freeAreaAngle = Math.toRadians(60);
        angleStep = (2.0 * Math.PI - freeAreaAngle) / range;
        rotationOffset = Math.PI + (getFreeAreaAngle() / 2.0);
        tickmarkOffset = 0;
    }
    // 
    
    // 
    @Override
    public double getMinValue()
    {
        return minValue;
    }

    @Override
    public void setMinValue(final double MIN_VALUE)
    {
        minValue = MIN_VALUE;
        range = maxValue - minValue;
        validate();        
        calcAngleStep();        
        fireStateChanged();
    }

    @Override
    public double getMaxValue()
    {
        return maxValue;
    }

    @Override
    public void setMaxValue(final double MAX_VALUE)
    {
        maxValue = MAX_VALUE;
        range = maxValue - minValue;
        validate();        
        calcAngleStep();        
        fireStateChanged();
    }

    @Override
    public double getRange()
    {
        return (maxValue - minValue);
    }

    @Override
    public void setRange(final double MIN_VALUE, final double MAX_VALUE)
    {
        range = (MAX_VALUE - MIN_VALUE);
        maxValue = MAX_VALUE;
        minValue = MIN_VALUE;
        validate();
        calcAngleStep();
        fireStateChanged();
    }
    
    @Override
    public double getValue()
    {
        return value;
    }

    @Override
    public void setValue(final double VALUE)
    {
        oldValue = value;      
        if (VALUE >= minValue && VALUE <= maxValue)
        {
            value = VALUE;
        }
        else
        {
            if (VALUE < minValue)
            {
                value = minValue;
            }
            
            if (VALUE > maxValue)
            {
                value = maxValue;
            }
        }                          
        fireStateChanged();
    }

    @Override
    public double getOldValue()
    {
        return oldValue;
    }

    @Override
    public double getPeakValue()
    {
        return peakValue;
    }

    @Override
    public void setPeakValue(final double PEAK_VALUE)
    {
        peakValue = PEAK_VALUE;
        fireStateChanged();
    }
    
    @Override
    public boolean isAutoResetToZero()
    {
        return autoResetToZero;
    }
    
    @Override
    public void setAutoResetToZero(final boolean AUTO_RESET_TO_ZERO)
    {
        if (minValue > 0 || maxValue < 0)
        {
            autoResetToZero = false;
        }
        else
        {
            autoResetToZero = AUTO_RESET_TO_ZERO;            
        }                
        fireStateChanged();
    }
    
    @Override
    public double getThreshold()
    {
        return threshold;
    }

    @Override
    public void setThreshold(final double THRESHOLD)
    {
        if (THRESHOLD >= minValue && THRESHOLD <= maxValue)
        {
            threshold = THRESHOLD;
        }
        else
        {
            if (THRESHOLD < minValue)
            {
                threshold = minValue;
            }
            
            if (THRESHOLD > maxValue)
            {
                threshold = maxValue;
            }
        }       
        fireStateChanged();
    }

    @Override
    public double getMinMeasuredValue()
    {
        return minMeasuredValue;
    }

    @Override
    public void setMinMeasuredValue(final double MIN_MEASURED_VALUE)
    {
        if (MIN_MEASURED_VALUE >= minValue && MIN_MEASURED_VALUE <= maxValue)
        {
            minMeasuredValue = MIN_MEASURED_VALUE;
        }
        else
        {
            if (MIN_MEASURED_VALUE < minValue)
            {
                minMeasuredValue = minValue;
            }
            
            if (MIN_MEASURED_VALUE > maxValue)
            {
                minMeasuredValue = maxValue;
            }
        }               
        fireStateChanged();
    }

    @Override
    public void resetMinMeasuredValue()
    {
        minMeasuredValue = value;
        fireStateChanged();
    }

    @Override
    public void resetMinMeasuredValue(final double MIN_MEASURED_VALUE)
    {
        minMeasuredValue = MIN_MEASURED_VALUE > maxValue ? maxValue : MIN_MEASURED_VALUE;
        minMeasuredValue = MIN_MEASURED_VALUE < minValue ? minValue : MIN_MEASURED_VALUE;
        fireStateChanged();
    }

    @Override
    public double getMaxMeasuredValue()
    {
        return maxMeasuredValue;
    }

    @Override
    public void setMaxMeasuredValue(final double MAX_MEASURED_VALUE)
    {
        if (MAX_MEASURED_VALUE >= minValue && MAX_MEASURED_VALUE <= maxValue)
        {
            maxMeasuredValue = MAX_MEASURED_VALUE;
        }
        else
        {
            if (MAX_MEASURED_VALUE < minValue)
            {
                maxMeasuredValue = minValue;
            }
            
            if (MAX_MEASURED_VALUE > maxValue)
            {
                maxMeasuredValue = maxValue;
            }
        }               
        fireStateChanged();
    }

    @Override
    public void resetMaxMeasuredValue()
    {
        maxMeasuredValue = value;
        fireStateChanged();
    }

    @Override
    public void resetMaxMeasuredValue(final double MAX_MEASURED_VALUE)
    {
        maxMeasuredValue = MAX_MEASURED_VALUE > maxValue ? maxValue : MAX_MEASURED_VALUE;
        maxMeasuredValue = MAX_MEASURED_VALUE < minValue ? minValue : MAX_MEASURED_VALUE;
        fireStateChanged();
    }

    @Override
    public double getTrackStart()
    {
        return trackStart;
    }

    @Override
    public void setTrackStart(final double TRACK_START)
    {
        trackStart = TRACK_START;
        validate();
        fireStateChanged();
    }

    @Override
    public double getTrackSection()
    {
        return trackSection;
    }

    @Override
    public void setTrackSection(final double TRACK_SECTION)
    {
        trackSection = TRACK_SECTION;
        validate();        
        fireStateChanged();
    }

    @Override
    public double getTrackStop()
    {
        return trackStop;
    }

    @Override
    public void setTrackStop(final double TRACK_STOP)
    {
        trackStop = TRACK_STOP;
        validate();        
        fireStateChanged();
    }

    @Override
    public java.util.List
getSections() { final java.util.List SECTIONS_COPY = new java.util.ArrayList(10); SECTIONS_COPY.addAll(SECTIONS); //return (java.util.ArrayList) SECTIONS.clone(); return SECTIONS_COPY; } @Override public void setSections(Section... SECTIONS_ARRAY) { SECTIONS.clear(); for (eu.hansolo.steelseries.tools.Section section : SECTIONS_ARRAY) { SECTIONS.add(new eu.hansolo.steelseries.tools.Section(section.getStart(), section.getStop(), section.getColor())); } validate(); fireStateChanged(); } @Override public void addSection(Section SECTION) { SECTIONS.add(SECTION); fireStateChanged(); } @Override public void resetSections() { SECTIONS.clear(); fireStateChanged(); } @Override public java.util.List
getAreas() { final java.util.List AREAS_COPY = new java.util.ArrayList(10); AREAS_COPY.addAll(AREAS); //return (java.util.ArrayList) AREAS.clone(); return AREAS_COPY; } @Override public void setAreas(Section... AREAS_ARRAY) { AREAS.clear(); for (eu.hansolo.steelseries.tools.Section area : AREAS_ARRAY) { AREAS.add(new eu.hansolo.steelseries.tools.Section(area.getStart(), area.getStop(), area.getColor())); } validate(); fireStateChanged(); } @Override public void addArea(Section AREA) { AREAS.add(AREA); } @Override public void resetAreas() { AREAS.clear(); } @Override public java.util.List getTickmarkSections() { final java.util.List TICKMARK_SECTIONS_COPY = new java.util.ArrayList(10); TICKMARK_SECTIONS_COPY.addAll(TICKMARK_SECTIONS); //return (java.util.ArrayList) TICKMARK_SECTIONS.clone(); return TICKMARK_SECTIONS_COPY; } @Override public void setTickmarkSections(final eu.hansolo.steelseries.tools.Section... TICKMARK_SECTIONS_ARRAY) { TICKMARK_SECTIONS.clear(); for (eu.hansolo.steelseries.tools.Section tickmarkSection : TICKMARK_SECTIONS_ARRAY) { TICKMARK_SECTIONS.add(new eu.hansolo.steelseries.tools.Section(tickmarkSection.getStart(), tickmarkSection.getStop(), tickmarkSection.getColor())); } validate(); fireStateChanged(); } @Override public void addTickmarkSection(final eu.hansolo.steelseries.tools.Section TICKMARK_SECTION) { TICKMARK_SECTIONS.add(TICKMARK_SECTION); fireStateChanged(); } @Override public void resetTickmarkSections() { TICKMARK_SECTIONS.clear(); fireStateChanged(); } @Override public eu.hansolo.steelseries.tools.GaugeType getGaugeType() { return gaugeType; } @Override public void setGaugeType(final eu.hansolo.steelseries.tools.GaugeType GAUGE_TYPE) { gaugeType = GAUGE_TYPE; switch(getGaugeType()) { case TYPE1: freeAreaAngle = 0; rotationOffset = (1.5 * Math.PI); tickmarkOffset = 0.5 * Math.PI; break; case TYPE2: freeAreaAngle = 0; rotationOffset = (1.5 * Math.PI); tickmarkOffset = 0.5 * Math.PI; break; case TYPE3: freeAreaAngle = 0; rotationOffset = Math.PI; tickmarkOffset = 0; break; case TYPE4: freeAreaAngle = Math.toRadians(60); rotationOffset = Math.PI + (getFreeAreaAngle() / 2.0); tickmarkOffset = 0; break; default: freeAreaAngle = Math.toRadians(60); rotationOffset = Math.PI + (getFreeAreaAngle() / 2.0); tickmarkOffset = 0; break; } calcAngleStep(); fireStateChanged(); } @Override public double getFreeAreaAngle() { return freeAreaAngle; } @Override public double getAngleStep() { return angleStep; } @Override public double getRotationOffset() { return rotationOffset; } @Override public double getTickmarkOffset() { return tickmarkOffset; } // // @Override public void validate() { // AutoResetToZero if (minValue > 0 || maxValue < 0) { autoResetToZero = false; } // Threshold if (threshold < minValue || threshold > maxValue) { threshold = maxValue; } // MinMeasuredValue if (minMeasuredValue < minValue || minMeasuredValue > maxValue) { minMeasuredValue = value; } // MaxMeasuredValue if (maxMeasuredValue > maxValue || maxMeasuredValue < minValue) { maxMeasuredValue = value; } // PeakValue if (peakValue < minValue || peakValue > maxValue) { peakValue = value; } // TrackStart if (trackStart <= minValue || trackStart >= maxValue || trackStart >= trackStop) { trackStart = minValue; } // TrackStop if ((trackStop <= minValue) || trackStop >= maxValue || trackStop <= trackStart) { trackStop = maxValue; } // TrackSection if (trackSection <= minValue || trackSection >= maxValue || trackSection <= trackStart || trackSection >= trackStop) { trackSection = ((trackStart + (trackStop - trackStart) / 2.0)); } // Areas for (eu.hansolo.steelseries.tools.Section area : AREAS) { if ((area.getStart() < minValue) || area.getStart() >= maxValue || area.getStart() >= area.getStop()) { area.setStart(minValue); } if (area.getStop() < minValue || area.getStop() > maxValue || area.getStop() <= area.getStart()) { area.setStop(maxValue); } } // Sections for (eu.hansolo.steelseries.tools.Section section : SECTIONS) { if ((section.getStart() < minValue) || section.getStart() >= maxValue || section.getStart() >= section.getStop()) { section.setStart(minValue); } if (section.getStop() < minValue || section.getStop() > maxValue || section.getStop() <= section.getStart()) { section.setStop(maxValue); } } // TickmarkSections for (eu.hansolo.steelseries.tools.Section tickmarkSection : TICKMARK_SECTIONS) { if ((tickmarkSection.getStart() < minValue) || tickmarkSection.getStart() >= maxValue || tickmarkSection.getStart() >= tickmarkSection.getStop()) { tickmarkSection.setStart(minValue); } if (tickmarkSection.getStop() < minValue || tickmarkSection.getStop() > maxValue || tickmarkSection.getStop() <= tickmarkSection.getStart()) { tickmarkSection.setStop(maxValue); } } } private void calcAngleStep() { switch(gaugeType) { case TYPE1: angleStep = (Math.PI / 2.0 - freeAreaAngle) / range; break; case TYPE2: angleStep = (Math.PI - freeAreaAngle) / range; break; case TYPE3: angleStep = (1.5 * Math.PI - freeAreaAngle) / range; break; case TYPE4: angleStep = (2.0 * Math.PI - freeAreaAngle) / range; break; default: angleStep = (2.0 * Math.PI - freeAreaAngle) / range; break; } } /** * Resets the model by calling the init() method */ @Override public void reset() { init(); } // // /** * Adds the given listener to the listener list * @param LISTENER */ @Override public void addChangeListener(javax.swing.event.ChangeListener LISTENER) { LISTENER_LIST.add(javax.swing.event.ChangeListener.class, LISTENER); } /** * Removes all listeners from the listener list * @param LISTENER */ @Override public void removeChangeListener(javax.swing.event.ChangeListener LISTENER) { LISTENER_LIST.remove(javax.swing.event.ChangeListener.class, LISTENER); } /** * Fires an state change event every time the data model changes */ protected void fireStateChanged() { Object[] listeners = LISTENER_LIST.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length - 2; i >= 0; i -= 2) { if (listeners[i] == javax.swing.event.ChangeListener.class) { if (changeEvent == null) { changeEvent = new javax.swing.event.ChangeEvent(this); } ((javax.swing.event.ChangeListener) listeners[i + 1]).stateChanged(changeEvent); } } } // @Override public String toString() { return "Data"; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy