GUI Implementation Errors

Program created: photo manipulation (via pixels) Desired: GUI

  • (2 Pages)
  • +
  • 1
  • 2

29 Replies - 3385 Views - Last Post: 19 December 2010 - 12:19 AM Rate Topic: -----

#1 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

GUI Implementation Errors

Posted 17 December 2010 - 05:33 PM

For the life of me.. I have no idea what to do beyond this. We only covered GUIs to an extent, so the error I'm receiving I do not know what it means, nor do I know what to do when it is explained in other topics.

Could somebody please explain and show me the right way?

Thank you.


import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class photo implements ActionListener
{
	public JButton bw;
	public JButton neg;
	public JButton sepia;
	public JButton original;
	public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		Picture photo = new Picture();
		String file = "peter.jpg";
		photo.load(file);
		Pixel[] array = photo.getPixels();
		photo function = new photo();
		
		JFrame gui = new JFrame("Photo Manipulation");
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel buttons = new JPanel();
		buttons.setLayout(new GridLayout(2,2));
		JButton bw = new JButton();
		bw.setText("Black and White");
		buttons.add(bw);
		JButton neg = new JButton();
		neg.setText("Negative");
		buttons.add(neg);
		JButton sepia = new JButton();
		sepia.setText("Sepia");
		buttons.add(sepia);
		JButton original = new JButton();
		original.setText("Black and White");
		buttons.add(original);
		
		gui.getContentPane().add(buttons);
		gui.pack();
		gui.setVisible(true);
	}
	public void actionPerformed(ActionEvent event, Pixel[] array, Picture photo, String file, photo function)
	{
		if (event.getSource() == bw)
		{	
			function.bw(array,photo,file);
		}
		else if (event.getSource() == neg)
		{
			function.neg(array,photo,file);
		}
		else if (event.getSource() == sepia)
		{
			function.sepia(array,photo,file);
		}
		else if (event.getSource() == original)
		{
			photo.show();
		}
	}
	public void GUI(JButton a, JButton b, JButton c, JButton d)
	{
		bw = a;
		neg = b;
		sepia = c;
		original = d;
		bw.addActionListener(this);
		neg.addActionListener(this);
		sepia.addActionListener(this);
		original.addActionListener(this);
	}
	public void bw(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();
			int w = (r+b+g)/3;
			temparray[i].setRed(w);
			temparray[i].setGreen(w);
			temparray[i].setBlue(w);
		}
		temp.show();
	}
	public void sepia(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();		
			int w = (r+b+g)/3;
			temparray[i].setRed(w);
			temparray[i].setGreen(w);
			temparray[i].setBlue(w);
			r=w;
			g=w;
			b=w;
			if (r < 63)
			{ 
				r=(int)(r*1.1); 
				b=(int)(b*.9);
				temparray[i].setRed(r);
				temparray[i].setBlue(B)/>;
			} 
			if (r > 62 && r < 192)
			{
				r=(int)(r*1.15); 
				b=(int)(b*.85); 
				temparray[i].setRed(r);
				temparray[i].setBlue(B)/>;
				if (r  >191)
				{ 
					r=(int)(r*1.08); 
					temparray[i].setRed(r);
					if (r> 255)
					{ 
					r=255; 
					b=(int)(b*.93); 
					temparray[i].setRed(r);
					temparray[i].setBlue(B)/>;
					}
				}
			}
		}
		temp.show();
	}
	public void neg(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();
			r=255-r;
			g=255-g;
			b=255-b;
			temparray[i].setRed(r);
			temparray[i].setGreen(g);
			temparray[i].setBlue(B)/>;
		}
		temp.show();
	}
	public void random(Pixel[] array, Picture photo, String file)
	{
		Random rand = new Random();
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			temparray[i].setRed(rand.nextInt(255));
			temparray[i].setGreen(rand.nextInt(255));
			temparray[i].setBlue(rand.nextInt(255));
		}
	}
}



ERROR:

