Browse Source

images will now be saved in extra folder at the same plache the .jar file is

Jessey Widhalm 8 years ago
parent
commit
aad42c3e8b

BIN
.gradle/2.2.1/taskArtifacts/cache.properties.lock


BIN
.gradle/2.2.1/taskArtifacts/fileHashes.bin


BIN
.gradle/2.2.1/taskArtifacts/fileSnapshots.bin


BIN
.gradle/2.2.1/taskArtifacts/taskArtifacts.bin


+ 55 - 22
src/ui/view/AddObjectPopUp.java

@@ -5,9 +5,20 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.FlowLayout;
 import java.awt.Image;
-import java.awt.event.*;
-import java.awt.image.ImageProducer;
-import java.io.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLDecoder;
+import java.security.CodeSource;
 import java.util.ArrayList;
 
 import javax.swing.DefaultListModel;
@@ -15,25 +26,17 @@ import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.ListModel;
-import javax.swing.ListSelectionModel;
-import javax.swing.border.EmptyBorder;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.JLabel;
 import javax.swing.JTextField;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
 import javax.swing.SwingConstants;
+import javax.swing.border.EmptyBorder;
+import javax.swing.filechooser.FileNameExtensionFilter;
 
-import classes.Category;
 import classes.HolonElement;
 import classes.HolonObject;
-
-import javax.swing.JScrollBar;
-import javax.swing.ScrollPaneConstants;
-
 import ui.controller.Control;
 
 public class AddObjectPopUp extends JDialog {
@@ -211,10 +214,12 @@ public class AddObjectPopUp extends JDialog {
 								// HolonObject(objectName.getText());
 								// theObject.setElements(hElements);
 								// theObject.setImage(imagePath);
-								controller.addObject(controller.searchCategory(givenCategory), objectName.getText(), hElements, imagePath);
-//								controller.addObjectCategory(controller.searchCategory(givenCategory), theObject);
-//								
-//								System.out.println(theObject.getImage());
+								controller.addObject(controller.searchCategory(givenCategory), objectName.getText(),
+										hElements, imagePath);
+								// controller.addObjectCategory(controller.searchCategory(givenCategory),
+								// theObject);
+								//
+								// System.out.println(theObject.getImage());
 								System.out.println(givenCategory);
 								dispose();
 							} else
@@ -259,7 +264,6 @@ public class AddObjectPopUp extends JDialog {
 			selectedFile = FileChooser.getSelectedFile();
 			filePath = selectedFile.getAbsolutePath();
 			sourcePath.setText(filePath);
-			// Image image = createImage((ImageProducer) selectedFile);
 			ImageIcon icon = new ImageIcon(
 					new ImageIcon(filePath).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH));
 			lblImagePreview.setIcon(icon);
@@ -272,10 +276,23 @@ public class AddObjectPopUp extends JDialog {
 	protected void copieFile() {
 		InputStream inStream = null;
 		OutputStream outStream = null;
+		String jarLocation = "";
 		try {
 			File source = new File(filePath);
-			File dest = new File(System.getProperty("user.dir") + "/bin/Images/", selectedFile.getName());
-			imagePath = "/Images/" + selectedFile.getName();
+			// File dest = new File(System.getProperty("user.dir") +
+			// "/bin/Images/", selectedFile.getName());
+			// imagePath = "/Images/" + selectedFile.getName();
+			try {
+				jarLocation = getJarContainingFolder(this.getClass());
+			} catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			File dest = new File(jarLocation + "/HolonGUI/Images/");
+			dest.mkdirs();
+
+			dest = new File(dest, selectedFile.getName());
+			imagePath = jarLocation + "/HolonGUI/Images/" + selectedFile.getName();
 			inStream = new FileInputStream(source);
 			outStream = new FileOutputStream(dest);
 			byte[] buffer = new byte[1024];
@@ -295,6 +312,22 @@ public class AddObjectPopUp extends JDialog {
 		}
 	}
 
+	public static String getJarContainingFolder(Class aclass) throws Exception {
+		CodeSource codeSource = aclass.getProtectionDomain().getCodeSource();
+
+		File jarFile;
+
+		if (codeSource.getLocation() != null) {
+			jarFile = new File(codeSource.getLocation().toURI());
+		} else {
+			String path = aclass.getResource(aclass.getSimpleName() + ".class").getPath();
+			String jarFilePath = path.substring(path.indexOf(":") + 1, path.indexOf("!"));
+			jarFilePath = URLDecoder.decode(jarFilePath, "UTF-8");
+			jarFile = new File(jarFilePath);
+		}
+		return jarFile.getParentFile().getAbsolutePath();
+	}
+
 	public HolonObject getObject() {
 		return theObject;
 	}

+ 20 - 9
src/ui/view/GUI.java

@@ -310,9 +310,8 @@ public class GUI implements CategoryListener {
 						&& tempCpsObject.getID() != 0) {
 					addElementPopUp = new AddElementPopUp();
 					addElementPopUp.setVisible(true);
-					controller.addElementCanvasObject(tempCpsObject.getName(),
-							addElementPopUp.getElement().getEleName(), addElementPopUp.getElement().getAmount(),
-							addElementPopUp.getElement().getEnergy());
+					controller.addElementCanvasObject(tempCpsObject.getID(), addElementPopUp.getElement().getEleName(),
+							addElementPopUp.getElement().getAmount(), addElementPopUp.getElement().getEnergy());
 				}
 			}
 		});
