1 23 24 package de.progra.charting.model; 25 26 import de.progra.charting.ChartUtilities; 27 import java.util.TreeSet ; 28 29 35 public class DefaultChartDataModelConstraints implements ChartDataModelConstraints { 36 37 38 protected AbstractChartDataModel model; 39 40 41 protected int axis; 42 43 44 protected boolean allowManualColScale = true; 45 46 47 public DefaultChartDataModelConstraints(AbstractChartDataModel model, int axis) { 48 this.model = model; 49 this.axis = axis; 50 } 51 52 58 public DefaultChartDataModelConstraints(AbstractChartDataModel model, int axis, boolean allowManualColScale) { 59 this(model, axis); 60 this.allowManualColScale = allowManualColScale; 61 } 62 63 64 public Number getMaximumValue() { 65 TreeSet ordered_values = (TreeSet )model.getOrderedValues(axis); 66 67 if(ordered_values.size() == 0) 68 return new Integer (1); 69 else if(model.isManualScale()) { 70 return model.getManualMaximumValue(); 72 } 73 else if(model.isAutoScale()) { 74 double min = ((Number )ordered_values.first()).doubleValue(); 75 double max = ((Number )ordered_values.last()).doubleValue(); 76 77 79 if(min / max > 0.95) { 80 return new Double (ChartUtilities.performAutoScale(min/2, 82 2 * max)[1]); 83 } 84 else { 85 return new Double (ChartUtilities.performAutoScale(min, 87 max)[1]); 88 } 89 } else 90 return (Number )ordered_values.last(); 91 } 92 93 94 public Number getMinimumValue() { 95 TreeSet ordered_values = (TreeSet )model.getOrderedValues(axis); 96 97 if(ordered_values.size() == 0) 98 return new Integer (0); 99 else if(model.isManualScale()) { 100 return model.getManualMinimumValue(); 102 } 103 else if(model.isAutoScale()) { 104 double min = ((Number )ordered_values.first()).doubleValue(); 105 double max = ((Number )ordered_values.last()).doubleValue(); 106 107 109 if(min / max > 0.95) { 110 return new Double (ChartUtilities.performAutoScale(min/2, 112 2 * max)[0]); 113 } 114 else { 115 return new Double (ChartUtilities.performAutoScale(min, 117 max)[0]); 118 } 119 } else 120 return (Number )ordered_values.first(); 121 } 122 123 126 public double getMinimumColumnValue() { 127 if(model.isManualScale() && allowManualColScale) { 128 return model.getManualMinimumColumnValue(); 129 } 130 if(model.isAutoScale()) 131 return ChartUtilities.performAutoScale(model.getFirstColumnValue(), 132 model.getLastColumnValue())[0]; 133 else 134 return model.getFirstColumnValue(); 135 } 136 137 140 public double getMaximumColumnValue() { 141 if(model.isManualScale() && allowManualColScale) { 142 return model.getManualMaximumColumnValue(); 143 } 144 if(model.isAutoScale()) 145 return ChartUtilities.performAutoScale(model.getFirstColumnValue(), 146 model.getLastColumnValue())[1]; 147 else 148 return model.getLastColumnValue(); 149 } 150 } | Popular Tags |