@Override
  public JPanel getControls() {

    blankPanel.add(new JLabel(" "));
    blankPanel.add(
        new JLabel(
            "No custom shader is active, use the keys 1-4 to choose a shader.",
            SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));
    blankPanel.add(new JLabel("Shader choices:", SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));
    blankPanel.add(new JLabel("1) Blinn-Phong Fragment Shader", SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));
    blankPanel.add(new JLabel("2) Checkerbooard Shader", SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));
    blankPanel.add(new JLabel("3) Woodcut (Hashing) Shader", SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));
    blankPanel.add(new JLabel("4) Toon Shader", SwingConstants.CENTER));
    blankPanel.add(new JLabel(" "));

    lightControls.setBorder(new TitledBorder("Light Controls"));
    lightControls.add(lightPos);
    VerticalFlowPanel lightColorPanel = new VerticalFlowPanel();
    lightColorPanel.setBorder(new TitledBorder("Light Colour"));
    lightColorPanel.add(lightColR.getSliderControls(false));
    lightColorPanel.add(lightColG.getSliderControls(false));
    lightColorPanel.add(lightColB.getSliderControls(false));
    lightControls.add(lightColorPanel.getPanel());
    lightControls.add(ambient.getSliderControls(false));

    blankPanel.add(lightControls.getPanel());
    return blankPanel.getPanel();
  }
  private void addControls() {
    // Blinn-Phong tab
    VerticalFlowPanel blinnPhongSettings = new VerticalFlowPanel();
    blinnPhongSettings.setBorder(new TitledBorder("Shader Settings"));
    blinnPhongSettings.add(shininess.getSliderControls(false));
    blinnPhongControls.add(blinnPhongSettings.getPanel());
    ev.controlFrame.add(blinnPhongTabName, blinnPhongControls.getPanel());

    // Checkerboard tab
    VerticalFlowPanel checkerboardSettings = new VerticalFlowPanel();
    checkerboardSettings.setBorder(new TitledBorder("Shader Settings"));
    VerticalFlowPanel color1Panel = new VerticalFlowPanel();
    color1Panel.setBorder(new TitledBorder("Colour 1"));
    color1Panel.add(col1R.getSliderControls(false));
    color1Panel.add(col1G.getSliderControls(false));
    color1Panel.add(col1B.getSliderControls(false));
    checkerboardSettings.add(color1Panel.getPanel());
    VerticalFlowPanel color2Panel = new VerticalFlowPanel();
    color2Panel.setBorder(new TitledBorder("Colour 2"));
    color2Panel.add(col2R.getSliderControls(false));
    color2Panel.add(col2G.getSliderControls(false));
    color2Panel.add(col2B.getSliderControls(false));
    checkerboardSettings.add(color2Panel.getPanel());
    checkerboardSettings.add(frequency.getSliderControls(false));
    checkerboardSettings.add(useIntFrequency.getControls());
    checkerboardSettings.add(useAveraging.getControls());
    checkerboardSettings.add(useSmoothStep.getControls());
    checkerboardControls.add(checkerboardSettings.getPanel());
    ev.controlFrame.add(checkerboardTabName, checkerboardControls.getPanel());

    // Woodcut tab
    VerticalFlowPanel woodcutSettings = new VerticalFlowPanel();
    woodcutSettings.setBorder(new TitledBorder("Shader Settings"));
    woodcutSettings.add(time.getSliderControls(false));
    woodcutControls.add(woodcutSettings.getPanel());
    ev.controlFrame.add(woodcutTabName, woodcutControls.getPanel());

    // Toon tab
    VerticalFlowPanel toonSettings = new VerticalFlowPanel();
    toonSettings.setBorder(new TitledBorder("Shader Settings"));
    toonSettings.add(thresholdHigh.getSliderControls(false));
    toonSettings.add(thresholdMedium.getSliderControls(false));
    toonSettings.add(thresholdLow.getSliderControls(false));
    toonControls.add(toonSettings.getPanel());
    ev.controlFrame.add(toonTabName, toonControls.getPanel());
  }