@@ -360,9 +359,15 @@ public class GUI implements CategoryListener {
 					for (Category cat : model.getCategories()) {
 						for (CpsObject cps : cat.getObjects()) {
 							if (value.toString().compareTo(cps.getCompareName()) == 0) {
-								imgR = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
-										.getScaledInstance(controller.getScale(), controller.getScale(),
-												java.awt.Image.SCALE_SMOOTH);
+								File checkPath = new File(cps.getImage());
+								if (checkPath.exists()) {
+									imgR = new ImageIcon(cps.getImage()).getImage().getScaledInstance(
+											controller.getScale(), controller.getScale(), java.awt.Image.SCALE_SMOOTH);
+								} else {
+									imgR = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
+											.getScaledInstance(controller.getScale(), controller.getScale(),
+													java.awt.Image.SCALE_SMOOTH);
+								}
 								if (imgR != null) {
 									label.setIcon(new ImageIcon(imgR));
 								}
@@ -434,9 +439,15 @@ public class GUI implements CategoryListener {
 					for (Category cat : model.getCategories()) {
 						for (CpsObject cps : cat.getObjects()) {
 							if (actualObjectClicked.compareTo(cps.getCompareName()) == 0) {
-								img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
-										.getScaledInstance(controller.getScale(), controller.getScale(),
-												java.awt.Image.SCALE_SMOOTH);
+								File checkPath = new File(cps.getImage());
+								if (checkPath.exists()) {
+									img = new ImageIcon(cps.getImage()).getImage().getScaledInstance(
+											controller.getScale(), controller.getScale(), java.awt.Image.SCALE_SMOOTH);
+								} else {
+									img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage()
+											.getScaledInstance(controller.getScale(), controller.getScale(),
+													java.awt.Image.SCALE_SMOOTH);
+								}
 								tempCps = cps;
 								dragging = true;
 								Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(img, new Point(0, 0),

+ 16 - 10
src/ui/view/MyCanvas.java

@@ -13,6 +13,7 @@ import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
 import java.awt.geom.Line2D;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -147,8 +148,13 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 
 		// Objects
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
+			File checkPath = new File(cps.getImage());
+			if (checkPath.exists()) {
+				img = new ImageIcon(cps.getImage()).getImage();
 
+			} else {
+				img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
+			}
 			g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, controller.getScale(), controller.getScale(),
 					null);
 
@@ -324,8 +330,8 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		boolean onEdge = true;
 		boolean deleteNode = false;
 		CpsEdge e = null;
-		CpsObject tempCPS = null; 
-		
+		CpsObject tempCPS = null;
+
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
@@ -347,7 +353,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 					if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
 						tempCps = e.getA();
 						deleteNode = true;
-					} 
+					}
 					if (e.getB().getClass() == CpsNode.class && e.getB().getConnections().isEmpty()) {
 						tempCPS = e.getB();
 						deleteNode = true;
@@ -361,7 +367,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 				}
 			}
 		}
-		//Auf eine Edge gezoggen?
+		// Auf eine Edge gezoggen?
 		if (onEdge) {
 			CpsEdge p = mousePositionOnEdge(x, y);
 			if (p != null) {
@@ -401,8 +407,8 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 				controller.AddEdgeOnCanvas(e2);
 			}
 		}
-		
-		//ins leere Gedragged
+
+		// ins leere Gedragged
 		if (node) {
 			CpsNode n = new CpsNode("Node");
 			n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
@@ -415,9 +421,9 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			controller.AddEdgeOnCanvas(e);
 			System.out.println("node ID: " + n.getID());
 		}
-		
-		//Wenn ein Node ohne Connections da ist
-		if(deleteNode){
+
+		// Wenn ein Node ohne Connections da ist
+		if (deleteNode) {
 			controller.deleteObjectOnCanvas(tempCps);
 			controller.deleteObjectOnCanvas(tempCPS);
 			tempCPS = null;