photo.java:4: photo is not abstract and does not override abstract method action
Performed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
public class photo implements ActionListener
^
photo.java:23: cannot find symbol
symbol : class GridLayout

The last one I KNOW it's a small problem, since it's the right code (from my other GUI that works T_T)
location: class photo
buttons.setLayout(new GridLayout(2,2));

Is This A Good Question/Topic? 0
  • +

Replies To: GUI Implementation Errors

#2 mufasa  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 44
  • Joined: 12-February 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 05:44 PM

the first error is occuring because you'e not quite correctly implementing the method "public void actionPerformed(ActionEvent e)" because you have too many parameters, the method as declared in the ActionListener interface only has the one parameter (ActionEvent e).

the second error is because you need to import the GridLayout class (as it's not currently imported, it can't be found)
Was This Post Helpful? 0
  • +
  • -

#3 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 05:53 PM

Right. So that did not help me. (crap) I don't know what you're talking about. Please take note that I'm a collect student, and I just finished my first Java course. I don't know many terms, but I am decent at coding. I'm just trying to learn and perfect GUIs.

I know I don't need to import GridLayout, because I never had to in my other GUI (a calculator)



Gotcha. So I didn't import java.awt.*;

If that's what you meant, thanks! Now to just figure out the implementation error

This post has been edited by RUFerret: 17 December 2010 - 05:58 PM

Was This Post Helpful? 0
  • +
  • -

#4 mufasa  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 44
  • Joined: 12-February 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 06:03 PM

instead of :

 public void actionPerformed(ActionEvent event, Pixel[] array, Picture photo, String file, photo function)



it needs to be :

public void actionPerformed(ActionEvent event)



to access the variables outside you could make them instance variable of the class in order to reference them
Was This Post Helpful? 0
  • +
  • -

#5 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 06:12 PM

Hmm, how would I do that? I tried putting it into public variables, but it says I cannot reference from a static context.
Was This Post Helpful? 0
  • +
  • -

#6 mufasa  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 44
  • Joined: 12-February 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 06:14 PM

the variables themselves must be static in that case as well, how is the code looking now?
Was This Post Helpful? 0
  • +
  • -

#7 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 06:25 PM

View Postmufasa, on 17 December 2010 - 05:14 PM, said:

the variables themselves must be static in that case as well, how is the code looking now?



