trackeditor: add height start and height end sliders
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9252 30fe4595-0a0c-4342-8851-515496e4dcbd
This commit is contained in:
parent
94b30199f9
commit
497f8ee1cf
|
@ -735,10 +735,7 @@ public class EditorFrame extends JFrame
|
|||
|
||||
shape = new Straight();
|
||||
shape.setLength(100);
|
||||
shape.setHeightStartLeft(0);
|
||||
shape.setHeightStartRight(0);
|
||||
shape.setHeightEndLeft(0);
|
||||
shape.setHeightEndRight(0);
|
||||
shape.setHeightStart(0);
|
||||
shape.setSurface(MainTrack.DEFAULT_SURFACE);
|
||||
shape.getLeft().setNewTrackDefaults();
|
||||
shape.getRight().setNewTrackDefaults();
|
||||
|
@ -748,10 +745,6 @@ public class EditorFrame extends JFrame
|
|||
((Curve)shape).setRadiusStart(100);
|
||||
((Curve)shape).setRadiusEnd(100);
|
||||
((Curve)shape).setArcDeg(180);
|
||||
shape.setHeightStartLeft(0);
|
||||
shape.setHeightStartRight(0);
|
||||
shape.setHeightEndLeft(0);
|
||||
shape.setHeightEndRight(0);
|
||||
shape.setSurface(MainTrack.DEFAULT_SURFACE);
|
||||
shape.getLeft().setNewTrackDefaults();
|
||||
shape.getRight().setNewTrackDefaults();
|
||||
|
@ -759,10 +752,6 @@ public class EditorFrame extends JFrame
|
|||
|
||||
shape = new Straight();
|
||||
shape.setLength(100);
|
||||
shape.setHeightStartLeft(0);
|
||||
shape.setHeightStartRight(0);
|
||||
shape.setHeightEndLeft(0);
|
||||
shape.setHeightEndRight(0);
|
||||
shape.setSurface(MainTrack.DEFAULT_SURFACE);
|
||||
shape.getLeft().setNewTrackDefaults();
|
||||
shape.getRight().setNewTrackDefaults();
|
||||
|
@ -772,10 +761,7 @@ public class EditorFrame extends JFrame
|
|||
((Curve)shape).setRadiusStart(100);
|
||||
((Curve)shape).setRadiusEnd(100);
|
||||
((Curve)shape).setArcDeg(180);
|
||||
shape.setHeightStartLeft(0);
|
||||
shape.setHeightStartRight(0);
|
||||
shape.setHeightEndLeft(0);
|
||||
shape.setHeightEndRight(0);
|
||||
shape.setHeightEnd(0);
|
||||
shape.setSurface(MainTrack.DEFAULT_SURFACE);
|
||||
shape.getLeft().setNewTrackDefaults();
|
||||
shape.getRight().setNewTrackDefaults();
|
||||
|
|
|
@ -83,8 +83,10 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
private SegmentSlider endTangentSlider = null;
|
||||
private SegmentSlider bankingStartSlider = null;
|
||||
private SegmentSlider bankingEndSlider = null;
|
||||
private SegmentSlider heightStartSlider = null;
|
||||
private SegmentSlider heightStartLeftSlider = null;
|
||||
private SegmentSlider heightStartRightSlider = null;
|
||||
private SegmentSlider heightEndSlider = null;
|
||||
private SegmentSlider heightEndLeftSlider = null;
|
||||
private SegmentSlider heightEndRightSlider = null;
|
||||
private SegmentSlider profilStepsSlider = null;
|
||||
|
@ -228,7 +230,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
*/
|
||||
private void initialize()
|
||||
{
|
||||
this.setSize(850, 536);
|
||||
this.setSize(960, 536);
|
||||
Point p = editorFrame.getLocation();
|
||||
p.x = editorFrame.getProject().getSegmentEditorX();
|
||||
p.y = editorFrame.getProject().getSegmentEditorY();
|
||||
|
@ -310,8 +312,10 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
centerPanel.add(getBankingStartSlider(), null);
|
||||
centerPanel.add(getBankingEndSlider(), null);
|
||||
centerPanel.add(getEndTangentSlider(), null);
|
||||
centerPanel.add(getHeightStartSlider(), null);
|
||||
centerPanel.add(getHeightStartLeftSlider(), null);
|
||||
centerPanel.add(getHeightStartRightSlider(), null);
|
||||
centerPanel.add(getHeightEndSlider(), null);
|
||||
centerPanel.add(getHeightEndLeftSlider(), null);
|
||||
centerPanel.add(getHeightEndRightSlider(), null);
|
||||
centerPanel.add(getGroupButton(), null);
|
||||
|
@ -504,6 +508,21 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
}
|
||||
return bankingEndSlider;
|
||||
}
|
||||
/**
|
||||
* This method initializes heightStartSlider
|
||||
*
|
||||
* @return gui.SegmentSlider
|
||||
*/
|
||||
private SegmentSlider getHeightStartSlider()
|
||||
{
|
||||
if (heightStartSlider == null)
|
||||
{
|
||||
heightStartSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightStart(), "Height", "Start", "HeightStart", true);
|
||||
heightStartSlider.setBounds(610, 64, 50, 390);
|
||||
heightStartSlider.addSliderListener(this);
|
||||
}
|
||||
return heightStartSlider;
|
||||
}
|
||||
/**
|
||||
* This method initializes heightStartLeftSlider
|
||||
*
|
||||
|
@ -514,7 +533,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (heightStartLeftSlider == null)
|
||||
{
|
||||
heightStartLeftSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightStartLeft(), "L Height", "Start", "HeightStartLeft", true);
|
||||
heightStartLeftSlider.setBounds(610, 64, 50, 390);
|
||||
heightStartLeftSlider.setBounds(665, 64, 50, 390);
|
||||
heightStartLeftSlider.addSliderListener(this);
|
||||
}
|
||||
return heightStartLeftSlider;
|
||||
|
@ -529,11 +548,26 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (heightStartRightSlider == null)
|
||||
{
|
||||
heightStartRightSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightStartRight(), "R Height", "Start", "HeightStartRight", true);
|
||||
heightStartRightSlider.setBounds(665, 64, 50, 390);
|
||||
heightStartRightSlider.setBounds(720, 64, 50, 390);
|
||||
heightStartRightSlider.addSliderListener(this);
|
||||
}
|
||||
return heightStartRightSlider;
|
||||
}
|
||||
/**
|
||||
* This method initializes heightEndSlider
|
||||
*
|
||||
* @return gui.SegmentSlider
|
||||
*/
|
||||
private SegmentSlider getHeightEndSlider()
|
||||
{
|
||||
if (heightEndSlider == null)
|
||||
{
|
||||
heightEndSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightEnd(), "Height", "End", "HeightEnd", true);
|
||||
heightEndSlider.setBounds(775, 64, 50, 390);
|
||||
heightEndSlider.addSliderListener(this);
|
||||
}
|
||||
return heightEndSlider;
|
||||
}
|
||||
/**
|
||||
* This method initializes heightEndLeftSlider
|
||||
*
|
||||
|
@ -544,7 +578,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (heightEndLeftSlider == null)
|
||||
{
|
||||
heightEndLeftSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightEndLeft(), "L Height", "End", "HeightEndLeft", true);
|
||||
heightEndLeftSlider.setBounds(720, 64, 50, 390);
|
||||
heightEndLeftSlider.setBounds(830, 64, 50, 390);
|
||||
heightEndLeftSlider.addSliderListener(this);
|
||||
}
|
||||
return heightEndLeftSlider;
|
||||
|
@ -559,7 +593,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (heightEndRightSlider == null)
|
||||
{
|
||||
heightEndRightSlider = new SegmentSlider(0, 200, 0, 0.001, shape.getHeightEndRight(), "R Height", "End", "HeightEndRight", true);
|
||||
heightEndRightSlider.setBounds(775, 64, 50, 390);
|
||||
heightEndRightSlider.setBounds(885, 64, 50, 390);
|
||||
heightEndRightSlider.addSliderListener(this);
|
||||
}
|
||||
return heightEndRightSlider;
|
||||
|
@ -606,7 +640,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (marksTextField == null)
|
||||
{
|
||||
marksTextField = new JTextField();
|
||||
marksTextField.setBounds(510, 5, 315, 23);
|
||||
marksTextField.setBounds(510, 5, 425, 23);
|
||||
marksTextField.addKeyListener(new KeyAdapter()
|
||||
{
|
||||
public void keyReleased(KeyEvent e)
|
||||
|
@ -630,7 +664,7 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
if (commentTextField == null)
|
||||
{
|
||||
commentTextField = new JTextField();
|
||||
commentTextField.setBounds(510, 33, 315, 23);
|
||||
commentTextField.setBounds(510, 33, 425, 23);
|
||||
commentTextField.addKeyListener(new KeyAdapter()
|
||||
{
|
||||
public void keyReleased(KeyEvent e)
|
||||
|
@ -752,8 +786,10 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
this.getEndTangentSlider().setValue(shape.getProfilEndTangent());
|
||||
this.getBankingStartSlider().setValue(shape.getBankingStart());
|
||||
this.getBankingEndSlider().setValue(shape.getBankingEnd());
|
||||
this.getHeightStartSlider().setValue(shape.getHeightStart());
|
||||
this.getHeightStartLeftSlider().setValue(shape.getHeightStartLeft());
|
||||
this.getHeightStartRightSlider().setValue(shape.getHeightStartRight());
|
||||
this.getHeightEndSlider().setValue(shape.getHeightEnd());
|
||||
this.getHeightEndLeftSlider().setValue(shape.getHeightEndLeft());
|
||||
this.getHeightEndRightSlider().setValue(shape.getHeightEndRight());
|
||||
this.getProfileStepsSlider().setValue(shape.getProfilSteps());
|
||||
|
@ -917,6 +953,82 @@ public class SegmentEditorDlg extends JDialog implements SliderListener
|
|||
dirty = true;
|
||||
}
|
||||
|
||||
public void checkBoxChanged(SegmentSlider slider)
|
||||
{
|
||||
if (slider.getSection().equals("Height") && slider.getAttr().equals("Start"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightStartLeftSlider.getValue()))
|
||||
{
|
||||
heightStartLeftSlider.setValue(Double.NaN);
|
||||
}
|
||||
if (!Double.isNaN(heightStartRightSlider.getValue()))
|
||||
{
|
||||
heightStartRightSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (slider.getSection().equals("L Height") && slider.getAttr().equals("Start"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightStartSlider.getValue()))
|
||||
{
|
||||
slider.setValue(heightStartSlider.getValue());
|
||||
heightStartSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (slider.getSection().equals("R Height") && slider.getAttr().equals("Start"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightStartSlider.getValue()))
|
||||
{
|
||||
slider.setValue(heightStartSlider.getValue());
|
||||
heightStartSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (slider.getSection().equals("Height") && slider.getAttr().equals("End"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightEndLeftSlider.getValue()))
|
||||
{
|
||||
heightEndLeftSlider.setValue(Double.NaN);
|
||||
}
|
||||
if (!Double.isNaN(heightEndRightSlider.getValue()))
|
||||
{
|
||||
heightEndRightSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (slider.getSection().equals("L Height") && slider.getAttr().equals("End"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightEndSlider.getValue()))
|
||||
{
|
||||
slider.setValue(heightEndSlider.getValue());
|
||||
heightEndSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (slider.getSection().equals("R Height") && slider.getAttr().equals("End"))
|
||||
{
|
||||
if (slider.isCheckBoxSelected())
|
||||
{
|
||||
if (!Double.isNaN(heightEndSlider.getValue()))
|
||||
{
|
||||
slider.setValue(heightEndSlider.getValue());
|
||||
heightEndSlider.setValue(Double.NaN);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void processWindowEvent(WindowEvent e)
|
||||
{
|
||||
super.processWindowEvent(e);
|
||||
|
|
|
@ -1251,4 +1251,7 @@ public class SegmentSideProperties extends JPanel implements SliderListener
|
|||
parent.update();
|
||||
}
|
||||
|
||||
public void checkBoxChanged(SegmentSlider slider)
|
||||
{
|
||||
}
|
||||
} // @jve:decl-index=0:visual-constraint="42,-30"
|
||||
|
|
|
@ -360,6 +360,16 @@ public class SegmentSlider extends JPanel
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isCheckBoxSelected()
|
||||
{
|
||||
return checkBox.isSelected();
|
||||
}
|
||||
|
||||
public void setCheckBoxSelected(boolean state)
|
||||
{
|
||||
checkBox.setSelected(state);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the method.
|
||||
*/
|
||||
|
@ -529,6 +539,19 @@ public class SegmentSlider extends JPanel
|
|||
}
|
||||
}
|
||||
|
||||
private void checkboxChanged()
|
||||
{
|
||||
if (sliderListeners != null)
|
||||
{
|
||||
Vector<SliderListener> listeners = sliderListeners;
|
||||
int count = listeners.size();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
listeners.elementAt(i).checkBoxChanged(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** *** Inner class SliderLink****** */
|
||||
class SliderLink
|
||||
{
|
||||
|
@ -565,6 +588,8 @@ public class SegmentSlider extends JPanel
|
|||
|
||||
public void checkBoxChanged()
|
||||
{
|
||||
checkboxChanged();
|
||||
|
||||
double oldValue = value;
|
||||
if (checkBox.isSelected())
|
||||
{
|
||||
|
|
|
@ -29,4 +29,5 @@ package gui.segment;
|
|||
public interface SliderListener
|
||||
{
|
||||
public void sliderChanged(SegmentSlider slider);
|
||||
public void checkBoxChanged(SegmentSlider slider);
|
||||
}
|
||||
|
|
|
@ -924,28 +924,13 @@ public class XmlReader
|
|||
|
||||
shape.setSurface(getAttrStrValue(seg, "surface"));
|
||||
|
||||
double z = getAttrNumValue(seg, "z start", "m");
|
||||
if (Double.isNaN(z))
|
||||
{
|
||||
shape.setHeightStartLeft(getAttrNumValue(seg, "z start left", "m"));
|
||||
shape.setHeightStartRight(getAttrNumValue(seg, "z start right", "m"));
|
||||
}
|
||||
else
|
||||
{
|
||||
shape.setHeightStartLeft(z);
|
||||
shape.setHeightStartRight(z);
|
||||
}
|
||||
z = getAttrNumValue(seg, "z end", "m");
|
||||
if (Double.isNaN(z))
|
||||
{
|
||||
shape.setHeightEndLeft(getAttrNumValue(seg, "z end left", "m"));
|
||||
shape.setHeightEndRight(getAttrNumValue(seg, "z end right", "m"));
|
||||
}
|
||||
else
|
||||
{
|
||||
shape.setHeightEndLeft(z);
|
||||
shape.setHeightEndRight(z);
|
||||
}
|
||||
shape.setHeightStart(getAttrNumValue(seg, "z start", "m"));
|
||||
shape.setHeightStartLeft(getAttrNumValue(seg, "z start left", "m"));
|
||||
shape.setHeightStartRight(getAttrNumValue(seg, "z start right", "m"));
|
||||
|
||||
shape.setHeightEnd(getAttrNumValue(seg, "z end", "m"));
|
||||
shape.setHeightEndLeft(getAttrNumValue(seg, "z end left", "m"));
|
||||
shape.setHeightEndRight(getAttrNumValue(seg, "z end right", "m"));
|
||||
|
||||
shape.setGrade(getAttrNumValue(seg, "grade", "%"));
|
||||
shape.setBankingStart(getAttrNumValue(seg, "banking start", "deg"));
|
||||
|
|
|
@ -303,28 +303,15 @@ public class XmlWriter
|
|||
}
|
||||
addContent(segment, "marks", ((Curve) shape).getMarks());
|
||||
}
|
||||
if (!Double.isNaN(shape.getHeightStartLeft()) &&
|
||||
!Double.isNaN(shape.getHeightStartRight()) &&
|
||||
shape.getHeightStartLeft() == shape.getHeightStartRight())
|
||||
{
|
||||
addContent(segment, "z start", "m", shape.getHeightStartLeft());
|
||||
}
|
||||
else
|
||||
{
|
||||
addContent(segment, "z start left", "m", shape.getHeightStartLeft());
|
||||
addContent(segment, "z start right", "m", shape.getHeightStartRight());
|
||||
}
|
||||
if (!Double.isNaN(shape.getHeightEndLeft()) &&
|
||||
!Double.isNaN(shape.getHeightEndRight()) &&
|
||||
shape.getHeightEndLeft() == shape.getHeightEndRight())
|
||||
{
|
||||
addContent(segment, "z end", "m", shape.getHeightEndLeft());
|
||||
}
|
||||
else
|
||||
{
|
||||
addContent(segment, "z end left", "m", shape.getHeightEndLeft());
|
||||
addContent(segment, "z end right", "m", shape.getHeightEndRight());
|
||||
}
|
||||
|
||||
addContent(segment, "z start", "m", shape.getHeightStart());
|
||||
addContent(segment, "z start left", "m", shape.getHeightStartLeft());
|
||||
addContent(segment, "z start right", "m", shape.getHeightStartRight());
|
||||
|
||||
addContent(segment, "z end", "m", shape.getHeightEnd());
|
||||
addContent(segment, "z end left", "m", shape.getHeightEndLeft());
|
||||
addContent(segment, "z end right", "m", shape.getHeightEndRight());
|
||||
|
||||
addContent(segment, "grade", "%", shape.getGrade());
|
||||
addContent(segment, "banking start", "deg", shape.getBankingStart());
|
||||
addContent(segment, "banking end", "deg", shape.getBankingEnd());
|
||||
|
|
|
@ -34,7 +34,7 @@ public class Properties
|
|||
private static Properties instance = new Properties();
|
||||
private Vector<ActionListener> propertiesListeners = new Vector<ActionListener>();
|
||||
public final String title = "sd2-trackeditor";
|
||||
public final String version = "1.3.38";
|
||||
public final String version = "1.4.0";
|
||||
private String path;
|
||||
|
||||
private double imageScale = 1;
|
||||
|
|
|
@ -64,8 +64,11 @@ public class Segment implements Cloneable
|
|||
protected double length = Double.NaN;
|
||||
protected String surface = null;
|
||||
|
||||
protected double heightStart = Double.NaN;
|
||||
protected double heightStartLeft = Double.NaN;
|
||||
protected double heightStartRight = Double.NaN;
|
||||
|
||||
protected double heightEnd = Double.NaN;
|
||||
protected double heightEndLeft = Double.NaN;
|
||||
protected double heightEndRight = Double.NaN;
|
||||
|
||||
|
@ -121,8 +124,10 @@ public class Segment implements Cloneable
|
|||
comment = segment.comment;
|
||||
length = segment.length;
|
||||
surface = segment.surface;
|
||||
heightStart = segment.heightStart;
|
||||
heightStartLeft = segment.heightStartLeft;
|
||||
heightStartRight = segment.heightStartRight;
|
||||
heightEnd = segment.heightEnd;
|
||||
heightEndLeft = segment.heightEndLeft;
|
||||
heightEndRight = segment.heightEndRight;
|
||||
grade = segment.grade;
|
||||
|
@ -364,6 +369,15 @@ public class Segment implements Cloneable
|
|||
{
|
||||
}
|
||||
|
||||
public double getHeightStart()
|
||||
{
|
||||
return heightStart;
|
||||
}
|
||||
public void setHeightStart(double heightStart)
|
||||
{
|
||||
this.heightStart = heightStart;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the heightStartLeft.
|
||||
*/
|
||||
|
@ -394,6 +408,16 @@ public class Segment implements Cloneable
|
|||
{
|
||||
this.heightStartRight = heightStartRight;
|
||||
}
|
||||
|
||||
public double getHeightEnd()
|
||||
{
|
||||
return heightEnd;
|
||||
}
|
||||
public void setHeightEnd(double heightEnd)
|
||||
{
|
||||
this.heightEnd = heightEnd;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the heightEndLeft.
|
||||
*/
|
||||
|
@ -718,8 +742,10 @@ public class Segment implements Cloneable
|
|||
s.comment = this.comment;
|
||||
s.length = this.length;
|
||||
s.surface = this.surface;
|
||||
s.heightStart = this.heightStart;
|
||||
s.heightStartLeft = this.heightStartLeft;
|
||||
s.heightStartRight = this.heightStartRight;
|
||||
s.heightEnd = this.heightEnd;
|
||||
s.heightEndLeft = this.heightEndLeft;
|
||||
s.heightEndRight = this.heightEndRight;
|
||||
s.grade = this.grade;
|
||||
|
@ -1709,6 +1735,13 @@ public class Segment implements Cloneable
|
|||
public void inheritProperties(Segment previousShape)
|
||||
{
|
||||
setSurface(previousShape.getSurface());
|
||||
|
||||
if (!Double.isNaN(previousShape.getHeightEnd()))
|
||||
{
|
||||
setHeightStart(previousShape.getHeightEnd());
|
||||
setHeightEnd(previousShape.getHeightEnd());
|
||||
}
|
||||
|
||||
if (!Double.isNaN(previousShape.getHeightEndLeft()))
|
||||
{
|
||||
setHeightStartLeft(previousShape.getHeightEndLeft());
|
||||
|
|
Loading…
Reference in New Issue