/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package feuille.drawing; import feuille.drawing.lib.ControlPoint; import feuille.drawing.lib.Sheet; import feuille.drawing.lib.Clipboard; import feuille.drawing.lib.IShape; import feuille.drawing.lib.Remember; import feuille.drawing.lib.Line; import feuille.drawing.lib.SheetVBorder; import feuille.drawing.lib.ReStart; import feuille.drawing.lib.Layer; import feuille.drawing.lib.BSpline; import feuille.drawing.lib.ShapesList; import feuille.drawing.lib.Bezier; import feuille.drawing.lib.Command; import feuille.drawing.lib.SheetHBorder; import feuille.drawing.lib.Point; import feuille.drawing.lib.Move; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JColorChooser; import javax.swing.JFileChooser; import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import javax.swing.SpinnerNumberModel; import javax.swing.filechooser.FileFilter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import feuille.drawing.adf.DrawingObject; import feuille.drawing.adf.LayerContent; import feuille.drawing.adf.XmlDrawingHandler; import feuille.drawing.adf.XmlDrawingWriter; import feuille.drawing.dialog.OpenGlyphDialog; import feuille.drawing.dialog.RotationDialog; import feuille.drawing.dialog.SelectGeoDialog; import feuille.filter.AssFilter; import feuille.filter.DrawingFilter; import feuille.filter.ImageFilter; import feuille.filter.SVGFilter; import feuille.drawing.operation.Center; import feuille.drawing.operation.Resize; import feuille.drawing.operation.Selection; import feuille.drawing.operation.Shear; import feuille.drawing.operation.Translation; import feuille.drawing.ornament.AShape; import feuille.drawing.ornament.AssLine; import feuille.drawing.ornament.OrnControlPoint; import feuille.drawing.ornament.OrnDo; import feuille.drawing.ornament.OrnLayer; import feuille.drawing.ornament.OrnMMBezier; import feuille.drawing.ornament.OrnMMLine; import feuille.drawing.ornament.OrnPoint; import feuille.drawing.preview.DrawingPreview; import feuille.drawing.preview.ImagePreview; import feuille.drawing.renderer.LayerRenderer; import feuille.drawing.renderer.RememberRenderer; import feuille.drawing.renderer.ScriptsListRenderer; import feuille.drawing.svg.VectorObject; import feuille.drawing.svg.XmlVectorHandler; import feuille.scripting.DrawingScript; import feuille.scripting.ScriptPlugin; /** * * @author The Wingate 2940 */ public class DrawingPanel extends javax.swing.JPanel { static Sheet sh = new Sheet(); private ImageIcon img = null; private static int scale = 1; private int imageMoveUnit = 10; private String lastDrawing = null; private String lastImage = null; private java.awt.Frame parentFrame = null; private Thickness thickness = Thickness.Big; private static DefaultListModel dlm = new DefaultListModel(); private static DefaultListModel dlmRemember = new DefaultListModel(); private DefaultListModel dlmScript = new DefaultListModel(); private BufferedImage imgDraft; private Graphics2D graDraft; private int penSizeUnit = 6; private int rubberSizeUnit = 6; private Color penColor = Color.darkGray; private Selection selection = new Selection(); private SheetHBorder shhb; private SheetVBorder shvb; private ScriptPlugin scripting; private List<AssLine> karaokeOrnament = new ArrayList<>(); private OrnLayer ornlayForMain = new OrnLayer(); private OrnLayer ornlayForShape = new OrnLayer(); private SpinnerNumberModel spinMMModel, spinSMModel; private DefaultTableModel dtmOrnForMain; private feuille.lib.Language localeLanguage; private String strOK_Button = "OK"; private String strCancel_Button = "Annuler"; private String strRedMessage = "<html><i>Vous devez faire un clic droit sur le dessin avant d'ouvrir cette fenêtre."; private String strMessage = "Angle de rotation"; private String docs; private Frame frame; /** * Creates new form DrawingPanel */ public DrawingPanel(String docs, Frame frame, feuille.lib.Language lang) { initComponents(); localeLanguage = lang; init(); this.docs = docs; this.frame = frame; setLanguageAndConfigure(lang); } private void init(){ spSheet.setViewportView(sh); sh.setPreferredSize(new java.awt.Dimension(setSizeOfDrawing(),setSizeOfDrawing())); sh.revalidate(); shhb = new SheetHBorder(setSizeOfDrawing()); shvb = new SheetVBorder(setSizeOfDrawing()); spSheet.setColumnHeaderView(shhb); spSheet.setRowHeaderView(shvb); spSheet.setOpaque(true); spSheet.setBackground(Color.white); lstLayer.setModel(dlm); Layer layer = new Layer(); layer.setSelected(true); layer.setFirst(true); dlm.addElement(layer); lstLayer.setSelectedValue(layer, true); lstLayer.setCellRenderer(new LayerRenderer()); java.util.List<Layer> listlay = new ArrayList<>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer lay = (Layer)o; if(listlay.contains(lay)==false){ listlay.add(lay); sh.updateShapesList(lay.getShapesList()); } } } sh.setLayerList(listlay); int size = setSizeOfDrawing(); imgDraft = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB); graDraft = (Graphics2D)imgDraft.getGraphics(); graDraft.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); listRemember.setModel(dlmRemember); listRemember.setCellRenderer(new RememberRenderer()); listScript.setModel(dlmScript); listScript.setCellRenderer(new ScriptsListRenderer()); spinMMModel = new SpinnerNumberModel(400, 4, 30000, 1); spiOrnMMFreq.setModel(spinMMModel); String[] forMainHead = new String[]{"Forme", "Durée"}; if(localeLanguage.getValueOf("assSketchpadOrnShape")!=null){ forMainHead[0] = localeLanguage.getValueOf("assSketchpadOrnShape");} if(localeLanguage.getValueOf("assSketchpadOrnDuration")!=null){ forMainHead[1] = localeLanguage.getValueOf("assSketchpadOrnDuration");} dtmOrnForMain = new DefaultTableModel( null, forMainHead ){ Class[] types = new Class [] { AShape.class, java.lang.String.class}; boolean[] canEdit = new boolean [] { false, true}; @Override public Class getColumnClass(int columnIndex) {return types [columnIndex];} @Override public boolean isCellEditable(int rowIndex, int columnIndex) {return canEdit [columnIndex];} }; ornMMTable.setModel(dtmOrnForMain); TableColumn column; for (int i = 0; i < 2; i++) { column = ornMMTable.getColumnModel().getColumn(i); switch(i){ case 0: column.setPreferredWidth(30); break; //Forme case 1: column.setPreferredWidth(30); break; //Durée } } } public enum Thickness{ Big(10),Large(8),Medium(6),Small(4); private int thick; Thickness(int thick){ this.thick = thick; } public int getThickness(){ return thick; } } public void setScriptPlugin(ScriptPlugin splug){ scripting = splug; for(Object o : scripting.getObjectsList()){ if(o instanceof DrawingScript){ boolean ajout = true; for(int i=0;i<dlmScript.getSize();i++){ DrawingScript scr1 = (DrawingScript)o; DrawingScript scr2 = (DrawingScript)dlmScript.get(i); if(scr1.getFunction().equalsIgnoreCase(scr2.getFunction())){ ajout = false; } } if(ajout = true){ dlmScript.addElement(o); } } } } public JInternalFrame getIfrFile(){ return ifrOpenSave; } public JInternalFrame getIfrDraw(){ return ifrMainDraw; } public JInternalFrame getIfrImage(){ return ifrImage; } public JInternalFrame getIfrShape(){ return ifrShape; } public JInternalFrame getIfrMode(){ return ifrMode; } public JInternalFrame getIfrOperations(){ return ifrOperations; } public JInternalFrame getIfrScripts(){ return ifrScript; } public JInternalFrame getIfrHistoric(){ return ifrHistoric; } public JInternalFrame getIfrLayers(){ return ifrLayers; } public JInternalFrame getIfrSketchpad(){ return ifrDrawing; } public JInternalFrame getIfrOrnament(){ return ifrOrnament; } public JInternalFrame getIfrAssCommands(){ return ifrAssCommands; } public void updateThickness(Thickness thickness){ this.thickness = thickness; } private int setSizeOfDrawing(){ java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); java.awt.Dimension dim = toolkit.getScreenSize(); int big = (int)dim.getWidth(); if(dim.getWidth()<dim.getHeight()){ big = (int)dim.getHeight(); } int size = 1000; while(size<big){ size+=500; } return size; } //Teste si le point a et le point b sont à la même coordonnée. private boolean isSamePoint(java.awt.Point a, java.awt.Point b){ if(a.getX()!=b.getX()){return false;} if(a.getY()!=b.getY()){return false;} return true; } //Teste si les deux points sont proches. private boolean isNear(java.awt.Point area, java.awt.Point test){ int x = (int)area.getX(); int y = (int)area.getY(); java.awt.Rectangle rect = new java.awt.Rectangle( x-thickness.getThickness()/2, y-thickness.getThickness()/2, thickness.getThickness(), thickness.getThickness()); return rect.contains(test); } // //Met à jour les commandes ASS à partir du dessin // private void updateCommands(){ // String commands = ""; // Layer lay = getCurrentLayer(); // try{ // for(Shape s : lay.getShapesList().getShapes()){ // if(s instanceof Line){ // Line line = (Line)s; // int x = (int)line.getLastPoint().getX(); // int y = (int)line.getLastPoint().getY(); // int xb = x-(sh.getWidth()/scale)/2; // int yb = y-(sh.getHeight()/scale)/2; // commands = commands + "l "+xb+" "+yb+" "; // }else if(s instanceof Bezier){ // Bezier bezier = (Bezier)s; // int x1 = (int)bezier.getControl1().getOriginPoint().getX(); // int y1 = (int)bezier.getControl1().getOriginPoint().getY(); // int x2 = (int)bezier.getControl2().getOriginPoint().getX(); // int y2 = (int)bezier.getControl2().getOriginPoint().getY(); // int x3 = (int)bezier.getLastPoint().getX(); // int y3 = (int)bezier.getLastPoint().getY(); // int xe = x1-(sh.getWidth()/scale)/2; // int ye = y1-(sh.getHeight()/scale)/2; // int xf = x2-(sh.getWidth()/scale)/2; // int yf = y2-(sh.getHeight()/scale)/2; // int xg = x3-(sh.getWidth()/scale)/2; // int yg = y3-(sh.getHeight()/scale)/2; // commands = commands + "b "+xe+" "+ye+" "+xf+" "+yf+" "+xg+" "+yg+" "; // }else if(s instanceof BSpline){ // BSpline bs = (BSpline)s; // List<ControlPoint> lcp = bs.getControlPoints(); // int lastcp = lcp.size()-1; // commands = commands + "s "; // for(ControlPoint cp : lcp){ // int x = (int)cp.getOriginPoint().getX(); // int y = (int)cp.getOriginPoint().getY(); // int xi = x-(sh.getWidth()/scale)/2; // int yi = y-(sh.getHeight()/scale)/2; // if(bs.isNextExist()==true && cp.equals(lcp.get(lastcp))==true){ // //rien // }else{ // commands = commands + xi+" "+yi+" "; // } // } // if(bs.isClosed()==true){ // commands = commands + "c "; // } // if(bs.isNextExist()==true){ // int x = (int)bs.getNextPoint().getX(); // int y = (int)bs.getNextPoint().getY(); // int xi = x-(sh.getWidth()/scale)/2; // int yi = y-(sh.getHeight()/scale)/2; // commands = commands + "p "+xi+" "+yi+" "; // } // }else if(s instanceof Move){ // Move move = (Move)s; // int x = (int)move.getLastPoint().getX(); // int y = (int)move.getLastPoint().getY(); // int xb = x-(sh.getWidth()/scale)/2; // int yb = y-(sh.getHeight()/scale)/2; // commands = commands + "n "+xb+" "+yb+" "; // }else if(s instanceof ReStart){ // ReStart move = (ReStart)s; // int x = (int)move.getLastPoint().getX(); // int y = (int)move.getLastPoint().getY(); // int xb = x-(sh.getWidth()/scale)/2; // int yb = y-(sh.getHeight()/scale)/2; // commands = commands + "m "+xb+" "+yb+" "; // } // } //// try{ //// Point p = lay.getShapesList().getFirstPoint(); //// int x0 = (int)p.getOriginPoint().getX(); //// int y0 = (int)p.getOriginPoint().getY(); //// int xz = x0-(sh.getWidth()/scale)/2; //// int yz = y0-(sh.getHeight()/scale)/2; //// commands = "m "+xz+" "+yz+" " + commands; //// }catch(Exception e){ //// //// } // tfAssCommands.setText(commands); // }catch(Exception exc){ // //exc.printStackTrace(); // } // } //Met à jour les commandes ASS à partir du dessin private String commandsFromShapes(Layer lay){ String commands = ""; try{ for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line line = (Line)s; int x = (int)line.getLastPoint().getX(); int y = (int)line.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "l "+xb+" "+yb+" "; }else if(s instanceof Bezier){ Bezier bezier = (Bezier)s; int x1 = (int)bezier.getControl1().getOriginPoint().getX(); int y1 = (int)bezier.getControl1().getOriginPoint().getY(); int x2 = (int)bezier.getControl2().getOriginPoint().getX(); int y2 = (int)bezier.getControl2().getOriginPoint().getY(); int x3 = (int)bezier.getLastPoint().getX(); int y3 = (int)bezier.getLastPoint().getY(); int xe = x1-(sh.getWidth()/scale)/2; int ye = y1-(sh.getHeight()/scale)/2; int xf = x2-(sh.getWidth()/scale)/2; int yf = y2-(sh.getHeight()/scale)/2; int xg = x3-(sh.getWidth()/scale)/2; int yg = y3-(sh.getHeight()/scale)/2; commands = commands + "b "+xe+" "+ye+" "+xf+" "+yf+" "+xg+" "+yg+" "; }else if(s instanceof BSpline){ BSpline bs = (BSpline)s; List<ControlPoint> lcp = bs.getControlPoints(); int lastcp = lcp.size()-1; commands = commands + "s "; for(ControlPoint cp : lcp){ int x = (int)cp.getOriginPoint().getX(); int y = (int)cp.getOriginPoint().getY(); int xi = x-(sh.getWidth()/scale)/2; int yi = y-(sh.getHeight()/scale)/2; if(bs.isNextExist()==true && cp.equals(lcp.get(lastcp))==true){ //rien }else{ commands = commands + xi+" "+yi+" "; } } if(bs.isClosed()==true){ commands = commands + "c "; } if(bs.isNextExist()==true){ int x = (int)bs.getNextPoint().getX(); int y = (int)bs.getNextPoint().getY(); int xi = x-(sh.getWidth()/scale)/2; int yi = y-(sh.getHeight()/scale)/2; commands = commands + "p "+xi+" "+yi+" "; } }else if(s instanceof Move){ Move move = (Move)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "n "+xb+" "+yb+" "; }else if(s instanceof ReStart){ ReStart move = (ReStart)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "m "+xb+" "+yb+" "; } } // Point p = lay.getShapesList().getFirstPoint(); // int x0 = (int)p.getOriginPoint().getX(); // int y0 = (int)p.getOriginPoint().getY(); // int xz = x0-(sh.getWidth()/scale)/2; // int yz = y0-(sh.getHeight()/scale)/2; // commands = "m "+xz+" "+yz+" " + commands; return commands; }catch(Exception exc){ //exc.printStackTrace(); return ""; } } //Met à jour le dessin à partir des commandes ASS public static void shapesFromCommands(String com, Layer lay, int transX, int transY, java.awt.Point center, int angle){ List<Command> commandList = new ArrayList<Command>(); Pattern pat = Pattern.compile("([a-z]*)\\s*(-*\\d*)\\s*(-*\\d*)\\s*"); Matcher mat = pat.matcher(com); while(mat.find()){ //System.out.println(mat.group(1)+" <> "+mat.group(2)+" | "+mat.group(3)); try{ String param = mat.group(1); if(param.equalsIgnoreCase("c")){ Command c = new Command(Command.Type.Close); commandList.add(c); } int xs = (sh.getWidth()/2)/scale+Integer.parseInt(mat.group(2))+transX; int ys = (sh.getWidth()/2)/scale+Integer.parseInt(mat.group(3))+transY; //System.out.println("+++ "+angle); if(angle!=0){ int xc = Integer.parseInt(mat.group(2)); int yc = Integer.parseInt(mat.group(3)); xs = (int)Math.round(xc*Math.cos(Math.toRadians(angle))+yc*Math.sin(Math.toRadians(angle))); ys = (int)Math.round(-xc*Math.sin(Math.toRadians(angle))+yc*Math.cos(Math.toRadians(angle))); xs = xs + (sh.getWidth()/2)/scale; ys = ys + (sh.getWidth()/2)/scale; } if(param.equalsIgnoreCase("m")){ Command c = new Command(Command.Type.ReStart); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("l")){ Command c = new Command(Command.Type.Line); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("b")){ Command c = new Command(Command.Type.Bezier); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("s")){ Command c = new Command(Command.Type.BSpline); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("n")){ Command c = new Command(Command.Type.Move); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("p")){ Command c = new Command(Command.Type.Extend); c.add_X(xs); c.add_Y(ys); commandList.add(c); } if(param.equalsIgnoreCase("") & commandList.get(commandList.size()-1).getType()==Command.Type.Bezier){ Command c = commandList.get(commandList.size()-1); c.add_X(xs); c.add_Y(ys); } if(param.equalsIgnoreCase("") & commandList.get(commandList.size()-1).getType()==Command.Type.BSpline){ Command c = commandList.get(commandList.size()-1); c.add_X(xs); c.add_Y(ys); } }catch(Exception e){ //Nombre non existant } } if(lay==null){lay = getCurrentLayer();} lay.getShapesList().removeAllShapes(); lay.clearRemembers(); dlmRemember.clear(); java.awt.Point p_init = new java.awt.Point(); Command last_command = null; for(Command c : commandList){ if(c.getType()==Command.Type.ReStart){ ReStart p = c.getStartPoint((int)p_init.getX(), (int)p_init.getY()); lay.getShapesList().addShape(p); lay.addRemember(p); p_init = p.getLastPoint(); } if(c.getType()==Command.Type.Line){ Line l = c.getLine((int)p_init.getX(), (int)p_init.getY()); Point p = new Point((int)l.getLastPoint().getX(), (int)l.getLastPoint().getY()); lay.getShapesList().addShape(p); lay.addRemember(p); lay.getShapesList().addShape(l); lay.addRemember(l); p_init = l.getLastPoint(); } if(c.getType()==Command.Type.Bezier){ Bezier b = c.getBezier((int)p_init.getX(), (int)p_init.getY()); Point p = new Point((int)b.getLastPoint().getX(), (int)b.getLastPoint().getY()); lay.getShapesList().addShape(p); lay.addRemember(p); lay.getShapesList().addShape(b); lay.addRemember(b); lay.getShapesList().addShape(b.getControl1()); lay.addRemember(b.getControl1()); lay.getShapesList().addShape(b.getControl2()); lay.addRemember(b.getControl2()); p_init = b.getLastPoint(); } if(c.getType()==Command.Type.BSpline){ BSpline b = c.getBSpline((int)p_init.getX(), (int)p_init.getY()); Point p = new Point((int)b.getLastPoint().getX(), (int)b.getLastPoint().getY()); lay.getShapesList().addShape(p); lay.addRemember(p); lay.getShapesList().addShape(b); lay.addRemember(b); p_init = b.getLastPoint(); } if(c.getType()==Command.Type.Extend && last_command.getType()==Command.Type.BSpline){ BSpline b = (BSpline)lay.getShapesList().getLastShape(); Point p = c.getExtendPoint(); if(b.isClosed()==false){ b.setNextPoint((int)p.getLastPoint().getX(), (int)p.getLastPoint().getY()); b.addPoint((int)p.getLastPoint().getX(), (int)p.getLastPoint().getY()); b.setLastPoint((int)p.getLastPoint().getX(), (int)p.getLastPoint().getY()); } p_init = b.getLastPoint(); } if(c.getType()==Command.Type.Close && last_command.getType()==Command.Type.BSpline){ BSpline b = (BSpline)lay.getShapesList().getLastShape(); if(b.isNextExist()==false){ b.setClosed(true); } p_init = b.getLastPoint(); } if(c.getType()==Command.Type.Move){ Move m = c.getMove((int)p_init.getX(), (int)p_init.getY()); lay.getShapesList().addShape(m); lay.addRemember(m); p_init = m.getLastPoint(); } last_command = c; } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.setFirstPoint(p_init); lay.setLastPoint(p_init); // List<String> commands = new ArrayList<String>(); // while (com.length() > 0){ // if(com.startsWith("m") | com.startsWith("l") | com.startsWith("b")){ // int index_of_line = com.substring(1).indexOf("l")+1; // int index_of_bezier = com.substring(1).indexOf("b")+1; // if((index_of_line!=0 && index_of_line<index_of_bezier) | (index_of_bezier==0 && index_of_bezier<index_of_line)){ // commands.add(com.substring(0, index_of_line-1)); // com = com.substring(index_of_line); // }else if((index_of_bezier!=0 && index_of_bezier<index_of_line) | (index_of_line==0 && index_of_line<index_of_bezier)){ // commands.add(com.substring(0, index_of_bezier-1)); // com = com.substring(index_of_bezier); // }else if(index_of_bezier==0 | index_of_line==0){ // if(com.endsWith(" ")){ // commands.add(com.substring(0,com.lastIndexOf(" "))); // }else{ // commands.add(com.substring(0)); // } // com = ""; // } // } // } // if(lay==null){lay = getCurrentLayer();} // lay.getShapesList().removeAllShapes(); // java.awt.Point porigin, plast; porigin = null; plast = null; // for(String s : commands){ // if(s.startsWith("m")){ // String[] result = s.substring(2).split(" "); // porigin = new java.awt.Point( // (sh.getWidth()/2)/scale+Integer.parseInt(result[0]), // (sh.getHeight()/2)/scale+Integer.parseInt(result[1])); // Point point = // new Point((int)porigin.getX(),(int)porigin.getY()); // lay.getShapesList().addShape(point); // }else if (s.startsWith("l")){ // String[] result = s.substring(2).split(" "); // plast = new java.awt.Point( // (sh.getWidth()/2)/scale+Integer.parseInt(result[0]), // (sh.getHeight()/2)/scale+Integer.parseInt(result[1])); // Point point = // new Point((int)plast.getX(),(int)plast.getY()); // lay.getShapesList().addShape(point); // Line line = new Line(); // line.setOriginPoint((int)porigin.getX(),(int)porigin.getY()); // line.setLastPoint((int)plast.getX(),(int)plast.getY()); // lay.getShapesList().addShape(line); // porigin = plast; // }else if (s.startsWith("b")){ // String[] result = s.substring(2).split(" "); // plast = new java.awt.Point( // (sh.getWidth()/2)/scale+Integer.parseInt(result[4]), // (sh.getHeight()/2)/scale+Integer.parseInt(result[5])); // java.awt.Point p1 = new java.awt.Point( // (sh.getWidth()/2)/scale+Integer.parseInt(result[0]), // (sh.getHeight()/2)/scale+Integer.parseInt(result[1])); // java.awt.Point p2 = new java.awt.Point( // (sh.getWidth()/2)/scale+Integer.parseInt(result[2]), // (sh.getHeight()/2)/scale+Integer.parseInt(result[3])); // Point point = // new Point((int)plast.getX(),(int)plast.getY()); // lay.getShapesList().addShape(point); // Bezier b = // new Bezier((int)porigin.getX(), // (int)porigin.getY(), (int)plast.getX(), (int)plast.getY()); // ControlPoint cp1 = // new ControlPoint((int)p1.getX(), (int)p1.getY()); // b.setControl1(cp1); // ControlPoint cp2 = // new ControlPoint((int)p2.getX(), (int)p2.getY()); // b.setControl2(cp2); // lay.getShapesList().addShape(b); // lay.getShapesList().addShape(cp1); // lay.getShapesList().addShape(cp2); // porigin = plast; // } // } // sh.updateGeneralPath(lay.getGeneralPath()); // sh.updateShapesList(lay.getShapesList()); // lay.setFirstPoint(new java.awt.Point((int)porigin.getX(), (int)porigin.getY())); // lay.setLastPoint(new java.awt.Point((int)plast.getX(), (int)plast.getY())); } private void fixCommands(){ //TODO : Comprendre pourquoi les commandes merdent et font que //on ne peut plus les modifier à la souris avant un shapesFromCommands tfAssCommands.setText(updateCommands()); shapesFromCommands(getCommands(), getCurrentLayer(), 0, 0, null, 0); } // public String openDrawingFile(String path){ // String commands = ""; // File file = new File(path); // try{ // FileInputStream fis = new FileInputStream(file); // java.io.BufferedReader br = new java.io.BufferedReader( // new java.io.InputStreamReader(fis, "UTF-8")); // commands = br.readLine(); // br.close(); fis.close(); // lastDrawing = file.getAbsolutePath(); // return commands; // }catch (Exception exc){ // return ""; // } // } // public void saveDrawingFile(String path, String commands){ // File file = new File(path); // try{ // FileOutputStream fos = new FileOutputStream(file); // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8")); // PrintWriter pw = new PrintWriter(bw); // pw.print(commands); // pw.flush(); // pw.close(); bw.close(); fos.close(); // lastDrawing = file.getAbsolutePath(); // }catch(Exception exc){ // // } // } public void openSVGFile(String path){ try { XmlVectorHandler xvh = new XmlVectorHandler(path); VectorObject vro = xvh.getVectorObject(); //Layers int count = 0; dlm.clear(); for(LayerContent lc : vro.getLayers()){ Layer lay = new Layer(); lay.setName(lc.getName()); lay.setColor(lc.getColor()); shapesFromCommands(lc.getAssCommands(),lay,0,0,null,0); if(count==0){ lay.setFirst(true); lay.setSelected(false); dlm.addElement(lay); tfAssCommands.setText(lc.getAssCommands()); }else{ lay.setSelected(false); dlm.addElement(lay); tfAssCommands.setText(lc.getAssCommands()); } count += 1; lastDrawing = path; lstLayer.setSelectedIndex(count-1); Layer lastLayer = (Layer)lstLayer.getSelectedValue(); lastLayer.setSelected(true); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer lay2 = (Layer)o; if(listlay.contains(lay2)==false){ listlay.add(lay2); sh.updateShapesList(lay2.getShapesList()); } } } sh.setLayerList(listlay); } } catch (Exception ex) { } } public void openDrawingFile(String path){ String line; File file = new File(path); try{ FileInputStream fis = new FileInputStream(file); java.io.BufferedReader br = new java.io.BufferedReader( new java.io.InputStreamReader(fis, "UTF-8")); dlm.clear(); int count = 0; while((line = br.readLine())!=null){ String[] fragments = line.split(";"); Layer lay = new Layer(); lay.setName(fragments[0]); String[] colors = fragments[1].split(","); lay.setColor(new Color(Integer.parseInt(colors[0]), Integer.parseInt(colors[1]), Integer.parseInt(colors[2]))); shapesFromCommands(fragments[2],lay,0,0,null,0); if(count==0){ lay.setFirst(true); lay.setSelected(false); dlm.addElement(lay); }else{ lay.setSelected(false); dlm.addElement(lay); tfAssCommands.setText(fragments[2]); } count += 1; } br.close(); fis.close(); lastDrawing = file.getAbsolutePath(); lstLayer.setSelectedIndex(count-1); Layer lastLayer = (Layer)lstLayer.getSelectedValue(); lastLayer.setSelected(true); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer lay = (Layer)o; if(listlay.contains(lay)==false){ listlay.add(lay); sh.updateShapesList(lay.getShapesList()); } } } sh.setLayerList(listlay); }catch (Exception exc){ } } public void saveDrawingFile(String path){ File file = new File(path); try{ FileOutputStream fos = new FileOutputStream(file); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8")); PrintWriter pw = new PrintWriter(bw); int count = 0; for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer lay = (Layer)o; String name = lay.getName(); if(name.isEmpty()){name="ID "+count;} pw.println( name+";"+ lay.getColor().getRed()+","+ lay.getColor().getGreen()+","+ lay.getColor().getBlue()+";"+ commandsFromShapes(lay)); pw.flush(); count += 1; } } pw.close(); bw.close(); fos.close(); lastDrawing = file.getAbsolutePath(); }catch(Exception exc){ } } public void openDrawingFile2(String path){ try { XmlDrawingHandler xdh = new XmlDrawingHandler(path); DrawingObject dro = xdh.getDrawingObject(); //Layers int count = 0; dlm.clear(); for(LayerContent lc : dro.getLayers()){ Layer lay = new Layer(); lay.setName(lc.getName()); lay.setColor(lc.getColor()); shapesFromCommands(lc.getAssCommands(),lay,0,0,null,0); if(count==0){ lay.setFirst(true); lay.setSelected(false); dlm.addElement(lay); tfAssCommands.setText(lc.getAssCommands()); }else{ lay.setSelected(false); dlm.addElement(lay); tfAssCommands.setText(lc.getAssCommands()); } count += 1; lastDrawing = path; lstLayer.setSelectedIndex(count-1); Layer lastLayer = (Layer)lstLayer.getSelectedValue(); lastLayer.setSelected(true); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer lay2 = (Layer)o; if(listlay.contains(lay2)==false){ listlay.add(lay2); sh.updateShapesList(lay2.getShapesList()); } } } sh.setLayerList(listlay); } //Image imgDraft = dro.getImage(); graDraft = (Graphics2D)imgDraft.getGraphics(); graDraft.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); sh.updateDraft(imgDraft); //Photo img = dro.getIcon(); sh.updateImage(img); sh.updateImageRealPosition(dro.getIconPositionX(), dro.getIconPositionY()); sh.updateDrawing(); } catch (Exception ex) { } } public void saveDrawingFile2(String path){ DrawingObject dro = new DrawingObject(); for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer lay = (Layer)o; dro.addLayer(lay.getName(), lay.getColor(), commandsFromShapes(lay)); } } dro.setImage(imgDraft); dro.setIcon(img); dro.setIconPositionX(sh.getImagePositionX()); dro.setIconPositionY(sh.getImagePositionY()); XmlDrawingWriter xdw = new XmlDrawingWriter(); xdw.setDrawingObject(dro); xdw.createDrawing(path); } public String[] getAssCommandsOfFile(String path){ try{ XmlDrawingHandler xdh = new XmlDrawingHandler(path); DrawingObject dro = xdh.getDrawingObject(); String[] table = new String[dro.getLayers().size()]; int count = 0; for(LayerContent lc : dro.getLayers()){ table[count] = lc.getAssCommands(); count += 1; } return table; }catch(Exception ex){ return null; } } /** Get commands from the text area. */ public String getCommands(){ return tfAssCommands.getText(); } /** Get the path of the last drawing. */ public String getLastDrawing(){ return lastDrawing; } /** Open the drawing specified by the path. Open ADF Files only. */ public void openDrawing(String path){ if(path.endsWith(".adf")){ // openDrawingFile(path); openDrawingFile2(path); // try { // shapesFromCommands(commands,null); // } catch (Exception ex) { // ex.printStackTrace(); // } } } /** Get the path of the last image. */ public String getLastImage(){ return lastImage; } /** Open an image in the drawing area. */ public void openImage(String path){ img = new ImageIcon(path); sh.updateImage(img); sh.updateDrawing(); } /** Get the value of the image opacity. */ public int getImageOpacity(){ return slideImageAlpha.getValue(); } /** Set the value of the image opacity. */ public void setImageOpacity(int value){ slideImageAlpha.setValue(value); } /** Get the value of the shape opacity. */ public int getShapeOpacity(){ return slideDrawingAlpha.getValue(); } /** Set the value of the shape opacity. */ public void setShapeOpacity(int value){ slideDrawingAlpha.setValue(value); } /** Get the value of the scale. */ public int getScale(){ return slideScale.getValue(); } /** Set the value of the scale. */ public void setScale(int value){ slideScale.setValue(value); } /** Set the width of the text area which contains commands */ public void setCommandsWidth(int width){ tfAssCommands.setSize(width, tfAssCommands.getHeight()); } private List<String> getListOfCommands(String com){ List<String> coms = new ArrayList<String>(); while (com.length() > 0){ if(com.startsWith("m") | com.startsWith("l") | com.startsWith("b")){ int index_of_line = com.substring(1).indexOf("l")+1; int index_of_bezier = com.substring(1).indexOf("b")+1; if((index_of_line!=0 && index_of_line<index_of_bezier) | (index_of_bezier==0 && index_of_bezier<index_of_line)){ coms.add(com.substring(0, index_of_line-1)); com = com.substring(index_of_line); }else if((index_of_bezier!=0 && index_of_bezier<index_of_line) | (index_of_line==0 && index_of_line<index_of_bezier)){ coms.add(com.substring(0, index_of_bezier-1)); com = com.substring(index_of_bezier); }else if(index_of_bezier==0 | index_of_line==0){ if(com.endsWith(" ")){ coms.add(com.substring(0,com.lastIndexOf(" "))); }else{ coms.add(com.substring(0)); } com = ""; } } } return coms; } /** Obtient les commandes pour l'ornement à partir de la couche sélectionnée. * @param lay La couche sélectionnée. * @param xt Le décalage sur x. * @param yt Le décalage sur y. * @return La commande de l'ornement. */ public String getOrnamentCommands(Layer lay, int xt, int yt){ //On obtient la position de l'image (valeur à toujours soustraire) int posX = sh.getImagePositionX() + xt; int posY = sh.getImagePositionY() + yt; String commands = ""; try{ for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line line = (Line)s; int x = (int)line.getLastPoint().getX(); int y = (int)line.getLastPoint().getY(); int xb = x-posX; int yb = y-posY; commands = commands + "l "+xb+" "+yb+" "; }else if(s instanceof Bezier){ Bezier bezier = (Bezier)s; int x1 = (int)bezier.getControl1().getOriginPoint().getX(); int y1 = (int)bezier.getControl1().getOriginPoint().getY(); int x2 = (int)bezier.getControl2().getOriginPoint().getX(); int y2 = (int)bezier.getControl2().getOriginPoint().getY(); int x3 = (int)bezier.getLastPoint().getX(); int y3 = (int)bezier.getLastPoint().getY(); int xe = x1-posX; int ye = y1-posY; int xf = x2-posX; int yf = y2-posY; int xg = x3-posX; int yg = y3-posY; commands = commands + "b "+xe+" "+ye+" "+xf+" "+yf+" "+xg+" "+yg+" "; }else if(s instanceof BSpline){ BSpline bs = (BSpline)s; List<ControlPoint> lcp = bs.getControlPoints(); int lastcp = lcp.size()-1; commands = commands + "s "; for(ControlPoint cp : lcp){ int x = (int)cp.getOriginPoint().getX(); int y = (int)cp.getOriginPoint().getY(); int xi = x-posX; int yi = y-posY; if(bs.isNextExist()==true && cp.equals(lcp.get(lastcp))==true){ //rien }else{ commands = commands + xi+" "+yi+" "; } } if(bs.isClosed()==true){ commands = commands + "c "; } if(bs.isNextExist()==true){ int x = (int)bs.getNextPoint().getX(); int y = (int)bs.getNextPoint().getY(); int xi = x-posX; int yi = y-posY; commands = commands + "p "+xi+" "+yi+" "; } }else if(s instanceof Move){ Move move = (Move)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-posX; int yb = y-posY; commands = commands + "n "+xb+" "+yb+" "; }else if(s instanceof ReStart){ ReStart move = (ReStart)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-posX; int yb = y-posY; commands = commands + "m "+xb+" "+yb+" "; } } return commands; }catch(Exception exc){ return ""; } } // <editor-fold defaultstate="collapsed" desc=" Communication avec l'extérieur "> public static String updateCommands(){ String commands = ""; Layer lay = getCurrentLayer(); try{ for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line line = (Line)s; int x = (int)line.getLastPoint().getX(); int y = (int)line.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "l "+xb+" "+yb+" "; }else if(s instanceof Bezier){ Bezier bezier = (Bezier)s; int x1 = (int)bezier.getControl1().getOriginPoint().getX(); int y1 = (int)bezier.getControl1().getOriginPoint().getY(); int x2 = (int)bezier.getControl2().getOriginPoint().getX(); int y2 = (int)bezier.getControl2().getOriginPoint().getY(); int x3 = (int)bezier.getLastPoint().getX(); int y3 = (int)bezier.getLastPoint().getY(); int xe = x1-(sh.getWidth()/scale)/2; int ye = y1-(sh.getHeight()/scale)/2; int xf = x2-(sh.getWidth()/scale)/2; int yf = y2-(sh.getHeight()/scale)/2; int xg = x3-(sh.getWidth()/scale)/2; int yg = y3-(sh.getHeight()/scale)/2; commands = commands + "b "+xe+" "+ye+" "+xf+" "+yf+" "+xg+" "+yg+" "; }else if(s instanceof BSpline){ BSpline bs = (BSpline)s; List<ControlPoint> lcp = bs.getControlPoints(); int lastcp = lcp.size()-1; commands = commands + "s "; for(ControlPoint cp : lcp){ int x = (int)cp.getOriginPoint().getX(); int y = (int)cp.getOriginPoint().getY(); int xi = x-(sh.getWidth()/scale)/2; int yi = y-(sh.getHeight()/scale)/2; if(bs.isNextExist()==true && cp.equals(lcp.get(lastcp))==true){ //rien }else{ commands = commands + xi+" "+yi+" "; } } if(bs.isClosed()==true){ commands = commands + "c "; } if(bs.isNextExist()==true){ int x = (int)bs.getNextPoint().getX(); int y = (int)bs.getNextPoint().getY(); int xi = x-(sh.getWidth()/scale)/2; int yi = y-(sh.getHeight()/scale)/2; commands = commands + "p "+xi+" "+yi+" "; } }else if(s instanceof Move){ Move move = (Move)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "n "+xb+" "+yb+" "; }else if(s instanceof ReStart){ ReStart move = (ReStart)s; int x = (int)move.getLastPoint().getX(); int y = (int)move.getLastPoint().getY(); int xb = x-(sh.getWidth()/scale)/2; int yb = y-(sh.getHeight()/scale)/2; commands = commands + "m "+xb+" "+yb+" "; } } return commands; }catch(Exception exc){ return null; } } public static void updateRemember(Layer lay){ if(lay==null){ lay = getCurrentLayer(); } dlmRemember.clear(); for(Remember re : lay.getRememberlist(true)){ if(dlmRemember.contains(re)==false){ dlmRemember.addElement(re); } } } public static Layer getCurrentLayer(){ for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer lay = (Layer)o; if(lay.isSelected()==true){ return lay; } } } return null; } /** Renvoie une liste des couches liées par la notation Couche X Ln. * Renvoir toutes les couches portant la notion Ln. par rapport à la couche * en cours. */ public List<Layer> getLinkedLayers(){ List<Layer> layers = new ArrayList<Layer>(); Layer real_lay = getCurrentLayer(); try{ int groupNumber = Integer.parseInt(real_lay.getName() .substring(real_lay.getName().lastIndexOf("L")+1)); for(Object o : dlm.toArray()){ Layer lay = (Layer)o; if(lay.getName().contains(("L"+groupNumber))){ layers.add(lay); } } return layers; }catch(Exception e){ return layers; } } public static void setAssCommands(){ tfAssCommands.setText(updateCommands()); } public static Sheet getSheet(){ return sh; } public static boolean changeLayer(int id){ try{ lstLayer.setSelectedIndex(id); return true; }catch(Exception e){ return false; } } public static int createLayer(String name, int r, int g, int b){ Color c; try{ c = new Color(r,g,b); }catch(Exception e){ c = Color.green; } if(name==null | name.equals("")){ name = "ID "+dlm.toArray().length; } Layer lay = new Layer(); lay.setName(name); lay.setColor(c); dlm.addElement(lay); lstLayer.setSelectedValue(lay, true); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); sh.updateShapesList(layer.getShapesList()); } } } sh.setLayerList(listlay); sh.updateDrawing(); return dlm.getSize()-1; } public static void updateLayerList(){ lstLayer.updateUI(); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc=" Langage "> private List<File> listFiles = new ArrayList<File>(); /** <p>A choice of countries.<br />Un choix de pays.</p> */ public enum ISO_3166{ Afghanistan("AF","AFG","Afghanistan"), Albania("AL","ALB","Albania"), Algeria("DZ","DZA","Algeria"), American_Samoa("AS","ASM","American Samoa"), Andorra("AD","AND","Andorra"), Angola("AO","AGO","Angola"), Anguilla("AI","AIA","Anguilla"), Antarctica("AQ","ATA","Antarctica"), Antigua_and_Barbuda("AG","ATG","Antigua and Barbuda"), Argentina("AR","ARG","Argentina"), Armenia("AM","ARM","Armenia"), Aruba("AW","ABW","Aruba"), Australia("AU","AUS","Australia"), Austria("AT","AUT","Austria"), Azerbaijan("AZ","AZE","Azerbaijan"), Bahamas("BS","BHS","Bahamas"), Bahrain("BH","BHR","Bahrain"), Bangladesh("BD","BGD","Bangladesh"), Barbados("BB","BRB","Barbados"), Belarus("BY","BLR","Belarus"), Belgium("BE","BEL","Belgium"), Belize("BZ","BLZ","Belize"), Benin("BJ","BEN","Benin"), Bermuda("BM","BMU","Bermuda"), Bhutan("BT","BTN","Bhutan"), Bolivia("BO","BOL","Bolivia"), Bosnia_and_Herzegovina("BA","BIH","Bosnia and Herzegovina"), Botswana("BW","BWA","Botswana"), Bouvet_Island("BV","BVT","Bouvet Island"), Brazil("BR","BRA","Brazil"), British_Indian_Ocean_Territory("IO","IOT","British Indian Ocean Territory"), British_Virgin_Islands("VG","VGB","British Virgin Islands"), Brunei_Darussalam("BN","BRN","Brunei Darussalam"), Bulgaria("BG","BGR","Bulgaria"), Burkina_Faso("BF","BFA","Burkina Faso"), Burundi("BI","BDI","Burundi"), Cambodia("KH","KHM","Cambodia"), Cameroon("CM","CMR","Cameroon"), Canada("CA","CAN","Canada"), Cape_Verde("CV","CPV","Cape Verde"), Cayman_Islands("KY", "CYM", "Cayman Islands"), Central_African_Republic("CF", "CAF", "Central African Republic"), Chad("TD", "TCD", "Chad"), Chile("CL", "CHL", "Chile"), China("CN", "CHN", "China"), Christmas_Island("CX", "CXR", "Christmas Island"), Cocos_Islands("CC", "CCK", "Cocos (Keeling), Islands"), Colombia("CO", "COL", "Colombia"), Comoros("KM", "COM", "Comoros"), Congo1("CD", "COD", "Congo"), Congo2("CG", "COG", "Congo"), Cook_Islands("CK", "COK", "Cook Islands"), Costa_Rica("CR", "CRI", "Costa Rica"), Cote_DIvoire("CI", "CIV", "Cote D'Ivoire"), Cuba("CU", "CUB", "Cuba"), Cyprus("CY", "CYP", "Cyprus"), Czech("CZ", "CZE", "Czech"), Denmark("DK", "DNK", "Denmark"), Djibouti("DJ", "DJI", "Djibouti"), Dominica("DM", "DMA", "Dominica"), Dominican("DO", "DOM", "Dominican"), Ecuador("EC", "ECU", "Ecuador"), Egypt("EG", "EGY", "Egypt"), El_Salvador("SV", "SLV", "El Salvador"), Equatorial_Guinea("GQ", "GNQ", "Equatorial Guinea"), Eritrea("ER", "ERI", "Eritrea"), Estonia("EE", "EST", "Estonia"), Ethiopia("ET", "ETH", "Ethiopia"), Faeroe_Islands("FO", "FRO", "Faeroe Islands"), Falkland_Islands("FK", "FLK", "Falkland Islands (Malvinas),"), Fiji("FJ", "FJI", "Fiji"), Finland("FI", "FIN", "Finland"), France("FR", "FRA", "France"), French_Guiana("GF", "GUF", "French Guiana"), French_Polynesia("PF", "PYF", "French Polynesia"), French_Southern_Territories("TF", "ATF", "French Southern Territories"), Gabon("GA", "GAB", "Gabon"), Gambia("GM", "GMB", "Gambia"), Georgia("GE", "GEO", "Georgia"), Germany("DE", "DEU", "Germany"), Ghana("GH", "GHA", "Ghana"), Gibraltar("GI", "GIB", "Gibraltar"), Greece("GR", "GRC", "Greece"), Greenland("GL", "GRL", "Greenland"), Grenada("GD", "GRD", "Grenada"), Guadaloupe("GP", "GLP", "Guadaloupe"), Guam("GU", "GUM", "Guam"), Guatemala("GT", "GTM", "Guatemala"), Guinea("GN", "GIN", "Guinea"), Guinea_Bissau("GW", "GNB", "Guinea-Bissau"), Guyana("GY", "GUY", "Guyana"), Haiti("HT", "HTI", "Haiti"), Heard_and_McDonald_Islands("HM", "HMD", "Heard and McDonald Islands"), Holy_See("VA", "VAT", "Holy See (Vatican City State),"), Honduras("HN", "HND", "Honduras"), Hong_Kong("HK", "HKG", "Hong Kong"), Hrvatska("HR", "HRV", "Hrvatska (Croatia),"), Hungary("HU", "HUN", "Hungary"), Iceland("IS", "ISL", "Iceland"), India("IN", "IND", "India"), Indonesia("ID", "IDN", "Indonesia"), Iran("IR", "IRN", "Iran"), Iraq("IQ", "IRQ", "Iraq"), Ireland("IE", "IRL", "Ireland"), Israel("IL", "ISR", "Israel"), Italy("IT", "ITA", "Italy"), Jamaica("JM", "JAM", "Jamaica"), Japan("JP", "JPN", "Japan"), Jordan("JO", "JOR", "Jordan"), Kazakhstan("KZ", "KAZ", "Kazakhstan"), Kenya("KE", "KEN", "Kenya"), Kiribati("KI", "KIR", "Kiribati"), Korea1("KP", "PRK", "Korea"), Korea2("KR", "KOR", "Korea"), Kuwait("KW", "KWT", "Kuwait"), Kyrgyz_Republic("KG", "KGZ", "Kyrgyz Republic"), Lao_Peoples_Democratic_Republic("LA", "LAO", "Lao People's Democratic Republic"), Latvia("LV", "LVA", "Latvia"), Lebanon("LB", "LBN", "Lebanon"), Lesotho("LS", "LSO", "Lesotho"), Liberia("LR", "LBR", "Liberia"), Libyan("LY", "LBY", "Libyan"), Liechtenstein("LI", "LIE", "Liechtenstein"), Lithuania("LT", "LTU", "Lithuania"), Luxembourg("LU", "LUX", "Luxembourg"), Macao("MO", "MAC", "Macao"), Macedonia("MK", "MKD", "Macedonia"), Madagascar("MG", "MDG", "Madagascar"), Malawi("MW", "MWI", "Malawi"), Malaysia("MY", "MYS", "Malaysia"), Maldives("MV", "MDV", "Maldives"), Mali("ML", "MLI", "Mali"), Malta("MT", "MLT", "Malta"), Marshall_Islands("MH", "MHL", "Marshall Islands"), Martinique("MQ", "MTQ", "Martinique"), Mauritania("MR", "MRT", "Mauritania"), Mauritius("MU", "MUS", "Mauritius"), Mayotte("YT", "MYT", "Mayotte"), Mexico("MX", "MEX", "Mexico"), Micronesia("FM", "FSM", "Micronesia"), Moldova("MD", "MDA", "Moldova"), Monaco("MC", "MCO", "Monaco"), Mongolia("MN", "MNG", "Mongolia"), Montserrat("MS", "MSR", "Montserrat"), Morocco("MA", "MAR", "Morocco"), Mozambique("MZ", "MOZ", "Mozambique"), Myanmar("MM", "MMR", "Myanmar"), Namibia("NA", "NAM", "Namibia"), Nauru("NR", "NRU", "Nauru"), Nepal("NP", "NPL", "Nepal"), Netherlands_Antilles("AN", "ANT", "Netherlands Antilles"), Netherlands("NL", "NLD", "Netherlands"), New_Caledonia("NC", "NCL", "New Caledonia"), New_Zealand("NZ", "NZL", "New Zealand"), Nicaragua("NI", "NIC", "Nicaragua"), Niger("NE", "NER", "Niger"), Nigeria("NG", "NGA", "Nigeria"), Niue("NU", "NIU", "Niue"), Norfolk_Island("NF", "NFK", "Norfolk Island"), Northern_Mariana_Islands("MP", "MNP", "Northern Mariana Islands"), Norway("NO", "NOR", "Norway"), Oman("OM", "OMN", "Oman"), Pakistan("PK", "PAK", "Pakistan"), Palau("PW", "PLW", "Palau"), Palestinian_Territory("PS", "PSE", "Palestinian Territory"), Panama("PA", "PAN", "Panama"), Papua_New_Guinea("PG", "PNG", "Papua New Guinea"), Paraguay("PY", "PRY", "Paraguay"), Peru("PE", "PER", "Peru"), Philippines("PH", "PHL", "Philippines"), Pitcairn_Island("PN", "PCN", "Pitcairn Island"), Poland("PL", "POL", "Poland"), Portugal("PT", "PRT", "Portugal"), Puerto_Rico("PR", "PRI", "Puerto Rico"), Qatar("QA", "QAT", "Qatar"), Reunion("RE", "REU", "Reunion"), Romania("RO", "ROU", "Romania"), Russian_Federation("RU", "RUS", "Russian Federation"), Rwanda("RW", "RWA", "Rwanda"), St__Helena("SH", "SHN", "St. Helena"), St__Kitts_and_Nevis("KN", "KNA", "St. Kitts and Nevis"), St__Lucia("LC", "LCA", "St. Lucia"), St__Pierre_and_Miquelon("PM", "SPM", "St. Pierre and Miquelon"), St__Vincent_and_the_Grenadines("VC", "VCT", "St. Vincent and the Grenadines"), Samoa("WS", "WSM", "Samoa"), San_Marino("SM", "SMR", "San Marino"), Sao_Tome_and_Principe("ST", "STP", "Sao Tome and Principe"), Saudi_Arabia("SA", "SAU", "Saudi Arabia"), Senegal("SN", "SEN", "Senegal"), Serbia_and_Montenegro("CS", "SCG", "Serbia and Montenegro"), Seychelles("SC", "SYC", "Seychelles"), Sierra_Leone("SL", "SLE", "Sierra Leone"), Singapore("SG", "SGP", "Singapore"), Slovakia("SK", "SVK", "Slovakia (Slovak Republic),"), Slovenia("SI", "SVN", "Slovenia"), Solomon_Islands("SB", "SLB", "Solomon Islands"), Somalia("SO", "SOM", "Somalia"), South_Africa("ZA", "ZAF", "South Africa"), South_Georgia_and_the_South_Sandwich_Islands("GS", "SGS", "South Georgia and the South Sandwich Islands"), Spain("ES", "ESP", "Spain"), Sri_Lanka("LK", "LKA", "Sri Lanka"), Sudan("SD", "SDN", "Sudan"), Suriname("SR", "SUR", "Suriname"), Svalbard___Jan_Mayen_Islands("SJ", "SJM", "Svalbard & Jan Mayen Islands"), Swaziland("SZ", "SWZ", "Swaziland"), Sweden("SE", "SWE", "Sweden"), Switzerland("CH", "CHE", "Switzerland"), Syrian_Arab_Republic("SY", "SYR", "Syrian Arab Republic"), Taiwan("TW", "TWN", "Taiwan"), Tajikistan("TJ", "TJK", "Tajikistan"), Tanzania("TZ", "TZA", "Tanzania"), Thailand("TH", "THA", "Thailand"), Timor_Leste("TL", "TLS", "Timor-Leste"), Togo("TG", "TGO", "Togo"), Tokelau("TK", "TKL", "Tokelau (Tokelau Islands),"), Tonga("TO", "TON", "Tonga"), Trinidad_and_Tobago("TT", "TTO", "Trinidad and Tobago"), Tunisia("TN", "TUN", "Tunisia"), Turkey("TR", "TUR", "Turkey"), Turkmenistan("TM", "TKM", "Turkmenistan"), Turks_and_Caicos_Islands("TC", "TCA", "Turks and Caicos Islands"), Tuvalu("TV", "TUV", "Tuvalu"), US_Virgin_Islands("VI", "VIR", "US Virgin Islands"), Uganda("UG", "UGA", "Uganda"), Ukraine("UA", "UKR", "Ukraine"), United_Arab_Emirates("AE", "ARE", "United Arab Emirates"), United_Kingdom_of_Great_Britain___N__Ireland("GB", "GBR", "United Kingdom of Great Britain & N. Ireland"), United_States_Minor_Outlying_Islands("UM", "UMI", "United States Minor Outlying Islands"), United_States_of_America("US", "USA", "United States of America"), Uruguay("UY", "URY", "Uruguay"), Uzbekistan("UZ", "UZB", "Uzbekistan"), Vanuatu("VU", "VUT", "Vanuatu"), Venezuela("VE", "VEN", "Venezuela"), Viet_Nam("VN", "VNM", "Viet Nam"), Wallis_and_Futuna_Islands("WF", "WLF", "Wallis and Futuna Islands"), Western_Sahara("EH", "ESH", "Western Sahara"), Yemen("YE", "YEM", "Yemen"), Zambia("ZM", "ZMB", "Zambia"), Zimbabwe("ZW", "ZWE", "Zimbabwe"), British_Antarctic_Territory("BQ", "ATB", "British Antarctic Territory"), Burma("BU", "BUR", "Burma"), Byelorussian("BY", "BYS", "Byelorussian"), Canton___Enderbury_Islands("CT", "CTE", "Canton & Enderbury Islands"), Czechoslovakia("CS", "CSK", "Czechoslovakia"), Dahomey("DY", "DHY", "Dahomey"), Dronning_Maud_Land("NQ", "ATN", "Dronning Maud Land"), East_Timor("TP", "TMP", "East Timor"), Ethiopia2("ET", "ETH", "Ethiopia"), France2("FX", "FXX", "France"), French_fars_and_Issas("AI", "AFI", "French fars and Issas"), French_Southern_and_Antarctic_Territories("FQ", "ATF", "French Southern and Antarctic Territories"), German_Democratic_Republic("DD", "DDR", "German Democratic Republic"), Germany2("DE", "DEU", "Germany"), Gilbert___Ellice_Islands("GE", "GEL", "Gilbert & Ellice Islands"), Johnston_Island("JT", "JTN", "Johnston Island"), Midway_Islands("MI", "MID", "Midway Islands"), Netherlands_Antilles2("AN", "ANT", "Netherlands Antilles"), Neutral_Zone("NT", "NTZ", "Neutral Zone"), New_Hebrides("NH", "NHB", "New Hebrides"), Pacific_Islands("PC", "PCI", "Pacific Islands"), Panama2("PA", "PAN", "Panama"), Panama_Canal_Zone("PZ", "PCZ", "Panama Canal Zone"), Romania2("RO", "ROM", "Romania"), St__Kitts_Nevis_Anguilla("KN", "KNA", "St. Kitts-Nevis-Anguilla"), Sikkim("SK", "SKM", "Sikkim"), Southern_Rhodesia("RH", "RHO", "Southern Rhodesia"), Spanish_Sahara("EH", "ESH", "Spanish Sahara"), US_Miscellaneous_Pacific_Islands("PU", "PUS", "US Miscellaneous Pacific Islands"), USSR("SU", "SUN", "USSR"), Upper_Volta("HV", "HVO", "Upper Volta"), Vatican_City_State("VA", "VAT", "Vatican City State (Holy See)"), Viet_Nam2("VD", "VDR", "Viet-Nam"), Wake_Island("WK", "WAK", "Wake Island"), Yemen1("YD", "YMD", "Yemen"), Yemen2("YE", "YEM", "Yemen"), Yugoslavia1("YU", "YUG", "Yugoslavia"), Yugoslavia2("YU", "YUG", "Yugoslavia"), Zaire("ZR", "ZAR", "Zaire"), Unknown("XX", "XXX", "Unknown"); private String alpha_2; private String alpha_3; private String name; ISO_3166(String alpha_2, String alpha_3, String name){ this.alpha_2 = alpha_2; this.alpha_3 = alpha_3; this.name = name; } public String getAlpha2(){ return alpha_2; } public String getAlpha3(){ return alpha_3; } public String getCountry(){ return name; } /** Find a value of ISO_3166 by searching for the alpha 2 code or * the alpha 3 code or the name of the country. The name of the * countries are in English only. */ public ISO_3166 getISO_3166(String search){ ISO_3166 iso = ISO_3166.Unknown; for(ISO_3166 x : ISO_3166.values()){ if(search.equalsIgnoreCase(x.getAlpha2())){ iso = x; } if(search.equalsIgnoreCase(x.getAlpha3())){ iso = x; } if(search.equalsIgnoreCase(x.getCountry())){ iso = x; } } return iso; } } public enum Language{ File, Quit, About, To_Draw, Image, Shape, Scale, Operations, Layers, Historic, Sketchpad, Ass_Commands, Cut, Copy, Paste, Delete, Choose_Color, Rename_Layer, Clear_Sketch, Rubber_Size, Pen_Size, By_Value, New, Open, Save, Line, Curve, Pen, Rubber, Clear_Image, Open_Image, Top, Left, Center, Right, Transparency_Image, Bottom, Transparency_Shape, Scale_Size, Translate, Rotate, Add_Layer, Remove_Layer, Layers_List, Undo, Pen_Color, OK_Button, Cancel_Button, TransX, TransY, RedRotateMessage, RotateMessage, UpdateFromComs, BSpline, BSplineExtend,BSplineClose, GoToA, GoToB, Duplicate; } public void setLanguage(Language l, String translation){ switch(l){ case File : // jMenu1.setText(translation); ifrOpenSave.setTitle(translation); break; // case Quit : mnuQuit.setText(translation); break; // case About : mnuAbout.setText(translation); break; case To_Draw : ifrMainDraw.setTitle(translation); break; case Image : ifrImage.setTitle(translation); break; case Shape : ifrShape.setTitle(translation); break; // case Scale : ifrScale.setTitle(translation); break; case Operations : ifrOperations.setTitle(translation); break; case Layers : ifrLayers.setTitle(translation); break; case Historic : ifrHistoric.setTitle(translation); break; case Sketchpad : ifrDrawing.setTitle(translation); break; case Ass_Commands : lblAssCommands.setText(translation); break; case Cut : popmCut.setText(translation); break; case Copy : popmCopy.setText(translation); break; case Paste : popmPaste.setText(translation); break; case Delete : popmDelete.setText(translation); break; case Choose_Color : popmColor.setText(translation); popmLayerColor.setText(translation); break; case Rename_Layer : popmName.setText(translation); popmLayerName.setText(translation); break; case Clear_Sketch : popmClearSketch.setText(translation); break; case Rubber_Size : popmRubberSize2.setText(translation+" : 2px"); popmRubberSize4.setText(translation+" : 4px"); popmRubberSize6.setText(translation+" : 6px"); popmRubberSize8.setText(translation+" : 8px"); popmRubberSize10.setText(translation+" : 10px"); break; case Pen_Size : popmPenSize2.setText(translation+" : 2px"); popmPenSize4.setText(translation+" : 4px"); popmPenSize6.setText(translation+" : 6px"); popmPenSize8.setText(translation+" : 8px"); popmPenSize10.setText(translation+" : 10px"); break; case By_Value : popmImageMove1.setText(translation+" 1"); popmImageMove5.setText(translation+" 5"); popmImageMove10.setText(translation+" 10"); popmImageMove50.setText(translation+" 50"); popmImageMove100.setText(translation+" 100"); break; case New : btnNew.setToolTipText(translation); break; case Open : btnOpen.setToolTipText(translation); break; case Save : btnSave.setToolTipText(translation); break; case Line : tbShapeLine.setToolTipText(translation); break; case Curve : tbShapeBezier.setToolTipText(translation); break; case Pen : tbFreeDrawing.setToolTipText(translation); break; case Rubber : tbFreeClear.setToolTipText(translation); break; case Clear_Image : btnUnloadImage.setToolTipText(translation); break; case Open_Image : btnImage.setToolTipText(translation); break; case Top : btnTopImage.setToolTipText(translation); break; case Left : btnLeftImage.setToolTipText(translation); break; case Center : btnCentreImage.setToolTipText(translation); break; case Right : btnRightImage.setToolTipText(translation); break; case Transparency_Image : slideImageAlpha.setToolTipText(translation); lblImageAlpha.setToolTipText(translation); break; case Bottom : btnBottomImage.setToolTipText(translation); break; case Transparency_Shape : slideDrawingAlpha.setToolTipText(translation); lblDrawingAlpha.setToolTipText(translation); break; case Scale_Size : slideScale.setToolTipText(translation); lblScale.setToolTipText(translation); break; case Translate : tbTranslation.setToolTipText(translation); break; //case Rotate : btnRotation.setToolTipText(translation); break; case Add_Layer : btnAddLayer.setToolTipText(translation); break; case Remove_Layer : btnDeleteLayer.setToolTipText(translation); break; case Layers_List : lstLayer.setToolTipText(translation); break; case Undo : btnHistorique.setToolTipText(translation); break; case Pen_Color : popmPenColor.setText(translation); break; case OK_Button : strOK_Button = translation; break; case Cancel_Button : strCancel_Button = translation; break; //case TransX : strTransX = translation; break; //case TransY : strTransY = translation; break; case RedRotateMessage : strRedMessage = translation; break; case RotateMessage : strMessage = translation; break; case UpdateFromComs : popmUpdate.setText(translation); break; case BSpline : tbShapeBSpline1.setToolTipText(translation); break; case BSplineExtend : tbNextPoint.setToolTipText(translation); break; case BSplineClose : btnCloseBSpline.setToolTipText(translation); break; case GoToA : tbMove.setToolTipText(translation); break; case GoToB : tbReStart.setToolTipText(translation); break; case Duplicate : popmDuplicateLayer.setText(translation); break; } } /** <p>Initialize the class.<br />Initialise la classe.</p> */ public void init(Locale loc){ if (loc==Locale.US | loc==Locale.UK | loc==Locale.ENGLISH | loc==Locale.CANADA){ setLanguage(Language.File, "File"); setLanguage(Language.Quit, "Quit"); setLanguage(Language.About, "About"); setLanguage(Language.To_Draw, "To draw"); setLanguage(Language.Image, "Image"); setLanguage(Language.Shape, "Shape"); setLanguage(Language.Scale, "Scale"); setLanguage(Language.Operations, "Operations"); setLanguage(Language.Layers, "Layers"); setLanguage(Language.Historic, "Historic"); setLanguage(Language.Sketchpad, "Sketchpad"); setLanguage(Language.Ass_Commands, "Ass commands : "); setLanguage(Language.Cut, "Cut"); setLanguage(Language.Copy, "Copy"); setLanguage(Language.Paste, "Paste"); setLanguage(Language.Delete, "Delete"); setLanguage(Language.Choose_Color, "Choose a color..."); setLanguage(Language.Rename_Layer, "Rename the layer"); setLanguage(Language.Clear_Sketch, "Clear the sketch"); setLanguage(Language.Rubber_Size, "Rubber size"); setLanguage(Language.Pen_Size, "Pen size"); setLanguage(Language.By_Value, "By"); setLanguage(Language.New, "Create a new drawing"); setLanguage(Language.Open, "Open a file"); setLanguage(Language.Save, "Save a file"); setLanguage(Language.Line, "Draw lines"); setLanguage(Language.Curve, "Draw curves"); setLanguage(Language.Pen, "Draw a sketch"); setLanguage(Language.Rubber, "Clear a sketch"); setLanguage(Language.Clear_Image, "Clear image"); setLanguage(Language.Open_Image, "Open image"); setLanguage(Language.Top, "Move an image to the top"); setLanguage(Language.Left, "Move an image to the left"); setLanguage(Language.Center, "Center an image"); setLanguage(Language.Right, "Move an image to the right"); setLanguage(Language.Transparency_Image, "Transparency of image"); setLanguage(Language.Bottom, "Move an image to the bottom"); setLanguage(Language.Transparency_Shape, "Transparency of shape"); setLanguage(Language.Scale_Size, "Scale size"); setLanguage(Language.Translate, "Translate the drawing"); setLanguage(Language.Rotate, "Rotate the drawing"); setLanguage(Language.Add_Layer, "Add a layer"); setLanguage(Language.Remove_Layer, "Remove a layer"); setLanguage(Language.Layers_List, "Layers list"); setLanguage(Language.Undo, "Clear a point of the current layer"); setLanguage(Language.Pen_Color, "Choose the color of the pen..."); setLanguage(Language.OK_Button, "OK"); setLanguage(Language.Cancel_Button, "Cancel"); setLanguage(Language.TransX, "Translation on X"); setLanguage(Language.TransY, "Translation on Y"); setLanguage(Language.RedRotateMessage, ""); setLanguage(Language.RotateMessage, "Angle of rotation"); setLanguage(Language.UpdateFromComs, "Update"); setLanguage(Language.BSpline, "Draw a bspline"); setLanguage(Language.BSplineClose, "Close a bspline"); setLanguage(Language.BSplineExtend, "Extend a bspline"); setLanguage(Language.GoToA, "Go to (n command)"); setLanguage(Language.GoToB, "Go to (m command)"); setLanguage(Language.Duplicate, "Duplicate this layer"); }else if (loc==Locale.FRANCE | loc==Locale.FRENCH | loc==Locale.CANADA_FRENCH){ //Logiciel déjà en Français }else{ //Recherche des fichiers *.lang File folder = new File(docs); for(File sf : folder.listFiles()){ if(sf.getName().endsWith(".lang")){ if(listFiles.contains(sf)==false){ listFiles.add(sf); } } } //Si l'ordinateur tourne en Italien et que le fichier de traduction //est aussi en Italien alors on charge le fichier en Italien. //Tous les pays de la norme ISO3166 marchent selon l'exemple ci-dessus. ISO_3166 ISOcode = ISO_3166.Unknown; for (File sf : listFiles){ String code = sf.getName().substring(0, sf.getName().indexOf(".")); ISOcode = ISOcode.getISO_3166(code); if(loc.getISO3Country().equalsIgnoreCase(ISOcode.getAlpha3())){ try{ FileInputStream fis = new FileInputStream(sf); java.io.BufferedReader br = new java.io.BufferedReader( new java.io.InputStreamReader(fis, "UTF-8")); String newline = ""; //Reading of file while((newline=br.readLine())!=null){ String value = newline.substring(newline.indexOf(":")+1); if(newline.startsWith("assSketchpadFile")){setLanguage(Language.File, value);} if(newline.startsWith("assSketchpadQuit")){setLanguage(Language.Quit, value);} if(newline.startsWith("assSketchpadAbout")){setLanguage(Language.About, value);} if(newline.startsWith("assSketchpadToDraw")){setLanguage(Language.To_Draw, value);} if(newline.startsWith("assSketchpadImage")){setLanguage(Language.Image, value);} if(newline.startsWith("assSketchpadShape")){setLanguage(Language.Shape, value);} if(newline.startsWith("assSketchpadScale")){setLanguage(Language.Scale, value);} if(newline.startsWith("assSketchpadOperations")){setLanguage(Language.Operations, value);} if(newline.startsWith("assSketchpadLayers")){setLanguage(Language.Layers, value);} if(newline.startsWith("assSketchpadHistoric")){setLanguage(Language.Historic, value);} if(newline.startsWith("assSketchpadSketchpad")){setLanguage(Language.Sketchpad, value);} if(newline.startsWith("assSketchpadAss_Commands")){setLanguage(Language.Ass_Commands, value);} if(newline.startsWith("assSketchpadCut")){setLanguage(Language.Cut, value);} if(newline.startsWith("assSketchpadCopy")){setLanguage(Language.Copy, value);} if(newline.startsWith("assSketchpadPaste")){setLanguage(Language.Paste, value);} if(newline.startsWith("assSketchpadDelete")){setLanguage(Language.Delete, value);} if(newline.startsWith("assSketchpadChoose_Color")){setLanguage(Language.Choose_Color, value);} if(newline.startsWith("assSketchpadRename_Layer")){setLanguage(Language.Rename_Layer, value);} if(newline.startsWith("assSketchpadClear_Sketch")){setLanguage(Language.Clear_Sketch, value);} if(newline.startsWith("assSketchpadRubber_Size")){setLanguage(Language.Rubber_Size, value);} if(newline.startsWith("assSketchpadPen_Size")){setLanguage(Language.Pen_Size, value);} if(newline.startsWith("assSketchpadBy_Value")){setLanguage(Language.By_Value, value);} if(newline.startsWith("assSketchpadNew")){setLanguage(Language.New, value);} if(newline.startsWith("assSketchpadOpen")){setLanguage(Language.Open, value);} if(newline.startsWith("assSketchpadSave")){setLanguage(Language.Save, value);} if(newline.startsWith("assSketchpadLine")){setLanguage(Language.Line, value);} if(newline.startsWith("assSketchpadCurve")){setLanguage(Language.Curve, value);} if(newline.startsWith("assSketchpadPen")){setLanguage(Language.Pen, value);} if(newline.startsWith("assSketchpadRubber")){setLanguage(Language.Rubber, value);} if(newline.startsWith("assSketchpadClear_Image")){setLanguage(Language.Clear_Image, value);} if(newline.startsWith("assSketchpadOpen_Image")){setLanguage(Language.Open_Image, value);} if(newline.startsWith("assSketchpadTop")){setLanguage(Language.Top, value);} if(newline.startsWith("assSketchpadLeft")){setLanguage(Language.Left, value);} if(newline.startsWith("assSketchpadCenter")){setLanguage(Language.Center, value);} if(newline.startsWith("assSketchpadRight")){setLanguage(Language.Right, value);} if(newline.startsWith("assSketchpadTrans_Image")){setLanguage(Language.Transparency_Image, value);} if(newline.startsWith("assSketchpadBottom")){setLanguage(Language.Bottom, value);} if(newline.startsWith("assSketchpadTrans_Shape")){setLanguage(Language.Transparency_Shape, value);} if(newline.startsWith("assSketchpadScale_Size")){setLanguage(Language.Scale_Size, value);} if(newline.startsWith("assSketchpadTranslate")){setLanguage(Language.Translate, value);} if(newline.startsWith("assSketchpadRotate")){setLanguage(Language.Rotate, value);} if(newline.startsWith("assSketchpadAdd_Layer")){setLanguage(Language.Add_Layer, value);} if(newline.startsWith("assSketchpadRemove_Layer")){setLanguage(Language.Remove_Layer, value);} if(newline.startsWith("assSketchpadLayers_List")){setLanguage(Language.Layers_List, value);} if(newline.startsWith("assSketchpadUndo")){setLanguage(Language.Undo, value);} if(newline.startsWith("assSketchpadPen_Color")){setLanguage(Language.Pen_Color, value);} if(newline.startsWith("assSketchpadOK_Button")){setLanguage(Language.OK_Button, value);} if(newline.startsWith("assSketchpadCancel_Button")){setLanguage(Language.Cancel_Button, value);} if(newline.startsWith("assSketchpadTransX")){setLanguage(Language.TransX, value);} if(newline.startsWith("assSketchpadTransY")){setLanguage(Language.TransY, value);} if(newline.startsWith("assSketchpadRedRotateMessage")){setLanguage(Language.RedRotateMessage, value);} if(newline.startsWith("assSketchpadRotateMessage")){setLanguage(Language.RotateMessage, value);} if(newline.startsWith("assSketchpadUpdateFromComs")){setLanguage(Language.UpdateFromComs, value);} if(newline.startsWith("assSketchpadBSpline")){setLanguage(Language.BSpline, value);} if(newline.startsWith("assSketchpadBSplineClose")){setLanguage(Language.BSplineClose, value);} if(newline.startsWith("assSketchpadBSplineExtend")){setLanguage(Language.BSplineExtend, value);} if(newline.startsWith("assSketchpadGoToA")){setLanguage(Language.GoToA, value);} if(newline.startsWith("assSketchpadGoToB")){setLanguage(Language.GoToB, value);} if(newline.startsWith("assSketchpadDuplicate")){setLanguage(Language.Duplicate, value);} } br.close(); fis.close(); }catch(Exception exc){ //Nothing } } } } } // </editor-fold> private String getAssSketchpadDirectory(){ if(System.getProperty("os.name").equalsIgnoreCase("Mac OS X")){ java.io.File file = new java.io.File(""); return file.getAbsolutePath(); } String path = System.getProperty("user.dir"); //System.out.println("user dir is : "+path); if(path.toLowerCase().contains("jre")){ File f = new File(getClass().getProtectionDomain() .getCodeSource().getLocation().toString() .substring(6)); path = f.getParent(); //System.out.println("by class is : "+path); } return path; } private void setLanguageAndConfigure(feuille.lib.Language lang){ if(lang!=null){localeLanguage = lang;} if(localeLanguage.getValueOf("assSketchpadFile")!=null){ setLanguage(Language.File, localeLanguage.getValueOf("assSketchpadFile"));} if(localeLanguage.getValueOf("assSketchpadToDraw")!=null){ setLanguage(Language.To_Draw, localeLanguage.getValueOf("assSketchpadToDraw"));} if(localeLanguage.getValueOf("assSketchpadImage")!=null){ setLanguage(Language.Image, localeLanguage.getValueOf("assSketchpadImage"));} if(localeLanguage.getValueOf("assSketchpadShape")!=null){ setLanguage(Language.Shape, localeLanguage.getValueOf("assSketchpadShape"));} if(localeLanguage.getValueOf("assSketchpadScale")!=null){ setLanguage(Language.Scale, localeLanguage.getValueOf("assSketchpadScale"));} if(localeLanguage.getValueOf("assSketchpadOperations")!=null){ setLanguage(Language.Operations, localeLanguage.getValueOf("assSketchpadOperations"));} if(localeLanguage.getValueOf("assSketchpadLayers")!=null){ setLanguage(Language.Layers, localeLanguage.getValueOf("assSketchpadLayers"));} if(localeLanguage.getValueOf("assSketchpadHistoric")!=null){ setLanguage(Language.Historic, localeLanguage.getValueOf("assSketchpadHistoric"));} if(localeLanguage.getValueOf("assSketchpadSketchpad")!=null){ setLanguage(Language.Sketchpad, localeLanguage.getValueOf("assSketchpadSketchpad"));} if(localeLanguage.getValueOf("assSketchpadAss_Commands")!=null){ setLanguage(Language.Ass_Commands, localeLanguage.getValueOf("assSketchpadAss_Commands"));} if(localeLanguage.getValueOf("assSketchpadCut")!=null){ setLanguage(Language.Cut, localeLanguage.getValueOf("assSketchpadCut"));} if(localeLanguage.getValueOf("assSketchpadCopy")!=null){ setLanguage(Language.Copy, localeLanguage.getValueOf("assSketchpadCopy"));} if(localeLanguage.getValueOf("assSketchpadPaste")!=null){ setLanguage(Language.Paste, localeLanguage.getValueOf("assSketchpadPaste"));} if(localeLanguage.getValueOf("assSketchpadDelete")!=null){ setLanguage(Language.Delete, localeLanguage.getValueOf("assSketchpadDelete"));} if(localeLanguage.getValueOf("assSketchpadUpdateFromComs")!=null){ setLanguage(Language.UpdateFromComs, localeLanguage.getValueOf("assSketchpadUpdateFromComs"));} if(localeLanguage.getValueOf("assSketchpadChoose_Color")!=null){ setLanguage(Language.Choose_Color, localeLanguage.getValueOf("assSketchpadChoose_Color"));} if(localeLanguage.getValueOf("assSketchpadRename_Layer")!=null){ setLanguage(Language.Rename_Layer, localeLanguage.getValueOf("assSketchpadRename_Layer"));} if(localeLanguage.getValueOf("assSketchpadClear_Sketch")!=null){ setLanguage(Language.Clear_Sketch, localeLanguage.getValueOf("assSketchpadClear_Sketch"));} if(localeLanguage.getValueOf("assSketchpadRubber_Size")!=null){ setLanguage(Language.Rubber_Size, localeLanguage.getValueOf("assSketchpadRubber_Size"));} if(localeLanguage.getValueOf("assSketchpadPen_Size")!=null){ setLanguage(Language.Pen_Size, localeLanguage.getValueOf("assSketchpadPen_Size"));} if(localeLanguage.getValueOf("assSketchpadBy_Value")!=null){ setLanguage(Language.By_Value, localeLanguage.getValueOf("assSketchpadBy_Value"));} if(localeLanguage.getValueOf("assSketchpadNew")!=null){ setLanguage(Language.New, localeLanguage.getValueOf("assSketchpadNew"));} if(localeLanguage.getValueOf("assSketchpadOpen")!=null){ setLanguage(Language.Open, localeLanguage.getValueOf("assSketchpadOpen"));} if(localeLanguage.getValueOf("assSketchpadSave")!=null){ setLanguage(Language.Save, localeLanguage.getValueOf("assSketchpadSave"));} if(localeLanguage.getValueOf("assSketchpadLine")!=null){ setLanguage(Language.Line, localeLanguage.getValueOf("assSketchpadLine"));} if(localeLanguage.getValueOf("assSketchpadCurve")!=null){ setLanguage(Language.Curve, localeLanguage.getValueOf("assSketchpadCurve"));} if(localeLanguage.getValueOf("assSketchpadPen")!=null){ setLanguage(Language.Pen, localeLanguage.getValueOf("assSketchpadPen"));} if(localeLanguage.getValueOf("assSketchpadRubber")!=null){ setLanguage(Language.Rubber, localeLanguage.getValueOf("assSketchpadRubber"));} if(localeLanguage.getValueOf("assSketchpadClear_Image")!=null){ setLanguage(Language.Clear_Image, localeLanguage.getValueOf("assSketchpadClear_Image"));} if(localeLanguage.getValueOf("assSketchpadOpen_Image")!=null){ setLanguage(Language.Open_Image, localeLanguage.getValueOf("assSketchpadOpen_Image"));} if(localeLanguage.getValueOf("assSketchpadTop")!=null){ setLanguage(Language.Top, localeLanguage.getValueOf("assSketchpadTop"));} if(localeLanguage.getValueOf("assSketchpadLeft")!=null){ setLanguage(Language.Left, localeLanguage.getValueOf("assSketchpadLeft"));} if(localeLanguage.getValueOf("assSketchpadCenter")!=null){ setLanguage(Language.Center, localeLanguage.getValueOf("assSketchpadCenter"));} if(localeLanguage.getValueOf("assSketchpadRight")!=null){ setLanguage(Language.Right, localeLanguage.getValueOf("assSketchpadRight"));} if(localeLanguage.getValueOf("assSketchpadTrans_Image")!=null){ setLanguage(Language.Transparency_Image, localeLanguage.getValueOf("assSketchpadTrans_Image"));} if(localeLanguage.getValueOf("assSketchpadBottom")!=null){ setLanguage(Language.Bottom, localeLanguage.getValueOf("assSketchpadBottom"));} if(localeLanguage.getValueOf("assSketchpadTrans_Shape")!=null){ setLanguage(Language.Transparency_Shape, localeLanguage.getValueOf("assSketchpadTrans_Shape"));} if(localeLanguage.getValueOf("assSketchpadScale_Size")!=null){ setLanguage(Language.Scale_Size, localeLanguage.getValueOf("assSketchpadScale_Size"));} if(localeLanguage.getValueOf("assSketchpadTranslate")!=null){ setLanguage(Language.Translate, localeLanguage.getValueOf("assSketchpadTranslate"));} if(localeLanguage.getValueOf("assSketchpadRotate")!=null){ setLanguage(Language.Rotate, localeLanguage.getValueOf("assSketchpadRotate"));} if(localeLanguage.getValueOf("assSketchpadAdd_Layer")!=null){ setLanguage(Language.Add_Layer, localeLanguage.getValueOf("assSketchpadAdd_Layer"));} if(localeLanguage.getValueOf("assSketchpadRemove_Layer")!=null){ setLanguage(Language.Remove_Layer, localeLanguage.getValueOf("assSketchpadRemove_Layer"));} if(localeLanguage.getValueOf("assSketchpadLayers_List")!=null){ setLanguage(Language.Layers_List, localeLanguage.getValueOf("assSketchpadLayers_List"));} if(localeLanguage.getValueOf("assSketchpadUndo")!=null){ setLanguage(Language.Undo, localeLanguage.getValueOf("assSketchpadUndo"));} if(localeLanguage.getValueOf("assSketchpadPen_Color")!=null){ setLanguage(Language.Pen_Color, localeLanguage.getValueOf("assSketchpadPen_Color"));} if(localeLanguage.getValueOf("assSketchpadOK_Button")!=null){ setLanguage(Language.OK_Button, localeLanguage.getValueOf("assSketchpadOK_Button"));} if(localeLanguage.getValueOf("assSketchpadCancel_Button")!=null){ setLanguage(Language.Cancel_Button, localeLanguage.getValueOf("assSketchpadCancel_Button"));} if(localeLanguage.getValueOf("assSketchpadTransX")!=null){ setLanguage(Language.TransX, localeLanguage.getValueOf("assSketchpadTransX"));} if(localeLanguage.getValueOf("assSketchpadTransY")!=null){ setLanguage(Language.TransY, localeLanguage.getValueOf("assSketchpadTransY"));} if(localeLanguage.getValueOf("assSketchpadRedRotateMessage")!=null){ setLanguage(Language.RedRotateMessage, localeLanguage.getValueOf("assSketchpadRedRotateMessage"));} if(localeLanguage.getValueOf("assSketchpadRotateMessage")!=null){ setLanguage(Language.RotateMessage, localeLanguage.getValueOf("assSketchpadRotateMessage"));} if(localeLanguage.getValueOf("assSketchpadBSpline")!=null){ setLanguage(Language.BSpline, localeLanguage.getValueOf("assSketchpadBSpline"));} if(localeLanguage.getValueOf("assSketchpadBSplineClose")!=null){ setLanguage(Language.BSplineClose, localeLanguage.getValueOf("assSketchpadBSplineClose"));} if(localeLanguage.getValueOf("assSketchpadBSplineExtend")!=null){ setLanguage(Language.BSplineExtend, localeLanguage.getValueOf("assSketchpadBSplineExtend"));} if(localeLanguage.getValueOf("assSketchpadGoToA")!=null){ setLanguage(Language.GoToA, localeLanguage.getValueOf("assSketchpadGoToA"));} if(localeLanguage.getValueOf("assSketchpadGoToB")!=null){ setLanguage(Language.GoToB, localeLanguage.getValueOf("assSketchpadGoToB"));} if(localeLanguage.getValueOf("assSketchpadDuplicate")!=null){ setLanguage(Language.Duplicate, localeLanguage.getValueOf("assSketchpadDuplicate"));} if(localeLanguage.getValueOf("assSketchpadMode")!=null){ ifrMode.setToolTipText(localeLanguage.getValueOf("assSketchpadMode"));} if(localeLanguage.getValueOf("assSketchpadScript")!=null){ ifrScript.setToolTipText(localeLanguage.getValueOf("assSketchpadScript"));} if(localeLanguage.getValueOf("assSketchpadAssComs")!=null){ ifrAssCommands.setToolTipText(localeLanguage.getValueOf("assSketchpadAssComs"));} if(localeLanguage.getValueOf("assSketchpadOrnament")!=null){ ifrOrnament.setToolTipText(localeLanguage.getValueOf("assSketchpadOrnament"));} if(localeLanguage.getValueOf("assSketchpadImpFonts")!=null){ btnOpenFonts.setToolTipText(localeLanguage.getValueOf("assSketchpadImpFonts"));} if(localeLanguage.getValueOf("assSketchpadNormalMode")!=null){ tbNormalMode.setToolTipText(localeLanguage.getValueOf("assSketchpadNormalMode"));} if(localeLanguage.getValueOf("assSketchpadOrnMode")!=null){ tbOrnamentMode.setToolTipText(localeLanguage.getValueOf("assSketchpadOrnMode"));} if(localeLanguage.getValueOf("assSketchpadResize")!=null){ tbResize.setToolTipText(localeLanguage.getValueOf("assSketchpadResize"));} if(localeLanguage.getValueOf("assSketchpadShear")!=null){ tbShear.setToolTipText(localeLanguage.getValueOf("assSketchpadShear"));} if(localeLanguage.getValueOf("assSketchpadSelect")!=null){ tbSelection.setToolTipText(localeLanguage.getValueOf("assSketchpadSelect"));} if(localeLanguage.getValueOf("assSketchpadReady")!=null){ btnOrnReady.setText(localeLanguage.getValueOf("assSketchpadReady"));} if(localeLanguage.getValueOf("assSketchpadSteadyGo")!=null){ btnOrnGenerate.setText(localeLanguage.getValueOf("assSketchpadSteadyGo"));} if(localeLanguage.getValueOf("assSketchpadGMovement")!=null){ lblMainMove.setText(localeLanguage.getValueOf("assSketchpadGMovement"));} if(localeLanguage.getValueOf("assSketchpadOrnYes")!=null){ rbOrnMainMoveOn.setText(localeLanguage.getValueOf("assSketchpadOrnYes"));} if(localeLanguage.getValueOf("assSketchpadOrnNo")!=null){ rbOrnMainMoveOff.setText(localeLanguage.getValueOf("assSketchpadOrnNo"));} if(localeLanguage.getValueOf("assSketchpadFrequency")!=null){ lblOrnMMFreq.setText(localeLanguage.getValueOf("assSketchpadFrequency"));} if(localeLanguage.getValueOf("assSketchpadSelCopyPaste")!=null){ popmSelectionCopyPaste.setText(localeLanguage.getValueOf("assSketchpadSelCopyPaste"));} if(localeLanguage.getValueOf("assSketchpadSelSym")!=null){ popmSelectionSym.setText(localeLanguage.getValueOf("assSketchpadSelSym"));} if(localeLanguage.getValueOf("assSketchpadSelGeo1A")!=null){ popmSelectionGeo1A.setText(localeLanguage.getValueOf("assSketchpadSelGeo1A"));} if(localeLanguage.getValueOf("assSketchpadSelGeo1B")!=null){ popmSelectionGeo1B.setText(localeLanguage.getValueOf("assSketchpadSelGeo1B"));} if(localeLanguage.getValueOf("assSketchpadSelGeo2A")!=null){ popmSelectionGeo2A.setText(localeLanguage.getValueOf("assSketchpadSelGeo2A"));} if(localeLanguage.getValueOf("assSketchpadSelGeo2B")!=null){ popmSelectionGeo2B.setText(localeLanguage.getValueOf("assSketchpadSelGeo2B"));} if(localeLanguage.getValueOf("assSketchpadSelGeo3A")!=null){ popmSelectionGeo3A.setText(localeLanguage.getValueOf("assSketchpadSelGeo3A"));} if(localeLanguage.getValueOf("assSketchpadSelGeo3B")!=null){ popmSelectionGeo3B.setText(localeLanguage.getValueOf("assSketchpadSelGeo3B"));} if(localeLanguage.getValueOf("assSketchpadSelGeoPlus")!=null){ popmSelectionGeoPlus.setText(localeLanguage.getValueOf("assSketchpadSelGeoPlus"));} } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { bgDraw = new javax.swing.ButtonGroup(); bgMode = new javax.swing.ButtonGroup(); bgOrnMainMove = new javax.swing.ButtonGroup(); fcZDrawing = new javax.swing.JFileChooser(); popLayer = new javax.swing.JPopupMenu(); popmColor = new javax.swing.JMenuItem(); popmName = new javax.swing.JMenuItem(); popImageMove = new javax.swing.JPopupMenu(); popmImageMove1 = new javax.swing.JRadioButtonMenuItem(); popmImageMove5 = new javax.swing.JRadioButtonMenuItem(); popmImageMove10 = new javax.swing.JRadioButtonMenuItem(); popmImageMove50 = new javax.swing.JRadioButtonMenuItem(); popmImageMove100 = new javax.swing.JRadioButtonMenuItem(); popAssCom = new javax.swing.JPopupMenu(); popmCut = new javax.swing.JMenuItem(); popmCopy = new javax.swing.JMenuItem(); popmPaste = new javax.swing.JMenuItem(); popmDelete = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JPopupMenu.Separator(); popmUpdate = new javax.swing.JMenuItem(); popPenSize = new javax.swing.JPopupMenu(); popmPenSize2 = new javax.swing.JRadioButtonMenuItem(); popmPenSize4 = new javax.swing.JRadioButtonMenuItem(); popmPenSize6 = new javax.swing.JRadioButtonMenuItem(); popmPenSize8 = new javax.swing.JRadioButtonMenuItem(); popmPenSize10 = new javax.swing.JRadioButtonMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); popmPenColor = new javax.swing.JMenuItem(); popDrawing = new javax.swing.JPopupMenu(); popmLayerColor = new javax.swing.JMenuItem(); popmLayerName = new javax.swing.JMenuItem(); popmDuplicateLayer = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); popmClearSketch = new javax.swing.JMenuItem(); jSeparator4 = new javax.swing.JPopupMenu.Separator(); popmSelectionCopyPaste = new javax.swing.JMenuItem(); jSeparator6 = new javax.swing.JPopupMenu.Separator(); popmSelectionSym = new javax.swing.JMenuItem(); jSeparator5 = new javax.swing.JPopupMenu.Separator(); popmSelectionGeo1A = new javax.swing.JMenuItem(); popmSelectionGeo1B = new javax.swing.JMenuItem(); popmSelectionGeo2A = new javax.swing.JMenuItem(); popmSelectionGeo2B = new javax.swing.JMenuItem(); popmSelectionGeo3A = new javax.swing.JMenuItem(); popmSelectionGeo3B = new javax.swing.JMenuItem(); popmSelectionGeoPlus = new javax.swing.JMenuItem(); jSeparator7 = new javax.swing.JPopupMenu.Separator(); popmAddPointsBL = new javax.swing.JMenuItem(); popmAddPointsBC = new javax.swing.JMenuItem(); popmAddPointsBLC = new javax.swing.JMenuItem(); popmAddPointsBCL = new javax.swing.JMenuItem(); popmRemovePointsLine = new javax.swing.JMenuItem(); popmRemovePointsCurve = new javax.swing.JMenuItem(); jSeparator8 = new javax.swing.JPopupMenu.Separator(); popmBoolOpUnion = new javax.swing.JMenuItem(); popmBoolOpSubstract = new javax.swing.JMenuItem(); popmBoolOpIntersect = new javax.swing.JMenuItem(); popmBoolOpExcluOR = new javax.swing.JMenuItem(); popRubberSize = new javax.swing.JPopupMenu(); popmRubberSize2 = new javax.swing.JRadioButtonMenuItem(); popmRubberSize4 = new javax.swing.JRadioButtonMenuItem(); popmRubberSize6 = new javax.swing.JRadioButtonMenuItem(); popmRubberSize8 = new javax.swing.JRadioButtonMenuItem(); popmRubberSize10 = new javax.swing.JRadioButtonMenuItem(); bgPenSize = new javax.swing.ButtonGroup(); bgImageMove = new javax.swing.ButtonGroup(); bgRubberSize = new javax.swing.ButtonGroup(); bgOrnShapeMove = new javax.swing.ButtonGroup(); jDesktopPane1 = new javax.swing.JDesktopPane(); ifrOpenSave = new javax.swing.JInternalFrame(); btnNew = new javax.swing.JButton(); btnOpen = new javax.swing.JButton(); btnSave = new javax.swing.JButton(); btnOpenFonts = new javax.swing.JButton(); ifrMainDraw = new javax.swing.JInternalFrame(); tbShapeLine = new javax.swing.JToggleButton(); tbShapeBezier = new javax.swing.JToggleButton(); tbFreeDrawing = new javax.swing.JToggleButton(); tbFreeClear = new javax.swing.JToggleButton(); tbShapeBSpline1 = new javax.swing.JToggleButton(); tbNextPoint = new javax.swing.JToggleButton(); tbReStart = new javax.swing.JToggleButton(); tbMove = new javax.swing.JToggleButton(); btnCloseBSpline = new javax.swing.JButton(); tbGrid = new javax.swing.JToggleButton(); ifrImage = new javax.swing.JInternalFrame(); btnUnloadImage = new javax.swing.JButton(); btnImage = new javax.swing.JButton(); btnTopImage = new javax.swing.JButton(); btnCentreImage = new javax.swing.JButton(); btnLeftImage = new javax.swing.JButton(); btnRightImage = new javax.swing.JButton(); btnBottomImage = new javax.swing.JButton(); slideImageAlpha = new javax.swing.JSlider(); lblImageAlpha = new javax.swing.JLabel(); ifrShape = new javax.swing.JInternalFrame(); slideScale = new javax.swing.JSlider(); slideDrawingAlpha = new javax.swing.JSlider(); lblDrawingAlpha = new javax.swing.JLabel(); lblScale = new javax.swing.JLabel(); ifrMode = new javax.swing.JInternalFrame(); tbNormalMode = new javax.swing.JToggleButton(); tbOrnamentMode = new javax.swing.JToggleButton(); ifrOperations = new javax.swing.JInternalFrame(); tbTranslation = new javax.swing.JToggleButton(); tbRotation = new javax.swing.JToggleButton(); tbResize = new javax.swing.JToggleButton(); tbShear = new javax.swing.JToggleButton(); tbSelection = new javax.swing.JToggleButton(); ifrScript = new javax.swing.JInternalFrame(); btnApplyScript = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); listScript = new javax.swing.JList(); ifrHistoric = new javax.swing.JInternalFrame(); btnHistorique = new javax.swing.JButton(); btnRedo = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); listRemember = new javax.swing.JList(); ifrLayers = new javax.swing.JInternalFrame(); btnAddLayer = new javax.swing.JButton(); btnDeleteLayer = new javax.swing.JButton(); jScrollPane3 = new javax.swing.JScrollPane(); lstLayer = new javax.swing.JList(); ifrDrawing = new javax.swing.JInternalFrame(); spSheet = new javax.swing.JScrollPane(); ifrOrnament = new javax.swing.JInternalFrame(); btnOrnReady = new javax.swing.JButton(); btnOrnGenerate = new javax.swing.JButton(); lblMainMove = new javax.swing.JLabel(); rbOrnMainMoveOff = new javax.swing.JRadioButton(); rbOrnMainMoveOn = new javax.swing.JRadioButton(); spiOrnMMFreq = new javax.swing.JSpinner(); lblOrnMMFreq = new javax.swing.JLabel(); tbOrnMMLine = new javax.swing.JToggleButton(); tbOrnMMBezier = new javax.swing.JToggleButton(); tbOrnMMBSpline = new javax.swing.JToggleButton(); jScrollPane4 = new javax.swing.JScrollPane(); ornMMTable = new javax.swing.JTable(); btnOrnMMClear = new javax.swing.JButton(); ifrAssCommands = new javax.swing.JInternalFrame(); lblCoordinates = new javax.swing.JLabel(); lblAssCommands = new javax.swing.JLabel(); tfAssCommands = new javax.swing.JTextField(); popmColor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_app_kcoloredit.png"))); // NOI18N popmColor.setText("Choisir une couleur..."); popmColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmColorActionPerformed(evt); } }); popLayer.add(popmColor); popmName.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_editcopy.png"))); // NOI18N popmName.setText("Renommer la couche"); popmName.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmNameActionPerformed(evt); } }); popLayer.add(popmName); bgImageMove.add(popmImageMove1); popmImageMove1.setText("Par 1"); popmImageMove1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmImageMove1ActionPerformed(evt); } }); popImageMove.add(popmImageMove1); bgImageMove.add(popmImageMove5); popmImageMove5.setText("Par 5"); popmImageMove5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmImageMove5ActionPerformed(evt); } }); popImageMove.add(popmImageMove5); bgImageMove.add(popmImageMove10); popmImageMove10.setSelected(true); popmImageMove10.setText("Par 10"); popmImageMove10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmImageMove10ActionPerformed(evt); } }); popImageMove.add(popmImageMove10); bgImageMove.add(popmImageMove50); popmImageMove50.setText("Par 50"); popmImageMove50.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmImageMove50ActionPerformed(evt); } }); popImageMove.add(popmImageMove50); bgImageMove.add(popmImageMove100); popmImageMove100.setText("Par 100"); popmImageMove100.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmImageMove100ActionPerformed(evt); } }); popImageMove.add(popmImageMove100); popmCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_editcut.png"))); // NOI18N popmCut.setText("Couper"); popmCut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmCutActionPerformed(evt); } }); popAssCom.add(popmCut); popmCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_editcopy.png"))); // NOI18N popmCopy.setText("Copier"); popmCopy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmCopyActionPerformed(evt); } }); popAssCom.add(popmCopy); popmPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_editpaste.png"))); // NOI18N popmPaste.setText("Coller"); popmPaste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPasteActionPerformed(evt); } }); popAssCom.add(popmPaste); popmDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_button_cancel.png"))); // NOI18N popmDelete.setText("Supprimer"); popmDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmDeleteActionPerformed(evt); } }); popAssCom.add(popmDelete); popAssCom.add(jSeparator3); popmUpdate.setText("Mettre à jour"); popmUpdate.setToolTipText(""); popmUpdate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmUpdateActionPerformed(evt); } }); popAssCom.add(popmUpdate); bgPenSize.add(popmPenSize2); popmPenSize2.setText("Taille du crayon : 02 px"); popmPenSize2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 01.png"))); // NOI18N popmPenSize2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenSize2ActionPerformed(evt); } }); popPenSize.add(popmPenSize2); bgPenSize.add(popmPenSize4); popmPenSize4.setText("Taille du crayon : 04 px"); popmPenSize4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 02.png"))); // NOI18N popmPenSize4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenSize4ActionPerformed(evt); } }); popPenSize.add(popmPenSize4); bgPenSize.add(popmPenSize6); popmPenSize6.setSelected(true); popmPenSize6.setText("Taille du crayon : 06 px"); popmPenSize6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 03.png"))); // NOI18N popmPenSize6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenSize6ActionPerformed(evt); } }); popPenSize.add(popmPenSize6); bgPenSize.add(popmPenSize8); popmPenSize8.setText("Taille du crayon : 08 px"); popmPenSize8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 04.png"))); // NOI18N popmPenSize8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenSize8ActionPerformed(evt); } }); popPenSize.add(popmPenSize8); bgPenSize.add(popmPenSize10); popmPenSize10.setText("Taille du crayon : 10 px"); popmPenSize10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 05.png"))); // NOI18N popmPenSize10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenSize10ActionPerformed(evt); } }); popPenSize.add(popmPenSize10); popPenSize.add(jSeparator2); popmPenColor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_app_kcoloredit.png"))); // NOI18N popmPenColor.setText("Choisir la couleur du crayon..."); popmPenColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmPenColorActionPerformed(evt); } }); popPenSize.add(popmPenColor); popmLayerColor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_app_kcoloredit.png"))); // NOI18N popmLayerColor.setText("Choisir une couleur..."); popmLayerColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmLayerColorActionPerformed(evt); } }); popDrawing.add(popmLayerColor); popmLayerName.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_editcopy.png"))); // NOI18N popmLayerName.setText("Renommer la couche"); popmLayerName.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmLayerNameActionPerformed(evt); } }); popDrawing.add(popmLayerName); popmDuplicateLayer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/funsub-dupliquer.png"))); // NOI18N popmDuplicateLayer.setText("Dupliquer la couche"); popmDuplicateLayer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmDuplicateLayerActionPerformed(evt); } }); popDrawing.add(popmDuplicateLayer); popDrawing.add(jSeparator1); popmClearSketch.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_button_cancel.png"))); // NOI18N popmClearSketch.setText("Effacer le croquis"); popmClearSketch.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmClearSketchActionPerformed(evt); } }); popDrawing.add(popmClearSketch); popDrawing.add(jSeparator4); popmSelectionCopyPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionCopyPaste.setText("Copier à la suite une fois"); popmSelectionCopyPaste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionCopyPasteActionPerformed(evt); } }); popDrawing.add(popmSelectionCopyPaste); popDrawing.add(jSeparator6); popmSelectionSym.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionSym.setText("Faire la symétrie"); popmSelectionSym.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionSymActionPerformed(evt); } }); popDrawing.add(popmSelectionSym); popDrawing.add(jSeparator5); popmSelectionGeo1A.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo1A.setText("Tour forme 'Ligne' horaire"); popmSelectionGeo1A.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo1AActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo1A); popmSelectionGeo1B.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo1B.setText("Tour forme 'Ligne' antihoraire"); popmSelectionGeo1B.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo1BActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo1B); popmSelectionGeo2A.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo2A.setText("Tour forme 'Triangle' horaire"); popmSelectionGeo2A.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo2AActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo2A); popmSelectionGeo2B.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo2B.setText("Tour forme 'Triangle' antihoraire"); popmSelectionGeo2B.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo2BActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo2B); popmSelectionGeo3A.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo3A.setText("Tour forme 'Carré' horaire"); popmSelectionGeo3A.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo3AActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo3A); popmSelectionGeo3B.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeo3B.setText("Tour forme 'Carré' antihoraire"); popmSelectionGeo3B.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeo3BActionPerformed(evt); } }); popDrawing.add(popmSelectionGeo3B); popmSelectionGeoPlus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Selection.png"))); // NOI18N popmSelectionGeoPlus.setText("Tour autre forme..."); popmSelectionGeoPlus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmSelectionGeoPlusActionPerformed(evt); } }); popDrawing.add(popmSelectionGeoPlus); popDrawing.add(jSeparator7); popmAddPointsBL.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_add2.png"))); // NOI18N popmAddPointsBL.setText("Ajouter un point entre deux lignes"); popmAddPointsBL.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmAddPointsBLActionPerformed(evt); } }); popDrawing.add(popmAddPointsBL); popmAddPointsBC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_add2.png"))); // NOI18N popmAddPointsBC.setText("Ajouter un point entre deux courbes"); popmAddPointsBC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmAddPointsBCActionPerformed(evt); } }); popDrawing.add(popmAddPointsBC); popmAddPointsBLC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_add2.png"))); // NOI18N popmAddPointsBLC.setText("Ajouter un point entre une ligne et une courbe"); popmAddPointsBLC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmAddPointsBLCActionPerformed(evt); } }); popDrawing.add(popmAddPointsBLC); popmAddPointsBCL.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_add2.png"))); // NOI18N popmAddPointsBCL.setText("Ajouter un point entre une courbe et une ligne"); popmAddPointsBCL.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmAddPointsBCLActionPerformed(evt); } }); popDrawing.add(popmAddPointsBCL); popmRemovePointsLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_remove2.png"))); // NOI18N popmRemovePointsLine.setText("Enlever ou remplacer des points par une ligne"); popmRemovePointsLine.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRemovePointsLineActionPerformed(evt); } }); popDrawing.add(popmRemovePointsLine); popmRemovePointsCurve.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20px-Crystal_Clear_action_edit_remove2.png"))); // NOI18N popmRemovePointsCurve.setText("Enlever ou remplacer des points par une courbe"); popmRemovePointsCurve.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRemovePointsCurveActionPerformed(evt); } }); popDrawing.add(popmRemovePointsCurve); popDrawing.add(jSeparator8); popmBoolOpUnion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 union.png"))); // NOI18N popmBoolOpUnion.setText("Make union"); popmBoolOpUnion.setToolTipText("Select 2 layers at least to make union."); popmBoolOpUnion.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmBoolOpUnionActionPerformed(evt); } }); popDrawing.add(popmBoolOpUnion); popmBoolOpSubstract.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 substract.png"))); // NOI18N popmBoolOpSubstract.setText("Make substract"); popmBoolOpSubstract.setToolTipText("Select 2 layers at least to make substract."); popmBoolOpSubstract.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmBoolOpSubstractActionPerformed(evt); } }); popDrawing.add(popmBoolOpSubstract); popmBoolOpIntersect.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 intersect.png"))); // NOI18N popmBoolOpIntersect.setText("Make intersect"); popmBoolOpIntersect.setToolTipText("Select 2 layers at least to make intersect."); popmBoolOpIntersect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmBoolOpIntersectActionPerformed(evt); } }); popDrawing.add(popmBoolOpIntersect); popmBoolOpExcluOR.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 XOR.png"))); // NOI18N popmBoolOpExcluOR.setText("Make XOR"); popmBoolOpExcluOR.setToolTipText("Select 2 layers at least to make XOR."); popmBoolOpExcluOR.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmBoolOpExcluORActionPerformed(evt); } }); popDrawing.add(popmBoolOpExcluOR); bgRubberSize.add(popmRubberSize2); popmRubberSize2.setText("Taille de la gomme : 02 px"); popmRubberSize2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 01.png"))); // NOI18N popmRubberSize2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRubberSize2ActionPerformed(evt); } }); popRubberSize.add(popmRubberSize2); bgRubberSize.add(popmRubberSize4); popmRubberSize4.setText("Taille de la gomme : 04 px"); popmRubberSize4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 02.png"))); // NOI18N popmRubberSize4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRubberSize4ActionPerformed(evt); } }); popRubberSize.add(popmRubberSize4); bgRubberSize.add(popmRubberSize6); popmRubberSize6.setSelected(true); popmRubberSize6.setText("Taille de la gomme : 06 px"); popmRubberSize6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 03.png"))); // NOI18N popmRubberSize6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRubberSize6ActionPerformed(evt); } }); popRubberSize.add(popmRubberSize6); bgRubberSize.add(popmRubberSize8); popmRubberSize8.setText("Taille de la gomme : 08 px"); popmRubberSize8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 04.png"))); // NOI18N popmRubberSize8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRubberSize8ActionPerformed(evt); } }); popRubberSize.add(popmRubberSize8); bgRubberSize.add(popmRubberSize10); popmRubberSize10.setText("Taille de la gomme : 10 px"); popmRubberSize10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/20 piceau 05.png"))); // NOI18N popmRubberSize10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { popmRubberSize10ActionPerformed(evt); } }); popRubberSize.add(popmRubberSize10); setLayout(new java.awt.BorderLayout()); ifrOpenSave.setIconifiable(true); ifrOpenSave.setTitle("Fichier"); ifrOpenSave.setVisible(true); ifrOpenSave.getContentPane().setLayout(null); btnNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_action_filenew.png"))); // NOI18N btnNew.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNewActionPerformed(evt); } }); ifrOpenSave.getContentPane().add(btnNew); btnNew.setBounds(0, 0, 40, 40); btnOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_filesystem_folder_grey_open.png"))); // NOI18N btnOpen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOpenActionPerformed(evt); } }); ifrOpenSave.getContentPane().add(btnOpen); btnOpen.setBounds(40, 0, 40, 40); btnSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_device_floppy_unmount.png"))); // NOI18N btnSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnSaveActionPerformed(evt); } }); ifrOpenSave.getContentPane().add(btnSave); btnSave.setBounds(80, 0, 40, 40); btnOpenFonts.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_mimetype_font_type1.png"))); // NOI18N btnOpenFonts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOpenFontsActionPerformed(evt); } }); ifrOpenSave.getContentPane().add(btnOpenFonts); btnOpenFonts.setBounds(120, 0, 40, 40); jDesktopPane1.add(ifrOpenSave); ifrOpenSave.setBounds(10, 10, 180, 70); ifrMainDraw.setIconifiable(true); ifrMainDraw.setTitle("Pour dessiner"); ifrMainDraw.setVisible(true); ifrMainDraw.getContentPane().setLayout(null); bgDraw.add(tbShapeLine); tbShapeLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingLine.png"))); // NOI18N tbShapeLine.setSelected(true); ifrMainDraw.getContentPane().add(tbShapeLine); tbShapeLine.setBounds(0, 0, 40, 40); bgDraw.add(tbShapeBezier); tbShapeBezier.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingBezier.png"))); // NOI18N ifrMainDraw.getContentPane().add(tbShapeBezier); tbShapeBezier.setBounds(40, 0, 40, 40); bgDraw.add(tbFreeDrawing); tbFreeDrawing.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32-Crayon.png"))); // NOI18N tbFreeDrawing.setComponentPopupMenu(popPenSize); ifrMainDraw.getContentPane().add(tbFreeDrawing); tbFreeDrawing.setBounds(80, 0, 40, 40); bgDraw.add(tbFreeClear); tbFreeClear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32-Gomme.png"))); // NOI18N tbFreeClear.setComponentPopupMenu(popRubberSize); ifrMainDraw.getContentPane().add(tbFreeClear); tbFreeClear.setBounds(120, 0, 40, 40); bgDraw.add(tbShapeBSpline1); tbShapeBSpline1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingBSpline.png"))); // NOI18N ifrMainDraw.getContentPane().add(tbShapeBSpline1); tbShapeBSpline1.setBounds(0, 40, 40, 40); bgDraw.add(tbNextPoint); tbNextPoint.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-NextAfterBSpline.png"))); // NOI18N ifrMainDraw.getContentPane().add(tbNextPoint); tbNextPoint.setBounds(80, 40, 40, 40); bgDraw.add(tbReStart); tbReStart.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/move m.png"))); // NOI18N ifrMainDraw.getContentPane().add(tbReStart); tbReStart.setBounds(0, 80, 40, 40); bgDraw.add(tbMove); tbMove.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/move n.png"))); // NOI18N ifrMainDraw.getContentPane().add(tbMove); tbMove.setBounds(40, 80, 40, 40); btnCloseBSpline.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingCloseBSpline.png"))); // NOI18N btnCloseBSpline.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCloseBSplineActionPerformed(evt); } }); ifrMainDraw.getContentPane().add(btnCloseBSpline); btnCloseBSpline.setBounds(40, 40, 40, 40); tbGrid.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/gridlocker.png"))); // NOI18N tbGrid.setToolTipText("Se déplacer sur la grille"); tbGrid.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tbGridActionPerformed(evt); } }); ifrMainDraw.getContentPane().add(tbGrid); tbGrid.setBounds(120, 80, 40, 40); jDesktopPane1.add(ifrMainDraw); ifrMainDraw.setBounds(10, 90, 180, 150); ifrImage.setIconifiable(true); ifrImage.setTitle("Image"); ifrImage.setVisible(true); ifrImage.getContentPane().setLayout(null); btnUnloadImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_app_windows_users.png"))); // NOI18N btnUnloadImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnUnloadImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnUnloadImage); btnUnloadImage.setBounds(0, 0, 40, 40); btnImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_app_kpaint.png"))); // NOI18N btnImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnImage); btnImage.setBounds(40, 0, 40, 40); btnTopImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/f02.gif"))); // NOI18N btnTopImage.setComponentPopupMenu(popImageMove); btnTopImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnTopImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnTopImage); btnTopImage.setBounds(80, 0, 40, 40); btnCentreImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/f05.gif"))); // NOI18N btnCentreImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCentreImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnCentreImage); btnCentreImage.setBounds(80, 40, 40, 40); btnLeftImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/f04.gif"))); // NOI18N btnLeftImage.setComponentPopupMenu(popImageMove); btnLeftImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnLeftImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnLeftImage); btnLeftImage.setBounds(40, 40, 40, 40); btnRightImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/f06.gif"))); // NOI18N btnRightImage.setComponentPopupMenu(popImageMove); btnRightImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRightImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnRightImage); btnRightImage.setBounds(120, 40, 40, 40); btnBottomImage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/f08.gif"))); // NOI18N btnBottomImage.setComponentPopupMenu(popImageMove); btnBottomImage.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnBottomImageActionPerformed(evt); } }); ifrImage.getContentPane().add(btnBottomImage); btnBottomImage.setBounds(80, 80, 40, 40); slideImageAlpha.setValue(100); slideImageAlpha.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { slideImageAlphaStateChanged(evt); } }); ifrImage.getContentPane().add(slideImageAlpha); slideImageAlpha.setBounds(0, 80, 80, 26); lblImageAlpha.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblImageAlpha.setText("100%"); ifrImage.getContentPane().add(lblImageAlpha); lblImageAlpha.setBounds(0, 100, 80, 20); jDesktopPane1.add(ifrImage); ifrImage.setBounds(10, 250, 180, 150); ifrShape.setIconifiable(true); ifrShape.setTitle("Forme et échelle"); ifrShape.setVisible(true); ifrShape.getContentPane().setLayout(null); slideScale.setMaximum(5); slideScale.setMinimum(1); slideScale.setValue(1); slideScale.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { slideScaleStateChanged(evt); } }); ifrShape.getContentPane().add(slideScale); slideScale.setBounds(80, 0, 80, 26); slideDrawingAlpha.setValue(20); slideDrawingAlpha.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { slideDrawingAlphaStateChanged(evt); } }); ifrShape.getContentPane().add(slideDrawingAlpha); slideDrawingAlpha.setBounds(0, 0, 80, 26); lblDrawingAlpha.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblDrawingAlpha.setText("20%"); ifrShape.getContentPane().add(lblDrawingAlpha); lblDrawingAlpha.setBounds(0, 20, 80, 20); lblScale.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblScale.setText("1"); ifrShape.getContentPane().add(lblScale); lblScale.setBounds(80, 20, 80, 20); jDesktopPane1.add(ifrShape); ifrShape.setBounds(10, 410, 180, 70); ifrMode.setIconifiable(true); ifrMode.setTitle("Mode"); ifrMode.setVisible(true); ifrMode.getContentPane().setLayout(null); bgMode.add(tbNormalMode); tbNormalMode.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32-Rose.png"))); // NOI18N tbNormalMode.setSelected(true); ifrMode.getContentPane().add(tbNormalMode); tbNormalMode.setBounds(0, 0, 40, 40); bgMode.add(tbOrnamentMode); tbOrnamentMode.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32-ornement.png"))); // NOI18N ifrMode.getContentPane().add(tbOrnamentMode); tbOrnamentMode.setBounds(40, 0, 40, 40); jDesktopPane1.add(ifrMode); ifrMode.setBounds(10, 490, 180, 70); ifrOperations.setIconifiable(true); ifrOperations.setTitle("Opérations"); ifrOperations.setVisible(true); ifrOperations.getContentPane().setLayout(null); bgDraw.add(tbTranslation); tbTranslation.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-translate.png"))); // NOI18N ifrOperations.getContentPane().add(tbTranslation); tbTranslation.setBounds(0, 0, 40, 40); bgDraw.add(tbRotation); tbRotation.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-rotate.png"))); // NOI18N ifrOperations.getContentPane().add(tbRotation); tbRotation.setBounds(40, 0, 40, 40); bgDraw.add(tbResize); tbResize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-scale.png"))); // NOI18N ifrOperations.getContentPane().add(tbResize); tbResize.setBounds(80, 0, 40, 40); bgDraw.add(tbShear); tbShear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-shear.png"))); // NOI18N tbShear.setEnabled(false); ifrOperations.getContentPane().add(tbShear); tbShear.setBounds(120, 0, 40, 40); bgDraw.add(tbSelection); tbSelection.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Selection.png"))); // NOI18N ifrOperations.getContentPane().add(tbSelection); tbSelection.setBounds(0, 40, 40, 40); jDesktopPane1.add(ifrOperations); ifrOperations.setBounds(10, 570, 180, 110); ifrScript.setIconifiable(true); ifrScript.setResizable(true); ifrScript.setTitle("Vos scripts"); ifrScript.setVisible(true); ifrScript.getContentPane().setLayout(null); btnApplyScript.setText(">>"); btnApplyScript.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnApplyScriptActionPerformed(evt); } }); ifrScript.getContentPane().add(btnApplyScript); btnApplyScript.setBounds(0, 0, 160, 20); jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); listScript.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane1.setViewportView(listScript); ifrScript.getContentPane().add(jScrollPane1); jScrollPane1.setBounds(0, 20, 160, 110); jDesktopPane1.add(ifrScript); ifrScript.setBounds(10, 690, 180, 160); ifrHistoric.setIconifiable(true); ifrHistoric.setResizable(true); ifrHistoric.setTitle("Historique"); ifrHistoric.setVisible(true); ifrHistoric.getContentPane().setLayout(null); btnHistorique.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_action_back.png"))); // NOI18N btnHistorique.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnHistoriqueActionPerformed(evt); } }); ifrHistoric.getContentPane().add(btnHistorique); btnHistorique.setBounds(0, 0, 40, 40); btnRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_action_forward.png"))); // NOI18N btnRedo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRedoActionPerformed(evt); } }); ifrHistoric.getContentPane().add(btnRedo); btnRedo.setBounds(40, 0, 40, 40); jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); listRemember.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane2.setViewportView(listRemember); ifrHistoric.getContentPane().add(jScrollPane2); jScrollPane2.setBounds(0, 40, 160, 280); jDesktopPane1.add(ifrHistoric); ifrHistoric.setBounds(390, 90, 180, 350); ifrLayers.setIconifiable(true); ifrLayers.setResizable(true); ifrLayers.setTitle("Couches"); ifrLayers.setVisible(true); ifrLayers.getContentPane().setLayout(null); btnAddLayer.setText("+"); btnAddLayer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddLayerActionPerformed(evt); } }); ifrLayers.getContentPane().add(btnAddLayer); btnAddLayer.setBounds(0, 0, 80, 20); btnDeleteLayer.setText("-"); btnDeleteLayer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDeleteLayerActionPerformed(evt); } }); ifrLayers.getContentPane().add(btnDeleteLayer); btnDeleteLayer.setBounds(80, 0, 80, 20); jScrollPane3.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); lstLayer.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); lstLayer.setComponentPopupMenu(popLayer); lstLayer.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { lstLayerValueChanged(evt); } }); jScrollPane3.setViewportView(lstLayer); ifrLayers.getContentPane().add(jScrollPane3); jScrollPane3.setBounds(0, 20, 160, 100); jDesktopPane1.add(ifrLayers); ifrLayers.setBounds(200, 410, 180, 150); ifrDrawing.setIconifiable(true); ifrDrawing.setMaximizable(true); ifrDrawing.setResizable(true); ifrDrawing.setTitle("Bloc à dessin"); ifrDrawing.setVisible(true); spSheet.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); spSheet.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); spSheet.setComponentPopupMenu(popDrawing); spSheet.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { spSheetMouseClicked(evt); } public void mousePressed(java.awt.event.MouseEvent evt) { spSheetMousePressed(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { spSheetMouseReleased(evt); } }); spSheet.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { spSheetMouseDragged(evt); } public void mouseMoved(java.awt.event.MouseEvent evt) { spSheetMouseMoved(evt); } }); javax.swing.GroupLayout ifrDrawingLayout = new javax.swing.GroupLayout(ifrDrawing.getContentPane()); ifrDrawing.getContentPane().setLayout(ifrDrawingLayout); ifrDrawingLayout.setHorizontalGroup( ifrDrawingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spSheet, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE) ); ifrDrawingLayout.setVerticalGroup( ifrDrawingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spSheet, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE) ); jDesktopPane1.add(ifrDrawing); ifrDrawing.setBounds(200, 90, 180, 310); ifrOrnament.setIconifiable(true); ifrOrnament.setTitle("Ornement"); ifrOrnament.setVisible(true); ifrOrnament.getContentPane().setLayout(null); btnOrnReady.setForeground(new java.awt.Color(255, 0, 0)); btnOrnReady.setText("Prêt !"); btnOrnReady.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOrnReadyActionPerformed(evt); } }); ifrOrnament.getContentPane().add(btnOrnReady); btnOrnReady.setBounds(0, 0, 80, 20); btnOrnGenerate.setForeground(new java.awt.Color(255, 0, 0)); btnOrnGenerate.setText("Généré !"); btnOrnGenerate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOrnGenerateActionPerformed(evt); } }); ifrOrnament.getContentPane().add(btnOrnGenerate); btnOrnGenerate.setBounds(80, 0, 80, 20); lblMainMove.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblMainMove.setText("Mouvement général"); ifrOrnament.getContentPane().add(lblMainMove); lblMainMove.setBounds(0, 20, 160, 20); bgOrnMainMove.add(rbOrnMainMoveOff); rbOrnMainMoveOff.setSelected(true); rbOrnMainMoveOff.setText("Non"); rbOrnMainMoveOff.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { rbOrnMainMoveOffActionPerformed(evt); } }); ifrOrnament.getContentPane().add(rbOrnMainMoveOff); rbOrnMainMoveOff.setBounds(0, 40, 80, 20); bgOrnMainMove.add(rbOrnMainMoveOn); rbOrnMainMoveOn.setText("Oui"); rbOrnMainMoveOn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { rbOrnMainMoveOnActionPerformed(evt); } }); ifrOrnament.getContentPane().add(rbOrnMainMoveOn); rbOrnMainMoveOn.setBounds(80, 40, 80, 20); spiOrnMMFreq.setEnabled(false); ifrOrnament.getContentPane().add(spiOrnMMFreq); spiOrnMMFreq.setBounds(79, 60, 80, 30); lblOrnMMFreq.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); lblOrnMMFreq.setText("Fréquence :"); lblOrnMMFreq.setEnabled(false); ifrOrnament.getContentPane().add(lblOrnMMFreq); lblOrnMMFreq.setBounds(0, 60, 80, 30); bgDraw.add(tbOrnMMLine); tbOrnMMLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingLine-OrnMainMove.png"))); // NOI18N tbOrnMMLine.setEnabled(false); ifrOrnament.getContentPane().add(tbOrnMMLine); tbOrnMMLine.setBounds(0, 90, 40, 40); bgDraw.add(tbOrnMMBezier); tbOrnMMBezier.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingBezier-OrnMainMove.png"))); // NOI18N tbOrnMMBezier.setEnabled(false); ifrOrnament.getContentPane().add(tbOrnMMBezier); tbOrnMMBezier.setBounds(40, 90, 40, 40); bgDraw.add(tbOrnMMBSpline); tbOrnMMBSpline.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-DrawingBSpline-OrnMainMove.png"))); // NOI18N tbOrnMMBSpline.setEnabled(false); ifrOrnament.getContentPane().add(tbOrnMMBSpline); tbOrnMMBSpline.setBounds(80, 90, 40, 40); jScrollPane4.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); ornMMTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane4.setViewportView(ornMMTable); ifrOrnament.getContentPane().add(jScrollPane4); jScrollPane4.setBounds(0, 130, 160, 80); btnOrnMMClear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/edit-clear-4.png"))); // NOI18N btnOrnMMClear.setEnabled(false); btnOrnMMClear.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOrnMMClearActionPerformed(evt); } }); ifrOrnament.getContentPane().add(btnOrnMMClear); btnOrnMMClear.setBounds(120, 90, 40, 40); jDesktopPane1.add(ifrOrnament); ifrOrnament.setBounds(200, 570, 180, 240); ifrAssCommands.setIconifiable(true); ifrAssCommands.setResizable(true); ifrAssCommands.setTitle("Commandes ASS"); ifrAssCommands.setVisible(true); lblCoordinates.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); lblCoordinates.setText("<html><h2>-100 ; -100"); lblAssCommands.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); lblAssCommands.setText("Commandes ASS : "); tfAssCommands.setText("jTextField1"); tfAssCommands.setComponentPopupMenu(popAssCom); javax.swing.GroupLayout ifrAssCommandsLayout = new javax.swing.GroupLayout(ifrAssCommands.getContentPane()); ifrAssCommands.getContentPane().setLayout(ifrAssCommandsLayout); ifrAssCommandsLayout.setHorizontalGroup( ifrAssCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ifrAssCommandsLayout.createSequentialGroup() .addComponent(lblCoordinates, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblAssCommands, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tfAssCommands, javax.swing.GroupLayout.DEFAULT_SIZE, 388, Short.MAX_VALUE)) ); ifrAssCommandsLayout.setVerticalGroup( ifrAssCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ifrAssCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblCoordinates) .addComponent(lblAssCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(tfAssCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); jDesktopPane1.add(ifrAssCommands); ifrAssCommands.setBounds(200, 10, 670, 70); add(jDesktopPane1, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents private void spSheetMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spSheetMouseClicked // QUAND ON CLIC SUR UN BOUTON DE LA SOURIS if(tbShapeBezier.isSelected() | tbShapeLine.isSelected()){ // On récupère les coordonnées sur le composant sheet. int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(tbGrid.isSelected()){ java.awt.Point pa = Sheet.getGridCoordinates(xa, ya); xa = pa.x; ya = pa.y; } Layer lay = getCurrentLayer(); // Si on clique sur le bouton 1 de la souris (le bouton gauche). if(evt.getButton()==1){ //On fait cette action que si on n'a jamais rien fait d'autre (que la première fois) if (lay.getFirstPoint()==null){ //first recupère les coordonnées du tout premier point qu'on pose. lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); ReStart m = new ReStart(xa/scale, ya/scale, xa/scale, ya/scale); lay.getShapesList().addShape(m); lay.addRemember(m); }else{ //p est un nouveau élément "point" (voir classe Point), on récupère ses coordonnées. Point p = new Point(xa/scale, ya/scale); //on ajoute à la liste cet élément "point" (voir classe Point) lay.getShapesList().addShape(p); lay.addRemember(p); } //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); //on l'ajout à la list de sheet afin qu'il apparaisse sur le dessin sh.updateShapesList(lay.getShapesList()); //on définit ce point comme dernier point posé lay.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); //si last et first ne sont pas à la même coordonnée if(isSamePoint(lay.getFirstPoint(),lay.getLastPoint())==false){ //si le bouton de création de "ligne" (voir classe Line) est enfoncé if(tbShapeLine.isSelected()){ //on crée une "ligne" (voir classe Line) Line l = new Line(); //on la configure l.setOriginPoint( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); l.setLastPoint( (int)lay.getLastPoint().getX(), (int)lay.getLastPoint().getY()); //on l'ajoute à la liste lay.getShapesList().addShape(l); lay.addRemember(l); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); //si le bouton de création de "bézier" (voir classe Bezier) est enfoncé //voir aussi : http://fr.wikipedia.org/wiki/Courbe_de_B%C3%A9zier }else if(tbShapeBezier.isSelected()){ //on crée un "bézier" (voir classe Bezier) et on le configure Bezier b = new Bezier( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY(), (int)lay.getLastPoint().getX(), (int)lay.getLastPoint().getY()); //création des "controlpoint" (voir classe ControlPoint) //servant de point de control pour la courbe de bézier ControlPoint cp1 = b.getControl1(); ControlPoint cp2 = b.getControl2(); //on ajoute tout à la liste lay.getShapesList().addShape(b); lay.addRemember(b); lay.getShapesList().addShape(cp1); lay.addRemember(cp1); lay.getShapesList().addShape(cp2); lay.addRemember(cp2); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); } //first prend les coordonnées de last afin que l'on puisse se souvenir //du dernier point posé lors d'un nouveau clic gauche de souris lay.setFirstPoint(lay.getLastPoint()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); updateRemember(lay); } // Si on clique sur le bouton 3 de la souris (le bouton droit). }else if(evt.getButton()==3){ //rotatePoint = new java.awt.Point(xa/scale,ya/scale); // java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); // java.util.List<zdrawinglite.Shape> mylist = slist.getShapesAtPoint(p2d); // for (zdrawinglite.Shape s : slist.getShapes()){ // for(zdrawinglite.Shape sb : mylist){ // if (s.equals(sb)){ // if(s instanceof zdrawinglite.Point){ // zdrawinglite.Point point = (zdrawinglite.Point)s; // point.setSelected(true); // } // } // } // } } }else if(tbShapeBSpline1.isSelected()){ // On récupère les coordonnées sur le composant sheet. int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); Layer lay = getCurrentLayer(); // Si on clique sur le bouton 1 de la souris (le bouton gauche). if(evt.getButton()==1){ //On fait cette action que si on n'a jamais rien fait d'autre (que la première fois) if (lay.getFirstPoint()==null){ //first recupère les coordonnées du tout premier point qu'on pose. lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); ReStart m = new ReStart(xa/scale, ya/scale, xa/scale, ya/scale); lay.getShapesList().addShape(m); lay.addRemember(m); } try{ IShape s = lay.getShapesList().getLastShape(); if(s instanceof BSpline){ //ne rien faire }else{ if(s!=null){ //on crée d'abord un point, car le ASS marche comme ça Point p = new Point( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); //on crée une bspline et on la configure BSpline b = new BSpline( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); //on ajoute tout à la liste lay.getShapesList().addShape(p); lay.addRemember(p); lay.getShapesList().addShape(b); lay.addRemember(b); } } }catch(Exception e){ System.out.println(e.getMessage()); //on crée d'abord un point, car le ASS marche comme ça Point p = new Point( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); //on crée une bspline et on la configure BSpline b = new BSpline( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); //on ajoute tout à la liste lay.getShapesList().addShape(p); lay.addRemember(p); lay.getShapesList().addShape(b); lay.addRemember(b); } //on définit ce point comme dernier point posé lay.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); //si last et first ne sont pas à la même coordonnée if(isSamePoint(lay.getFirstPoint(),lay.getLastPoint())==false){ IShape s = lay.getShapesList().getLastShape(); if(s instanceof BSpline){ BSpline bs = (BSpline)s; bs.addPoint( (int)lay.getLastPoint().getX(), (int)lay.getLastPoint().getY()); }else{ //nothing } } //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); } //first prend les coordonnées de last afin que l'on puisse se souvenir //du dernier point posé lors d'un nouveau clic gauche de souris lay.setFirstPoint(lay.getLastPoint()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); updateRemember(lay); }else if(tbNextPoint.isSelected()){ // On récupère les coordonnées sur le composant sheet. int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); Layer lay = getCurrentLayer(); // Si on clique sur le bouton 1 de la souris (le bouton gauche). if(evt.getButton()==1){ IShape s = lay.getShapesList().getLastShape(); if(s instanceof BSpline){ BSpline bs = (BSpline)s; if(bs.isClosed()==false){ bs.setNextPoint(xa/scale, ya/scale); bs.addPoint(xa/scale, ya/scale); bs.setLastPoint(xa/scale, ya/scale); //first prend les coordonnées de last afin que l'on puisse se souvenir //du dernier point posé lors d'un nouveau clic gauche de souris lay.setFirstPoint(bs.getLastPoint()); } } } //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); }else if(tbMove.isSelected()){ // On récupère les coordonnées sur le composant sheet. int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); Layer lay = getCurrentLayer(); // Si on clique sur le bouton 1 de la souris (le bouton gauche). if(evt.getButton()==1){ //On fait cette action que si on n'a jamais rien fait d'autre (que la première fois) if (lay.getFirstPoint()==null){ //first recupère les coordonnées du tout premier point qu'on pose. lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); Move m = new Move(xa/scale, ya/scale, xa/scale, ya/scale); lay.getShapesList().addShape(m); lay.addRemember(m); } //on définit ce point comme dernier point posé lay.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); //si last et first ne sont pas à la même coordonnée if(isSamePoint(lay.getFirstPoint(),lay.getLastPoint())==false){ //on crée une "ligne" (voir classe Line) Move m = new Move(); //on la configure m.setOriginPoint( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); m.setLastPoint( (int)lay.getLastPoint().getX(), (int)lay.getLastPoint().getY()); //on l'ajoute à la liste lay.getShapesList().addShape(m); lay.addRemember(m); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); } } //first prend les coordonnées de last afin que l'on puisse se souvenir //du dernier point posé lors d'un nouveau clic gauche de souris lay.setFirstPoint(lay.getLastPoint()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); updateRemember(lay); }else if(tbReStart.isSelected()){ // On récupère les coordonnées sur le composant sheet. int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); Layer lay = getCurrentLayer(); // Si on clique sur le bouton 1 de la souris (le bouton gauche). if(evt.getButton()==1){ //On fait cette action que si on n'a jamais rien fait d'autre (que la première fois) if (lay.getFirstPoint()==null){ //first recupère les coordonnées du tout premier point qu'on pose. lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); ReStart m = new ReStart(xa/scale, ya/scale, xa/scale, ya/scale); lay.getShapesList().addShape(m); lay.addRemember(m); } //on définit ce point comme dernier point posé lay.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); //si last et first ne sont pas à la même coordonnée if(isSamePoint(lay.getFirstPoint(),lay.getLastPoint())==false){ //on crée une "ligne" (voir classe Line) ReStart m = new ReStart(); //on la configure m.setOriginPoint( (int)lay.getFirstPoint().getX(), (int)lay.getFirstPoint().getY()); m.setLastPoint( (int)lay.getLastPoint().getX(), (int)lay.getLastPoint().getY()); //on l'ajoute à la liste lay.getShapesList().addShape(m); lay.addRemember(m); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); } } //first prend les coordonnées de last afin que l'on puisse se souvenir //du dernier point posé lors d'un nouveau clic gauche de souris lay.setFirstPoint(lay.getLastPoint()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); updateRemember(lay); }else if(tbTranslation.isSelected()){ if(tbNormalMode.isSelected()){ Layer lay = getCurrentLayer(); if(evt.getButton()==1 && lay.getTranslation().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getTranslation().setTranslation(new java.awt.Point(xa, ya)); sh.updateTranslation(lay.getTranslation()); } }else if(tbOrnamentMode.isSelected()){ List<Layer> layers = getLinkedLayers(); for(Layer lay : layers){ if(evt.getButton()==1 && lay.getTranslation().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getTranslation().setTranslation(new java.awt.Point(xa, ya)); sh.updateTranslation(lay.getTranslation()); } } } }else if(tbRotation.isSelected()){ if(tbNormalMode.isSelected()){ Layer lay = getCurrentLayer(); if(evt.getButton()==1 && lay.getCenter().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getCenter().setCenter(xa, ya); sh.updateCenter(lay.getCenter()); } if(evt.getButton()==2){ RotationDialog rd = new RotationDialog(parentFrame, true); rd.setLangOKButton(strOK_Button); rd.setLangCancelButton(strCancel_Button); rd.setLangRedMessage(strRedMessage); rd.setLangMessage(strMessage); rd.setLocationRelativeTo(null);//Centre le fenêtre double angle = (double) rd.showDialog(); lay.rotate(lay.getCenter().getX(), lay.getCenter().getY(), angle, lay); lay.getCenter().clear(); sh.updateCenter(lay.getCenter()); sh.updateDrawing(); tfAssCommands.setText(updateCommands()); } }else if(tbOrnamentMode.isSelected()){ List<Layer> layers = getLinkedLayers(); for(Layer lay : layers){ if(evt.getButton()==1 && lay.getCenter().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getCenter().setCenter(xa, ya); sh.updateCenter(lay.getCenter()); } } } }else if(tbFreeDrawing.isSelected()){ }else if(tbResize.isSelected()){ if(tbNormalMode.isSelected()){ Layer lay = getCurrentLayer(); if(evt.getButton()==1 && lay.getResize().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getResize().setResize(xa, ya); sh.updateResize(lay.getResize()); } }else if(tbOrnamentMode.isSelected()){ List<Layer> layers = getLinkedLayers(); for(Layer lay : layers){ if(evt.getButton()==1 && lay.getResize().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getResize().setResize(xa, ya); sh.updateResize(lay.getResize()); } } } }else if(tbShear.isSelected()){ if(tbNormalMode.isSelected()){ Layer lay = getCurrentLayer(); if(evt.getButton()==1 && lay.getShear().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getShear().setup(getCurrentLayer().getShapesList().getShapes()); lay.getShear().setShearPoint(xa, ya); sh.updateShear(lay.getShear()); } }else if(tbOrnamentMode.isSelected()){ List<Layer> layers = getLinkedLayers(); for(Layer lay : layers){ if(evt.getButton()==1 && lay.getShear().isSet()==false){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); lay.getShear().setup(getCurrentLayer().getShapesList().getShapes()); lay.getShear().setShearPoint(xa, ya); sh.updateShear(lay.getShear()); } } } }else if(tbOrnMMLine.isSelected()){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(evt.getButton()==1){//VOIR PLUS HAUT LE FONCTIONNEMENT - Même chose que Line if (ornlayForMain.getFirstPoint()==null){ ornlayForMain.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); OrnPoint p = new OrnPoint(xa/scale, ya/scale); ornlayForMain.addShape(p); }else{ OrnPoint p = new OrnPoint(xa/scale, ya/scale); ornlayForMain.addShape(p); } sh.updateOrnamentForMain(ornlayForMain.getList()); ornlayForMain.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); if(isSamePoint(ornlayForMain.getFirstPoint(),ornlayForMain.getLastPoint())==false){ OrnMMLine l = new OrnMMLine( ornlayForMain.getFirstPoint().x, ornlayForMain.getFirstPoint().y, ornlayForMain.getLastPoint().x, ornlayForMain.getLastPoint().y); // String value = JOptionPane.showInputDialog(this, "<html><b>Veuillez indiquer le temps de cette phase :</b>\n" // + "- ne mettez rien pour que le temps soit égal au temps de la ligne de karaoké\n" // + "- mettez le signe \"/\" suivit d'un nombre pour une fraction du temps" // + ", exemple pour avoir la moitié du temps de la ligne mettez \"/2\"\n" // + "- mettez un chiffre pour avoir ce temps précis\n" // + "Notez bien que le temps est en millisecondes."); // if(value.isEmpty()){value = "0";} ornlayForMain.addShape(l); dtmOrnForMain.addRow(new Object[]{l,"1000"}); } sh.updateOrnamentForMain(ornlayForMain.getList()); ornlayForMain.setFirstPoint(ornlayForMain.getLastPoint()); } }else if(tbOrnMMBezier.isSelected()){ int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(evt.getButton()==1){//VOIR PLUS HAUT LE FONCTIONNEMENT - Même chose que Line if (ornlayForMain.getFirstPoint()==null){ ornlayForMain.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); OrnPoint p = new OrnPoint(xa/scale, ya/scale); ornlayForMain.addShape(p); }else{ OrnPoint p = new OrnPoint(xa/scale, ya/scale); ornlayForMain.addShape(p); } sh.updateOrnamentForMain(ornlayForMain.getList()); ornlayForMain.setLastPoint(new java.awt.Point(xa/scale,ya/scale)); if(isSamePoint(ornlayForMain.getFirstPoint(),ornlayForMain.getLastPoint())==false){ OrnMMBezier b = new OrnMMBezier( ornlayForMain.getFirstPoint().x, ornlayForMain.getFirstPoint().y, ornlayForMain.getLastPoint().x, ornlayForMain.getLastPoint().y); OrnControlPoint cp1 = b.getControl1(); OrnControlPoint cp2 = b.getControl2(); // String value = JOptionPane.showInputDialog(this, "<html><b>Veuillez indiquer le temps de cette phase :</b>\n" // + "- ne mettez rien pour que le temps soit égal au temps de la ligne de karaoké\n" // + "- mettez le signe \"/\" suivit d'un nombre pour une fraction du temps" // + ", exemple pour avoir la moitié du temps de la ligne mettez \"/2\"\n" // + "- mettez un chiffre pour avoir ce temps précis\n" // + "Notez bien que le temps est en millisecondes."); // if(value.isEmpty()){value = "0";} ornlayForMain.addShape(b); ornlayForMain.addShape(cp1); ornlayForMain.addShape(cp2); dtmOrnForMain.addRow(new Object[]{b,"1000"}); } sh.updateOrnamentForMain(ornlayForMain.getList()); ornlayForMain.setFirstPoint(ornlayForMain.getLastPoint()); } } //ON CONTRÔLE LA LISTE DES SHAPE POUR VOIR SI ON DOIT PERMETTRE //LE BOUTON CloseBSpline D'ÊTRE DISPONIBLE try{ Layer lay = getCurrentLayer(); IShape shape = lay.getShapesList().getLastShape(); if(shape instanceof BSpline){ btnCloseBSpline.setEnabled(true); }else{ btnCloseBSpline.setEnabled(false); } }catch(Exception e){ } }//GEN-LAST:event_spSheetMouseClicked private void spSheetMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spSheetMousePressed // QUAND ON APPUIE SUR UN BOUTON DE LA SOURIS int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(tbGrid.isSelected()){ java.awt.Point pa = Sheet.getGridCoordinates(xa, ya); xa = pa.x; ya = pa.y; } if(tbShapeBezier.isSelected() | tbShapeLine.isSelected() | tbMove.isSelected() | tbReStart.isSelected()){ //Prépare la mise à jour de la position des points proches du pointeur //quand on actionne le bouton du milieu de la souris afin de déplacer les formes. //on marque chaque élément concerné par un déplacment if(evt.getButton()==2){ Layer lay = getCurrentLayer(); java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); lay.setChangelist(lay.getShapesList().getShapesAtPoint(p2d)); for (IShape s : lay.getShapesList().getShapes()){ for(IShape sb : lay.getChangelist()){ if (s.equals(sb)){ s.setMarked(true); sb.setMarked(true); } } } } }else if (tbShapeBSpline1.isSelected() | tbNextPoint.isSelected()){ if(evt.getButton()==2){ Layer lay = getCurrentLayer(); java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); lay.setChangelist(lay.getShapesList().getShapesAtPoint(p2d)); for (IShape s : lay.getShapesList().getShapes()){ for(IShape sb : lay.getChangelist()){ if (s.equals(sb)){ s.setMarked(true); sb.setMarked(true); } } } } }else if(tbTranslation.isSelected()){ // if(evt.getButton()==1){ // Layer lay = getCurrentLayer(); // int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); // int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); // beforeTranslation = new java.awt.Point(xa,ya); // } Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getTranslation().isSet()){ if(evt.getButton()==1){ lay.getTranslation().setDistance(xa, ya); lay.getTranslation().setTranslatonPreview(getCurrentLayer().getShapesList().getShapes()); sh.updateTranslation(lay.getTranslation()); } }else if(tbOrnamentMode.isSelected() && lay.getTranslation().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.getTranslation().setDistance(xa, ya); lay2.getTranslation().setTranslatonPreview(lay2.getShapesList().getShapes()); sh.updateTranslation(lay2.getTranslation()); } } } }else if(tbFreeDrawing.isSelected()){ }else if(tbSelection.isSelected() && evt.getButton()==1){ // On récupère les coordonnées sur le composant sheet. selection.setStartPoint(xa, ya); selection.setEndPoint(xa, ya); sh.updateSelection(selection, false); sh.updateDrawing(); }else if(tbRotation.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getCenter().isSet()){ if(evt.getButton()==1){ lay.getCenter().setRotation(xa, ya); lay.getCenter().setRotationPreview(getCurrentLayer().getShapesList().getShapes(), 0d); sh.updateCenter(lay.getCenter()); } }else if(tbOrnamentMode.isSelected() && lay.getCenter().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.getCenter().setRotation(xa, ya); lay2.getCenter().setRotationPreview(lay2.getShapesList().getShapes(), 0d); sh.updateCenter(lay2.getCenter()); } } } }else if(tbResize.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getResize().isSet()){ if(evt.getButton()==1){ lay.getResize().setDistance(xa, ya); lay.getResize().setResizePreview(getCurrentLayer().getShapesList().getShapes(), 0d); sh.updateResize(lay.getResize()); } }else if(tbOrnamentMode.isSelected() && lay.getResize().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.getResize().setDistance(xa, ya); lay2.getResize().setResizePreview(lay2.getShapesList().getShapes(), 0d); sh.updateResize(lay2.getResize()); } } } }else if(tbShear.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getShear().isSet()){ if(evt.getButton()==1){ lay.getShear().setMovePoint(xa, ya); lay.getShear().setShearPreview(getCurrentLayer().getShapesList().getShapes()); sh.updateShear(lay.getShear()); } }else if(tbOrnamentMode.isSelected() && lay.getShear().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.getShear().setMovePoint(xa, ya); lay2.getShear().setShearPreview(lay2.getShapesList().getShapes()); sh.updateShear(lay2.getShear()); } } } }else if(tbOrnMMLine.isSelected() | tbOrnMMBezier.isSelected()){ if(evt.getButton()==2){ java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); ornlayForMain.setChangeList(ornlayForMain.getShapesAtPoint(p2d)); for (feuille.drawing.ornament.IShape s : ornlayForMain.getList()){ for (feuille.drawing.ornament.IShape sb : ornlayForMain.getChangeList()) { if (s.equals(sb)){ s.setMarked(true); sb.setMarked(true); } } } } } }//GEN-LAST:event_spSheetMousePressed private void spSheetMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spSheetMouseReleased // QUAND ON RELACHE UN BOUTON DE LA SOURIS int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(tbGrid.isSelected()){ java.awt.Point pa = Sheet.getGridCoordinates(xa, ya); xa = pa.x; ya = pa.y; } if(tbShapeBezier.isSelected() | tbShapeLine.isSelected() | tbShapeBSpline1.isSelected() | tbNextPoint.isSelected() | tbMove.isSelected() | tbReStart.isSelected()){ //Met à jour la position des points et des lignes/courbes. Layer lay = getCurrentLayer(); if(evt.getButton()==2 && lay.getChangelist()!=null){ java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); for (IShape s : lay.getShapesList().getShapes()){ if(s.getMarked()==true){ s.setMarked(false); if(s instanceof Point){ Point point = (Point)s; point.updatePointPosition(p2d); }else if(s instanceof Line){ Line line = (Line)s; line.updatePointPosition(p2d); line.updatehasEnded(); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updatePointPosition(p2d); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updatePointPosition(p2d); b.updatehasEnded(); }else if(s instanceof BSpline){ BSpline b = (BSpline)s; b.updatePointPosition(p2d); b.updateLastUsedControlPoint(); b.updatehasEnded(); }else if(s instanceof Move){ Move move = (Move)s; move.updatePointPosition(p2d); move.updatehasEnded(); }else if(s instanceof ReStart){ ReStart move = (ReStart)s; move.updatePointPosition(p2d); move.updatehasEnded(); } } } //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); //on met à jour la liste de sheet sh.updateShapesList(lay.getShapesList()); //on vide changelist lay.setChangelist(null); //on met à jour les commandes ASS tfAssCommands.setText(updateCommands()); } }else if(tbFreeDrawing.isSelected()){ }else if(tbFreeClear.isSelected()){ }else if(tbTranslation.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getTranslation().isSet()){ if(evt.getButton()==1){ lay.translate(lay.getShapesList().getShapes(), lay.getTranslation().getDX(), lay.getTranslation().getDY(), lay); lay.getTranslation().clear(); sh.updateTranslation(lay.getTranslation()); fixCommands(); } }else if(tbOrnamentMode.isSelected() && lay.getTranslation().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.translate(lay2.getShapesList().getShapes(), lay2.getTranslation().getDX(), lay2.getTranslation().getDY(), lay2); lay2.getTranslation().clear(); sh.updateTranslation(lay2.getTranslation()); fixCommands(); } } } }else if(tbSelection.isSelected() && evt.getButton()==1){ // On récupère les coordonnées sur le composant sheet. selection.setEndPoint(xa, ya); Layer lay = getCurrentLayer(); selection.searchForShapes(lay.getShapesList()); selection.clear(); sh.updateSelection(selection, false); sh.updateDrawing(); }else if(tbRotation.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getCenter().isSet()){ if(evt.getButton()==1){ lay.rotate(lay.getCenter().getX(), lay.getCenter().getY(), lay.getCenter().getAngle(), lay); lay.getCenter().clear(); sh.updateCenter(lay.getCenter()); fixCommands(); } }else if(tbOrnamentMode.isSelected() && lay.getCenter().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.rotate(lay2.getCenter().getX(), lay2.getCenter().getY(), lay2.getCenter().getAngle(), lay2); lay2.getCenter().clear(); sh.updateCenter(lay2.getCenter()); fixCommands(); } } } }else if(tbResize.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getResize().isSet()){ if(evt.getButton()==1){ lay.resize(lay.getResize().getReStartPoint(lay.getShapesList().getShapes()), lay.getResize().getPercent(), lay); lay.getResize().clear(); sh.updateResize(lay.getResize()); fixCommands(); } }else if(tbOrnamentMode.isSelected() && lay.getResize().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ lay2.resize(lay.getResize().getReStartPoint(lay2.getShapesList().getShapes()), lay2.getResize().getPercent(), lay2); lay2.getResize().clear(); sh.updateResize(lay2.getResize()); fixCommands(); } } } }else if(tbShear.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getShear().isSet()){ if(evt.getButton()==1){ //TODO Preview lay.getShear().clear(); sh.updateShear(lay.getShear()); //fixCommands(); } }else if(tbOrnamentMode.isSelected() && lay.getShear().isSet()){ List<Layer> layers = getLinkedLayers(); for(Layer lay2 : layers){ if(evt.getButton()==1){ //TODO Preview lay2.getShear().clear(); sh.updateShear(lay2.getShear()); //fixCommands(); } } } }else if(tbOrnMMLine.isSelected() | tbOrnMMBezier.isSelected()){ if(evt.getButton()==2 && ornlayForMain.getChangeList()!=null){ java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); for (feuille.drawing.ornament.IShape s : ornlayForMain.getList()) { if(s.getMarked()==true){ s.setMarked(false); if(s instanceof OrnPoint){ OrnPoint point = (OrnPoint)s; point.updatePointPosition(p2d); }else if(s instanceof OrnMMLine){ OrnMMLine line = (OrnMMLine)s; line.updatePointPosition(p2d); line.updatehasEnded(); }else if(s instanceof OrnControlPoint){ OrnControlPoint cp = (OrnControlPoint)s; cp.updatePointPosition(p2d); }else if(s instanceof OrnMMBezier){ OrnMMBezier b = (OrnMMBezier)s; b.updatePointPosition(p2d); b.updatehasEnded(); }else if(s instanceof BSpline){ // BSpline b = (BSpline)s; // b.updatePointPosition(p2d); // b.updateLastUsedControlPoint(); // b.updatehasEnded(); } } } sh.updateOrnamentForMain(ornlayForMain.getList());//on met à jour la liste de sheet ornlayForMain.setChangeList(null);//on vide changelist } } }//GEN-LAST:event_spSheetMouseReleased private void spSheetMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spSheetMouseDragged // QUAND ON DEPLACE LA SOURIS AVEC UN BOUTON ENFONCE (LE BOUTON GAUCHE) int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(tbGrid.isSelected()){ java.awt.Point pa = Sheet.getGridCoordinates(xa, ya); xa = pa.x; ya = pa.y; } if(tbShapeBezier.isSelected() | tbShapeLine.isSelected() | tbMove.isSelected() | tbReStart.isSelected() | tbShapeBSpline1.isSelected() | tbNextPoint.isSelected()){ // Si changelist n'est pas vide alors il y a modification en cours Layer lay = getCurrentLayer(); if(lay.getChangelist()!=null){ // On récupère les coordonnées sur le composant sheet. java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); //cette méthode ne sert plus à rien, car on ne veut pas n'importe quelle Shape // if(isNear(p2d,slist.getLastShape().getLastPoint2D())){ // first=new Point2D.Double(xa,ya); // } //ayant besoin que du type "point" (de Shape) on récupère le dernier "point" posé //on récupère d'abord avec la méthode getLastPoint de la liste le "point" //puis avec l'autre méthode getLastPoint de "point", on récupère le java.awt.Point if(tbShapeBezier.isSelected() | tbShapeLine.isSelected() | tbMove.isSelected() | tbReStart.isSelected()){ if(isNear(p2d,lay.getShapesList().getLastPoint().getLastPoint())){ lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); } }else{//tbShapeBSpline1.isSelected() | tbNextPoint.isSelected() if(isNear(p2d,lay.getShapesList().getLastShape().getOriginPoint())){ lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); } } //on met à jour les coordonnées des éléments qui ont été marqués for (IShape s : lay.getShapesList().getShapes()){ if(s.getMarked()==true){ if(s instanceof Point){ Point point = (Point)s; point.updatePointPosition(p2d); }else if(s instanceof Line){ Line line = (Line)s; line.updatePointPosition(p2d); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updatePointPosition(p2d); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updatePointPosition(p2d); }else if(s instanceof Move){ Move m = (Move)s; m.updatePointPosition(p2d); }else if(s instanceof ReStart){ ReStart m = (ReStart)s; m.updatePointPosition(p2d); }else if(s instanceof BSpline){ BSpline bs = (BSpline)s; bs.updatePointPosition(p2d); bs.updateLastUsedControlPoint(); } } } //on met à jour les coordonnées dans cette méthode afin de voir les traits //vertical et horizontal lorsqu'on bouge la souris sh.updateMousePosition(xa/scale, ya/scale); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); //on met à jour le dessin sh.updateDrawing(); //on met à jour l'affichage des coordonnées int xb = xa/scale-(sh.getWidth()/scale)/2; int yb = ya/scale-(sh.getHeight()/scale)/2; lblCoordinates.setText("<html><h2>"+xb+";"+yb); //on met à jour les commandes ASS tfAssCommands.setText(updateCommands()); } }else if(tbTranslation.isSelected()){ // tfAssCommands.setText(updateCommands()); //On s'assure d'avoir les bonnes commandes // String commands = tfAssCommands.getText(); //On récupère les commandes // // On récupère les coordonnées sur le composant sheet. // int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); // int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); // Layer lay = getCurrentLayer(); // int xDiff = xa-(int)beforeTranslation.getX(); // int yDiff = ya-(int)beforeTranslation.getY(); // shapesFromCommands(commands, lay, xDiff, yDiff,null,0); // //on met à jour les commandes ASS // beforeTranslation = new java.awt.Point(xa,ya); // tfAssCommands.setText(updateCommands()); Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getTranslation().isSet()){ lay.getTranslation().setDistance(xa, ya); lay.getTranslation().setTranslatonPreview(lay.getShapesList().getShapes()); sh.updateTranslation(lay.getTranslation()); }else if(tbOrnamentMode.isSelected() && lay.getTranslation().isSet()){ List<Layer> layers = getLinkedLayers(); List<Translation> translations = new ArrayList<Translation>(); for(Layer lay2 : layers){ lay2.getTranslation().setDistance(xa, ya); lay2.getTranslation().setTranslatonPreview(lay2.getShapesList().getShapes()); // sh.updateCenter(lay2.getCenter()); translations.add(lay2.getTranslation()); } sh.updateTranslation(translations); } }else if(tbFreeDrawing.isSelected()){ // On récupère les coordonnées sur le composant sheet. graDraft.fillOval((xa/scale)-(penSizeUnit/2), (ya/scale)-(penSizeUnit/2), penSizeUnit, penSizeUnit); graDraft.setColor(penColor); sh.updateDraft(imgDraft); sh.updateDrawing(); }else if(tbFreeClear.isSelected()){ // On récupère les coordonnées sur le composant sheet. Composite originalComposite = graDraft.getComposite(); AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f); graDraft.setComposite(composite); graDraft.setColor(new Color(0, 0, 0, 0)); graDraft.fillOval((xa/scale)-(rubberSizeUnit/2), (ya/scale)-(rubberSizeUnit/2), rubberSizeUnit, rubberSizeUnit); graDraft.setComposite(originalComposite); sh.updateDraft(imgDraft); sh.updateDrawing(); }else if(tbSelection.isSelected()){ // On récupère les coordonnées sur le composant sheet. selection.setEndPoint(xa, ya); sh.updateSelection(selection, false); sh.updateDrawing(); }else if(tbRotation.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getCenter().isSet()){ lay.getCenter().setRotation(xa, ya); lay.getCenter().setRotationPreview(lay.getShapesList().getShapes(), 0d); sh.updateCenter(lay.getCenter()); }else if(tbOrnamentMode.isSelected() && lay.getCenter().isSet()){ List<Layer> layers = getLinkedLayers(); List<Center> centers = new ArrayList<Center>(); for(Layer lay2 : layers){ lay2.getCenter().setRotation(xa, ya); lay2.getCenter().setRotationPreview(lay2.getShapesList().getShapes(), 0d); // sh.updateCenter(lay2.getCenter()); centers.add(lay2.getCenter()); } sh.updateCenter(centers); } }else if(tbResize.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getResize().isSet()){ lay.getResize().setDistance(xa, ya); lay.getResize().setResizePreview(lay.getShapesList().getShapes(), 0d); sh.updateResize(lay.getResize()); }else if(tbOrnamentMode.isSelected() && lay.getResize().isSet()){ List<Layer> layers = getLinkedLayers(); List<Resize> resizes = new ArrayList<Resize>(); for(Layer lay2 : layers){ lay2.getResize().setDistance(xa, ya); lay2.getResize().setResizePreview(lay2.getShapesList().getShapes(), 0d); // sh.updateResize(lay2.getResize()); resizes.add(lay2.getResize()); } sh.updateResize(resizes); } }else if(tbShear.isSelected()){ Layer lay = getCurrentLayer(); if(tbNormalMode.isSelected() && lay.getShear().isSet()){ lay.getShear().setShearPoint(xa, ya); lay.getShear().setShearPreview(lay.getShapesList().getShapes()); sh.updateShear(lay.getShear()); }else if(tbOrnamentMode.isSelected() && lay.getShear().isSet()){ List<Layer> layers = getLinkedLayers(); List<Shear> shears = new ArrayList<Shear>(); for(Layer lay2 : layers){ lay2.getShear().setShearPoint(xa, ya); lay2.getShear().setShearPreview(lay2.getShapesList().getShapes()); // sh.updateShear(lay2.getShear()); shears.add(lay2.getShear()); } sh.updateShear(shears); } }else if(tbOrnMMLine.isSelected() | tbOrnMMBezier.isSelected()){ if(ornlayForMain.getChangeList()!=null){ java.awt.Point p2d = new java.awt.Point(xa/scale,ya/scale); if(tbOrnMMLine.isSelected() | tbOrnMMBezier.isSelected()){ if(ornlayForMain.getLastPointOfShapes().getLastPoint()!=null){ if(isNear(p2d,ornlayForMain.getLastPointOfShapes().getLastPoint())){ ornlayForMain.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); } } }else{//tbShapeBSpline1.isSelected() | tbNextPoint.isSelected() // if(isNear(p2d,lay.getShapesList().getLastShape().getOriginPoint())){ // lay.setFirstPoint(new java.awt.Point(xa/scale,ya/scale)); // } } //on met à jour les coordonnées des éléments qui ont été marqués for (feuille.drawing.ornament.IShape s : ornlayForMain.getList()){ if(s.getMarked()==true){ if(s instanceof OrnPoint){ OrnPoint point = (OrnPoint)s; point.updatePointPosition(p2d); }else if(s instanceof OrnMMLine){ OrnMMLine line = (OrnMMLine)s; line.updatePointPosition(p2d); }else if(s instanceof OrnControlPoint){ OrnControlPoint cp = (OrnControlPoint)s; cp.updatePointPosition(p2d); }else if(s instanceof OrnMMBezier){ OrnMMBezier b = (OrnMMBezier)s; b.updatePointPosition(p2d); }else if(s instanceof BSpline){ // BSpline bs = (BSpline)s; // bs.updatePointPosition(p2d); // bs.updateLastUsedControlPoint(); } } } //on met à jour les coordonnées dans cette méthode afin de voir les traits //vertical et horizontal lorsqu'on bouge la souris sh.updateMousePosition(xa/scale, ya/scale); sh.updateOrnamentForMain(ornlayForMain.getList()); //on met à jour l'affichage des coordonnées int xb = xa/scale-(sh.getWidth()/scale)/2; int yb = ya/scale-(sh.getHeight()/scale)/2; lblCoordinates.setText("<html><h2>"+xb+";"+yb); } } }//GEN-LAST:event_spSheetMouseDragged private void spSheetMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spSheetMouseMoved // QUAND ON DEPLACE LA SOURIS int xa = evt.getXOnScreen()-(int)sh.getLocationOnScreen().getX(); int ya = evt.getYOnScreen()-(int)sh.getLocationOnScreen().getY(); if(tbGrid.isSelected()){ java.awt.Point pa = Sheet.getGridCoordinates(xa, ya); xa = pa.x; ya = pa.y; } if(tbShapeBezier.isSelected() | tbShapeLine.isSelected() | tbFreeDrawing.isSelected() | tbFreeClear.isSelected() | tbShapeBSpline1.isSelected() | tbNextPoint.isSelected() | tbMove.isSelected() | tbTranslation.isSelected() | tbReStart.isSelected() | tbSelection.isSelected() | tbRotation.isSelected() | tbResize.isSelected() | tbShear.isSelected() | tbOrnMMBSpline.isSelected() | tbOrnMMBezier.isSelected() | tbOrnMMLine.isSelected()){ // On récupère les coordonnées sur le composant sheet. //on met à jour les coordonnées dans cette méthode afin de voir les traits //vertical et horizontal lorsqu'on bouge la souris sh.updateMousePosition(xa/scale, ya/scale); //on met à jour le dessin sh.updateDrawing(); //on met à jour l'affichage des coordonnées int xb = xa/scale-(sh.getWidth()/scale)/2; int yb = ya/scale-(sh.getHeight()/scale)/2; lblCoordinates.setText("<html><h2>"+xb+";"+yb); } }//GEN-LAST:event_spSheetMouseMoved private void btnNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewActionPerformed // Réinitialise la zone de dessin en supprimant tout. int count = 0; for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer lay = (Layer)o; lay.getShapesList().removeAllShapes(); lay.setFirstPoint(null); if(count!=0){ dlm.removeElement(o); } count += 1; } } img = null; sh.updateImage(img); sh.updateImageRealPosition(0,0); sh.updateGeneralPath(null); int size = setSizeOfDrawing(); imgDraft = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB); graDraft = (Graphics2D)imgDraft.getGraphics(); graDraft.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); //On laisse la zone transparente donc on n'excute plus le code suivant : //graDraft.setColor(Color.white); //graDraft.fillRect(0, 0, size, size); sh.updateDraft(imgDraft); sh.updateDrawing(); tfAssCommands.setText(""); lstLayer.setSelectedIndex(0); getCurrentLayer().clearRemembers(); dlmRemember.clear(); }//GEN-LAST:event_btnNewActionPerformed private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOpenActionPerformed // Ouvre une image au format *.adf for (FileFilter f : fcZDrawing.getChoosableFileFilters()){ fcZDrawing.removeChoosableFileFilter(f); } fcZDrawing.setAccessory(new DrawingPreview(fcZDrawing)); fcZDrawing.addChoosableFileFilter(new DrawingFilter()); fcZDrawing.addChoosableFileFilter(new SVGFilter()); int z = fcZDrawing.showOpenDialog(this); if (z == JFileChooser.APPROVE_OPTION){ String path = fcZDrawing.getSelectedFile().getAbsolutePath(); if(path.endsWith(".svg")){ openSVGFile(path); }else if(path.endsWith(".adf")){ openDrawingFile2(path); } // String commands = openDrawingFile( // fcZDrawing.getSelectedFile().getAbsolutePath()); // Méthode 1 : // openDrawingFile(fcZDrawing.getSelectedFile().getAbsolutePath()); // String pathJPG = fcZDrawing.getSelectedFile().getAbsolutePath().replace(".adf", ".jpg"); // File fJPG = new File(pathJPG); // if(fJPG.exists()){ // try { // imgDraft = ImageIO.read(fJPG); // graDraft = (Graphics2D)imgDraft.getGraphics(); // graDraft.setRenderingHint(RenderingHints.KEY_ANTIALIASING, // RenderingHints.VALUE_ANTIALIAS_ON); // sh.updateDraft(imgDraft); // sh.updateDrawing(); // } catch (IOException ex) { //// ex.printStackTrace(); // } // } // Méthode 2 : // openDrawingFile2(path); //tfAssCommands.setText(commands); // try { // shapesFromCommands(commands,null); // } catch (Exception ex) { // ex.printStackTrace(); // } } }//GEN-LAST:event_btnOpenActionPerformed private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveActionPerformed // Sauvegarde les formes de la planche à dessin. for (FileFilter f : fcZDrawing.getChoosableFileFilters()){ fcZDrawing.removeChoosableFileFilter(f); } fcZDrawing.setAccessory(null); fcZDrawing.addChoosableFileFilter(new DrawingFilter()); int z = fcZDrawing.showSaveDialog(this); if (z == JFileChooser.APPROVE_OPTION){ String path = fcZDrawing.getSelectedFile().getAbsolutePath(); if(path.endsWith(".adf")==false){path = path + ".adf";} // Méthode 1 : // saveDrawingFile(path); // String pathJPG = path.replace(".adf", ".jpg"); // try { // ImageIO.write(imgDraft, "JPG", new File(pathJPG)); // } catch (FileNotFoundException ex) { //// ex.printStackTrace(); // } catch (IOException ex) { //// ex.printStackTrace(); // } // Méthode 2 : saveDrawingFile2(path); } }//GEN-LAST:event_btnSaveActionPerformed private void btnOpenFontsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOpenFontsActionPerformed OpenGlyphDialog ogd = new OpenGlyphDialog(frame, true); boolean val = ogd.showDialog(); if(val==true){ Font f = ogd.getGlyphFont().deriveFont((float)ogd.getGlyphSize()); Layer lay = getCurrentLayer(); lay.glyphToShape(ogd.getGlyph(), f); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); //on met à jour les commandes de dessin ASS tfAssCommands.setText(updateCommands()); //on met à jour les remember updateRemember(lay); } }//GEN-LAST:event_btnOpenFontsActionPerformed private void btnUnloadImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUnloadImageActionPerformed // Réinitialise la zone de dessin en l'image. img = null; sh.updateImage(img); sh.updateImageRealPosition(0,0); sh.updateDrawing(); }//GEN-LAST:event_btnUnloadImageActionPerformed private void btnImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImageActionPerformed //Ouvre une image d'arrière-plan et change l'état des boutons de déplacement. for (FileFilter f : fcZDrawing.getChoosableFileFilters()){ fcZDrawing.removeChoosableFileFilter(f); } fcZDrawing.setDialogTitle("Ouvrir une image..."); fcZDrawing.setAccessory(new ImagePreview(fcZDrawing)); fcZDrawing.setDialogType(JFileChooser.OPEN_DIALOG); fcZDrawing.setFileFilter(new ImageFilter()); int z = fcZDrawing.showOpenDialog(this); if (z == JFileChooser.APPROVE_OPTION){ img = new ImageIcon(fcZDrawing.getSelectedFile().getAbsolutePath()); lastImage = fcZDrawing.getSelectedFile().getAbsolutePath(); sh.updateImage(img); sh.updateDrawing(); } }//GEN-LAST:event_btnImageActionPerformed private void btnTopImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnTopImageActionPerformed // Déplacement de l'image d'arrière-plan vers le haut. sh.updateImagePosition(0, -imageMoveUnit); sh.updateDrawing(); }//GEN-LAST:event_btnTopImageActionPerformed private void btnLeftImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLeftImageActionPerformed // Déplacement de l'image d'arrière-plan vers la gauche. sh.updateImagePosition(-imageMoveUnit, 0); sh.updateDrawing(); }//GEN-LAST:event_btnLeftImageActionPerformed private void btnCentreImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCentreImageActionPerformed if(img!=null){ int x = sh.getWidth()/2 - img.getIconWidth()/2; int y = sh.getHeight()/2 - img.getIconHeight()/2; sh.updateImageRealPosition(x, y); sh.updateDrawing(); } }//GEN-LAST:event_btnCentreImageActionPerformed private void btnRightImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRightImageActionPerformed // Déplacement de l'image d'arrière-plan vers la droite. sh.updateImagePosition(imageMoveUnit, 0); sh.updateDrawing(); }//GEN-LAST:event_btnRightImageActionPerformed private void btnBottomImageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBottomImageActionPerformed // Déplacement de l'image d'arrière-plan vers le bas. sh.updateImagePosition(0, imageMoveUnit); sh.updateDrawing(); }//GEN-LAST:event_btnBottomImageActionPerformed private void slideImageAlphaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_slideImageAlphaStateChanged //Change la transparence de l'image d'arrière-plan. Float f = slideImageAlpha.getValue()/100f; sh.updateImageTransparency(f); sh.updateDrawing(); lblImageAlpha.setText(slideImageAlpha.getValue()+"%"); }//GEN-LAST:event_slideImageAlphaStateChanged private void slideDrawingAlphaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_slideDrawingAlphaStateChanged float fgp = slideDrawingAlpha.getValue()/100f; sh.updateGeneralPathTransparency(fgp); sh.updateDrawing(); lblDrawingAlpha.setText(slideDrawingAlpha.getValue()+"%"); }//GEN-LAST:event_slideDrawingAlphaStateChanged private void slideScaleStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_slideScaleStateChanged Layer lay = getCurrentLayer(); switch(slideScale.getValue()){ case 1: updateThickness(Thickness.Big); sh.updateThickness(Sheet.Thickness.Big); for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line l = (Line)s; l.updateThickness(Line.Thickness.Big); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updateThickness(Bezier.Thickness.Big); }else if(s instanceof Point){ Point p = (Point)s; p.updateThickness(Point.Thickness.Big); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updateThickness(ControlPoint.Thickness.Big); } } break; case 2: updateThickness(Thickness.Big); sh.updateThickness(Sheet.Thickness.Big); for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line l = (Line)s; l.updateThickness(Line.Thickness.Big); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updateThickness(Bezier.Thickness.Big); }else if(s instanceof Point){ Point p = (Point)s; p.updateThickness(Point.Thickness.Big); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updateThickness(ControlPoint.Thickness.Big); } } break; case 3: updateThickness(Thickness.Large); sh.updateThickness(Sheet.Thickness.Large); for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line l = (Line)s; l.updateThickness(Line.Thickness.Large); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updateThickness(Bezier.Thickness.Large); }else if(s instanceof Point){ Point p = (Point)s; p.updateThickness(Point.Thickness.Large); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updateThickness(ControlPoint.Thickness.Large); } } break; case 4: updateThickness(Thickness.Medium); sh.updateThickness(Sheet.Thickness.Medium); for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line l = (Line)s; l.updateThickness(Line.Thickness.Medium); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updateThickness(Bezier.Thickness.Medium); }else if(s instanceof Point){ Point p = (Point)s; p.updateThickness(Point.Thickness.Medium); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updateThickness(ControlPoint.Thickness.Medium); } } break; case 5: updateThickness(Thickness.Small); sh.updateThickness(Sheet.Thickness.Small); for(IShape s : lay.getShapesList().getShapes()){ if(s instanceof Line){ Line l = (Line)s; l.updateThickness(Line.Thickness.Small); }else if(s instanceof Bezier){ Bezier b = (Bezier)s; b.updateThickness(Bezier.Thickness.Small); }else if(s instanceof Point){ Point p = (Point)s; p.updateThickness(Point.Thickness.Small); }else if(s instanceof ControlPoint){ ControlPoint cp = (ControlPoint)s; cp.updateThickness(ControlPoint.Thickness.Small); } } break; default: break; } scale = slideScale.getValue(); sh.setScaleXY(slideScale.getValue()); lblScale.setText(slideScale.getValue()+""); shhb.setScaleXY(slideScale.getValue()); shvb.setScaleXY(slideScale.getValue()); }//GEN-LAST:event_slideScaleStateChanged private void btnAddLayerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddLayerActionPerformed // Ajouter un calque. Layer lay = new Layer(); dlm.addElement(lay); lstLayer.setSelectedValue(lay, true); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); sh.updateShapesList(layer.getShapesList()); } } } sh.setLayerList(listlay); sh.updateDrawing(); }//GEN-LAST:event_btnAddLayerActionPerformed private void btnDeleteLayerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteLayerActionPerformed // Enlever un calque. Layer lay = (Layer)lstLayer.getSelectedValue(); if(lay.isFirst()==false){ dlm.removeElement(lay); java.util.List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); sh.updateShapesList(layer.getShapesList()); } } } sh.setLayerList(listlay); sh.updateDrawing(); lstLayer.setSelectedIndex(0); } }//GEN-LAST:event_btnDeleteLayerActionPerformed private void lstLayerValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstLayerValueChanged // Met à jour le dessin par l'intermédiaire des couches. for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer layer = (Layer)o; if(lstLayer.getSelectedValue()==layer){ layer.setSelected(true); sh.updateShapesList(layer.getShapesList()); updateRemember(layer); }else{ layer.setSelected(false); } } tfAssCommands.setText(updateCommands()); sh.updateDrawing(); } }//GEN-LAST:event_lstLayerValueChanged private void btnHistoriqueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnHistoriqueActionPerformed // Supprimer une ligne ou une courbe. Layer lay = (Layer)lstLayer.getSelectedValue(); ShapesList sl = lay.getShapesList(); if(sl.getSize()>0){ IShape last = sl.getLastShape(); if(last instanceof Line){ sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime une ligne. sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime un point. try{ Point p = sl.getLastPoint(); //Récupère le dernier Point de la liste. lay.setFirstPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. lay.setLastPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. }catch(Exception e){} sh.updateDrawing(); }else if (last instanceof ControlPoint){ sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime un point de contrôle. sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime un point de contrôle. sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime une ligne. sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime un point. try{ Point p = sl.getLastPoint(); //Récupère le dernier Point de la liste. lay.setFirstPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. lay.setLastPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. }catch(Exception e){} sh.updateDrawing(); }else if (last instanceof BSpline){ sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime une bspline. sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime un point. try{ Point p = sl.getLastPoint(); //Récupère le dernier Point de la liste. lay.setFirstPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. lay.setLastPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. }catch(Exception e){} sh.updateDrawing(); }else{ sl.removeLastShape(); lay.virtualRemoveRemember(); //Supprime le premier point posé. try{ Point p = sl.getLastPoint(); //Récupère le dernier Point de la liste. lay.setFirstPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. lay.setLastPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. }catch(Exception e){ lay.setFirstPoint(null); //Définit la dernière position java.awt.Point. lay.setLastPoint(null); //Définit la dernière position java.awt.Point. } sh.updateDrawing(); } } listRemember.repaint(); tfAssCommands.setText(updateCommands()); }//GEN-LAST:event_btnHistoriqueActionPerformed private void btnRedoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRedoActionPerformed Layer lay = getCurrentLayer(); lay.addVirtualRemember(); listRemember.repaint(); ShapesList sl = lay.getShapesList(); try{ Point p = sl.getLastPoint(); //Récupère le dernier Point de la liste. lay.setFirstPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. lay.setLastPoint(p.getLastPoint()); //Définit la dernière position java.awt.Point. }catch(Exception e){ lay.setFirstPoint(null); //Définit la dernière position java.awt.Point. lay.setLastPoint(null); //Définit la dernière position java.awt.Point. } sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); tfAssCommands.setText(updateCommands()); }//GEN-LAST:event_btnRedoActionPerformed private void popmColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmColorActionPerformed // Choisir les couleurs de transparence. Layer lay = (Layer)lstLayer.getSelectedValue(); Color c = JColorChooser.showDialog(frame, "Choisir une couleur de transparence...", lay.getColor()); lay.setColor(c); sh.updateDrawing(); lstLayer.repaint(); }//GEN-LAST:event_popmColorActionPerformed private void popmNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmNameActionPerformed // Choisir un nom de couche. Layer lay = (Layer)lstLayer.getSelectedValue(); String s = (String)JOptionPane.showInputDialog(frame, "Choisir un nom.", "Nom", JOptionPane.QUESTION_MESSAGE); if(s.isEmpty()==false){ lay.setName(s); lstLayer.repaint(); } }//GEN-LAST:event_popmNameActionPerformed private void popmImageMove1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmImageMove1ActionPerformed imageMoveUnit = 1; }//GEN-LAST:event_popmImageMove1ActionPerformed private void popmImageMove5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmImageMove5ActionPerformed imageMoveUnit = 5; }//GEN-LAST:event_popmImageMove5ActionPerformed private void popmImageMove10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmImageMove10ActionPerformed imageMoveUnit = 10; }//GEN-LAST:event_popmImageMove10ActionPerformed private void popmImageMove50ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmImageMove50ActionPerformed imageMoveUnit = 50; }//GEN-LAST:event_popmImageMove50ActionPerformed private void popmImageMove100ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmImageMove100ActionPerformed imageMoveUnit = 100; }//GEN-LAST:event_popmImageMove100ActionPerformed private void popmCutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmCutActionPerformed // Coupe le texte try{ Clipboard cp = new Clipboard(); cp.CCopy(tfAssCommands.getSelectedText()); String s = tfAssCommands.getText(); int sStart = tfAssCommands.getSelectionStart(); int sEnd = tfAssCommands.getSelectionEnd(); tfAssCommands.setText(s.substring(0, sStart)+s.substring(sEnd)); }catch (Exception exc){/*Nothing*/} }//GEN-LAST:event_popmCutActionPerformed private void popmCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmCopyActionPerformed // Copie le texte try{ Clipboard cp = new Clipboard(); cp.CCopy(tfAssCommands.getSelectedText()); }catch (Exception exc){/*Nothing*/} }//GEN-LAST:event_popmCopyActionPerformed private void popmPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPasteActionPerformed // Colle le texte try{ Clipboard cp = new Clipboard(); String s = tfAssCommands.getText(); int sStart = tfAssCommands.getSelectionStart(); int sEnd = tfAssCommands.getSelectionEnd(); tfAssCommands.setText(s.substring(0, sStart)+cp.CPaste()+s.substring(sEnd)); }catch (Exception exc){/*Nothing*/} }//GEN-LAST:event_popmPasteActionPerformed private void popmDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmDeleteActionPerformed // Supprime le texte String s = tfAssCommands.getText(); int sStart = tfAssCommands.getSelectionStart(); int sEnd = tfAssCommands.getSelectionEnd(); tfAssCommands.setText(s.substring(0, sStart)+s.substring(sEnd)); }//GEN-LAST:event_popmDeleteActionPerformed private void popmUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmUpdateActionPerformed //Essaie de générer un dessin à l'aide des commandes ASS sélectionnées. Layer lay = (Layer)lstLayer.getSelectedValue(); try {shapesFromCommands(tfAssCommands.getSelectedText(),lay,0,0,null,0); } catch (Exception ex) {/*nothing*/} }//GEN-LAST:event_popmUpdateActionPerformed private void popmPenSize2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenSize2ActionPerformed penSizeUnit = 2; }//GEN-LAST:event_popmPenSize2ActionPerformed private void popmPenSize4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenSize4ActionPerformed penSizeUnit = 4; }//GEN-LAST:event_popmPenSize4ActionPerformed private void popmPenSize6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenSize6ActionPerformed penSizeUnit = 6; }//GEN-LAST:event_popmPenSize6ActionPerformed private void popmPenSize8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenSize8ActionPerformed penSizeUnit = 8; }//GEN-LAST:event_popmPenSize8ActionPerformed private void popmPenSize10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenSize10ActionPerformed penSizeUnit = 10; }//GEN-LAST:event_popmPenSize10ActionPerformed private void popmPenColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmPenColorActionPerformed // Choisir la couleur du crayon. Color c = JColorChooser.showDialog(this, "Choisir une couleur pour le crayon...", penColor); penColor = c; }//GEN-LAST:event_popmPenColorActionPerformed private void popmLayerColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmLayerColorActionPerformed // Choisir les couleurs de transparence. Layer lay = (Layer)lstLayer.getSelectedValue(); Color c = JColorChooser.showDialog(this, "Choisir une couleur de transparence...", lay.getColor()); lay.setColor(c); sh.updateDrawing(); lstLayer.repaint(); }//GEN-LAST:event_popmLayerColorActionPerformed private void popmLayerNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmLayerNameActionPerformed // Choisir un nom de couche. Layer lay = (Layer)lstLayer.getSelectedValue(); String s = (String)JOptionPane.showInputDialog(this, "Choisir un nom.", "Nom", JOptionPane.QUESTION_MESSAGE); if(s.isEmpty()==false){ lay.setName(s); lstLayer.repaint(); } }//GEN-LAST:event_popmLayerNameActionPerformed private void popmDuplicateLayerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmDuplicateLayerActionPerformed // Dupliquer la couche if(tbNormalMode.isSelected()){ Layer lay = getCurrentLayer(); List<Remember> lr = lay.getRememberlist(false); // Ajouter un calque. Layer lay2 = new Layer(); lay2.setRememberlist(lr); lay2.setShapesList(lay.getCopiedShapes()); dlm.addElement(lay2); lstLayer.setSelectedValue(lay2, true); List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); sh.updateShapesList(layer.getShapesList()); } } } sh.setLayerList(listlay); sh.updateDrawing(); }else if(tbOrnamentMode.isSelected()){ List<Layer> layers = getLinkedLayers(); for(Layer lay : layers){ List<Remember> lr = lay.getRememberlist(false); // Ajouter un calque. Layer lay2 = new Layer(); lay2.setRememberlist(lr); lay2.setShapesList(lay.getCopiedShapes()); dlm.addElement(lay2); lstLayer.setSelectedValue(lay2, true); List<Layer> listlay = new ArrayList<Layer>(); for(Object o : dlm.toArray()){ if( o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); sh.updateShapesList(layer.getShapesList()); } } } sh.setLayerList(listlay); sh.updateDrawing(); } } }//GEN-LAST:event_popmDuplicateLayerActionPerformed private void popmClearSketchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmClearSketchActionPerformed int size = setSizeOfDrawing(); imgDraft = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB); graDraft = (Graphics2D)imgDraft.getGraphics(); graDraft.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); //On laisse la zone transparente donc on n'excute plus le code suivant : //graDraft.setColor(Color.white); //graDraft.fillRect(0, 0, size, size); sh.updateDraft(imgDraft); sh.updateDrawing(); }//GEN-LAST:event_popmClearSketchActionPerformed private void popmSelectionCopyPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionCopyPasteActionPerformed // CopyPaste shape Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesOneAfter(lay, 2); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionCopyPasteActionPerformed private void popmSelectionSymActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionSymActionPerformed // Coller la forme sélectionnée symétrique Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesWithSym(lay); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); }//GEN-LAST:event_popmSelectionSymActionPerformed private void popmSelectionGeo1AActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo1AActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 2, 180); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo1AActionPerformed private void popmSelectionGeo1BActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo1BActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 2, -180); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo1BActionPerformed private void popmSelectionGeo2AActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo2AActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 3, 120); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo2AActionPerformed private void popmSelectionGeo2BActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo2BActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 3, -120); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo2BActionPerformed private void popmSelectionGeo3AActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo3AActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 4, 90); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo3AActionPerformed private void popmSelectionGeo3BActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeo3BActionPerformed // Réaliser un forme quelconque selon une autre forme Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, 4, -90); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmSelectionGeo3BActionPerformed private void popmSelectionGeoPlusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmSelectionGeoPlusActionPerformed // Réaliser un forme quelconque selon une autre forme SelectGeoDialog sgd = new SelectGeoDialog(frame, true); boolean b = sgd.showDialog(); if(b==true){ Layer lay = getCurrentLayer(); List<IShape> shapes = selection.shapesAroundASide(lay, sgd.getSide(), sgd.getAngle()); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); } }//GEN-LAST:event_popmSelectionGeoPlusActionPerformed private void popmRubberSize2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRubberSize2ActionPerformed rubberSizeUnit = 2; }//GEN-LAST:event_popmRubberSize2ActionPerformed private void popmRubberSize4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRubberSize4ActionPerformed rubberSizeUnit = 4; }//GEN-LAST:event_popmRubberSize4ActionPerformed private void popmRubberSize6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRubberSize6ActionPerformed rubberSizeUnit = 6; }//GEN-LAST:event_popmRubberSize6ActionPerformed private void popmRubberSize8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRubberSize8ActionPerformed rubberSizeUnit = 8; }//GEN-LAST:event_popmRubberSize8ActionPerformed private void popmRubberSize10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRubberSize10ActionPerformed rubberSizeUnit = 10; }//GEN-LAST:event_popmRubberSize10ActionPerformed private void btnApplyScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnApplyScriptActionPerformed // Appliquer des scripts if(listScript.getSelectedIndex()!=-1){ Object o = listScript.getSelectedValue(); if(o instanceof DrawingScript){ DrawingScript scr = (DrawingScript)o; scripting.runScriptAndDo(scr); } } }//GEN-LAST:event_btnApplyScriptActionPerformed private void btnOrnReadyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOrnReadyActionPerformed try { // Préparer le karaoké en le stockant en mémoire Clipboard cp = new Clipboard(); BufferedReader br = new BufferedReader(new StringReader((cp.CPaste()))); karaokeOrnament.clear(); String line; while((line = br.readLine())!=null){ AssLine al = new AssLine(line); karaokeOrnament.add(al); } btnOrnReady.setForeground(Color.green); btnOrnGenerate.setForeground(Color.red); } catch (IOException ex) { btnOrnReady.setForeground(Color.red); btnOrnGenerate.setForeground(Color.red); } }//GEN-LAST:event_btnOrnReadyActionPerformed private void btnOrnGenerateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOrnGenerateActionPerformed // Générer et copier dans le presse-papier if(img != null){ if(rbOrnMainMoveOff.isSelected()){ for (FileFilter f : fcZDrawing.getChoosableFileFilters()){ fcZDrawing.removeChoosableFileFilter(f); } fcZDrawing.setAccessory(new DrawingPreview(fcZDrawing)); fcZDrawing.addChoosableFileFilter(new AssFilter()); int z = fcZDrawing.showSaveDialog(this); if (z == JFileChooser.APPROVE_OPTION){ try{ OrnDo orndo = new OrnDo(); orndo.getLinesForNoMove2(ornlayForMain, karaokeOrnament, dlm.toArray(), sh.getImagePositionX(), sh.getImagePositionY(), fcZDrawing.getSelectedFile().getAbsolutePath(), sh.getImageWidth(), sh.getImageHeight()); }catch(Exception e){ } } btnOrnGenerate.setForeground(Color.green); }else if(rbOrnMainMoveOn.isSelected() && ornlayForMain.getList().isEmpty()==false){ for (FileFilter f : fcZDrawing.getChoosableFileFilters()){ fcZDrawing.removeChoosableFileFilter(f); } fcZDrawing.setAccessory(new DrawingPreview(fcZDrawing)); fcZDrawing.addChoosableFileFilter(new AssFilter()); int z = fcZDrawing.showSaveDialog(this); if (z == JFileChooser.APPROVE_OPTION){ try{ //Récupération des valeurs dans le tableau for(int i=0; i<dtmOrnForMain.getRowCount(); i++){ feuille.drawing.ornament.IShape s = (feuille.drawing.ornament.IShape)dtmOrnForMain.getValueAt(i, 0); String str = (String)dtmOrnForMain.getValueAt(i, 1); s.setDuration(str); } OrnDo orndo = new OrnDo(); orndo.getLinesForMainMoveOnly3( ornlayForMain, karaokeOrnament, spinMMModel.getNumber().intValue(), dlm.toArray(), sh.getImagePositionX(), sh.getImagePositionY(), fcZDrawing.getSelectedFile().getAbsolutePath(), sh.getImageWidth(), sh.getImageHeight()); }catch(Exception e){ } } btnOrnGenerate.setForeground(Color.green); } }else{ JOptionPane.showMessageDialog(this, "Veuillez ouvrir une image", "Impossible de calculer les coordonnées", JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_btnOrnGenerateActionPerformed private void btnOrnMMClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOrnMMClearActionPerformed // Effacer les mouvements généraux (mode Ornement) ornlayForMain.clearShapes(); sh.updateOrnamentForMain(ornlayForMain.getList()); try{ for (int i=dtmOrnForMain.getRowCount()-1;i>=0;i--){ dtmOrnForMain.removeRow(i); } }catch(Exception exc){} }//GEN-LAST:event_btnOrnMMClearActionPerformed private void rbOrnMainMoveOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbOrnMainMoveOffActionPerformed // On a appuyé sur Non pour les mouvements généraux >> Pas d'accès aux contrôles // tbOrnMMBSpline.setEnabled(false); tbOrnMMBezier.setEnabled(false); tbOrnMMLine.setEnabled(false); btnOrnMMClear.setEnabled(false); lblOrnMMFreq.setEnabled(false); spiOrnMMFreq.setEnabled(false); }//GEN-LAST:event_rbOrnMainMoveOffActionPerformed private void rbOrnMainMoveOnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbOrnMainMoveOnActionPerformed // On a appuyé sur Oui pour les mouvements généraux >> Accès aux contrôles // tbOrnMMBSpline.setEnabled(true); tbOrnMMBezier.setEnabled(true); tbOrnMMLine.setEnabled(true); btnOrnMMClear.setEnabled(true); lblOrnMMFreq.setEnabled(true); spiOrnMMFreq.setEnabled(true); }//GEN-LAST:event_rbOrnMainMoveOnActionPerformed private void btnCloseBSplineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCloseBSplineActionPerformed //On ferme la BSpline en cours. Layer lay = getCurrentLayer(); IShape shape = lay.getShapesList().getLastShape(); if(shape instanceof BSpline){ BSpline bs = (BSpline)shape; if(bs.isNextExist()==false){ bs.setClosed(true); //montre la zone sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); tfAssCommands.setText(updateCommands()); } } }//GEN-LAST:event_btnCloseBSplineActionPerformed private void popmAddPointsBLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmAddPointsBLActionPerformed // Ajouter un point entre deux lignes if(selection.getPointToAdd()!=null){ Layer lay = getCurrentLayer(); List<IShape> shapes = selection.addOnePointBetweenLines( lay, new Point(selection.getPointToAdd().x, selection.getPointToAdd().y)); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); selection.setPointToAdd(null); } }//GEN-LAST:event_popmAddPointsBLActionPerformed private void popmAddPointsBCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmAddPointsBCActionPerformed // Ajouter un point entre deux courbes if(selection.getPointToAdd()!=null){ Layer lay = getCurrentLayer(); List<IShape> shapes = selection.addOnePointBetweenCurves( lay, new Point(selection.getPointToAdd().x, selection.getPointToAdd().y)); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); selection.setPointToAdd(null); } }//GEN-LAST:event_popmAddPointsBCActionPerformed private void popmAddPointsBLCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmAddPointsBLCActionPerformed // Ajouter un point entre une ligne et une courbe if(selection.getPointToAdd()!=null){ Layer lay = getCurrentLayer(); List<IShape> shapes = selection.addOnePointBetweenLineCurve( lay, new Point(selection.getPointToAdd().x, selection.getPointToAdd().y)); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); selection.setPointToAdd(null); } }//GEN-LAST:event_popmAddPointsBLCActionPerformed private void popmAddPointsBCLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmAddPointsBCLActionPerformed // Ajouter un point entre une courbe et une ligne if(selection.getPointToAdd()!=null){ Layer lay = getCurrentLayer(); List<IShape> shapes = selection.addOnePointBetweenCurveLine( lay, new Point(selection.getPointToAdd().x, selection.getPointToAdd().y)); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); selection.setPointToAdd(null); } }//GEN-LAST:event_popmAddPointsBCLActionPerformed private void popmRemovePointsLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRemovePointsLineActionPerformed // Efface un point entre les points Layer lay = getCurrentLayer(); List<IShape> shapes = selection.removeOnePointBetweenPointsL(lay); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmRemovePointsLineActionPerformed private void popmRemovePointsCurveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmRemovePointsCurveActionPerformed // Efface un point entre les points Layer lay = getCurrentLayer(); List<IShape> shapes = selection.removeOnePointBetweenPointsC(lay); sh.updateSelection(selection, true); lay.getShapesList().removeAllShapes(); lay.clearRemembers(); for(IShape s : shapes){ lay.getShapesList().addShape(s); lay.addRemember(s); } updateRemember(lay); sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); }//GEN-LAST:event_popmRemovePointsCurveActionPerformed private void popmBoolOpUnionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmBoolOpUnionActionPerformed int[] indices = lstLayer.getSelectedIndices(); if(indices.length >= 2){ //On fait autant d'opérations booléennes que demandées java.awt.Shape one = ((Layer)dlm.toArray()[indices[0]]).getGeneralPath(); for(int i=1; i<indices.length; i++){ java.awt.Shape two = ((Layer)dlm.toArray()[indices[i]]).getGeneralPath(); one = BooleanOp.getUnion(one, two); } //On crée un nouveau calque contenant notre résultat booléen. Layer lay = new Layer(); lay.fromShape(one); //On efface tous les calques qui ont servi. for(int i=indices[indices.length-1]; i >=0; i--){ dlm.remove(indices[i]); } //On ajoute notre calque résultant dlm.addElement(lay); //On sélectionne le calque (pour éviter que getCurrentLayer() soit null) //en cas où tous les calques ont été consommés. lstLayer.setSelectedIndex(0); //On met à jour la liste des calques dans le composant de dessin List<Layer> listlay = new ArrayList<>(); for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); } } } sh.setLayerList(listlay); //On met à jour le contrôle de dessin et on effectue des opérations de routine sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); } }//GEN-LAST:event_popmBoolOpUnionActionPerformed private void popmBoolOpSubstractActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmBoolOpSubstractActionPerformed int[] indices = lstLayer.getSelectedIndices(); if(indices.length >= 2){ //On fait autant d'opérations booléennes que demandées java.awt.Shape one = ((Layer)dlm.toArray()[indices[0]]).getGeneralPath(); for(int i=1; i<indices.length; i++){ java.awt.Shape two = ((Layer)dlm.toArray()[indices[i]]).getGeneralPath(); one = BooleanOp.getSubstract(one, two); } //On crée un nouveau calque contenant notre résultat booléen. Layer lay = new Layer(); lay.fromShape(one); //On efface tous les calques qui ont servi. for(int i=indices[indices.length-1]; i >=0; i--){ dlm.remove(indices[i]); } //On ajoute notre calque résultant dlm.addElement(lay); //On sélectionne le calque (pour éviter que getCurrentLayer() soit null) //en cas où tous les calques ont été consommés. lstLayer.setSelectedIndex(0); //On met à jour la liste des calques dans le composant de dessin List<Layer> listlay = new ArrayList<>(); for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); } } } sh.setLayerList(listlay); //On met à jour le contrôle de dessin et on effectue des opérations de routine sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); } }//GEN-LAST:event_popmBoolOpSubstractActionPerformed private void popmBoolOpIntersectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmBoolOpIntersectActionPerformed int[] indices = lstLayer.getSelectedIndices(); if(indices.length >= 2){ //On fait autant d'opérations booléennes que demandées java.awt.Shape one = ((Layer)dlm.toArray()[indices[0]]).getGeneralPath(); for(int i=1; i<indices.length; i++){ java.awt.Shape two = ((Layer)dlm.toArray()[indices[i]]).getGeneralPath(); one = BooleanOp.getIntersect(one, two); } //On crée un nouveau calque contenant notre résultat booléen. Layer lay = new Layer(); lay.fromShape(one); //On efface tous les calques qui ont servi. for(int i=indices[indices.length-1]; i >=0; i--){ dlm.remove(indices[i]); } //On ajoute notre calque résultant dlm.addElement(lay); //On sélectionne le calque (pour éviter que getCurrentLayer() soit null) //en cas où tous les calques ont été consommés. lstLayer.setSelectedIndex(0); //On met à jour la liste des calques dans le composant de dessin List<Layer> listlay = new ArrayList<>(); for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); } } } sh.setLayerList(listlay); //On met à jour le contrôle de dessin et on effectue des opérations de routine sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); } }//GEN-LAST:event_popmBoolOpIntersectActionPerformed private void popmBoolOpExcluORActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_popmBoolOpExcluORActionPerformed int[] indices = lstLayer.getSelectedIndices(); if(indices.length >= 2){ //On fait autant d'opérations booléennes que demandées java.awt.Shape one = ((Layer)dlm.toArray()[indices[0]]).getGeneralPath(); for(int i=1; i<indices.length; i++){ java.awt.Shape two = ((Layer)dlm.toArray()[indices[i]]).getGeneralPath(); one = BooleanOp.getXOR(one, two); } //On crée un nouveau calque contenant notre résultat booléen. Layer lay = new Layer(); lay.fromShape(one); //On efface tous les calques qui ont servi. for(int i=indices[indices.length-1]; i >=0; i--){ dlm.remove(indices[i]); } //On ajoute notre calque résultant dlm.addElement(lay); //On sélectionne le calque (pour éviter que getCurrentLayer() soit null) //en cas où tous les calques ont été consommés. lstLayer.setSelectedIndex(0); //On met à jour la liste des calques dans le composant de dessin List<Layer> listlay = new ArrayList<>(); for(Object o : dlm.toArray()){ if(o instanceof Layer){ Layer layer = (Layer)o; if(listlay.contains(layer)==false){ listlay.add(layer); } } } sh.setLayerList(listlay); //On met à jour le contrôle de dessin et on effectue des opérations de routine sh.updateGeneralPath(lay.getGeneralPath()); sh.updateShapesList(lay.getShapesList()); lay.updateEndPoint(); tfAssCommands.setText(updateCommands()); shapesFromCommands(tfAssCommands.getText(), lay, 0, 0, null, 0); } }//GEN-LAST:event_popmBoolOpExcluORActionPerformed private void tbGridActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbGridActionPerformed if(tbGrid.isSelected()){ sh.updateGrid(true); }else{ sh.updateGrid(false); } }//GEN-LAST:event_tbGridActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup bgDraw; private javax.swing.ButtonGroup bgImageMove; private javax.swing.ButtonGroup bgMode; private javax.swing.ButtonGroup bgOrnMainMove; private javax.swing.ButtonGroup bgOrnShapeMove; private javax.swing.ButtonGroup bgPenSize; private javax.swing.ButtonGroup bgRubberSize; private javax.swing.JButton btnAddLayer; private javax.swing.JButton btnApplyScript; private javax.swing.JButton btnBottomImage; private javax.swing.JButton btnCentreImage; private javax.swing.JButton btnCloseBSpline; private javax.swing.JButton btnDeleteLayer; private javax.swing.JButton btnHistorique; private javax.swing.JButton btnImage; private javax.swing.JButton btnLeftImage; private javax.swing.JButton btnNew; private javax.swing.JButton btnOpen; private javax.swing.JButton btnOpenFonts; private javax.swing.JButton btnOrnGenerate; private javax.swing.JButton btnOrnMMClear; private javax.swing.JButton btnOrnReady; private javax.swing.JButton btnRedo; private javax.swing.JButton btnRightImage; private javax.swing.JButton btnSave; private javax.swing.JButton btnTopImage; private javax.swing.JButton btnUnloadImage; private javax.swing.JFileChooser fcZDrawing; private javax.swing.JInternalFrame ifrAssCommands; private javax.swing.JInternalFrame ifrDrawing; private javax.swing.JInternalFrame ifrHistoric; private javax.swing.JInternalFrame ifrImage; private javax.swing.JInternalFrame ifrLayers; private javax.swing.JInternalFrame ifrMainDraw; private javax.swing.JInternalFrame ifrMode; private javax.swing.JInternalFrame ifrOpenSave; private javax.swing.JInternalFrame ifrOperations; private javax.swing.JInternalFrame ifrOrnament; private javax.swing.JInternalFrame ifrScript; private javax.swing.JInternalFrame ifrShape; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JPopupMenu.Separator jSeparator4; private javax.swing.JPopupMenu.Separator jSeparator5; private javax.swing.JPopupMenu.Separator jSeparator6; private javax.swing.JPopupMenu.Separator jSeparator7; private javax.swing.JPopupMenu.Separator jSeparator8; private javax.swing.JLabel lblAssCommands; private javax.swing.JLabel lblCoordinates; private javax.swing.JLabel lblDrawingAlpha; private javax.swing.JLabel lblImageAlpha; private javax.swing.JLabel lblMainMove; private javax.swing.JLabel lblOrnMMFreq; private javax.swing.JLabel lblScale; private javax.swing.JList listRemember; private javax.swing.JList listScript; private static javax.swing.JList lstLayer; private javax.swing.JTable ornMMTable; private javax.swing.JPopupMenu popAssCom; private javax.swing.JPopupMenu popDrawing; private javax.swing.JPopupMenu popImageMove; private javax.swing.JPopupMenu popLayer; private javax.swing.JPopupMenu popPenSize; private javax.swing.JPopupMenu popRubberSize; private javax.swing.JMenuItem popmAddPointsBC; private javax.swing.JMenuItem popmAddPointsBCL; private javax.swing.JMenuItem popmAddPointsBL; private javax.swing.JMenuItem popmAddPointsBLC; private javax.swing.JMenuItem popmBoolOpExcluOR; private javax.swing.JMenuItem popmBoolOpIntersect; private javax.swing.JMenuItem popmBoolOpSubstract; private javax.swing.JMenuItem popmBoolOpUnion; private javax.swing.JMenuItem popmClearSketch; private javax.swing.JMenuItem popmColor; private javax.swing.JMenuItem popmCopy; private javax.swing.JMenuItem popmCut; private javax.swing.JMenuItem popmDelete; private javax.swing.JMenuItem popmDuplicateLayer; private javax.swing.JRadioButtonMenuItem popmImageMove1; private javax.swing.JRadioButtonMenuItem popmImageMove10; private javax.swing.JRadioButtonMenuItem popmImageMove100; private javax.swing.JRadioButtonMenuItem popmImageMove5; private javax.swing.JRadioButtonMenuItem popmImageMove50; private javax.swing.JMenuItem popmLayerColor; private javax.swing.JMenuItem popmLayerName; private javax.swing.JMenuItem popmName; private javax.swing.JMenuItem popmPaste; private javax.swing.JMenuItem popmPenColor; private javax.swing.JRadioButtonMenuItem popmPenSize10; private javax.swing.JRadioButtonMenuItem popmPenSize2; private javax.swing.JRadioButtonMenuItem popmPenSize4; private javax.swing.JRadioButtonMenuItem popmPenSize6; private javax.swing.JRadioButtonMenuItem popmPenSize8; private javax.swing.JMenuItem popmRemovePointsCurve; private javax.swing.JMenuItem popmRemovePointsLine; private javax.swing.JRadioButtonMenuItem popmRubberSize10; private javax.swing.JRadioButtonMenuItem popmRubberSize2; private javax.swing.JRadioButtonMenuItem popmRubberSize4; private javax.swing.JRadioButtonMenuItem popmRubberSize6; private javax.swing.JRadioButtonMenuItem popmRubberSize8; private javax.swing.JMenuItem popmSelectionCopyPaste; private javax.swing.JMenuItem popmSelectionGeo1A; private javax.swing.JMenuItem popmSelectionGeo1B; private javax.swing.JMenuItem popmSelectionGeo2A; private javax.swing.JMenuItem popmSelectionGeo2B; private javax.swing.JMenuItem popmSelectionGeo3A; private javax.swing.JMenuItem popmSelectionGeo3B; private javax.swing.JMenuItem popmSelectionGeoPlus; private javax.swing.JMenuItem popmSelectionSym; private javax.swing.JMenuItem popmUpdate; private javax.swing.JRadioButton rbOrnMainMoveOff; private javax.swing.JRadioButton rbOrnMainMoveOn; private javax.swing.JSlider slideDrawingAlpha; private javax.swing.JSlider slideImageAlpha; private javax.swing.JSlider slideScale; private javax.swing.JScrollPane spSheet; private javax.swing.JSpinner spiOrnMMFreq; private javax.swing.JToggleButton tbFreeClear; private javax.swing.JToggleButton tbFreeDrawing; private javax.swing.JToggleButton tbGrid; private javax.swing.JToggleButton tbMove; private javax.swing.JToggleButton tbNextPoint; private javax.swing.JToggleButton tbNormalMode; private javax.swing.JToggleButton tbOrnMMBSpline; private javax.swing.JToggleButton tbOrnMMBezier; private javax.swing.JToggleButton tbOrnMMLine; private javax.swing.JToggleButton tbOrnamentMode; private javax.swing.JToggleButton tbReStart; private javax.swing.JToggleButton tbResize; private javax.swing.JToggleButton tbRotation; private javax.swing.JToggleButton tbSelection; private javax.swing.JToggleButton tbShapeBSpline1; private javax.swing.JToggleButton tbShapeBezier; private javax.swing.JToggleButton tbShapeLine; private javax.swing.JToggleButton tbShear; private javax.swing.JToggleButton tbTranslation; private static javax.swing.JTextField tfAssCommands; // End of variables declaration//GEN-END:variables }