import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class photo implements ActionListener
{
	public JButton bw;
	public JButton neg;
	public JButton sepia;
	public JButton original;
	public Picture photo = new Picture();
	public String file = "peter.jpg";
	public Pixel[] array = photo.getPixels();
	public photo function = new photo();
	public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		photo.load(file);
		
		JFrame gui = new JFrame("Photo Manipulation");
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel buttons = new JPanel();
		buttons.setLayout(new GridLayout(2,2));
		JButton bw = new JButton();
		bw.setText("Black and White");
		buttons.add(bw);
		JButton neg = new JButton();
		neg.setText("Negative");
		buttons.add(neg);
		JButton sepia = new JButton();
		sepia.setText("Sepia");
		buttons.add(sepia);
		JButton original = new JButton();
		original.setText("Original");
		buttons.add(original);
		
		gui.getContentPane().add(buttons);
		gui.pack();
		gui.setVisible(true);
	}
	public void actionPerformed(ActionEvent event)
	{
		if (event.getSource() == bw)
		{	
			function.bw(array,photo,file);
		}
		else if (event.getSource() == neg)
		{
			function.neg(array,photo,file);
		}
		else if (event.getSource() == sepia)
		{
			function.sepia(array,photo,file);
		}
		else if (event.getSource() == original)
		{
			photo.show();
		}
	}
	public void GUI(JButton a, JButton b, JButton c, JButton d)
	{
		bw = a;
		neg = b;
		sepia = c;
		original = d;
		bw.addActionListener(this);
		neg.addActionListener(this);
		sepia.addActionListener(this);
		original.addActionListener(this);
	}
	public void bw(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();
			int w = (r+b+g)/3;
			temparray[i].setRed(w);
			temparray[i].setGreen(w);
			temparray[i].setBlue(w);
		}
		temp.show();
	}
	public void sepia(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();		
			int w = (r+b+g)/3;
			temparray[i].setRed(w);
			temparray[i].setGreen(w);
			temparray[i].setBlue(w);
			r=w;
			g=w;
			b=w;
			if (r < 63)
			{ 
				r=(int)(r*1.1); 
				b=(int)(b*.9);
				temparray[i].setRed(r);
				temparray[i].setBlue(B)/>;
			} 
			if (r > 62 && r < 192)
			{
				r=(int)(r*1.15); 
				b=(int)(b*.85); 
				temparray[i].setRed(r);
				temparray[i].setBlue(B)/>;
				if (r  >191)
				{ 
					r=(int)(r*1.08); 
					temparray[i].setRed(r);
					if (r> 255)
					{ 
					r=255; 
					b=(int)(b*.93); 
					temparray[i].setRed(r);
					temparray[i].setBlue(B)/>;
					}
				}
			}
		}
		temp.show();
	}
	public void neg(Pixel[] array, Picture photo, String file)
	{
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			int r = temparray[i].getRed();
			int g = temparray[i].getGreen();
			int b = temparray[i].getBlue();
			r=255-r;
			g=255-g;
			b=255-b;
			temparray[i].setRed(r);
			temparray[i].setGreen(g);
			temparray[i].setBlue(B)/>;
		}
		temp.show();
	}
	public void random(Pixel[] array, Picture photo, String file)
	{
		Random rand = new Random();
		Picture temp = new Picture();
		temp.load(file);
		Pixel[] temparray = temp.getPixels();
		for (int i = 0; i<array.length; i++)
		{
			temparray[i].setRed(rand.nextInt(255));
			temparray[i].setGreen(rand.nextInt(255));
			temparray[i].setBlue(rand.nextInt(255));
		}
	}
}



Basically, I want this:

Click 1 of 4 buttons. on click, that button executes a function call, which manipulates the string (file) pixel by pixel.

Here's what I'm converting it from.


import java.util.*;
public class photo
{
	public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		String file = "ta.jpg";
		Picture photo = new Picture();
		photo.load(file);
		Pixel[] array = photo.getPixels();
		photo function = new photo();
		
		System.out.println("Enter effect>");
		String command = scan.nextLine();
		while(!command.equals("quit"))
		{
			if (command.equals("blackAndWhite"))
			{
				function.bw(array,photo);
			}
			else if (command.equals("sepia"))
			{
				function.sepia(array,photo);
			}
			else if (command.equals("negative"))
			{
				function.neg(array,photo);
			}
			else if (command.equals("help"))
			{
				System.out.println("Effects are:");
				System.out.println("blackAndWhite");
				System.out.println("sepia");
				System.out.println("negative");
			}
			System.out.println("Enter effect>");
			command = scan.nextLine();
		}
	}
	public void bw(Pixel[] array, Picture photo)
	{
		for (int i = 0; i<array.length; i++)
		{
			int r = array[i].getRed();
			int g = array[i].getGreen();
			int b = array[i].getBlue();
			int w = (r+g+B)/>/3;
			array[i].setRed(w);
			array[i].setGreen(w);
			array[i].setBlue(w);
		}
		photo.show();
	}
	public void sepia(Pixel[] array, Picture photo)
	{
		for (int i = 0; i<array.length; i++)
		{
			int r = array[i].getRed();
			int g = array[i].getGreen();
			int b = array[i].getBlue();
			int w = (r+g+B)/>/3;
			array[i].setRed(w);
			array[i].setGreen(w);
			array[i].setBlue(w);
			r=w;
			g=w;
			b=w;
			if(r<63)
			{
				r=(int)(r*1.1);
				b=(int)(b*.9);
				array[i].setRed(r);
				array[i].setBlue(B)/>;
			}
			else if (r > 62 && r < 192)
			{
				r=(int)(r*1.15);
				b=(int)(b*.85);
				array[i].setRed(r);
				array[i].setBlue(B)/>;
			}
			else if (r > 191)
			{
				r=(int)(r*1.08);
				array[i].setRed(r);
				if (r > 255)
				{
					r=255;
					b=(int)(b*.93);
					array[i].setRed(r);
					array[i].setBlue(B)/>;
				}
			}
		}
		photo.show();
	}
	public void neg(Pixel[] array, Picture photo)
	{
		for (int i = 0; i<array.length; i++)
		{
			int r = array[i].getRed();
			int g = array[i].getGreen();
			int b = array[i].getBlue();
			r=255-r;
			g=255-g;
			b=255-b;
			array[i].setRed(r);
			array[i].setGreen(g);
			array[i].setBlue(B)/>;			
		}
		photo.show();
	}
}



