001: /*
002: * uDig - User Friendly Desktop Internet GIS client http://udig.refractions.net (C) 2004,
003: * Refractions Research Inc. This library is free software; you can redistribute it and/or modify it
004: * under the terms of the GNU Lesser General Public License as published by the Free Software
005: * Foundation; version 2.1 of the License. This library is distributed in the hope that it will be
006: * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
007: * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
008: */
009: package net.refractions.udig.project.internal;
010:
011: import java.awt.Color;
012: import java.io.IOException;
013: import java.util.List;
014:
015: import net.refractions.udig.project.ILayer;
016: import net.refractions.udig.project.IMap;
017: import net.refractions.udig.project.command.CommandStack;
018: import net.refractions.udig.project.command.NavCommandStack;
019: import net.refractions.udig.project.internal.render.RenderManager;
020: import net.refractions.udig.project.internal.render.ViewportModel;
021: import net.refractions.udig.ui.palette.ColourScheme;
022:
023: import org.eclipse.core.runtime.IProgressMonitor;
024: import org.eclipse.emf.common.notify.Adapter;
025: import org.geotools.brewer.color.BrewerPalette;
026: import org.geotools.filter.Filter;
027: import org.geotools.geometry.jts.ReferencedEnvelope;
028:
029: import com.vividsolutions.jts.geom.Envelope;
030:
031: /**
032: * TODO Purpose of net.refractions.udig.project.internal
033: * <p>
034: * </p>
035: *
036: * @author Jesse
037: * @since 1.0.0
038: * @model
039: */
040: public interface Map extends ProjectElement, IMap {
041: /**
042: * <!-- begin-user-doc --> <!-- end-user-doc -->
043: * @generated
044: */
045: String copyright = "uDig - User Friendly Desktop Internet GIS client http://udig.refractions.net (C) 2004, Refractions Research Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details."; //$NON-NLS-1$
046:
047: /**
048: * Return's the map's context model
049: *
050: * @return the map's context model
051: * @model containment="true" opposite="map" many="false" settable="false"
052: */
053: public ContextModel getContextModel();
054:
055: /**
056: * Returns the Viewport model for this map.
057: *
058: * @return the Viewport model for this map.
059: * @model containment="true" opposite="mapInternal" many="false"
060: */
061: public ViewportModel getViewportModelInternal();
062:
063: /**
064: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getViewportModelInternal <em>Viewport Model Internal</em>}' containment reference.
065: * <!-- begin-user-doc --> <!-- end-user-doc -->
066: * @param value the new value of the '<em>Viewport Model Internal</em>' containment reference.
067: * @see #getViewportModelInternal()
068: * @generated
069: */
070: void setViewportModelInternal(ViewportModel value);
071:
072: /**
073: * Returns the colour palette that layer's default colours are picked from.
074: *
075: * @return
076: * @model
077: */
078: BrewerPalette getColorPalette();
079:
080: /**
081: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getColorPalette <em>Color Palette</em>}' attribute.
082: * <!-- begin-user-doc --> <!-- end-user-doc -->
083: * @param value the new value of the '<em>Color Palette</em>' attribute.
084: * @see #getColorPalette()
085: * @generated
086: */
087: void setColorPalette(BrewerPalette value);
088:
089: /**
090: * @return
091: * @model
092: */
093: public ColourScheme getColourScheme();
094:
095: /**
096: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getColourScheme <em>Colour Scheme</em>}' attribute.
097: * <!-- begin-user-doc --> <!-- end-user-doc -->
098: * @param value the new value of the '<em>Colour Scheme</em>' attribute.
099: * @see #getColourScheme()
100: * @generated
101: */
102: public void setColourScheme(ColourScheme value);
103:
104: /**
105: * Iterates through the current layers and returns the default colours in use.
106: *
107: * @return
108: */
109: List<Color> getMapDefaultColours();
110:
111: /**
112: * Returns the map's abstract
113: *
114: * @return the map's abstract
115: * @uml.property name="abstract"
116: * @model
117: */
118: String getAbstract();
119:
120: /**
121: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getAbstract <em>Abstract</em>}' attribute.
122: * <!-- begin-user-doc --> <!-- end-user-doc -->
123: * @param value the new value of the '<em>Abstract</em>' attribute.
124: * @see #getAbstract()
125: * @generated
126: */
127: void setAbstract(String value);
128:
129: /**
130: * Gets the Envelope that indicates the maximum bounding box of the map.
131: * <p>
132: * The bounds returned are in Lat Long and each time the method is called a new object is
133: * returned. Therefore the object can be modified as desired without affecting the model.
134: * </p>
135: * <p>
136: * Note: this is a constant for a given map. It is related to the size of the map data, and is
137: * not dependent on the viewport.
138: * </p>
139: *
140: * @return The Envelope in Lat Long that indicates the maximum bounding box of the map.
141: * @throws IOException
142: * @model transient="true" changeable="false" unsettable='true' default=''
143: * dataType="org.geotools.geometry.JTS.ReferencedEnvelope"
144: */
145: public ReferencedEnvelope getBounds(IProgressMonitor monitor)
146: throws IOException;
147:
148: /**
149: * Returns the Aspect ratio of the map. It is normally no the same as the aspect ratio of the
150: * viewport.
151: *
152: * @return The aspect ratio of the map.
153: * @model volatile="true" changeable="false" transient="true"
154: */
155: public double getAspectRatio(IProgressMonitor monitor);
156:
157: /**
158: * Returns the Rendermanager for the current map.
159: *
160: * @return the Rendermanager for the current map.
161: * @model containment="true" opposite="mapInternal" many="false" transient="true"
162: */
163: public EditManager getEditManagerInternal();
164:
165: /**
166: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getEditManagerInternal <em>Edit Manager Internal</em>}' containment reference.
167: * <!-- begin-user-doc --> <!-- end-user-doc -->
168: * @param value the new value of the '<em>Edit Manager Internal</em>' containment reference.
169: * @see #getEditManagerInternal()
170: * @generated
171: */
172: void setEditManagerInternal(EditManager value);
173:
174: /**
175: * Returns the SelectionManager for the current map.
176: *
177: * @return the SelectionManager for the current map.
178: * @model containment="false" transient="true" opposite="mapInternal" many="false"
179: */
180: public RenderManager getRenderManagerInternal();
181:
182: /**
183: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getRenderManagerInternal <em>Render Manager Internal</em>}' reference.
184: * <!-- begin-user-doc --> <!-- end-user-doc -->
185: * @param value the new value of the '<em>Render Manager Internal</em>' reference.
186: * @see #getRenderManagerInternal()
187: * @generated
188: */
189: void setRenderManagerInternal(RenderManager value);
190:
191: /**
192: * Redo the last command undone.
193: *
194: * @model
195: */
196: public void redo();
197:
198: /**
199: * Undo the last command.
200: *
201: * @model
202: */
203: public void undo();
204:
205: /**
206: * move back to the last viewed location
207: *
208: * @model
209: */
210: public void backwardHistory();
211:
212: /**
213: * move back to the last viewed location
214: *
215: * @model
216: */
217: public void forwardHistory();
218:
219: /**
220: * Returns the number of Navigation Commands in the command stack
221: *
222: * @model volatile="true" changeable="false" transient="true"
223: */
224: NavCommandStack getNavCommandStack();
225:
226: /**
227: * Returns the number of Normal(Selection and Editing) Commands in the command stack
228: *
229: * @model volatile="true" changeable="false" transient="true"
230: */
231: CommandStack getCommandStack();
232:
233: /**
234: * @model resolveProxies="false" containment="true" opposite="map"
235: */
236: LayerFactory getLayerFactory();
237:
238: /**
239: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getLayerFactory <em>Layer Factory</em>}' containment reference.
240: * <!-- begin-user-doc --> <!-- end-user-doc -->
241: * @param value the new value of the '<em>Layer Factory</em>' containment reference.
242: * @see #getLayerFactory()
243: * @generated
244: */
245: void setLayerFactory(LayerFactory value);
246:
247: /**
248: * @return the blackboard for the map.
249: * @model containment="true"
250: */
251: Blackboard getBlackBoardInternal();
252:
253: /**
254: * Sets the value of the '{@link net.refractions.udig.project.internal.Map#getBlackBoardInternal <em>Black Board Internal</em>}' containment reference.
255: * <!-- begin-user-doc --> <!-- end-user-doc -->
256: * @param value the new value of the '<em>Black Board Internal</em>' containment reference.
257: * @see #getBlackBoardInternal()
258: * @generated
259: */
260: void setBlackBoardInternal(Blackboard value);
261:
262: /**
263: * Returns all the layers contained in the map. The list is mutable and events will be raised if
264: * the list is modified.
265: *
266: * @return all the layers contained in the map.
267: */
268: List<Layer> getLayersInternal();
269:
270: /**
271: * Adds an adapter to the context model and all of the layers in the model.
272: * Each time a layer is added the adapter will be added to the model as well.
273: *
274: * @param adapter adapter to add as a deep adapter
275: */
276: public void addDeepAdapter(Adapter adapter);
277:
278: /**
279: * Removes the adapter from all layers and context model.
280: *
281: *@see #addDeepAdapter(Adapter)
282: * @param adapter adapter to remove.
283: */
284: public void removeDeepAdapter(Adapter adapter);
285:
286: /**
287: * Increases the ZOrder of the layer so it is rendered earlier with incomparison to the other
288: * layers. If the Layer is at the bottom of the render list(first to be drawn) it is not
289: * affected.
290: *
291: * @param layer The layer whose rendering order will be modified
292: */
293: public void lowerLayer(Layer layer);
294:
295: /**
296: * Decreases the ZOrder of the layer so it is rendered later with incomparison to the other
297: * layers. If the Layer is at the top of the render list(last to be drawn) it is not affected.
298: *
299: * @param layer The layer whose rendering order will be modified
300: */
301: public void raiseLayer(Layer layer);
302:
303: /**
304: * Select all selectable layers, with a BoundingBox Geometry filter. Boundingbox must be in the
305: * same CRS as the ViewportModel
306: * <p>
307: * Any Tool that wishes to be undoable would will need to remember the previous state.
308: * </p>
309: *
310: * @param boundingBox the bounding box in Viewportmodel CRS to create a filter with
311: *
312: */
313: public void select(Envelope boundingBox);
314:
315: /**
316: * Select all selectable layers, with a BoundingBox Geometry filter. Boundingbox must be in the
317: * same CRS as the ViewportModel
318: * <p>
319: * Any Tool that wishes to be undoable would will need to remember the previous state.
320: * </p>
321: *
322: * @param boundingBox the bounding box in Viewportmodel CRS to create a filter with
323: * @param add true adds (or with current filter)to the current selection, false removes from the
324: * current selection(and with current filter).
325: */
326: public void select(Envelope boundingBox, boolean add);
327:
328: /**
329: * Select all selectable layers, with the provided filter.
330: * <p>
331: * Any Tool that wishes to be undoable would will need to remember the previous state.
332: * </p>
333: *
334: * @param filter new selection filter
335: */
336: public void select(Filter filter);
337:
338: /**
339: * Combines selection, from the selectable layers, with the provided filter.
340: * <p>
341: * Any Tool that wishes to be undoable would will need to remember the previous state.
342: * </p>
343: *
344: * @param filter the new filter
345: * @param add true adds (or with current filter)to the current selection, false removes from the
346: * current selection.
347: */
348: public void select(Filter filter, boolean add);
349:
350: /**
351: * Makes a selection in a specified layer of this map (not necessarily a selected layer ).
352: * Does nothing if the specified layer does not belong to this map.
353: *
354: * @param filter
355: * @param layer
356: */
357: public void select(Filter filter, ILayer layer);
358:
359: }
|