01: /*
02: JOpenChart Java Charting Library and Toolkit
03: Copyright (C) 2001 Sebastian Müller
04: http://jopenchart.sourceforge.net
05:
06: This library is free software; you can redistribute it and/or
07: modify it under the terms of the GNU Lesser General Public
08: License as published by the Free Software Foundation; either
09: version 2.1 of the License, or (at your option) any later version.
10:
11: This library is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public
17: License along with this library; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:
20: EditableDataSet.java
21: Created on 9. June 2002, 15:40
22: */
23:
24: package de.progra.charting.model;
25:
26: import java.util.Arrays;
27:
28: /**
29: * This is an editable DataSet implementation.
30: * @author mueller
31: * @version 1.0
32: */
33: public class EditableDataSet extends DefaultDataSet {
34:
35: /** Creates a new empty EditableDataSet with default axis binding. */
36: public EditableDataSet() {
37: super ();
38: }
39:
40: /** Creates a new empty EditableDataSet with the given
41: * Axis binding.
42: */
43: public EditableDataSet(int axis) {
44: super (axis);
45: }
46:
47: /** Creates a new EditableDataSet with the given data and
48: * the Axis binding.
49: * @param data the DataSet values
50: * @param columns the DataSet columns, the value and the column array should
51: * have the same length. The column array has to be sorted.
52: * @param axis the Axis binding
53: */
54: public EditableDataSet(Object[] data, Object[] columns, int axis) {
55: super (data, columns, axis);
56: }
57:
58: /** Creates a new EditableDataSet with the given data and
59: * the Axis binding.
60: * @param data the DataSet values
61: * @param columns the DataSet columns, the value and the column array should
62: * have the same length. The column array has to be sorted!
63: * @param axis the Axis binding
64: */
65: public EditableDataSet(Object[] data, Object[] columns, int axis,
66: String title) {
67: super (data, columns, axis, title);
68: }
69:
70: /** Inserts the given column/value pair at the right position, which is
71: * determined through a binary search. If the column is contained in the
72: * column set, setValueAt is called.
73: * @param value the value to be stored
74: * @param column the column value corresponding to value
75: */
76: public void insertValue(Object value, Object column) {
77: int insertIndex = Arrays
78: .binarySearch(columns.toArray(), column);
79: if (insertIndex >= 0) {
80: setValueAt(insertIndex, value);
81: } else {
82: // As the column object wasn't found, the result is -( insertion point) - 1.
83: insertIndex++;
84: insertIndex *= -1;
85:
86: data.add(insertIndex, value);
87: columns.add(insertIndex, column);
88: }
89: }
90:
91: public void removeValue(int index) {
92: data.remove(index);
93: }
94: }
|