It's just a command loop
Was This Post Helpful? 0
  • +
  • -

#8 mufasa  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 44
  • Joined: 12-February 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 07:27 PM

firstly, it would be better practice to break up the code (i.e. have the action listener separate from the class manipulating the picture.

second, can we see the Picture class? i'd just like to compile and run the program to see what errors you're getting. as it is now though there are a couple of compile errors, like the difference between the lower case 'b' in line 98 and the capital 'B' in line 111.

what errors are you getting now?

EDIT: looking back over your code, it would be better to add individually specific listeners to each button, i.e. for the sepia button in line 69

sepia.addActionListener (new ActionListener() {
     public void actionPerformed(ActionEvent e){
        Picture temp = new Picture();
        temp.load(file);
        Pixel[] temparray = temp.getPixels();
        for (int i = 0; i<array.length; i++)
        {
            int r = temparray[i].getRed();
            int g = temparray[i].getGreen();
            int b = temparray[i].getBlue();
            r=255-r;
            g=255-g;
            b=255-b;
            temparray[i].setRed(r);
            temparray[i].setGreen(g);
            temparray[i].setBlue(B)/>;
        }
        temp.show();
     }

});



instead of having a generic action listener which every button has and trying to figure out which button called the action listener in order to call a specific function (either inline the function in the specific action listeners actionPerformed() method or call it from there).

This post has been edited by mufasa: 17 December 2010 - 07:44 PM

Was This Post Helpful? 0
  • +
  • -

#9 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 07:55 PM

Here is the Picture class.

Spoiler


Edited by Dogstopper: Added spoiler tags to the 6000+ lines of code.

This post has been edited by Dogstopper: 17 December 2010 - 08:38 PM

Was This Post Helpful? 0
  • +
  • -

#10 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:07 PM

Alright, I implemented what you showed me for the sepia actionlistener, and I'm getting this error: (along with the static errors)

photo.java:90: java.awt.event.ActionListener is abstract; cannot be instantiated

sepia.addActionListener(new ActionListener());
Was This Post Helpful? 0
  • +
  • -

#11 mufasa  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 44
  • Joined: 12-February 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:12 PM

that's a little much to post (the Picture class isn't all of that). so wait, what issues are you having with your code now?
Was This Post Helpful? 0
  • +
  • -

#12 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:24 PM

Yeah it's a huge program the Picture class

