private JPanel setupSourceImageControlsPanel() {
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout(FlowLayout.LEFT));
		panel.setBorder(new TitledBorder("Source Image Layout"));

		JPanel scalePanel = new JPanel();
		scalePanel.setLayout(new GridLayout(2, 2));
		scalePanel.setBorder(new TitledBorder("Scale"));

		{
			sourceScaleXSpinner = new JSpinner();
			Integer value = new Integer(sourceScaleX);
			Integer min = new Integer(1);
			Integer max = new Integer(1000);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			sourceScaleXSpinner.setModel(spinnerModel);
			sourceScaleXSpinner.setToolTipText("Width Scale Percentage");
			sourceScaleXSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) sourceScaleXSpinner.getModel().getValue()).intValue();
					if (newVal != sourceScaleX) {
						setSourceScaleX(newVal);
					}
				}
			});
			scalePanel.add(new JLabel("Width Scale %"));
			scalePanel.add(sourceScaleXSpinner);
		}
		{
			sourceScaleYSpinner = new JSpinner();
			Integer value = new Integer(sourceScaleY);
			Integer min = new Integer(1);
			Integer max = new Integer(1000);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			sourceScaleYSpinner.setModel(spinnerModel);
			sourceScaleYSpinner.setToolTipText("Height Scale Percentage");
			sourceScaleYSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) sourceScaleYSpinner.getModel().getValue()).intValue();
					if (newVal != sourceScaleY) {
						setSourceScaleY(newVal);
					}
				}
			});
			scalePanel.add(new JLabel("Height Scale %"));
			scalePanel.add(sourceScaleYSpinner);
		}
		panel.add(scalePanel);

		JPanel clipPosPanel = new JPanel();
		clipPosPanel.setLayout(new GridLayout(2, 2));
		clipPosPanel.setBorder(new TitledBorder("Clip Position"));
		{
			srcClipXSpinner = new JSpinner();
			Integer value = new Integer(sourceClipX);
			Integer min = new Integer(-256);
			Integer max = new Integer(256);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcClipXSpinner.setModel(spinnerModel);
			srcClipXSpinner.setToolTipText("Clip X Position");
			srcClipXSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcClipXSpinner.getModel().getValue()).intValue();
					if (newVal != sourceClipX) {
						setSourceClipX(newVal);
					}
				}
			});
			clipPosPanel.add(new JLabel("X:"));
			clipPosPanel.add(srcClipXSpinner);
		}
		{
			srcClipYSpinner = new JSpinner();
			Integer value = new Integer(sourceClipY);
			Integer min = new Integer(-240);
			Integer max = new Integer(240);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcClipYSpinner.setModel(spinnerModel);
			srcClipYSpinner.setToolTipText("Clip Y Position");
			srcClipYSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcClipYSpinner.getModel().getValue()).intValue();
					if (newVal != sourceClipY) {
						setSourceClipY(newVal);
					}
				}
			});
			clipPosPanel.add(new JLabel("Y:"));
			clipPosPanel.add(srcClipYSpinner);
		}
		panel.add(clipPosPanel);

		JPanel clipSizePanel = new JPanel();
		clipSizePanel.setLayout(new GridLayout(2, 2));
		clipSizePanel.setBorder(new TitledBorder("Clip Dimensions"));
		{
			srcClipWidSpinner = new JSpinner();
			Integer value = new Integer(sourceClipWid);
			Integer min = new Integer(-256);
			Integer max = new Integer(256);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcClipWidSpinner.setModel(spinnerModel);
			srcClipWidSpinner.setToolTipText("Clip Width");
			srcClipWidSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcClipWidSpinner.getModel().getValue()).intValue();
					if (newVal != sourceClipWid) {
						setSourceClipWid(newVal);
					}
				}
			});
			clipSizePanel.add(new JLabel("Width:"));
			clipSizePanel.add(srcClipWidSpinner);
		}
		{
			srcClipHgtSpinner = new JSpinner();
			Integer value = new Integer(sourceClipHgt);
			Integer min = new Integer(-240);
			Integer max = new Integer(240);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcClipHgtSpinner.setModel(spinnerModel);
			srcClipHgtSpinner.setToolTipText("Clip Height");
			srcClipHgtSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcClipHgtSpinner.getModel().getValue()).intValue();
					if (newVal != sourceClipHgt) {
						setSourceClipHgt(newVal);
					}
				}
			});
			clipSizePanel.add(new JLabel("Height:"));
			clipSizePanel.add(srcClipHgtSpinner);
		}
		panel.add(clipSizePanel);

		JPanel positionPanel = new JPanel();
		positionPanel.setLayout(new GridLayout(2, 2));
		positionPanel.setBorder(new TitledBorder("Position"));
		{
			srcPosXSpinner = new JSpinner();
			Integer value = new Integer(sourcePosX);
			Integer min = new Integer(-256);
			Integer max = new Integer(256);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcPosXSpinner.setModel(spinnerModel);
			srcPosXSpinner.setToolTipText("X Pos");
			srcPosXSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcPosXSpinner.getModel().getValue()).intValue();
					if (newVal != sourcePosX) {
						setSourcePosX(newVal);
					}
				}
			});
			positionPanel.add(new JLabel("X:"));
			positionPanel.add(srcPosXSpinner);
		}
		{
			srcPosYSpinner = new JSpinner();
			Integer value = new Integer(sourcePosY);
			Integer min = new Integer(-240);
			Integer max = new Integer(240);
			Integer step = new Integer(1);
			SpinnerNumberModel spinnerModel = new SpinnerNumberModel(value, min, max, step);
			srcPosYSpinner.setModel(spinnerModel);
			srcPosYSpinner.setToolTipText("Y Pos");
			srcPosYSpinner.addChangeListener(new ChangeListener() {

				public void stateChanged(ChangeEvent e) {
					int newVal = ((Integer) srcPosYSpinner.getModel().getValue()).intValue();
					if (newVal != sourcePosY) {
						setSourcePosY(newVal);
					}
				}
			});
			positionPanel.add(new JLabel("Y:"));
			positionPanel.add(srcPosYSpinner);
		}
		panel.add(positionPanel);
		/*
        JButton scaleButton = new JButton("Fit Image");

        scaleButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
        srcPosXSpinner.getModel().setValue(new Integer(0));
        srcPosYSpinner.getModel().setValue(new Integer(0));
        }
        });
        scaleButton.setEnabled(false);
        scaleButton.setToolTipText("Not yet implemented");
        panel.add(scaleButton);
		 */
		return panel;
	}