[LWJGL] Shaders, implementing?

So i am trying to implement shaders on my own with lwjgl.


package necro.graphical;

import static org.lwjgl.opengl.GL11.GL_FALSE;
import static org.lwjgl.opengl.GL20.GL_COMPILE_STATUS;
import static org.lwjgl.opengl.GL20.GL_FRAGMENT_SHADER;
import static org.lwjgl.opengl.GL20.GL_VERTEX_SHADER;
import static org.lwjgl.opengl.GL20.glAttachShader;
import static org.lwjgl.opengl.GL20.glCompileShader;
import static org.lwjgl.opengl.GL20.glCreateProgram;
import static org.lwjgl.opengl.GL20.glCreateShader;
import static org.lwjgl.opengl.GL20.glGetShader;
import static org.lwjgl.opengl.GL20.glLinkProgram;
import static org.lwjgl.opengl.GL20.glShaderSource;
import static org.lwjgl.opengl.GL20.glUseProgram;
import static org.lwjgl.opengl.GL20.glValidateProgram;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import org.lwjgl.opengl.Display;

public class ShaderProgram {

	private int shaderProgram, verShader, fragShader;

	private String vertexShader, fragmentShader;

	private StringBuilder vertexShaderSource;
	private StringBuilder fragmentShaderSource;

	/**
	 * !!! THIS MUST BE IN THE INIT METHOD!!! initializes shader program. Use
	 * load to load and then create() to create!
	 * 
	 * @param verShader
	 * @param fragShader
	 */
	public ShaderProgram(String verShader, String fragShader) {
		vertexShader = verShader;
		fragmentShader = fragShader;
	}
	/**
	 * Load the shaders!
	 */
	public void load() {
		shaderProgram = glCreateProgram();
		verShader = glCreateShader(GL_VERTEX_SHADER);
		fragShader = glCreateShader(GL_FRAGMENT_SHADER);

		vertexShaderSource = new StringBuilder();
		fragmentShaderSource = new StringBuilder();

		BufferedReader reader = null;
		try {
			reader = new BufferedReader(new FileReader(vertexShader));
			String line;

			while ((line = reader.readLine()) != null) {
				vertexShaderSource.append(line).append('\n');
			}

		} catch (IOException e) {
			System.err.println("Can not load vertex shader! There is no :" + vertexShader);
			e.printStackTrace();
			Display.destroy();
			System.exit(1);
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		BufferedReader reader1 = null;
		try {
			reader1 = new BufferedReader(new FileReader(fragmentShader));
			String line;

			while ((line = reader1.readLine()) != null) {
				fragmentShaderSource.append(line).append('\n');
			}

		} catch (IOException e) {
			System.err.println("Can not load fragment shader! There is no :" + fragmentShader);
			e.printStackTrace();
			Display.destroy();
			System.exit(1);
		} finally {
			if (reader1 != null) {
				try {
					reader1.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	@SuppressWarnings("deprecation")
	/**
	 * Create and compile shaders!
	 */
	public void create() {
		glShaderSource(verShader, vertexShaderSource);
		glCompileShader(verShader);
		if (glGetShader(verShader, GL_COMPILE_STATUS) == GL_FALSE) {
			System.err.println("Vertex shader could not comple!");
			Display.destroy();
			System.exit(1);
		}

		glShaderSource(fragShader, fragmentShaderSource);
		glCompileShader(fragShader);
		if (glGetShader(fragShader, GL_COMPILE_STATUS) == GL_FALSE) {
			System.err.println("Fragment shader could not comple!");
			Display.destroy();
			System.exit(1);
		}
		glAttachShader(shaderProgram, verShader);
		glAttachShader(shaderProgram, fragShader);
		glLinkProgram(shaderProgram);
		glValidateProgram(shaderProgram);

	}
	/**
	 * Start using shader program!
	 */
	public void startShader() {
		glUseProgram(shaderProgram);
	}
	/**
	 * Stop using shader program!
	 */
	public void stopShader() {
		glUseProgram(0);
	}

}

and using them


public class Game extends State {

	ShaderProgram sp;
	Texture grass;
	MyGame mg;

	public Game(MyGame myGame) {
		mg = myGame;
	}

	@Override
	public void init() {
		grass = Loader.getTexture("img/grass.png");
		sp = new ShaderProgram("shader.ver", "shader.frag");
		sp.load();
		sp.create();
	}

	@Override
	public void render() {
		sp.startShader();
			Render.drawTexture(grass, 100, 100, 64, 64);
		sp.stopShader();
	}

	@Override
	public void update() {

	}

}

And there is nothing i can do with them now… xD
how do i pass the values (exp. color) to the shader and use it?