first commit
This commit is contained in:
178
scripts/java/FGClient/src/FGFSDemo.java
Normal file
178
scripts/java/FGClient/src/FGFSDemo.java
Normal file
@@ -0,0 +1,178 @@
|
||||
// FGFSDemo.java - Simple demo application.
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTabbedPane;
|
||||
|
||||
import org.flightgear.fgfsclient.FGFSConnection;
|
||||
import org.flightgear.fgfsclient.PropertyPage;
|
||||
|
||||
|
||||
/**
|
||||
* Simple GUI demo.
|
||||
*
|
||||
* <p>This demo connects to a running FlightGear process and displays
|
||||
* the current altitude, longitude, and latitude in a GUI window, with
|
||||
* updates every second.</p>
|
||||
*
|
||||
* <p>Usage:</p>
|
||||
*
|
||||
* <blockquote><pre>
|
||||
* fgfs --telnet=9000
|
||||
* java FGFSDemo localhost 9000
|
||||
* </pre></blockquote>
|
||||
*/
|
||||
public class FGFSDemo
|
||||
extends JFrame
|
||||
{
|
||||
|
||||
public FGFSDemo (String host, int port)
|
||||
throws IOException
|
||||
{
|
||||
super("FlightGear Client Console");
|
||||
|
||||
fgfs = new FGFSConnection(host, port);
|
||||
tabs = new JTabbedPane();
|
||||
pages = new HashMap();
|
||||
|
||||
PropertyPage page = new PropertyPage(fgfs, "Simulation");
|
||||
page.addField("/sim/aircraft", "Aircraft:");
|
||||
page.addField("/sim/startup/airport-id", "Airport ID:");
|
||||
page.addField("/sim/time/gmt", "Current time (GMT):");
|
||||
page.addField("/sim/startup/trim", "Trim on ground (true/false):");
|
||||
page.addField("/sim/sound/audible", "Sound enabled (true/false):");
|
||||
page.addField("/sim/startup/browser-app", "Web browser:");
|
||||
addPage(page);
|
||||
|
||||
page = new PropertyPage(fgfs, "View");
|
||||
page.addField("/sim/view-mode", "View mode:");
|
||||
page.addField("/sim/current-view/field-of-view",
|
||||
"Field of view (deg):");
|
||||
page.addField("/sim/current-view/pitch-offset-deg",
|
||||
"View pitch offset (deg):");
|
||||
page.addField("/sim/current-view/heading-offset-deg",
|
||||
"View heading offset (deg):");
|
||||
addPage(page);
|
||||
|
||||
page = new PropertyPage(fgfs, "Location");
|
||||
page.addField("/position/altitude-ft", "Altitude (ft):");
|
||||
page.addField("/position/longitude-deg", "Longitude (deg):");
|
||||
page.addField("/position/latitude-deg", "Latitude (deg):");
|
||||
page.addField("/orientation/roll-deg", "Roll (deg):");
|
||||
page.addField("/orientation/pitch-deg", "Pitch (deg):");
|
||||
page.addField("/orientation/heading-deg", "Heading (deg):");
|
||||
addPage(page);
|
||||
|
||||
page = new PropertyPage(fgfs, "Weather");
|
||||
page.addField("/environment/wind-from-heading-deg",
|
||||
"Wind direction (deg FROM):");
|
||||
page.addField("/environment/params/base-wind-speed-kt",
|
||||
"Wind speed (kt):");
|
||||
page.addField("/environment/params/gust-wind-speed-kt",
|
||||
"Maximum gust (kt):");
|
||||
page.addField("/environment/wind-from-down-fps",
|
||||
"Updraft (fps):");
|
||||
page.addField("/environment/temperature-degc", "Temperature (degC):");
|
||||
page.addField("/environment/dewpoint-degc", "Dewpoint (degC):");
|
||||
page.addField("/environment/pressure-sea-level-inhg",
|
||||
"Altimeter setting (inHG):");
|
||||
addPage(page);
|
||||
|
||||
page = new PropertyPage(fgfs, "Clouds");
|
||||
page.addField("/environment/clouds/layer[0]/type",
|
||||
"Layer 0 type:");
|
||||
page.addField("/environment/clouds/layer[0]/elevation-ft",
|
||||
"Layer 0 height (ft):");
|
||||
page.addField("/environment/clouds/layer[0]/thickness-ft",
|
||||
"Layer 0 thickness (ft):");
|
||||
page.addField("/environment/clouds/layer[1]/type",
|
||||
"Layer 1 type:");
|
||||
page.addField("/environment/clouds/layer[1]/elevation-ft",
|
||||
"Layer 1 height (ft):");
|
||||
page.addField("/environment/clouds/layer[1]/thickness-ft",
|
||||
"Layer 1 thickness (ft):");
|
||||
page.addField("/environment/clouds/layer[2]/type",
|
||||
"Layer 2 type:");
|
||||
page.addField("/environment/clouds/layer[2]/elevation-ft",
|
||||
"Layer 2 height (ft):");
|
||||
page.addField("/environment/clouds/layer[2]/thickness-ft",
|
||||
"Layer 2 thickness (ft):");
|
||||
page.addField("/environment/clouds/layer[3]/type",
|
||||
"Layer 3 type:");
|
||||
page.addField("/environment/clouds/layer[3]/elevation-ft",
|
||||
"Layer 3 height (ft):");
|
||||
page.addField("/environment/clouds/layer[3]/thickness-ft",
|
||||
"Layer 3 thickness (ft):");
|
||||
page.addField("/environment/clouds/layer[4]/type",
|
||||
"Layer 4 type:");
|
||||
page.addField("/environment/clouds/layer[4]/elevation-ft",
|
||||
"Layer 4 height (ft):");
|
||||
page.addField("/environment/clouds/layer[4]/thickness-ft",
|
||||
"Layer 4 thickness (ft):");
|
||||
addPage(page);
|
||||
|
||||
page = new PropertyPage(fgfs, "Velocities");
|
||||
page.addField("/velocities/airspeed-kt", "Airspeed (kt):");
|
||||
page.addField("/velocities/speed-down-fps", "Descent speed (fps):");
|
||||
addPage(page);
|
||||
|
||||
getContentPane().add(tabs);
|
||||
|
||||
new Thread(new Updater()).start();
|
||||
}
|
||||
|
||||
private void addPage (PropertyPage page)
|
||||
{
|
||||
tabs.add(page.getName(), new JScrollPane(page));
|
||||
pages.put(page.getName(), page);
|
||||
}
|
||||
|
||||
private FGFSConnection fgfs;
|
||||
private JTabbedPane tabs;
|
||||
private HashMap pages;
|
||||
|
||||
public static void main (String args[])
|
||||
throws Exception
|
||||
{
|
||||
if (args.length != 2) {
|
||||
System.err.println("Usage: FGFSDemo <host> <port>");
|
||||
System.exit(2);
|
||||
}
|
||||
FGFSDemo gui = new FGFSDemo(args[0], Integer.parseInt(args[1]));
|
||||
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
gui.pack();
|
||||
gui.show();
|
||||
}
|
||||
|
||||
class Updater
|
||||
implements Runnable
|
||||
{
|
||||
|
||||
public void run ()
|
||||
{
|
||||
while (true) {
|
||||
int index = tabs.getSelectedIndex();
|
||||
if (index > -1) {
|
||||
String name = tabs.getTitleAt(index);
|
||||
PropertyPage page = (PropertyPage)pages.get(name);
|
||||
try {
|
||||
page.update();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// end of FGFSDemo.java
|
||||
Reference in New Issue
Block a user