simba91  |    Bonjour,
   Voici ce que j'ai fait pour le moment mais ce n'est point finit. Cependant j'ai une erreur avec mes State :
 "Cannot instantiate the type Thread..State"
  
  Code :
 - import javax.swing.JFrame ;
 - import javax.swing.BoxLayout;
 - import javax.swing.JPanel ;
 - import javax.swing.JColorChooser ;
 - import javax.swing.Box ;
 - import javax.swing.BorderFactory ;
 - import fr.lri.swingstates.canvas.CExtensionalTag;
 - import fr.lri.swingstates.canvas.CStateMachine;
 - import fr.lri.swingstates.canvas.CStateMachine.ReleaseOnTag;
 - import fr.lri.swingstates.sm.Transition;
 - import fr.lri.swingstates.sm.transitions.Drag;
 - import fr.lri.swingstates.sm.transitions.Press;
 - import java.awt.Container ;
 - import java.awt.Graphics;
 - import java.awt.Graphics2D;
 - import java.awt.Point ;
 - import java.awt.Color ;
 - import java.awt.Dimension ;
 - import java.awt.event.ActionEvent ;
 - import java.awt.event.ActionListener ;
 - import java.awt.event.MouseAdapter ;
 - import java.awt.event.MouseMotionAdapter ;
 - import java.awt.event.MouseEvent ;
 - import java.awt.geom.GeneralPath;
 - import java.lang.Thread.State;
 - import java.util.ArrayList ;
 - public class GraphicalEditor extends JFrame {
 - 	private PersistentCanvas canvas ;
 -     private String mode ;
 -     private CanvasItem selection ;
 -     private Point mousepos ;
 -     public static double x;
 - 	public static double y;
 - 	  CStateMachine sm = new CStateMachine(){
 - 	   
 - 	   
 - 	     public State start = new State(){
 - 	     	Transition t1 = new Press(BUTTON1,"=>drag" ){
 - 	       public void action(Graphics graphics){
 - 	       	Graphics2D g = (Graphics2D)graphics ;
 - 	       	int arraySize = 3;
 - 	              int[] xPoints = new int[arraySize];
 - 	              int[] yPoints = new int[arraySize];
 - 	                xPoints[0] = (int) GraphicalEditor.x - 12;
 - 	                yPoints[0] = (int) GraphicalEditor.y;
 - 	                xPoints[1] = (int) GraphicalEditor.x - 12;
 - 	                yPoints[1] = (int) GraphicalEditor.y + 50;
 - 	                xPoints[2] = (int) GraphicalEditor.x - 62;
 - 	                yPoints[2] = (int) GraphicalEditor.y + 50;
 - 	            
 - 	              g.drawPolyline(xPoints, yPoints, xPoints.length);
 - 	            
 - 	              xPoints[0] = (int) GraphicalEditor.x + 12;
 - 	              yPoints[0] = (int) GraphicalEditor.y; 
 - 	              xPoints[1] = (int) GraphicalEditor.x + 12; 
 - 	              yPoints[1] = (int) GraphicalEditor.y + 50; 
 - 	              xPoints[2] = (int) GraphicalEditor.x + 62; 
 - 	              yPoints[2] = (int) GraphicalEditor.y + 50; 
 - 	          
 - 	            g.drawPolyline(xPoints, yPoints, xPoints.length);
 - 	          
 - 	            xPoints[0] = (int) GraphicalEditor.x - 62; 
 - 	            yPoints[0] = (int) GraphicalEditor.y + 75;
 - 	            xPoints[1] = (int) GraphicalEditor.x + 62;
 - 	            yPoints[1] = (int) GraphicalEditor.y + 75;
 - 	        
 - 	            g.drawPolyline(xPoints, yPoints, 2);
 - 	       }
 - 	     	};
 - 	     };
 - 	     public State drag = new State(){
 - 	     	Transition t2 = new Drag(){
 - 	       public void action2(){
 - 	   
 - 	       }
 - 	     	};
 - 	     	Transition t3 = new ReleaseOnTag(">>strat", BUTTON1){
 - 	       public void action3(){
 - 	   
 - 	       }
 - 	     	};
 - 	   
 - 	     };
 - 	    };
 - 	   
 -     private ActionListener modeListener = new ActionListener() {
 -     public void actionPerformed(ActionEvent e) {
 -     mode = e.getActionCommand() ;
 -     }
 - 	   } ;
 -     private ActionListener operationListener = new ActionListener() {
 -     public void actionPerformed(ActionEvent e) {
 -     if (selection==null) return ;
 -     String op = e.getActionCommand() ;
 -     }
 - 	   } ;
 -     public GraphicalEditor(String theTitle, int width, int height) {
 -    
 - 	   selection = null ;
 - 	   Container pane = getContentPane() ;
 - 	   pane.setLayout(new BoxLayout(pane, BoxLayout.LINE_AXIS)) ;
 - 	   JPanel panel = new JPanel() ;
 - 	   panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)) ;
 -        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)) ;
 - 	   mode = "Rectangle" ;
 - 	   pane.add(panel) ;
 - 	   canvas = new PersistentCanvas() ;
 - 	   canvas.setBackground(Color.WHITE) ;
 - 	   canvas.setPreferredSize(new Dimension(width,height)) ;
 - 	   pane.add(canvas) ;
 - 	   canvas.addMouseListener(new MouseAdapter() {
 -     public void mousePressed(MouseEvent e) {
 -     Point p = e.getPoint() ;
 -     x = e.getX();
 -     y=e.getY();
 -     CanvasItem item = null ;
 -     Color o = Color.BLUE ;
 -     Color f = Color.YELLOW ;
 -     item = new RectangleItem(canvas,o,f,p) ;
 -     canvas.addItem(item) ;
 -     select(item) ;
 -     mousepos = p ;
 -     }
 -     }) ;
 -    
 - 	   canvas.addMouseMotionListener(new MouseMotionAdapter() {
 -     public void mouseDragged(MouseEvent e) {
 -         selection.update(e.getPoint()) ;
 -     mousepos = e.getPoint() ;
 -     }
 -     }) ;
 - 	 
 - 	 
 - 	 
 - 	 
 - 	   pack() ;
 - 	 
 - 	   setVisible(true) ;
 -     }
 -  
 -     private void select(CanvasItem item) {
 - 	 
 - 	   selection = item ;
 - 	   if (selection!=null) {
 -     selection.select() ;
 - 	   }
 -     }
 -    
 -    
 -    
 -     public static void main(String[] args) {
 - 	   GraphicalEditor editor = new GraphicalEditor("GraphicalEditor",800,600) ;
 - 	   editor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
 -     }
 - }
 
  |  
 
   C'est la première fois que j'utilise une machine à état si quelqu'un pouvait m'aider...
 Je possède également une deuxième classe si ca peut aider à comprendre ...
  
  Code :
 - import java.awt.Component ;
 - import java.awt.Graphics2D ;
 - import java.awt.Graphics ;
 - import java.awt.Point ;
 - import java.awt.RenderingHints ;
 - import java.util.ArrayList ;
 - import fr.lri.swingstates.canvas.CExtensionalTag;
 - import fr.lri.swingstates.canvas.CPolyLine;
 - import fr.lri.swingstates.canvas.CStateMachine;
 - import fr.lri.swingstates.canvas.Canvas;
 - import fr.lri.swingstates.sm.State;
 - import fr.lri.swingstates.sm.Transition;
 - import fr.lri.swingstates.sm.transitions.Drag;
 - import fr.lri.swingstates.sm.transitions.Press;
 - import fr.lri.swingstates.sm.transitions.Release;
 - class PersistentCanvas extends Component {
 -     private ArrayList<CanvasItem> items ;
 -      
 -     PersistentCanvas() {
 - 	   items = new ArrayList<CanvasItem>() ;
 -     }
 -     public CanvasItem addItem(CanvasItem item) {
 - 	   if (item==null) return null ;
 - 	   items.add(item) ;
 - 	   repaint() ;
 - 	   return item ;
 -     }
 -     public void paint(Graphics graphics) {
 - 	   Graphics2D g = (Graphics2D)graphics ;
 - 	   g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) ;
 - 	   g.setColor(getBackground()) ;
 - 	   g.fillRect(0, 0, getWidth(), getHeight()) ;
 - 	   for (CanvasItem item : items) item.paint(g) ;
 - 	 
 -     } 
 -    
 - }
 
  |  
 
   Merci d'avance     |