home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Canvas;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.image.FilteredImageSource;
- import java.io.File;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Enumeration;
-
- public class MapCanvas extends Canvas {
- private static final int NONE = 0;
- private static final int RESIZE = 1;
- private static final int MOVE = 2;
- private static final int MINDRAGDIST = 4;
- private MainShell _app;
- private ImageMap _imageMap = new ImageMap();
- private Image _image;
- private int _state;
- private int _shape;
- private boolean _checkDrag;
- private int _lastx;
- private int _lasty;
-
- public MapCanvas(MainShell var1) {
- this._app = var1;
- }
-
- public Dimension preferredSize() {
- return new Dimension(500, 300);
- }
-
- public Dimension minimumSize() {
- return this.preferredSize();
- }
-
- public void paint(Graphics var1) {
- var1.clearRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- if (this._image != null) {
- var1.drawImage(this._image, 0, 0, this);
- }
-
- var1.setColor(((Component)this).getForeground());
- var1.setXORMode(((Component)this).getBackground());
- Enumeration var2 = this._imageMap.elements();
-
- while(var2.hasMoreElements()) {
- Area var3 = (Area)var2.nextElement();
- var3.draw(var1);
- }
-
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- Graphics var4 = ((Component)this).getGraphics();
- var4.setColor(((Component)this).getForeground());
- var4.setXORMode(((Component)this).getBackground());
- Object var5 = null;
- switch (this._state) {
- case 0:
- Area var7;
- if ((var7 = this._imageMap.getSelected()) != null) {
- var7.draw(var4);
- var7.setSelected(false);
- var7.draw(var4);
- this.updateDeselect(var7);
- }
-
- if ((var7 = this._imageMap.grabOne(var2, var3)) != null) {
- var7.draw(var4);
- var7.setSelected(true);
- var7.draw(var4);
- this._state = 1;
- this.updateSelect(var7);
- } else if ((var7 = this._imageMap.selectOne(var2, var3)) != null) {
- var7.draw(var4);
- var7.setSelected(true);
- var7.draw(var4);
- this._state = 2;
- this.updateSelect(var7);
- } else {
- var7 = AreaBuilder.build(this._shape, var2, var3);
- var7.setSelected(true);
- var7.draw(var4);
- this._imageMap.addElement(var7);
- this._state = 1;
- this.updateSelect(var7);
- this.updateDrag(var7);
- }
- break;
- case 1:
- Area var6;
- if ((var6 = this._imageMap.getSelected()) != null) {
- var6.draw(var4);
- var6.resize(var2, var3);
- var6.draw(var4);
- this.updateDrag(var6);
- } else {
- this._state = 0;
- }
- }
-
- this._checkDrag = true;
- this._lastx = var2;
- this._lasty = var3;
- return true;
- }
-
- public boolean mouseDrag(Event var1, int var2, int var3) {
- if (this._checkDrag && Math.abs(var2 - this._lastx) < 4 && Math.abs(var3 - this._lasty) < 4) {
- return true;
- } else {
- this._checkDrag = false;
- Graphics var4 = ((Component)this).getGraphics();
- var4.setColor(((Component)this).getForeground());
- var4.setXORMode(((Component)this).getBackground());
- Area var5 = this._imageMap.getSelected();
- if (var5 != null) {
- switch (this._state) {
- case 1:
- var5.draw(var4);
- var5.resize(var2, var3);
- var5.draw(var4);
- this.updateDrag(var5);
- break;
- case 2:
- var5.draw(var4);
- var5.translate(var2 - this._lastx, var3 - this._lasty);
- var5.draw(var4);
- this.updateDrag(var5);
- }
- } else {
- this._state = 0;
- }
-
- this._lastx = var2;
- this._lasty = var3;
- return true;
- }
- }
-
- public boolean mouseUp(Event var1, int var2, int var3) {
- Area var4 = this._imageMap.getSelected();
- if (var4 != null) {
- switch (this._state) {
- case 1:
- if (var4.isValid()) {
- if (var4.isComplete()) {
- this._state = 0;
- } else {
- var4.advance();
- }
- } else {
- this._imageMap.removeElement(var4);
- this._state = 0;
- }
- break;
- case 2:
- this._state = 0;
- }
- } else {
- this._state = 0;
- }
-
- return true;
- }
-
- private void updateDeselect(Area var1) {
- if (var1.getLink() == null || !var1.getLink().equals(this._app.getLink())) {
- var1.setLink(this._app.getLink());
- this._imageMap.setModified(true);
- }
-
- }
-
- private void updateSelect(Area var1) {
- this._app.setLink(var1.getLink());
- }
-
- private void updateDrag(Area var1) {
- this._app.setStatus(var1.getShape() + " (" + var1.getCoords() + ")");
- this._imageMap.setModified(true);
- }
-
- public ImageMap getImageMap() {
- return this._imageMap;
- }
-
- public void setImageMap(ImageMap var1) {
- this._imageMap = var1;
- this._image = this.doLoadImage(this._imageMap.getBaseUrl(), this._imageMap.getBaseFile(), this._imageMap.getImgSrc());
- ((Component)this).repaint();
- }
-
- public void setShape(int var1) {
- this._shape = var1;
- }
-
- public void close() {
- Area var1 = this._imageMap.getSelected();
- if (var1 != null && var1 instanceof Poly && !var1.isComplete()) {
- Graphics var2 = ((Component)this).getGraphics();
- var2.setColor(((Component)this).getForeground());
- var2.setXORMode(((Component)this).getBackground());
- var1.draw(var2);
- ((Poly)var1).close();
- if (var1.isValid()) {
- var1.draw(var2);
- } else {
- this._imageMap.removeElement(var1);
- }
-
- this._state = 0;
- }
-
- }
-
- public void deleteSelected() {
- Area var1 = this._imageMap.getSelected();
- if (var1 != null) {
- Graphics var2 = ((Component)this).getGraphics();
- var2.setColor(((Component)this).getForeground());
- var2.setXORMode(((Component)this).getBackground());
- var1.draw(var2);
- this._imageMap.removeElement(var1);
- }
-
- }
-
- public void duplicateSelected() {
- Area var1 = this._imageMap.getSelected();
- if (var1 != null && var1.isComplete()) {
- Graphics var2 = ((Component)this).getGraphics();
- var2.setColor(((Component)this).getForeground());
- var2.setXORMode(((Component)this).getBackground());
- var1.draw(var2);
- var1.setSelected(false);
- var1.draw(var2);
- Area var3 = (Area)var1.clone();
- var3.translate(5, 5);
- var3.setSelected(true);
- var3.draw(var2);
- this._imageMap.addElement(var3);
- this.updateSelect(var1);
- }
-
- }
-
- public void setSelectedLink(String var1) {
- Area var2 = this._imageMap.getSelected();
- if (var2 != null) {
- var2.setLink(var1);
- this._imageMap.setModified(true);
- }
-
- }
-
- public void loadImage(URL var1, File var2, String var3) {
- this._image = this.doLoadImage(var1, var2, var3);
- this._imageMap.setImgSrc(var3);
- ((Component)this).repaint();
- }
-
- private Image doLoadImage(URL var1, File var2, String var3) {
- if (var3 == null) {
- return null;
- } else {
- Object var4 = null;
-
- try {
- URL var9 = new URL(var3);
- Image var5 = ((Component)this).getToolkit().getImage(var9);
- if (this.trackImage(var5)) {
- return var5;
- }
- } catch (MalformedURLException var8) {
- }
-
- try {
- if (var1 != null) {
- URL var10 = new URL(var1, var3);
- Image var11 = ((Component)this).getToolkit().getImage(var10);
- if (this.trackImage(var11)) {
- return var11;
- }
- }
- } catch (MalformedURLException var7) {
- }
-
- Object var12 = null;
- File var13 = new File(var3);
- if (var13.isFile() && var13.canRead()) {
- Image var6 = ((Component)this).getToolkit().getImage(var13.getPath());
- if (this.trackImage(var6)) {
- return var6;
- }
- }
-
- if (var2 != null) {
- var13 = new File(var2, var3);
- if (var13.isFile() && var13.canRead()) {
- Image var15 = ((Component)this).getToolkit().getImage(var13.getPath());
- if (this.trackImage(var15)) {
- return var15;
- }
- }
- }
-
- return null;
- }
- }
-
- public void transparentImage(int var1) {
- if (this._image != null) {
- Image var2 = ((Component)this).createImage(new FilteredImageSource(this._image.getSource(), new TransFilter(var1)));
- if (this.trackImage(var2)) {
- this._image = var2;
- ((Component)this).repaint();
- }
-
- }
- }
-
- private boolean trackImage(Image var1) {
- MediaTracker var2 = new MediaTracker(this);
- var2.addImage(var1, 0);
-
- try {
- var2.waitForID(0);
- return true;
- } catch (InterruptedException var4) {
- this.log(var4);
- return false;
- }
- }
-
- private void log(Exception var1) {
- System.out.println("Caught an exception: " + ((Throwable)var1).getMessage());
- ((Throwable)var1).printStackTrace();
- }
- }
-