GeomVis  0.1
Набор классов Java для визуализации результатов работы геометрических алгоритмов
GeomContainer.java
См. документацию.
1 package container;
2 
3 import geom.GCoordSystem;
4 import geom.GObject;
5 import geom.GView;
6 
7 import java.util.ArrayList;
8 import java.util.TreeSet;
9 import java.util.Iterator;
10 import java.lang.reflect.*;
11 import java.util.Vector;
12 import java.util.logging.*;
13 
34 public class GeomContainer extends TreeSet<GObject>
35 {
36  private ArrayList<IGeomContainerListener> listeners = new ArrayList<IGeomContainerListener>();
37 
38  private GCoordSystem gcs;
39 
40  public void addListener(IGeomContainerListener listener)
41  {
42  listeners.add(listener);
43  }
44 
45  public void removeListener(IGeomContainerListener listener)
46  {
47  listeners.remove(listener);
48  }
49 
50  private void fireListeners()
51  {
52  for (IGeomContainerListener listener : listeners)
53  {
54  listener.onDataChanged(this);
55  }
56  }
57 
63  {
64  GeomContainer selected = new GeomContainer(gcs);
65  Iterator<GObject> iterator = iterator();
66  while (iterator.hasNext())
67  {
68  GObject obj = iterator.next();
69  if (obj.view().isSelected())
70  {
71  selected.add(obj);
72  }
73  }
74  return selected;
75  }
76 
82  {
83  GeomContainer objs = new GeomContainer(gcs);
84  Iterator<GObject> iterator = iterator();
85  while (iterator.hasNext())
86  {
87  GObject obj = iterator.next();
88  if (obj.getClass().equals(c))
89  {
90  objs.add(obj);
91  }
92  }
93  return objs;
94  }
95 
97  this.gcs = gcs;
98  }
99 
103  public boolean add(GObject obj)
104  {
105  if (super.add(obj))
106  {
107  fireListeners();
108  return true;
109  }
110  return false;
111  }
112 
113  public void remove(GObject obj)
114  {
115  super.remove(obj);
116  fireListeners();
117  }
118 
119  public void draw(GCoordSystem gcs)
120  {
121  Iterator<GObject> iterator = iterator();
122  while (iterator.hasNext())
123  {
124  iterator.next().draw(gcs);
125  }
126  }
127 
131  public GObject find(Class objClass)
132  {
133  Iterator<GObject> iterator = iterator();
134  while (iterator.hasNext())
135  {
136  GObject obj = iterator.next();
137  if (obj.getClass().equals(objClass))
138  {
139  return obj;
140  }
141  }
142  return null;
143  }
144 
148  public GObject extract(Class objClass)
149  {
150  GObject obj = find(objClass);
151  // if (obj!=null)
152  super.remove(obj);
153  fireListeners();
154  return obj;
155  }
156 
157  public GObject in(int canvasX, int canvasY, GCoordSystem gcs)
158  {
159  Iterator<GObject> iterator = iterator();
160  while (iterator.hasNext())
161  {
162  GObject obj = iterator.next();
163  if (obj.in(canvasX, canvasY, gcs))
164  return obj;
165  }
166  return null;
167  }
168 }
Kласс для хранения графических объектов
abstract boolean in(int canvasX, int canvasY, GCoordSystem gcs)
Абстракная функция определяющая принадлежность точки объекту. Переопределяется в подклассах - конкрет...
GeomContainer getObjectsTypeOf(Class c)
Возвращает новый контейнер со всеми объектами данного класса, например Point.class.
void draw(GCoordSystem gcs)
GView view
Definition: GObject.java:17
GObject find(Class objClass)
GeomContainer(GCoordSystem gcs)
void addListener(IGeomContainerListener listener)
void removeListener(IGeomContainerListener listener)
Интерфейс слушателя контейнера. Функция вызывается при изменении контейнера
boolean add(GObject obj)
Главный класс отображения. У пользователя нет необходимости его использовать напрямую.
GObject extract(Class objClass)
Абстрактный суперкласс для всех графических объектов
Definition: GObject.java:14
GeomContainer getSelectedObjects()
Возвращает новый контейнер, со всеми выделенными объектами
GObject in(int canvasX, int canvasY, GCoordSystem gcs)