Here's what I have now.

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class photo implements ActionListener
{
	public JButton bw;
	public JButton neg;
	public JButton sepia;
	public JButton original;
	public Picture photo = new Picture();
	public String file = "peter.jpg";
	public Pixel[] array = photo.getPixels();
	public photo function = new photo();
	public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		photo.load(file);
		
		JFrame gui = new JFrame("Photo Manipulation");
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel buttons = new JPanel();
		buttons.setLayout(new GridLayout(2,2));
		JButton bw = new JButton();
		bw.setText("Black and White");
		buttons.add(bw);
		JButton neg = new JButton();
		neg.setText("Negative");
		buttons.add(neg);
		JButton sepia = new JButton();
		sepia.setText("Sepia");
		buttons.add(sepia);
		JButton original = new JButton();
		original.setText("Original");
		buttons.add(original);
		
		gui.getContentPane().add(buttons);
		gui.pack();
		gui.setVisible(true);
	}
	public void actionPerformed(ActionEvent event)
	{
		if (event.getSource() == bw)
		{	
			bw.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent event)
				{
					Picture temp = new Picture();
					temp.load(file);
					Pixel[] temparray = temp.getPixels();
					for (int i = 0; i<array.length; i++)
					{
						int r = temparray[i].getRed();
						int g = temparray[i].getGreen();
						int b = temparray[i].getBlue();
						int w = (r+b+g)/3;
						temparray[i].setRed(w);
						temparray[i].setGreen(w);
						temparray[i].setBlue(w);
					}
					temp.show();
				}
			});
		}
		else if (event.getSource() == neg)
		{
			neg.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent event)
				{
					Picture temp = new Picture();
					temp.load(file);
					Pixel[] temparray = temp.getPixels();
					for (int i = 0; i<array.length; i++)
					{
						int r = temparray[i].getRed();
						int g = temparray[i].getGreen();
						int b = temparray[i].getBlue();
						r=255-r;
						g=255-g;
						b=255-b;
						temparray[i].setRed(r);
						temparray[i].setGreen(g);
						temparray[i].setBlue(B)/>;
					}
					temp.show();
				}
			});
		}
		else if (event.getSource() == sepia)
		{
			sepia.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent event)
				{
					Picture temp = new Picture();
					temp.load(file);
					Pixel[] temparray = temp.getPixels();
					for (int i = 0; i<array.length; i++)
					{
						int r = temparray[i].getRed();
						int g = temparray[i].getGreen();
						int b = temparray[i].getBlue();
						r=255-r;
						g=255-g;
						b=255-b;
						temparray[i].setRed(r);
						temparray[i].setGreen(g);
						temparray[i].setBlue(B)/>;
					}
					temp.show();
				}
			});
		}
		else if (event.getSource() == original)
		{
			photo.show();
		}
	}
}



I'm getting :


C:\Users\Jordan\JavaDocs\Gooey>javac photo.java
photo.java:18: non-static variable file cannot be referenced from a static conte
xt
photo.load(file);
^
photo.java:18: non-static variable photo cannot be referenced from a static cont
ext
photo.load(file);
^
2 errors
Was This Post Helpful? 0
  • +
  • -

#13 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2876
  • View blog
  • Posts: 11,051
  • Joined: 15-July 08

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:37 PM

If your classes followed convention, you would have realized that photo is a class. Classes should start with a capital letter and have every other word capitalized too. Like this:
MyClass
Photo
...

However, you have this line:
photo.load(file);



photo is a class. Use the photo object that you called function.

function.load(file);



Also, we are not going to help you patch together a 6000+ line program with parts taken from other sources. We are willing to help certainly, but 6000 lines is just too much!

Edit: Also look at your imports....you have MANY that are the exact same...

This post has been edited by Dogstopper: 17 December 2010 - 08:39 PM

Was This Post Helpful? 0
  • +
  • -

#14 RUFerret  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 58
  • Joined: 17-December 10

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:42 PM

Nononono, Picture.java is just so I can use it to manipulate the picture. like.. getPixels() and whatnot.

I'm just trying to get the GUI together. lol

and photo function = new photo(); was there so I can use functions in the same file, it's gone now, because I am not calling functions anymore.

This static error is what's going wrong.

when I use photo.load(file); it's using the Picture class method to load the image, to be used (my itec professor made us do a lab on this, so it's all i know. I'm simply turning our command loop manipulator into a GUI)
Was This Post Helpful? 0
  • +
  • -

#15 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2876
  • View blog
  • Posts: 11,051
  • Joined: 15-July 08

Re: GUI Implementation Errors

Posted 17 December 2010 - 08:46 PM

Nonetheless, that's where the error is located. Look at the error:
photo.java:18: non-static variable file cannot be referenced from a static conte
xt
photo.load(file);


That is saying that load() can only be accessed through an object, not a class. If you don't need it at the moment either comment it out, fix it, or delete it.
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2