}
public HelpNode getHelp(){
HelpNode rootNode = new HelpNode();
rootNode.addHelpNode(new HelpNode("Help on JSynoptic", builtinHelp.getURLValue("welcome")));
// General
HelpNode overviewNode = new HelpNode("Overview", builtinHelp.getURLValue("generalFeature"));
overviewNode.addHelpNode(new HelpNode("How to launch JSynoptic ?", builtinHelp.getURLValue("generalFeature_running")));
overviewNode.addHelpNode(new HelpNode("First steps with JSynoptic...", builtinHelp.getURLValue("generalFeature_composition")));
overviewNode.addHelpNode(new HelpNode("Extending JSynoptic with plugins", builtinHelp.getURLValue("generalFeature_extending")));
rootNode.addHelpNode(overviewNode);
//File features
HelpNode fileNode = new HelpNode("File features", builtinHelp.getURLValue("fileFeature"));
fileNode.addHelpNode(new HelpNode("Create a new sheet", builtinHelp.getURLValue("fileFeature_create")));
fileNode.addHelpNode(new HelpNode("Open files", builtinHelp.getURLValue("fileFeature_open")));
fileNode.addHelpNode(new HelpNode("Close current sheet", builtinHelp.getURLValue("fileFeature_close")));
fileNode.addHelpNode(new HelpNode("Close all sheets", builtinHelp.getURLValue("fileFeature_closeAll")));
fileNode.addHelpNode(new HelpNode("Refresh all sheets", builtinHelp.getURLValue("fileFeature_refreshAll")));
fileNode.addHelpNode(new HelpNode("Save current sheet", builtinHelp.getURLValue("fileFeature_save")));
fileNode.addHelpNode(new HelpNode("Save all", builtinHelp.getURLValue("fileFeature_save","saveAll")));
HelpNode exportNode = new HelpNode("Export sheet", builtinHelp.getURLValue("fileFeature_export"));
exportNode.addHelpNode(new HelpNode("Export into .zip archive", builtinHelp.getURLValue("exportFeature")));
fileNode.addHelpNode(exportNode);
fileNode.addHelpNode(new HelpNode("Sheet view...", builtinHelp.getURLValue("fileFeature_sheetView")));
fileNode.addHelpNode(new HelpNode("Print current sheet", builtinHelp.getURLValue("fileFeature_print")));
fileNode.addHelpNode(new HelpNode("Generate current sheet image", builtinHelp.getURLValue("fileFeature_generateImage")));
fileNode.addHelpNode(new HelpNode("Snapshot", builtinHelp.getURLValue("fileFeature_snapshot")));
fileNode.addHelpNode(new HelpNode("Display sheet information", builtinHelp.getURLValue("fileFeature_sid")));
fileNode.addHelpNode(new HelpNode("Exit from JSynoptic", builtinHelp.getURLValue("fileFeature_exit")));
rootNode.addHelpNode(fileNode);
// Editing
HelpNode efHelpNode = new HelpNode("Editing features", builtinHelp.getURLValue("editingFeature"));
efHelpNode.addHelpNode(new HelpNode("Create a shape", builtinHelp.getURLValue("editingFeature_create")));
efHelpNode.addHelpNode(new HelpNode("Select shapes", builtinHelp.getURLValue("editingFeature_select")));
efHelpNode.addHelpNode(new HelpNode("Undo, redo an action", builtinHelp.getURLValue("editingFeature_undo")));
efHelpNode.addHelpNode(new HelpNode("Cut, paste, copy or remove", builtinHelp.getURLValue("editingFeature_cut")));
efHelpNode.addHelpNode(new HelpNode("Resize selected shapes", builtinHelp.getURLValue("editingFeature_resize")));
efHelpNode.addHelpNode(new HelpNode("Move shapes", builtinHelp.getURLValue("editingFeature_move")));
efHelpNode.addHelpNode(new HelpNode("Group shapes", builtinHelp.getURLValue("editingFeature_group")));
efHelpNode.addHelpNode(new HelpNode("Order shapes", builtinHelp.getURLValue("editingFeature_order")));
efHelpNode.addHelpNode(new HelpNode("Align", builtinHelp.getURLValue("editingFeature_align")));
efHelpNode.addHelpNode(new HelpNode("Distribute", builtinHelp.getURLValue("editingFeature_distribute")));
efHelpNode.addHelpNode(new HelpNode("Display grid", builtinHelp.getURLValue("editingFeature_grid")));
efHelpNode.addHelpNode(new HelpNode("Ajust a diagram", builtinHelp.getURLValue("editingFeature_ajust")));
efHelpNode.addHelpNode(new HelpNode("Set background color", builtinHelp.getURLValue("editingFeature_backgroundColor")));
rootNode.addHelpNode(efHelpNode);
// Data sources
HelpNode dsHelpNode = new HelpNode("Data sources features", builtinHelp.getURLValue("dsGeneralFeature"));
HelpNode dsBasic = new HelpNode("Data source basic features", builtinHelp.getURLValue("dsGeneralFeature_basicFeatures"));
dsBasic.addHelpNode(new HelpNode("Data source : a structure to hold information...", builtinHelp.getURLValue("dsGeneralFeature_basicFeatures","holdInformation")));
dsBasic.addHelpNode(new HelpNode("Source tree", builtinHelp.getURLValue("dsGeneralFeature_basicFeatures","tree")));
dsBasic.addHelpNode(new HelpNode("Display data source information", builtinHelp.getURLValue("dsGeneralFeature_basicFeatures","information")));
dsBasic.addHelpNode(new HelpNode("Alias a data source", builtinHelp.getURLValue("dsGeneralFeature_basicFeatures","alias")));
dsHelpNode.addHelpNode(dsBasic);
dsHelpNode.addHelpNode(new HelpNode("Data source collection", builtinHelp.getURLValue("dsGeneralFeature_collection")));
dsHelpNode.addHelpNode(new HelpNode("Dynamic data source", builtinHelp.getURLValue("dsGeneralFeature_dynamic")));
dsHelpNode.addHelpNode(new HelpNode("Asynchronous data source", builtinHelp.getURLValue("dsGeneralFeature_asynchronous")));
HelpNode dsExpr = new HelpNode("Mathematical expression", builtinHelp.getURLValue("dsGeneralFeature_expressions"));
dsExpr.addHelpNode(new HelpNode("Create/Update a mathematical expression", builtinHelp.getURLValue("dsGeneralFeature_expressions","expWrite")));
dsExpr.addHelpNode(new HelpNode("What can be used in a such expression ?", builtinHelp.getURLValue("dsGeneralFeature_expressions","expOperators")));
dsHelpNode.addHelpNode(dsExpr);
HelpNode dsTemp = new HelpNode("Data source templates", builtinHelp.getURLValue("dsGeneralFeature_templates"));
dsTemp.addHelpNode(new HelpNode("Static or dynamic template", builtinHelp.getURLValue("dsGeneralFeature_templates","tempStatic")));
dsTemp.addHelpNode(new HelpNode("Create a range template", builtinHelp.getURLValue("dsGeneralFeature_templates","tempRange")));
HelpNode dsRandom = new HelpNode("Create a random template", builtinHelp.getURLValue("dsGeneralFeature_templates","tempRandom"));
dsTemp.addHelpNode(dsRandom);
dsRandom.addHelpNode(new HelpNode("Uniform", builtinHelp.getURLValue("dsGeneralFeature_templates","uniform")));
dsRandom.addHelpNode(new HelpNode("Gaussian", builtinHelp.getURLValue("dsGeneralFeature_templates","gaussian")));
dsHelpNode.addHelpNode(dsTemp);
//Merge of data
HelpNode dsMerge = new HelpNode("Merge of data", builtinHelp.getURLValue("mergeDataSourcesFeature"));
HelpNode dsTerm = new HelpNode("Terminology", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology"));
dsMerge.addHelpNode(dsTerm);
dsTerm.addHelpNode(new HelpNode("Time formats", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology_timeFormat")));
dsTerm.addHelpNode(new HelpNode("Synchronous,asynchronous data", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology_asynchronousOrSynchronousData")));
HelpNode dsSyncrhMerge = new HelpNode("Synchronous,asynchronous merge", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology_synchronousOrasynchronousMerge"));
dsTerm.addHelpNode(dsSyncrhMerge);
dsSyncrhMerge.addHelpNode(new HelpNode("Asynchronous merge", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology_synchronousOrasynchronousMerge","asynchronousMerge")));
HelpNode dsSMerge = new HelpNode("Synchronous merge", builtinHelp.getURLValue("mergeDataSourcesFeature_terminology_synchronousOrasynchronousMerge","synchronousMerge"));
dsSyncrhMerge.addHelpNode(dsSMerge);
dsSMerge.addHelpNode(new HelpNode("0-order interpolation", builtinHelp.getURLValue("mergeDataSourcesFeature_zeroOrderInterpolation")));
dsSMerge.addHelpNode(new HelpNode("1-order interpolation", builtinHelp.getURLValue("mergeDataSourcesFeature_oneOrderInterpolation")));
HelpNode dsMergeGuide = new HelpNode("User guide for data merge", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide"));
dsMerge.addHelpNode(dsMergeGuide);
dsMergeGuide.addHelpNode(new HelpNode("1. Specify the name and the kind of merge collection", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide_collectionPage")));
dsMergeGuide.addHelpNode(new HelpNode("2. Settings related to merge collection", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide_collectionOptionPage")));
dsMergeGuide.addHelpNode(new HelpNode("3. Add a data or a collection to merge collection", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide_addDataPage")));
dsMergeGuide.addHelpNode(new HelpNode("4. Settings related to added data", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide_addDataOptionPage")));
dsMergeGuide.addHelpNode(new HelpNode("5. Terminate or add other data", builtinHelp.getURLValue("mergeDataSourcesFeature_userGuide_finishPage")));
dsHelpNode.addHelpNode(dsMerge);
rootNode.addHelpNode(dsHelpNode);
// Mapper Features
HelpNode mapperNode = new HelpNode("Mappers features", builtinHelp.getURLValue("mapper"));
mapperNode.addHelpNode(new HelpNode("Basic features about mappers", builtinHelp.getURLValue("mapper_definition")));
mapperNode.addHelpNode(new HelpNode("Create a mapper for a shape property", builtinHelp.getURLValue("mapper_create")));
mapperNode.addHelpNode(new HelpNode("Modify a mapper", builtinHelp.getURLValue("mapper_modify")));
mapperNode.addHelpNode(new HelpNode("Duplicate a mapper", builtinHelp.getURLValue("mapper_duplicate")));
mapperNode.addHelpNode(new HelpNode("Delete a mapper", builtinHelp.getURLValue("mapper_delete")));
mapperNode.addHelpNode(new HelpNode("Edit mapper properties", builtinHelp.getURLValue("mapper_edit")));
mapperNode.addHelpNode(new HelpNode("How mappers are restored when opening a synoptic file?", builtinHelp.getURLValue("mapper_restoreProcess")));
mapperNode.addHelpNode(new HelpNode("How to apply a mapper change on saved synoptics?", builtinHelp.getURLValue("mapper_applyMapperChanges")));
HelpNode mapperKindNode = new HelpNode("Available kinds of mappers", builtinHelp.getURLValue("mapper_text"));
mapperKindNode.addHelpNode(new HelpNode("Text mapper", builtinHelp.getURLValue("mapper_text")));
mapperKindNode.addHelpNode(new HelpNode("Color mapper", builtinHelp.getURLValue("mapper_color")));
mapperKindNode.addHelpNode(new HelpNode("Image mapper", builtinHelp.getURLValue("mapper_image")));
mapperNode.addHelpNode(mapperKindNode);
rootNode.addHelpNode(mapperNode);
// shapes
HelpNode shapeFeatureNode = new HelpNode("Shape features", builtinHelp.getURLValue("shapes"));
// basic shapes
HelpNode basicShapeNode = new HelpNode("Shapes features", builtinHelp.getURLValue("shapes"));
basicShapeNode.addHelpNode(new HelpNode("Available shapes", builtinHelp.getURLValue("shapes","list")));
basicShapeNode.addHelpNode(new HelpNode("Move a shape", builtinHelp.getURLValue("shapes_move")));
basicShapeNode.addHelpNode(new HelpNode("Resize a shap", builtinHelp.getURLValue("shapes_resize")));
basicShapeNode.addHelpNode(new HelpNode("Apply a rotation or a translation", builtinHelp.getURLValue("shapes_rotation")));
basicShapeNode.addHelpNode(new HelpNode("Link a shape to a file", builtinHelp.getURLValue("shapes_link")));
shapeFeatureNode.addHelpNode(basicShapeNode);
// image shapes
HelpNode imageNode = new HelpNode("Image", builtinHelp.getURLValue("image"));
imageNode.addHelpNode(new HelpNode("Set static image", builtinHelp.getURLValue("image_static")));
imageNode.addHelpNode(new HelpNode("Use image pane to create an image shape", builtinHelp.getURLValue("image_imageFrame")));
imageNode.addHelpNode(new HelpNode("Set dynamic image", builtinHelp.getURLValue("image_dynamic")));
imageNode.addHelpNode(new HelpNode("Display a frame arount imagen", builtinHelp.getURLValue("image_frame")));
imageNode.addHelpNode(new HelpNode("Fit image to shape dimension", builtinHelp.getURLValue("image_fit")));
imageNode.addHelpNode(new HelpNode("Vector-based images", builtinHelp.getURLValue("image_vectorBasedImages")));
shapeFeatureNode.addHelpNode(imageNode);
// Connection shapes
HelpNode connectionNode = new HelpNode("Connection", builtinHelp.getURLValue("connection"));
connectionNode.addHelpNode(new HelpNode("Why using connections ?", builtinHelp.getURLValue("connection_definition")));
connectionNode.addHelpNode(new HelpNode("Create a connection", builtinHelp.getURLValue("connection_create")));
connectionNode.addHelpNode(new HelpNode("Select and move connection", builtinHelp.getURLValue("connection_select")));
connectionNode.addHelpNode(new HelpNode("Connect the connection to a gate", builtinHelp.getURLValue("connection_connect")));
connectionNode.addHelpNode(new HelpNode("Set the connection stroke style", builtinHelp.getURLValue("connection_style")));
connectionNode.addHelpNode(new HelpNode("Display arrows on ends", builtinHelp.getURLValue("connection_arrow")));
shapeFeatureNode.addHelpNode(connectionNode);
// Line shapes
HelpNode lineNode = new HelpNode("Line", builtinHelp.getURLValue("line"));
lineNode.addHelpNode(new HelpNode("Set line by specifing some points coordinates", builtinHelp.getURLValue("line_coordinates")));
lineNode.addHelpNode(new HelpNode("Set line by editing its points in the editor pane", builtinHelp.getURLValue("line_editor")));
lineNode.addHelpNode(new HelpNode("Set line color, stroke and thickness", builtinHelp.getURLValue("line_color")));
lineNode.addHelpNode(new HelpNode("Convert line to polygon", builtinHelp.getURLValue("line_convert")));
shapeFeatureNode.addHelpNode(lineNode);
// Polygon shapes
HelpNode polygonNode = new HelpNode("Polygon", builtinHelp.getURLValue("polygon"));
polygonNode.addHelpNode(new HelpNode("Set a regular polygon", builtinHelp.getURLValue("polygon_regular")));
polygonNode.addHelpNode(new HelpNode("Set a polygon specifing its coordinates", builtinHelp.getURLValue("polygon_set")));
polygonNode.addHelpNode(new HelpNode("Set polygon fill color", builtinHelp.getURLValue("polygon_fill")));
polygonNode.addHelpNode(new HelpNode("Set edges stroke and thickness", builtinHelp.getURLValue("polygon_edge")));
polygonNode.addHelpNode(new HelpNode("Convert polygon to lines", builtinHelp.getURLValue("polygon_convert")));
shapeFeatureNode.addHelpNode(polygonNode);
// Rectangle shape
HelpNode rectangleNode = new HelpNode("Rectangle", builtinHelp.getURLValue("rectangle"));
rectangleNode.addHelpNode(new HelpNode("Set rectangle fill color", builtinHelp.getURLValue("rectangle_fill")));
rectangleNode.addHelpNode(new HelpNode("Display a frame around rectangle", builtinHelp.getURLValue("rectangle_frame")));
rectangleNode.addHelpNode(new HelpNode("Set a variable ratio", builtinHelp.getURLValue("rectangle_variable")));
shapeFeatureNode.addHelpNode(rectangleNode);
// Ellipse shape
HelpNode ellipseNode = new HelpNode("Ellipse", builtinHelp.getURLValue("ellipse"));
ellipseNode.addHelpNode(new HelpNode("Make a full,a pie,a chord or an open ellipse", builtinHelp.getURLValue("ellipse_type")));
ellipseNode.addHelpNode(new HelpNode("Set ellipse fill color", builtinHelp.getURLValue("ellipse_fill")));
ellipseNode.addHelpNode(new HelpNode("Display a frame around ellipse", builtinHelp.getURLValue("ellipse_frame")));
shapeFeatureNode.addHelpNode(ellipseNode);
// Text shape
HelpNode textNode = new HelpNode("Text", builtinHelp.getURLValue("text"));
textNode.addHelpNode(new HelpNode("Edit text with a constant string", builtinHelp.getURLValue("text_static")));
textNode.addHelpNode(new HelpNode("Set frame and background aspects", builtinHelp.getURLValue("text_frame")));
textNode.addHelpNode(new HelpNode("Set text display format", builtinHelp.getURLValue("text_textDisplayFormat")));
textNode.addHelpNode(new HelpNode("Set text size format", builtinHelp.getURLValue("text_textSizeFormat")));
textNode.addHelpNode(new HelpNode("Set a dynamic text", builtinHelp.getURLValue("text_dynamic")));
HelpNode formatTextNode = new HelpNode("Format a dynamic text", builtinHelp.getURLValue("text_dynamicFormat"));
formatTextNode.addHelpNode(new HelpNode("Display data source attributes", builtinHelp.getURLValue("text_dynamicFormat","displayDataSourceAttributes")));
HelpNode formatValueNode = new HelpNode("Format a data source value", builtinHelp.getURLValue("text_dynamicFormat","formatDataSource"));
formatValueNode.addHelpNode(new HelpNode("Maximum number of digits", builtinHelp.getURLValue("text_dynamicFormat","nbDigits")));
formatValueNode.addHelpNode(new HelpNode("Time Zone", builtinHelp.getURLValue("text_dynamicFormat","timeZone")));
formatValueNode.addHelpNode(new HelpNode("Text mapper", builtinHelp.getURLValue("text_dynamicFormat","textMapper")));
formatTextNode.addHelpNode(formatValueNode);
textNode.addHelpNode(formatTextNode);
// Printf
HelpNode printfNode = new HelpNode("How to use printf format ?", builtinHelp.getURLValue("printfFormat"));
printfNode.addHelpNode(new HelpNode("Printf Syntax", builtinHelp.getURLValue("printfFormat_printfSyntax")));
printfNode.addHelpNode(new HelpNode("Escape Sequences", builtinHelp.getURLValue("printfFormat_escapeSequences")));
printfNode.addHelpNode(new HelpNode("Conversion Specifications", builtinHelp.getURLValue("printfFormat_conversionSpecifications")));
printfNode.addHelpNode(new HelpNode("Flag Characters", builtinHelp.getURLValue("printfFormat_flagCharacters")));
printfNode.addHelpNode(new HelpNode("Conversion Characters", builtinHelp.getURLValue("printfFormat_conversionCharacters")));
formatValueNode.addHelpNode(printfNode);
shapeFeatureNode.addHelpNode(textNode);
// Text array shapes
HelpNode textArrayNode = new HelpNode("Text array", builtinHelp.getURLValue("textArray"));
textArrayNode.addHelpNode(new HelpNode("Add a new cell", builtinHelp.getURLValue("textArray_add")));
textArrayNode.addHelpNode(new HelpNode("Delete a cell", builtinHelp.getURLValue("textArray_delete")));
textArrayNode.addHelpNode(new HelpNode("Set cell properties", builtinHelp.getURLValue("textArray_cell")));
textArrayNode.addHelpNode(new HelpNode("Use a unique font for the whose array", builtinHelp.getURLValue("textArray_uniqueFont")));
shapeFeatureNode.addHelpNode(textArrayNode);
// History text shapes
HelpNode textHistoryNode = new HelpNode("Text history", builtinHelp.getURLValue("textHistory"));
textHistoryNode.addHelpNode(new HelpNode("Set number of past values displayed", builtinHelp.getURLValue("textHistory","number")));
shapeFeatureNode.addHelpNode(textHistoryNode);
// Automaton shapes
HelpNode automatonNode = new HelpNode("Automaton", builtinHelp.getURLValue("automaton"));
automatonNode.addHelpNode(new HelpNode("What is an automaton ?", builtinHelp.getURLValue("automaton_definition")));
automatonNode.addHelpNode(new HelpNode("Set initial number of rows and columns", builtinHelp.getURLValue("automaton_number")));
automatonNode.addHelpNode(new HelpNode("Set initial active cell position", builtinHelp.getURLValue("automaton_active")));
automatonNode.addHelpNode(new HelpNode("Set the source reference", builtinHelp.getURLValue("automaton_source")));
HelpNode assoNode = new HelpNode("Create an association", builtinHelp.getURLValue("automaton_association"));
assoNode.addHelpNode(new HelpNode("Set association expression", builtinHelp.getURLValue("automaton_association","expression")));
assoNode.addHelpNode(new HelpNode("Delete an association", builtinHelp.getURLValue("automaton_association","delete")));
assoNode.addHelpNode(new HelpNode("Change association order", builtinHelp.getURLValue("automaton_association","order")));
assoNode.addHelpNode(new HelpNode("Set association list of actions", builtinHelp.getURLValue("automaton_association","list")));
automatonNode.addHelpNode(assoNode);
HelpNode actionNode = new HelpNode("Create an action", builtinHelp.getURLValue("automaton_action"));
actionNode.addHelpNode(new HelpNode("Set association name", builtinHelp.getURLValue("automaton_action","nameAss")));
actionNode.addHelpNode(new HelpNode("Add an action", builtinHelp.getURLValue("automaton_action","addAction")));
actionNode.addHelpNode(new HelpNode("Change action order", builtinHelp.getURLValue("automaton_action","moveAction")));
actionNode.addHelpNode(new HelpNode("Delete an action", builtinHelp.getURLValue("automaton_action","deleteAction")));
automatonNode.addHelpNode(actionNode);
HelpNode actionEditNode = new HelpNode("Edit an action", builtinHelp.getURLValue("automaton_editAction"));
actionEditNode.addHelpNode(new HelpNode("Set active cell colors", builtinHelp.getURLValue("automaton_editAction","color")));
actionEditNode.addHelpNode(new HelpNode("Move active cell", builtinHelp.getURLValue("automaton_editAction","move")));
actionEditNode.addHelpNode(new HelpNode("Set active cell text", builtinHelp.getURLValue("automaton_editAction","text")));
automatonNode.addHelpNode(actionEditNode);
shapeFeatureNode.addHelpNode(automatonNode);
// Bar shapes
HelpNode barNode = new HelpNode("Bar", builtinHelp.getURLValue("bar"));
barNode.addHelpNode(new HelpNode("What is a bar ?", builtinHelp.getURLValue("bar_definition")));
barNode.addHelpNode(new HelpNode("Attach a data source to the bar", builtinHelp.getURLValue("bar_data")));
HelpNode barEditNode = new HelpNode("Configure bar axis properties", builtinHelp.getURLValue("bar_axisProperties"));
barEditNode.addHelpNode(new HelpNode("Display axis steps on the bar", builtinHelp.getURLValue("bar_axisProperties","axisGrid")));
barEditNode.addHelpNode(new HelpNode("Define axis min, max step", builtinHelp.getURLValue("bar_axisProperties","setMinMax")));
barEditNode.addHelpNode(new HelpNode("Display axis steps on the bar", builtinHelp.getURLValue("bar_axisProperties","autoscaleProperty")));
barEditNode.addHelpNode(new HelpNode("Set Autoscale", builtinHelp.getURLValue("bar_axisProperties","logarithmicScale")));
barEditNode.addHelpNode(new HelpNode("Set floating scale", builtinHelp.getURLValue("bar_axisProperties","floatingScale")));
barEditNode.addHelpNode(new HelpNode("Display axis label", builtinHelp.getURLValue("bar_axisProperties","axisLabel")));
barNode.addHelpNode(barEditNode);
shapeFeatureNode.addHelpNode(barNode);
// Plot shapes
HelpNode plotNode = new HelpNode("Plot", builtinHelp.getURLValue("plot"));
plotNode.addHelpNode(new HelpNode("Which kind of plot may I use ?", builtinHelp.getURLValue("plot_kind")));
HelpNode plotBasicNode = new HelpNode("Basic plot", builtinHelp.getURLValue("plot_basicPlot"));
HelpNode primaryXNode = new HelpNode("Set X axis", builtinHelp.getURLValue("plot_basicPlot","primaryX"));
primaryXNode.addHelpNode(new HelpNode("Set primary X source", builtinHelp.getURLValue("plot_basicPlot","primaryX")));
primaryXNode.addHelpNode(new HelpNode("Set secondary X source", builtinHelp.getURLValue("plot_basicPlot","secondaryX")));
plotBasicNode.addHelpNode(primaryXNode);
HelpNode primaryY = new HelpNode("Add a curve", builtinHelp.getURLValue("plot_basicPlot","primaryY"));
primaryY.addHelpNode(new HelpNode("Add a curve as primary Y", builtinHelp.getURLValue("plot_basicPlot","primaryY")));
primaryY.addHelpNode(new HelpNode("Add a curve as secondary Y", builtinHelp.getURLValue("plot_basicPlot","secondaryY")));
plotBasicNode.addHelpNode(primaryY);
plotBasicNode.addHelpNode(new HelpNode("Drag & drop operation", builtinHelp.getURLValue("plot_basicPlot","dragDrop")));
plotNode.addHelpNode(plotBasicNode);
HelpNode timePlotNode = new HelpNode("Time plot", builtinHelp.getURLValue("plot_timePlot"));
plotNode.addHelpNode(timePlotNode);
HelpNode asyncPlotNode = new HelpNode("Asynchronous plots", builtinHelp.getURLValue("plot_asyncPlot"));
HelpNode asyncPrimaryY = new HelpNode("Add a curve", builtinHelp.getURLValue("plot_asyncPlot","asyncPrimaryY"));
asyncPrimaryY.addHelpNode(new HelpNode("Add a curve as primary Y", builtinHelp.getURLValue("plot_asyncPlot","asyncPrimaryY")));
asyncPrimaryY.addHelpNode(new HelpNode("Add a curve as secondary Y", builtinHelp.getURLValue("plot_asyncPlot","asyncSecondaryY")));
asyncPlotNode.addHelpNode(asyncPrimaryY);
asyncPlotNode.addHelpNode(new HelpNode("Display secondary X axis", builtinHelp.getURLValue("plot_asyncPlot","displaySecX")));
plotNode.addHelpNode(asyncPlotNode);
plotNode.addHelpNode(new HelpNode("Display plot title", builtinHelp.getURLValue("plot_plotTitle")));
HelpNode curve = new HelpNode("Curve", builtinHelp.getURLValue("plot_curve"));
curve.addHelpNode(new HelpNode("Delete a curve", builtinHelp.getURLValue("plot_curve_delete")));
curve.addHelpNode(new HelpNode("Set curve color", builtinHelp.getURLValue("plot_curve_curveColor")));
curve.addHelpNode(new HelpNode("Set curve strocke", builtinHelp.getURLValue("plot_curve_curveStrocke")));
curve.addHelpNode(new HelpNode("Display curve points", builtinHelp.getURLValue("plot_curve_curvePoints")));
curve.addHelpNode(new HelpNode("Display vertical bars", builtinHelp.getURLValue("plot_curve_verticalBars")));
curve.addHelpNode(new HelpNode("Magnetise a curve and display local slope", builtinHelp.getURLValue("plot_curve_magnetise")));
curve.addHelpNode(new HelpNode("Tag a point on curve and display relative coordinates from this point", builtinHelp.getURLValue("plot_curve_tagpoint")));
plotNode.addHelpNode(curve);
HelpNode axis = new HelpNode("Axis", builtinHelp.getURLValue("plot_axis"));
axis.addHelpNode(new HelpNode("Set axis bounds", builtinHelp.getURLValue("plot_axis_axisBounds")));
axis.addHelpNode(new HelpNode("Display axis grid", builtinHelp.getURLValue("plot_axis_axisGrid")));
axis.addHelpNode(new HelpNode("Set autoscale", builtinHelp.getURLValue("plot_axis_autoscaleProperty")));
axis.addHelpNode(new HelpNode("How to define an average steps number when autoscale is performed?", builtinHelp.getURLValue("plot_axis_autoscaleProperty","averageStepsNumber")));
axis.addHelpNode(new HelpNode("Set logarithmic scale", builtinHelp.getURLValue("plot_axis_logarithmicScale")));
axis.addHelpNode(new HelpNode("Set floating scale", builtinHelp.getURLValue("plot_axis_floatingScale")));
axis.addHelpNode(new HelpNode("Display axis label", builtinHelp.getURLValue("plot_axis_axisLabel")));
plotNode.addHelpNode(axis);
HelpNode limit = new HelpNode("Limit", builtinHelp.getURLValue("plot_limit"));
limit.addHelpNode(new HelpNode("Add a limit", builtinHelp.getURLValue("plot_limit_limitAdd")));
limit.addHelpNode(new HelpNode("Delete a limit", builtinHelp.getURLValue("plot_limit_limitDelete")));
limit.addHelpNode(new HelpNode("Set limit name", builtinHelp.getURLValue("plot_limit_limitName")));
limit.addHelpNode(new HelpNode("SSet limit position", builtinHelp.getURLValue("plot_limit_limitPosition")));
limit.addHelpNode(new HelpNode("Set limit color", builtinHelp.getURLValue("plot_limit_limitColor")));
limit.addHelpNode(new HelpNode("Set limit strocke", builtinHelp.getURLValue("plot_limit_limitStrocke")));
plotNode.addHelpNode(limit);
plotNode.addHelpNode(new HelpNode("Read mouse coordinates on plot frames", builtinHelp.getURLValue("plot_mouseCoordinates")));
HelpNode browse = new HelpNode("Browse a plot", builtinHelp.getURLValue("plot_browse"));
browse.addHelpNode(new HelpNode("Fit all", builtinHelp.getURLValue("plot_browse_autoscale")));
browse.addHelpNode(new HelpNode("Autoscale Y axis", builtinHelp.getURLValue("plot_browse_autoscaleY")));
browse.addHelpNode(new HelpNode("Adjust on X axe", builtinHelp.getURLValue("plot_browse_adjustOnX")));
browse.addHelpNode(new HelpNode("Use zoom box", builtinHelp.getURLValue("plot_browse_zoomBox")));
browse.addHelpNode(new HelpNode("Zoom with mouse wheel", builtinHelp.getURLValue("plot_browse_mouseWheel")));
plotNode.addHelpNode(browse);
HelpNode curveInformation = new HelpNode("Curves information", builtinHelp.getURLValue("plot_curveInformation"));
plotNode.addHelpNode(curveInformation);
shapeFeatureNode.addHelpNode(plotNode);
rootNode.addHelpNode(shapeFeatureNode);
// Windows Features
HelpNode windowsNode = new HelpNode("Windows features", builtinHelp.getURLValue("windowsFeature"));
windowsNode.addHelpNode(new HelpNode("Zoom on a sheet", builtinHelp.getURLValue("windowsFeature_zoom")));
windowsNode.addHelpNode(new HelpNode("Close, Close All, Close Other sheets", builtinHelp.getURLValue("windowsFeature_sheetclose")));
windowsNode.addHelpNode(new HelpNode("Change sheet appearance", builtinHelp.getURLValue("windowsFeature_sheetAppearance")));
windowsNode.addHelpNode(new HelpNode("Previous, next selected sheet ", builtinHelp.getURLValue("windowsFeature_previousSelected")));
windowsNode.addHelpNode(new HelpNode("Previous, next created sheet", builtinHelp.getURLValue("windowsFeature_previousCreated")));
rootNode.addHelpNode(windowsNode);
// JSynoptic configuration
HelpNode configurationNode = new HelpNode("JSynoptic configuration", builtinHelp.getURLValue("configurationFile"));
configurationNode.addHelpNode(new HelpNode("Configuration file definition", builtinHelp.getURLValue("configurationFile_configurationFileDefinition")));
configurationNode.addHelpNode(new HelpNode("Edit configuration file", builtinHelp.getURLValue("configurationFile_editconfigurationFile")));
configurationNode.addHelpNode(new HelpNode("Global attributes", builtinHelp.getURLValue("configurationFile_globalAttributes")));
configurationNode.addHelpNode(new HelpNode("Print attributes", builtinHelp.getURLValue("configurationFile_printAttributes")));
HelpNode configuratioShapenNode = new HelpNode("Shape attributes", builtinHelp.getURLValue("configurationFile_shapeAttributes"));
configuratioShapenNode.addHelpNode(new HelpNode("Image attributes", builtinHelp.getURLValue("configurationFile_imageAttributes")));
configuratioShapenNode.addHelpNode(new HelpNode("Text attributes", builtinHelp.getURLValue("configurationFile_textAttributes")));
HelpNode plotAttributes =new HelpNode("Plot attributes", builtinHelp.getURLValue("configurationFile_plotAttributes"));
plotAttributes.addHelpNode(new HelpNode("Curve legend attributes", builtinHelp.getURLValue("configurationFile_curveLegendAttributes")));
configuratioShapenNode.addHelpNode(plotAttributes);
configurationNode.addHelpNode(configuratioShapenNode);
rootNode.addHelpNode(configurationNode);
// Miscalleneous Features
HelpNode miscHelpNode = new HelpNode("Miscalleneous features", builtinHelp.getURLValue("miscallaneousFeature"));
miscHelpNode.addHelpNode(new HelpNode("Choose language", builtinHelp.getURLValue("miscallaneousFeature_language")));
miscHelpNode.addHelpNode(new HelpNode("How to display problems occured upon JSynoptic operations?", builtinHelp.getURLValue("miscallaneousFeature_displayProblems")));
miscHelpNode.addHelpNode(new HelpNode("Choose a look for JSynoptic", builtinHelp.getURLValue("miscallaneousFeature_look")));
miscHelpNode.addHelpNode(new HelpNode("Find plugins", builtinHelp.getURLValue("miscallaneousFeature_plugins")));
miscHelpNode.addHelpNode(new HelpNode("JSynoptic command line options", builtinHelp.getURLValue("miscallaneousFeature_command")));
miscHelpNode.addHelpNode(new HelpNode("How to launch JSynoptic on no-edit mode?", builtinHelp.getURLValue("miscallaneousFeature_noEdit")));
rootNode.addHelpNode(miscHelpNode);
// UI Features
HelpNode uiHelpNode = new HelpNode("User interface features", builtinHelp.getURLValue("uiFeature"));
HelpNode menuBarNode = new HelpNode("Menu bar", builtinHelp.getURLValue("menuBar"));
menuBarNode.addHelpNode(new HelpNode("File menu", builtinHelp.getURLValue("menuBar_fileMenu")));
menuBarNode.addHelpNode(new HelpNode("Edit menu", builtinHelp.getURLValue("menuBar_editMenu")));
menuBarNode.addHelpNode(new HelpNode("Tools menu", builtinHelp.getURLValue("menuBar_toolsMenu")));
menuBarNode.addHelpNode(new HelpNode("Transformation menu", builtinHelp.getURLValue("menuBar_transformationMenu")));
menuBarNode.addHelpNode(new HelpNode("Windows menu", builtinHelp.getURLValue("menuBar_windowsMenu")));
menuBarNode.addHelpNode(new HelpNode("Help menu", builtinHelp.getURLValue("menuBar_HelpMenu")));
uiHelpNode.addHelpNode(menuBarNode);
HelpNode toolsBarNode = new HelpNode("Tools bar", builtinHelp.getURLValue("toolsBar"));
uiHelpNode.addHelpNode(toolsBarNode);
HelpNode statusBarNode = new HelpNode("Status bar", builtinHelp.getURLValue("statusBar"));
uiHelpNode.addHelpNode(statusBarNode);
HelpNode shortKeyNode = new HelpNode("Short keys bar", builtinHelp.getURLValue("shortKeys"));
uiHelpNode.addHelpNode(shortKeyNode);
uiHelpNode.addHelpNode(new HelpNode("Pop up menu", builtinHelp.getURLValue("popupMenu")));
uiHelpNode.addHelpNode(new HelpNode("Dialog box properties", builtinHelp.getURLValue("dialogBoxProperties")));
HelpNode panesNode = new HelpNode("Panes", builtinHelp.getURLValue("panes"));
panesNode.addHelpNode(new HelpNode("Editor pane", builtinHelp.getURLValue("panes_editorPane")));
panesNode.addHelpNode(new HelpNode("Source pane", builtinHelp.getURLValue("panes_sourcePane")));
panesNode.addHelpNode(new HelpNode("Shape pane", builtinHelp.getURLValue("panes_shapePane")));
panesNode.addHelpNode(new HelpNode("Image pane", builtinHelp.getURLValue("panes_imagePane")));
uiHelpNode.addHelpNode(panesNode);
HelpNode miscUINode = new HelpNode("Miscallaneaous User interface", builtinHelp.getURLValue("miscUI"));
miscUINode.addHelpNode(new HelpNode("Color chooser", builtinHelp.getURLValue("miscUI","colorChooser")));
uiHelpNode.addHelpNode(panesNode);
uiHelpNode.addHelpNode(new HelpNode("Menu bar", builtinHelp.getURLValue("menuBar")));
rootNode.addHelpNode(uiHelpNode);
return rootNode;
}