Results 1 to 9 of 9
  1. #1
    mmanu87 is offline Member
    Join Date
    Jul 2011
    Posts
    9
    Rep Power
    0

    Default HELP PLEASE!!! Graph Alignment!!

    Hi!!! I'm a new user in this forum and excuse me for my english..I'm just moving the first step with java and I have to realize a project with "JUNG2" but there is something that I can't explain. I have to do a graph that use many imeges on its vertex. Everything is ok in the code and it run perfectly. I just wanna set the alignment "center" of my graph and put all my buttons to the bottom of my frame.. I've tried many times but it doesn't work.. I'll post you my code so you can understand better!!
    MAIN CLASS:

    mainclass.txtgraphview.txt

    the program create a graph with my CircleLayout but everytime is on the top and on the left of my frame.. I want to put it into the center of my display!!!!! But if i use the same code like for my frame setting:

    //SET ALIGNMENT "CENTER" TO THE FRAME
    frame.setLocation(new Point((dimension.width - frame.getSize().width) / 2,
    (dimension.height - frame.getSize().height) / 2 ));

    IT DOESN'T WORK!!! why??
    I hope you understand my problem and i hope you can help me!!!!

    Thanks!!!

  2. #2
    Norm's Avatar
    Norm is offline Moderator
    Join Date
    Jun 2008
    Location
    Eastern Florida
    Posts
    17,874
    Rep Power
    25

    Default

    Please post your code in the forum.
    Be sure to wrap it in code tags. Use the # icon above the input box.

  3. #3
    mmanu87 is offline Member
    Join Date
    Jul 2011
    Posts
    9
    Rep Power
    0

    Default code

    MAIN CLASS:
    Java Code:
     
    import javax.swing.*;
    import edu.uci.ics.jung.visualization.VisualizationViewer;
    import edu.uci.ics.jung.visualization.control.*;
    import edu.uci.ics.jung.visualization.decorators.*;
    import edu.uci.ics.jung.algorithms.layout.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import org.apache.commons.collections15.*;
    
    public class Main 
    {
      public static void main(String[] args) throws IOException
      {  
    	System.out.println("JUNG 2 - CREAZIONE DI GRAFI E INTERAZIONE CON ESSI -");
    	System.out.println("QUANTI VERTICI VUOI (MIN->2 MAX ->9)? ");
    	
    	BufferedReader reader = new BufferedReader ( new InputStreamReader(System.in));
        String input = reader.readLine();
        int number = Integer.parseInt(input); 
        
        GraphView gv = new GraphView(number);
    	Layout<Integer, String> layout = new CircleLayout<Integer, String>(gv.g);
    	layout.setSize(new Dimension(400,400));
    	Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    
    	VisualizationViewer<Integer,String> vv = new VisualizationViewer<Integer,String>(layout);
      vv.setPreferredSize(new Dimension(800, 600));
    	
    	float dashline[] = {5.0f};  										   //IMPOSTA LA LUNGHEZZA DEI TRATTINI NERI DELLA LINEA TRATTEGGIATA
    	final Stroke edgeStroke = new BasicStroke(3.0f, BasicStroke.CAP_BUTT,  //SPESSORE LINEA, FORMA DEL TRATTEGGIO (CIRCOLARE,
    	      BasicStroke.JOIN_ROUND, 10.0f, dashline, 0.0f);         		   //QUADRATINI, RETTANGOLI), , , "DASH"=TRATTEGGIATA o "NULL",
    	//TRANSFORMER FOR THE EDGESTROKE
    	Transformer<String, Stroke> edgeStrokeTransformer = new Transformer<String, Stroke>() 
    		{
    			public Stroke transform(String s) {
    	         return edgeStroke;
    	    }
      };
    	// FRAME SETTINGS
    	JFrame frame = new JFrame("Jung2 - Example of Basical Function");
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(Window.WIDTH,Window.HEIGHT);
    	frame.add(vv);
    	frame.pack();
    	frame.setVisible(true);
    	frame.setBackground(Color.ORANGE);
    	frame.setTitle("Jung2 - Example of Basical Function - Manuel Simoni - MATRICOLA: 191327");
    	frame.setLayout(null);
    	
    	
    	//SET ALIGNMENT "CENTER" TO THE FRAME
    	 frame.setLocation(new Point((dimension.width - frame.getSize().width) / 2, 
    			  (dimension.height - frame.getSize().height) / 2 )); 
    
    	// VERTEX ICON AND EDGES SETTINGS
    	 final DefaultVertexIconTransformer<Integer> vertexIconFunction = new DefaultVertexIconTransformer<Integer>();
         GraphView.vertexImageShapeFunction.setIconMap(GraphView.iconMap);
         vertexIconFunction.setIconMap(GraphView.iconMap);
         vv.getRenderContext().setVertexShapeTransformer(GraphView.vertexImageShapeFunction);
         vv.getRenderContext().setVertexIconTransformer(vertexIconFunction);
         vv.getRenderContext().setVertexLabelTransformer(GraphView.vertexStringerImpl);
     	 vv.getRenderContext().setEdgeStrokeTransformer(edgeStrokeTransformer);
    	 
    	//MENU SETTINGS
     	JMenuBar menubar = new JMenuBar();
        JMenu rotmenu = new JMenu("Rotation");		    
        JMenu shearmenu = new JMenu("Shearing");
        JMenu pickmenu = new JMenu("Picking");
        JMenuItem first = new JMenuItem("Rotation - PRESS 'SHIFT KEY'");
        JMenuItem second = new JMenuItem("Shearing - PRESS 'CMD KEY'");
        JMenuItem third = new JMenuItem("Picking - SELECT ONE or MANY VERTEX");
        rotmenu.add(first);
        shearmenu.add(second);
        pickmenu.add(third);
    
    	// SET PLUGGABLE MOUSE
    	final PluggableGraphMouse gm = new PluggableGraphMouse();
        vv.setGraphMouse(gm);
        final ShearingGraphMousePlugin ShearPlugin = new ShearingGraphMousePlugin();
        final PickingGraphMousePlugin<Integer,String> PickPlugin = new PickingGraphMousePlugin<Integer,String>();
        final RotatingGraphMousePlugin RotPlugin = new RotatingGraphMousePlugin();
     
        first.addActionListener(new ActionListener() 
        		{ public void actionPerformed(ActionEvent e) 
        			{
        			 gm.remove(PickPlugin);
        			 gm.remove(ShearPlugin);
        			 gm.add(RotPlugin); 
        			 }
        	});
        
        second.addActionListener(new ActionListener() 
        		{ public void actionPerformed(ActionEvent e) 
        			{    
        			 gm.remove(PickPlugin);
        			 gm.remove(RotPlugin);
        			 gm.add(ShearPlugin);
        			}
        	});
        
        third.addActionListener(new ActionListener() 
        		{ public void actionPerformed(ActionEvent e) 
        			{	
        			 gm.remove(RotPlugin);
        			 gm.remove(ShearPlugin);
        			 gm.add(PickPlugin);
        			}
        	});
        menubar.add(rotmenu);
        menubar.add(shearmenu);
        menubar.add(pickmenu);
        frame.setJMenuBar(menubar);
     
        JPanel panel = new JPanel();
    	//BUTTON TRANSFORMATION SETTING     
        JButton r = new JButton("Rotation(Shift Key)");
        JButton p = new JButton("Picking (just select one or more vertex)");
        JButton s = new JButton("Shearing (CMD key)"); 
        r.addActionListener(new ActionListener() 
    		{ public void actionPerformed(ActionEvent e) 
    			{
    			gm.remove(PickPlugin);
    			gm.remove(ShearPlugin);
    			gm.add(RotPlugin); 
    			}
    		});
        
        s.addActionListener(new ActionListener() 
    		{ public void actionPerformed(ActionEvent e) 
    			{    
    			 gm.remove(PickPlugin);
    			 gm.remove(RotPlugin);
    			 gm.add(ShearPlugin);
    			}
    		});
    
        p.addActionListener(new ActionListener() 
    		{ public void actionPerformed(ActionEvent e) 
    			{	
    				gm.remove(RotPlugin);
    				gm.remove(ShearPlugin);
    				gm.add(PickPlugin);
    			}
    		});
       
        JButton popbut = new JButton("CREATE POPUP MENU");
        popbut.addActionListener(new ActionListener() 
        		{ public void actionPerformed(ActionEvent e) 
        			{
        			Popup pop = new Popup();
    		        pop.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				pop.setVisible(true);
    				pop.setBackground(Color.BLUE);
    				pop.setTitle("POPUP MENU");
    				pop.setSize(80,80);
    				 
        			 }
        	});
        
        panel.add(r, BorderLayout.CENTER);
        panel.add(s, BorderLayout.CENTER);
        panel.add(p, BorderLayout.CENTER);
        panel.add(popbut, BorderLayout.CENTER);
        vv.add(panel, BorderLayout.CENTER);     
      } 
    }
    GRAPHVIEW CLASS:
    Java Code:
    import java.util.HashMap;
    import java.util.Map;
    import javax.swing.*;
    import edu.uci.ics.jung.graph.*;
    import edu.uci.ics.jung.visualization.decorators.*;
    import org.apache.commons.collections15.*;
    
    
    public class GraphView 
    {		public static VertexStringerImpl<Integer> vertexStringerImpl ;
    		public static VertexIconShapeTransformer<Integer> vertexImageShapeFunction;
    		public static Map<Integer,Icon> iconMap;
    		public Graph<Integer,String> g;
    		public static int edgeCount = 0;
    		public int vertexcount = 0;
    		private String[] edgeName = {"A","B","C","D","E","F","G","H","I","L","M","N","O","P","Q","R","S","T","U","V","Z"};
    		public String[] iconNames = { "zero","uno","due","tre",	"quattro","cinque","sei","sette","otto","nove","dieci","undici"};
    		
    		//int numV = 10;
    			//CONSTRUCTOR
    	public GraphView(int numV) 
    			{   
    			  g = new DirectedSparseMultigraph<Integer,String>();
    			 
    			  Integer[] vertices = VerticesCreation(numV);
    			  //ASSOCIO ETICHETTA AI RAMI CON LA FUNZIONE createEdge
    		      createEdges(vertices);
    		      
    	          // A MAP FOR LABELS
    	          Map<Integer,String> LabelMap = new HashMap<Integer,String>();
    	          for(int i=1; i<numV+1; i++) 
    	          	{  LabelMap.put(vertices[i], iconNames[i]);  }
    	       
    	          //A MAP FOR ICONS
    	          iconMap = new HashMap<Integer,Icon>();
    	          for(int i=0; i<vertices.length; i++) 
    				{
    		             try 
    			             {
    			                 Icon icon = new ImageIcon(getClass().getResource(iconNames[i] +".gif"));
    			                 iconMap.put(vertices[i], icon);
    			             } 
    		             catch(Exception ex) 
    		                {	
    		            	 	System.err.println("You need slashdoticons.jar in your classpath to see the image "+ iconNames[i]);  
    		            	}
    		        }     
    	        vertexStringerImpl = new VertexStringerImpl<Integer>(LabelMap);
    	        vertexImageShapeFunction = new VertexIconShapeTransformer<Integer>(new EllipseVertexShapeTransformer<Integer>());
    	                 	          
    		     System.out.println("The Graph g = " + g.toString());
    	    	}
    	
    	// VERTICES BUILDER	
    	   private Integer[] VerticesCreation (int NumVertices) 
    		{
    		    Integer[] v = new Integer[NumVertices+1];
    		    for (int i = 1; i < NumVertices+1; i++) 
    			   {
    			    v[i] = new Integer(i);
    			    g.addVertex(v[i]);
    			   }
    		    return v;
    		}
        //EDGES CREATOR
        void createEdges(Integer[] vertices)
    	 {
    	 	for(int i=1 ; i<vertices.length-1 ; i++)
    		 	{	
    		 	  g.addEdge("EDGE-"+edgeName[i], i, i+1);
    		    }
    	 	g.addEdge("EDGE-"+edgeName[vertices.length-1], vertices.length-1, 1) ;
    	     
    	 }
    
        class VertexStringerImpl<V> implements Transformer<V,String> 
        {    	 
          Map<V,String> map = new HashMap<V,String>();        
          boolean enabled = true;
            
            public VertexStringerImpl(Map<V,String> MyMap) 
    	        {
    	            this.map = MyMap;
    	        }
            public String transform(Object v) 
    	        {
    	            if(isEnabled()) 
    	            	{ return map.get(v); }
    	            else { return "" ; }
    	        } 
            public boolean isEnabled()
            	{ return enabled;  }
            public void setEnabled(boolean enabled) 
            	{ this.enabled = enabled; }
        }
        
    
    }

  4. #4
    Norm's Avatar
    Norm is offline Moderator
    Join Date
    Jun 2008
    Location
    Eastern Florida
    Posts
    17,874
    Rep Power
    25

    Default

    You use classes from third party packages, for example edu.uci.ics.jung that most us don't have.
    So it won't be possible to compile and test your code.

    If you could remove all those packages and make a simple program with standard java that compiles and executes and demonstrates your problem, more people could help you.
    Last edited by Norm; 07-15-2011 at 06:36 PM. Reason: Ask for SSCCE

  5. #5
    mmanu87 is offline Member
    Join Date
    Jul 2011
    Posts
    9
    Rep Power
    0

    Default packages file

    All the package are available at this link!!!!! I have to use Jung for my project so I have to use its libraries...

    Download Java Universal Network/Graph Framework from SourceForge.net

  6. #6
    Norm's Avatar
    Norm is offline Moderator
    Join Date
    Jun 2008
    Location
    Eastern Florida
    Posts
    17,874
    Rep Power
    25

    Default

    There are 17 jar files in that zip file. Too many for me to try to sort out.
    Also missing are the classes for the package org.apache.commons.collections15

    Your best chance of getting help is the SSCCE program that compiles and executes and shows the problem using standard java classes.

  7. #7
    Jodokus's Avatar
    Jodokus is offline Senior Member
    Join Date
    Jan 2011
    Location
    Amsterdam, the Netherlands
    Posts
    230
    Rep Power
    4

    Default

    You did most right. The main real mistake is adding your buttonpanel to the viewer.
    But your code is very difficult to maintain or adapt because you put everything in one big mixed up main().
    You have to chop it up in small identifiable parts, so that you can play with them and can shift them around in your code.
    It is not common practice here to do all the work for someone, but it is hardly possible to explain, so study it to see how you can divide to conquer your code (hoping the others here don't burn it down). It works now (except the graphcentering. De code you cited has only to do with the panel-centering.)
    Java Code:
    package mmanu;
    
    import javax.swing.*;
    import edu.uci.ics.jung.visualization.VisualizationViewer;
    import edu.uci.ics.jung.visualization.control.*;
    import edu.uci.ics.jung.visualization.decorators.*;
    import edu.uci.ics.jung.algorithms.layout.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import org.apache.commons.collections15.*;
    
    public class Main 
    {
        private final PluggableGraphMouse graphMouse = new PluggableGraphMouse();
        private final ShearingGraphMousePlugin ShearPlugin = new ShearingGraphMousePlugin();
        private final PickingGraphMousePlugin<Integer,String> PickPlugin = new PickingGraphMousePlugin<Integer,String>();
        private final RotatingGraphMousePlugin RotPlugin = new RotatingGraphMousePlugin();
    
    	
    	public Main(){
    		int number = getNumberOfGraphs();
    		JPanel GuiPanel = makeGuiPanel( number );
    		initFrame( GuiPanel );
    	}
    	private int getNumberOfGraphs(){
    		System.out.println("JUNG 2 - CREAZIONE DI GRAFI E INTERAZIONE CON ESSI -");
    		System.out.println("QUANTI VERTICI VUOI (MIN->2 MAX ->9)? ");
    //		BufferedReader reader = new BufferedReader ( new InputStreamReader(System.in));
    //	    String input = reader.readLine();
    //	    int number = Integer.parseInt(input); 
    	    return Integer.parseInt( "7" ); 
    	}
    	private VisualizationViewer<Integer,String> makeViewer( int number){
    	    GraphView gv = new GraphView( number );
    		Layout<Integer, String> layout = new CircleLayout<Integer, String>(gv.g);
    		layout.setSize(new Dimension(400,400));
    
    		VisualizationViewer<Integer,String> viewer = new VisualizationViewer<Integer,String>(layout);
    		viewer.setPreferredSize(new Dimension(800, 600));
    		viewer.setGraphMouse( graphMouse );// SET PLUGGABLE MOUSE
    
    		
    		float dashline[] = {5.0f};  										   //IMPOSTA LA LUNGHEZZA DEI TRATTINI NERI DELLA LINEA TRATTEGGIATA
    		final Stroke edgeStroke = new BasicStroke(3.0f, BasicStroke.CAP_BUTT,  //SPESSORE LINEA, FORMA DEL TRATTEGGIO (CIRCOLARE,
    		      BasicStroke.JOIN_ROUND, 10.0f, dashline, 0.0f);         		   //QUADRATINI, RETTANGOLI), , , "DASH"=TRATTEGGIATA o "NULL",
    		//TRANSFORMER FOR THE EDGESTROKE
    		Transformer<String, Stroke> edgeStrokeTransformer = new Transformer<String, Stroke>() 
    			{
    				public Stroke transform(String s) {
    					return edgeStroke;
    				}
    			};
    		// VERTEX ICON AND EDGES SETTINGS
    		 final DefaultVertexIconTransformer<Integer> vertexIconFunction = new DefaultVertexIconTransformer<Integer>();
    	     GraphView.vertexImageShapeFunction.setIconMap(GraphView.iconMap);
    	     vertexIconFunction.setIconMap(GraphView.iconMap);
    	     viewer.getRenderContext().setVertexShapeTransformer(GraphView.vertexImageShapeFunction);
    	     viewer.getRenderContext().setVertexIconTransformer(vertexIconFunction);
    	     viewer.getRenderContext().setVertexLabelTransformer(GraphView.vertexStringerImpl);
    	     viewer.getRenderContext().setEdgeStrokeTransformer(edgeStrokeTransformer);
    	     return viewer;
    	}
    	private void initFrame( Component content ){
    		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    		
    		// FRAME SETTINGS
    		JFrame frame = new JFrame("Jung2 - Example of Basical Function");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(Window.WIDTH,Window.HEIGHT);
    		frame.setJMenuBar( makeMenuBar() );
    		frame.add( content );
    		frame.pack();
    		frame.setVisible(true);
    		frame.setBackground(Color.ORANGE);
    		frame.setTitle("Jung2 - Example of Basical Function - Manuel Simoni - MATRICOLA: 191327");
    		frame.setLayout(null);
    		//SET ALIGNMENT "CENTER" TO THE FRAME
    		frame.setLocation(new Point((dimension.width - frame.getSize().width) / 2, 
    				(dimension.height - frame.getSize().height) / 2 )); 
    	}
    	private JPanel makeGuiPanel( int numberVertices){
    		JPanel panel = new JPanel();
    		panel.setLayout( new BorderLayout() );
    		panel.add( makeViewer( numberVertices ), BorderLayout.CENTER );
    		panel.add( makeButtonPanel( ), BorderLayout.SOUTH );
    		return panel;
    	}
    	private JMenuBar makeMenuBar(){
    		//MENU SETTINGS
    		JMenuBar menubar = new JMenuBar();
    		JMenu rotmenu = new JMenu("Rotation");		    
    		JMenu shearmenu = new JMenu("Shearing");
    		JMenu pickmenu = new JMenu("Picking");
    		menubar.add( rotmenu );
    		menubar.add( shearmenu );
    		menubar.add( pickmenu );
    		
    		JMenuItem first = new JMenuItem("Rotation - PRESS 'SHIFT KEY'");
    		JMenuItem second = new JMenuItem("Shearing - PRESS 'CMD KEY'");
    		JMenuItem third = new JMenuItem("Picking - SELECT ONE or MANY VERTEX");
    		rotmenu.add(first);
    		shearmenu.add(second);
    		pickmenu.add(third);
    	    first.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){
    	    		graphMouse.remove(PickPlugin);
    	    		graphMouse.remove(ShearPlugin);
    	    		graphMouse.add(RotPlugin); 
    			}
    		});
    	
    	    second.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){    
    	    		graphMouse.remove(PickPlugin);
    	    		graphMouse.remove(RotPlugin);
    	    		graphMouse.add(ShearPlugin);
    			}
    		});
    	    third.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){	
    	    		graphMouse.remove(RotPlugin);
    	    		graphMouse.remove(ShearPlugin);
    	    		graphMouse.add(PickPlugin);
    			}
    	    });
    	    return menubar;
    	}
    	private JPanel makeButtonPanel(){
    		JPanel panel = new JPanel();
    		//BUTTON TRANSFORMATION SETTING     
    		JButton r = new JButton("Rotation(Shift Key)");
    		JButton p = new JButton("Picking (just select one or more vertex)");
    		JButton s = new JButton("Shearing (CMD key)"); 
    		JButton popbut = new JButton("CREATE POPUP MENU");
    		panel.add(r, BorderLayout.CENTER);
    		panel.add(s, BorderLayout.CENTER);
    		panel.add(p, BorderLayout.CENTER);
    		panel.add(popbut, BorderLayout.CENTER);
    
    	    r.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){
    	    		graphMouse.remove(PickPlugin);
    	    		graphMouse.remove(ShearPlugin);
    	    		graphMouse.add(RotPlugin); 
    			}
    		});
    	    s.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){    
    	    		graphMouse.remove(PickPlugin);
    	    		graphMouse.remove(RotPlugin);
    	    		graphMouse.add(ShearPlugin);
    			}
    		});
    	    p.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){	
    	    		graphMouse.remove(RotPlugin);
    	    		graphMouse.remove(ShearPlugin);
    	    		graphMouse.add(PickPlugin);
    			}
    		});
    	    popbut.addActionListener(new ActionListener(){
    	    	public void actionPerformed(ActionEvent e){
        			JPopupMenu pop = new JPopupMenu();
        			//Popup pop = new Popup();
    		        //pop.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    				pop.setVisible(true);
    				pop.setBackground(Color.BLUE);
    				//pop.setTitle("POPUP MENU");
    				pop.setSize(80,80);
        		}
        	});
    	    return panel;
    	} 
    	public static void main(String[] args) throws IOException{  
    		new Main();
    	} 
    }
    - I left graphView as it was
    - There is duplicate code in the actionlisteners. Has to be fixed.
    Last edited by Jodokus; 07-15-2011 at 11:57 PM. Reason: removed a comment
    No bug ever had to calculate its fitnessfunction.

  8. #8
    mmanu87 is offline Member
    Join Date
    Jul 2011
    Posts
    9
    Rep Power
    0

    Default

    Thank you very much!!!!!

  9. #9
    Jodokus's Avatar
    Jodokus is offline Senior Member
    Join Date
    Jan 2011
    Location
    Amsterdam, the Netherlands
    Posts
    230
    Rep Power
    4

    Default

    You're welcome
    No bug ever had to calculate its fitnessfunction.

Similar Threads

  1. GUI alignment
    By africanhacker in forum New To Java
    Replies: 5
    Last Post: 03-13-2011, 10:22 PM
  2. Alignment in GridLayout
    By Zamereon in forum AWT / Swing
    Replies: 2
    Last Post: 02-27-2011, 12:49 PM
  3. pls... help.... alignment....
    By eiramae in forum Java Applets
    Replies: 0
    Last Post: 02-26-2011, 07:47 AM
  4. Help with alignment
    By firecat318 in forum AWT / Swing
    Replies: 3
    Last Post: 05-25-2010, 04:01 AM
  5. alignment of textfield in awt
    By nitinborge5 in forum New To Java
    Replies: 2
    Last Post: 07-30-2007, 12:16 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •