├── .github
└── workflows
│ └── maven.yml
├── README.md
├── build.xml
├── example.xml
├── examples
├── airmaster
│ ├── airmaster.sav
│ ├── airmaster.xml
│ └── images
│ │ ├── AckAlarmPic.png
│ │ ├── AgrixLogoPic.png
│ │ ├── AgrixPic.png
│ │ ├── AirMasterPic.png
│ │ ├── AirmasterFieldModePic.png
│ │ ├── AirmasterFreeModePic.png
│ │ ├── AirmasterTransportModePic.png
│ │ ├── AlarmInfoPic.png
│ │ ├── AlarmOffPic.png
│ │ ├── AlarmOnPic.png
│ │ ├── ArrowLeftDownPic.png
│ │ ├── ArrowLeftUpPic.png
│ │ ├── ArrowRightDownPic.png
│ │ ├── ArrowRightUpPic.png
│ │ ├── BackPic.png
│ │ ├── CalibrationPic.png
│ │ ├── CancelPic.png
│ │ ├── ChangeSKM2Pic.png
│ │ ├── ChangeSKMPic.png
│ │ ├── ClockwisePic.png
│ │ ├── ClockwiseSmallPic.png
│ │ ├── ConfigurationPic.png
│ │ ├── ContainerLevel0Pic.png
│ │ ├── ContainerLevel1Pic.png
│ │ ├── ContainerLevel2Pic.png
│ │ ├── ContainerLevel3Pic.png
│ │ ├── ContainerLevel4Pic.png
│ │ ├── CounterClockwisePic.png
│ │ ├── CounterClockwiseSmallPic.png
│ │ ├── DownPointDownPic.png
│ │ ├── DownPointUpPic.png
│ │ ├── DragAdjustmentPic.png
│ │ ├── DragDownPic.png
│ │ ├── DragFoldPic.png
│ │ ├── DragUnfoldPic.png
│ │ ├── DragUpPic.png
│ │ ├── DrillFoldPic.png
│ │ ├── DrillUnfoldPic.png
│ │ ├── DrillerEndSectionPic.png
│ │ ├── DrillerFoldedSectionPic.png
│ │ ├── DrillerLeftSectionPic.png
│ │ ├── DrillerMiddleSectionPic.png
│ │ ├── DrillerRightSectionPic.png
│ │ ├── DrivePic.png
│ │ ├── FreeModePic.png
│ │ ├── FrontAdjPic.png
│ │ ├── GPSPic.png
│ │ ├── HalfRaiseDownPic.png
│ │ ├── HalfRaiseUpPic.png
│ │ ├── HelpPic.png
│ │ ├── LeftMarkerDownPic.png
│ │ ├── LeftMarkerDownPic0.png
│ │ ├── LeftMarkerMiddlePic.png
│ │ ├── LeftRightPic.png
│ │ ├── LeftRightSmallPic.png
│ │ ├── MachinePic.png
│ │ ├── MarkerUpPic.png
│ │ ├── MarkersUpPic.png
│ │ ├── MasterAlarmPic.png
│ │ ├── MiniTramLinePic.png
│ │ ├── NewSeqPic.png
│ │ ├── OkPic.png
│ │ ├── PictureGraphic.png
│ │ ├── PictureGraphic0.png
│ │ ├── PictureGraphic1.png
│ │ ├── Point1Pic.png
│ │ ├── Point2Pic.png
│ │ ├── Point3Pic.png
│ │ ├── PresicionPic.png
│ │ ├── RearAdjPic.png
│ │ ├── ReportPic.png
│ │ ├── RightLeftPic.png
│ │ ├── RightLeftSmallPic.png
│ │ ├── RightMarkerDownPic.png
│ │ ├── RightMarkerDownPic0.png
│ │ ├── RightMarkerMiddlePic.png
│ │ ├── SeqPic.png
│ │ ├── TCPic.png
│ │ ├── TramLineOffPic.png
│ │ ├── TramLineOnPic.png
│ │ ├── TramLinePic.png
│ │ ├── Weight0Pic.png
│ │ ├── Weight1Pic.png
│ │ ├── Weight2Pic.png
│ │ ├── Weight3Pic.png
│ │ ├── WeightLessPic.png
│ │ └── WeightMorePic.png
├── all_objects.xml
├── drive_disp.xml
├── encoding_test.xml
├── harrow
│ ├── harrow.sav
│ ├── harrow.xml
│ └── images
│ │ ├── BlueArrowDownLimit2PIC.png
│ │ ├── BlueArrowDownLimitPIC.png
│ │ ├── BlueArrowDownPIC.png
│ │ ├── BlueArrowDragDownPIC.png
│ │ ├── BlueArrowDragUpDownPIC.png
│ │ ├── BlueArrowDragUpPIC.png
│ │ ├── BlueArrowFoldPIC.png
│ │ ├── BlueArrowGroundPIC.png
│ │ ├── BlueArrowOneDownPIC.png
│ │ ├── BlueArrowOneUpPIC.png
│ │ ├── BlueArrowUnfoldPIC.png
│ │ ├── BlueArrowUpDownPIC.png
│ │ ├── BlueArrowUpLimitPIC.png
│ │ ├── BlueArrowUpPIC.png
│ │ ├── BluePropellerOffPIC.png
│ │ ├── BluePropellerOnOffPIC.png
│ │ ├── BluePropellerOnPIC.png
│ │ ├── GrayArrowOneDownPIC.png
│ │ ├── GrayArrowOneUpPIC.png
│ │ ├── IgnorePIC.png
│ │ ├── PictureGraphic.png
│ │ ├── PotilaPIC.png
│ │ └── ZeroGroundPIC.png
├── mask01
│ ├── images
│ │ ├── picturegraphic0.png
│ │ ├── picturegraphic1.png
│ │ ├── picturegraphic10.png
│ │ ├── picturegraphic11.png
│ │ ├── picturegraphic2.png
│ │ ├── picturegraphic3.png
│ │ ├── picturegraphic4.png
│ │ ├── picturegraphic5.png
│ │ ├── picturegraphic6.png
│ │ ├── picturegraphic7.png
│ │ ├── picturegraphic8.png
│ │ └── picturegraphic9.png
│ ├── mask01.iop
│ └── mask01.xml
├── sprayer
│ ├── images
│ │ ├── AckAlarmPic.png
│ │ ├── AgrixLogoPic.png
│ │ ├── AlarmFlagPic.png
│ │ ├── AlarmPic.png
│ │ ├── ArrowDownPic.png
│ │ ├── ArrowUpPic.png
│ │ ├── AutomaticPic.png
│ │ ├── BackPic.png
│ │ ├── BulbLightPic.png
│ │ ├── BulbPic.png
│ │ ├── CALPic.png
│ │ ├── CalibrationPic.png
│ │ ├── ChangeArrowPic.png
│ │ ├── ChangeSoftKeyPic.png
│ │ ├── ConfigurationPic.png
│ │ ├── DGNPic.png
│ │ ├── DiagnosticsPic.png
│ │ ├── DrivePic.png
│ │ ├── FLWPic.png
│ │ ├── FieldModePic.png
│ │ ├── FreeModePic.png
│ │ ├── FreePic.png
│ │ ├── FullTestPic.png
│ │ ├── GPSPIC.png
│ │ ├── INVALID_NOZZLE_PIC.png
│ │ ├── LeftMarkerOnPic.png
│ │ ├── MainMenuPic.png
│ │ ├── MarkersOffPic.png
│ │ ├── MediumTestPic.png
│ │ ├── OFFPic.png
│ │ ├── PRCNT_GIF.png
│ │ ├── PRSPic.png
│ │ ├── PictureGraphic.png
│ │ ├── PictureGraphic0.png
│ │ ├── PictureGraphic1.png
│ │ ├── PictureGraphic2.png
│ │ ├── QuickTestPic.png
│ │ ├── ReportPic.png
│ │ ├── RightMarkerOnPic.png
│ │ ├── SegmentGIF_1.png
│ │ ├── SprayAdjPic.png
│ │ ├── SprayAutoPic.png
│ │ ├── SprayOffPic.png
│ │ ├── SprayOnPic.png
│ │ ├── StartPic.png
│ │ ├── StopPic.png
│ │ ├── SuperSprayPic.png
│ │ ├── TankPIC.png
│ │ ├── TiltLeftPic.png
│ │ ├── TiltRightPic.png
│ │ ├── TransportModePic.png
│ │ └── TunePic.png
│ ├── sprayer.sav
│ └── sprayer.xml
├── spreader
│ ├── images
│ │ ├── AckAlarmPic.png
│ │ ├── AgrixLogoPic.png
│ │ ├── Alarm6Pic.png
│ │ ├── AlarmInfoPic.png
│ │ ├── Alarm_ON_Pic.png
│ │ ├── AxisPic.png
│ │ ├── BackPic.png
│ │ ├── CalibrationPic.png
│ │ ├── CancelPic.png
│ │ ├── ConfigurationPic.png
│ │ ├── ContainerLevel0Pic.png
│ │ ├── ContainerLevel1Pic.png
│ │ ├── ContainerLevel2Pic.png
│ │ ├── ContainerLevel3Pic.png
│ │ ├── ContainerLevel4Pic.png
│ │ ├── DragDownPic.png
│ │ ├── DragFoldPic.png
│ │ ├── DragUnfoldPic.png
│ │ ├── DragUpPic.png
│ │ ├── Feed_Off_Pic.png
│ │ ├── Feed_On_Pic.png
│ │ ├── Feed_On_Selected_PIc.png
│ │ ├── FrontAdjPic.png
│ │ ├── GPSPic.png
│ │ ├── HelpPic.png
│ │ ├── IMP_HighPic.png
│ │ ├── IMP_LowPic.png
│ │ ├── Impeller_off_Pic.png
│ │ ├── Impeller_on_Pic.png
│ │ ├── Impeller_on_sel_Pic.png
│ │ ├── LVL_FrontPic.png
│ │ ├── LVL_Rear_Pic.png
│ │ ├── LightOffPic.png
│ │ ├── LightPic.png
│ │ ├── Light_isOn_Pic.png
│ │ ├── MasterAlarmPic.png
│ │ ├── MittaritPic.png
│ │ ├── OkPic.png
│ │ ├── PictureGraphic.png
│ │ ├── PictureGraphic0.png
│ │ ├── Point1Pic.png
│ │ ├── Point2Pic.png
│ │ ├── Point3Pic.png
│ │ ├── PresicionPic.png
│ │ ├── RearAdjPic.png
│ │ ├── SeqPic.png
│ │ ├── SideSpreaderOffPic.png
│ │ ├── SideSpreaderPic.png
│ │ ├── Side_On_sel_pic.png
│ │ ├── TCPic.png
│ │ ├── ToolDownPic.png
│ │ ├── ToolUpPic.png
│ │ ├── ViconPic.png
│ │ └── alarm_OFF_Pic.png
│ ├── spreader.sav
│ └── spreader.xml
├── superseed
│ ├── images
│ │ ├── Alarm3Pic.png
│ │ ├── AlarmFlagPic.png
│ │ ├── AlarmPic.png
│ │ ├── BackPic.png
│ │ ├── BulbOffPic.png
│ │ ├── CalibrationPic.png
│ │ ├── ClockwisePic.png
│ │ ├── ClockwiseSmallPic.png
│ │ ├── CounterCWPic.png
│ │ ├── CounterClockwiseSmallPic.png
│ │ ├── FeedAdjustPic.png
│ │ ├── FreePic.png
│ │ ├── GPSPic.png
│ │ ├── HalfRaiseAdjustPic.png
│ │ ├── HalfRaiseDownPic.png
│ │ ├── HalfRaiseUpPic.png
│ │ ├── LeftDown2Pic.png
│ │ ├── LeftMarkerDownPic.png
│ │ ├── LeftRightPic.png
│ │ ├── LeftUp2Pic.png
│ │ ├── LessWeightPic.png
│ │ ├── MainMenuPic.png
│ │ ├── MarkersUpPic.png
│ │ ├── MoreWeightPic.png
│ │ ├── NewSEQPic.png
│ │ ├── NoAlarmPic.png
│ │ ├── PictureGraphic.png
│ │ ├── PictureGraphic0.png
│ │ ├── PictureGraphic1.png
│ │ ├── PictureGraphic2.png
│ │ ├── PictureGraphic3.png
│ │ ├── PictureGraphic4.png
│ │ ├── PictureGraphic5.png
│ │ ├── PictureGraphic6.png
│ │ ├── Point1Pic.png
│ │ ├── Point2Pic.png
│ │ ├── Point3Pic.png
│ │ ├── PrecisionPic.png
│ │ ├── ReportPic.png
│ │ ├── RightDown2Pic.png
│ │ ├── RightLeftSmallPic.png
│ │ ├── RightMarkerDownPic.png
│ │ ├── RigthUp2Pic.png
│ │ ├── SEQPic.png
│ │ ├── SuperSeedPic.png
│ │ ├── TCPic.png
│ │ ├── TracksOffPic.png
│ │ ├── TracksOnPic.png
│ │ ├── TramLineOffPic.png
│ │ ├── TramLineOnPic.png
│ │ ├── WeightAdjustPic.png
│ │ ├── WeightLess2Pic.png
│ │ └── WeigtMore2Pic.png
│ ├── superseed.sav
│ └── superseed.xml
├── test.xml
└── vama
│ ├── vama.xml
│ ├── vama_export.xml
│ └── vama_test_aux_panel.xml
├── images
├── bunny1.png
├── bunny2.png
├── bunny3.png
├── bunny4.png
├── fill.bmp
├── fly.png
└── simpleBitmap.bmp
├── import
└── images
│ └── README.txt
├── lib
├── idw-gpl.jar
├── resolver.jar
├── serializer.jar
├── xercesImpl.jar
└── xml-apis.jar
├── library.xml
├── manifest.mf
├── manual
├── PoolEditManual150.odt
└── PoolEditManual150.pdf
├── nbproject
├── build-impl.xml
├── genfiles.properties
├── project.properties
└── project.xml
├── screenshot.png
├── src
├── attributetable
│ ├── AttributeTable.java
│ ├── AttributeTableModel.java
│ ├── AttributeTablePopupMenu.java
│ ├── CheckBoxListCellEditor.java
│ ├── FileCellEditor.java
│ └── FileCellRenderer.java
├── color
│ ├── ColorIcon.java
│ └── ColorPalette.java
├── dragndrop
│ └── XMLTransferable.java
├── font
│ └── BitmapFont.java
├── images
│ ├── alarmmask.png
│ ├── archedbargraph.png
│ ├── attributeobjects.png
│ ├── auxiliarycontrolobjects.png
│ ├── auxiliaryfunction.png
│ ├── auxiliaryinput.png
│ ├── button.png
│ ├── check.png
│ ├── command.png
│ ├── container.png
│ ├── datamask.png
│ ├── ellipse.png
│ ├── fillattribute.png
│ ├── fixedbitmap.png
│ ├── font128x128_.png
│ ├── font128x192_.png
│ ├── font12x16.png
│ ├── font12x16_.png
│ ├── font16x16_.png
│ ├── font16x24_.png
│ ├── font24x32_.png
│ ├── font32x32_.png
│ ├── font32x48_.png
│ ├── font48x64_.png
│ ├── font64x64_.png
│ ├── font64x96_.png
│ ├── font6x8.png
│ ├── font6x8_.png
│ ├── font8x12.png
│ ├── font8x12_.png
│ ├── font8x8.png
│ ├── font8x8_.png
│ ├── font96x128_.png
│ ├── fontattribute.png
│ ├── includeobject.png
│ ├── inputattribute.png
│ ├── inputbooleanfield.png
│ ├── inputfieldobjects.png
│ ├── inputlistfield.png
│ ├── inputnumberfield.png
│ ├── inputstringfield.png
│ ├── keyobjects.png
│ ├── language.png
│ ├── line.png
│ ├── linearbargraph.png
│ ├── lineattribute.png
│ ├── macro.png
│ ├── macroobjects.png
│ ├── meter.png
│ ├── nocheck.png
│ ├── numbervariable.png
│ ├── objectpointer.png
│ ├── objectpoolobjects.png
│ ├── outputfieldobjects.png
│ ├── outputgraphicobjects.png
│ ├── outputnumberfield.png
│ ├── outputshapeobjects.png
│ ├── outputstringfield.png
│ ├── picturegraphic.png
│ ├── picturegraphicobjects.png
│ ├── point.png
│ ├── pointerobjects.png
│ ├── polygon.png
│ ├── pooleditlogo.png
│ ├── rectangle.png
│ ├── softkey.png
│ ├── softkeymask.png
│ ├── stringvariable.png
│ ├── toplevelobjects.png
│ ├── variableobjects.png
│ └── workingset.png
├── multidom
│ ├── MultiDOM.java
│ └── SingleDOM.java
├── objecttree
│ ├── ObjectTree.java
│ ├── ObjectTreeCellEditor.java
│ ├── ObjectTreeCellRenderer.java
│ ├── ObjectTreeDragSourceListener.java
│ ├── ObjectTreeDropTargetListener.java
│ └── ObjectTreePopup.java
├── objectview
│ ├── GraphicObjectOperations.java
│ ├── HelpGrid.java
│ ├── LineAttributes.java
│ ├── MouseController.java
│ ├── ObjectOperations.java
│ ├── ObjectView.java
│ ├── ObjectViewPopup.java
│ ├── PointObjectOperations.java
│ └── SelectionRectangle.java
├── pooledit
│ ├── Definitions.java
│ ├── DragLabel.java
│ ├── DynamicView.java
│ ├── FileTools.java
│ ├── Icons.java
│ ├── Main.java
│ ├── PictureConverter.java
│ ├── PoolException.java
│ ├── Tools.java
│ ├── TreeEditPopup.java
│ └── Utils.java
├── poolimporter
│ ├── ByteReader.java
│ ├── CArrayReader.java
│ ├── IOPReader.java
│ ├── JavaTerminalReader.java
│ ├── PointXY.java
│ ├── PoolImportDialog.form
│ ├── PoolImportDialog.java
│ ├── PoolImporter.java
│ ├── RefXY.java
│ ├── VTAbstObj.java
│ └── VTObject.java
├── schema
│ └── iso11783.xsd
├── treemodel
│ ├── XMLTreeModel.java
│ ├── XMLTreeNode.java
│ └── XMLTreeNodeList.java
└── wizard
│ ├── LineTrendGenerator.java
│ ├── LineTrendWizard.form
│ ├── LineTrendWizard.java
│ ├── MeterGenerator.java
│ ├── MeterWizard.form
│ ├── MeterWizard.java
│ ├── TableGenerator.java
│ ├── TableWizard.form
│ ├── TableWizard.java
│ ├── TrendGenerator.java
│ ├── TrendWizard.form
│ ├── TrendWizard.java
│ └── WizardTools.java
└── template.xml
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 1.8
20 | uses: actions/setup-java@v1
21 | with:
22 | java-version: 1.8
23 | - name: Build with Maven
24 | run: mvn -B package --file pom.xml
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PoolEdit
2 |
3 | (source for developers, users should check out the
4 | [distributable](https://github.com/moehman/PoolEditDist) package)
5 |
6 | ---
7 |
8 | PoolEdit XML Graphical User Interface Editor for creating ISOBUS
9 | object pools. In the ISO 11783 standard, the term _object pool_ refers
10 | to a collection of graphical user interface objects which make up the
11 | GUI. So to create ISOBUS user interfaces a tool is needed to edit the
12 | object pool, hence the name PoolEdit.
13 |
14 | As the standard defines only a binary format, a second tool called
15 | [PoolEditParser](https://github.com/moehman/PoolEditParser) is used to
16 | read the XML files and write binary ISOBUS object pools.
17 |
18 | The editor uses XML format internally as an editable data structure
19 | and externally as a file format. The PoolEdit XML format is based on
20 | the IsoAgLib format with some minor changes.
21 |
22 | 
23 |
24 | Please read the manual for more information!
25 |
26 | Current development environment:
27 | * OS: Windows 7 (but should work on Windows 10 as well)
28 | * IDE: NetBeans 11.2
29 | * Java: jdk-13.0.1
30 |
--------------------------------------------------------------------------------
/build.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Builds, tests, and runs the project PoolEditSrc.
12 |
13 |
73 |
74 |
--------------------------------------------------------------------------------
/examples/airmaster/airmaster.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/airmaster.sav
--------------------------------------------------------------------------------
/examples/airmaster/images/AckAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AckAlarmPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AgrixLogoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AgrixLogoPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AgrixPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AgrixPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AirMasterPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AirMasterPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AirmasterFieldModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AirmasterFieldModePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AirmasterFreeModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AirmasterFreeModePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AirmasterTransportModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AirmasterTransportModePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AlarmInfoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AlarmInfoPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AlarmOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AlarmOffPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/AlarmOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/AlarmOnPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ArrowLeftDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ArrowLeftDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ArrowLeftUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ArrowLeftUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ArrowRightDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ArrowRightDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ArrowRightUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ArrowRightUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/BackPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/BackPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/CalibrationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/CalibrationPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/CancelPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/CancelPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ChangeSKM2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ChangeSKM2Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ChangeSKMPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ChangeSKMPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ClockwisePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ClockwisePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ClockwiseSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ClockwiseSmallPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ConfigurationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ConfigurationPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ContainerLevel0Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ContainerLevel0Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ContainerLevel1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ContainerLevel1Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ContainerLevel2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ContainerLevel2Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ContainerLevel3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ContainerLevel3Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ContainerLevel4Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ContainerLevel4Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/CounterClockwisePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/CounterClockwisePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/CounterClockwiseSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/CounterClockwiseSmallPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DownPointDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DownPointDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DownPointUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DownPointUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DragAdjustmentPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DragAdjustmentPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DragDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DragDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DragFoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DragFoldPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DragUnfoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DragUnfoldPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DragUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DragUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillFoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillFoldPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillUnfoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillUnfoldPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillerEndSectionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillerEndSectionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillerFoldedSectionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillerFoldedSectionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillerLeftSectionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillerLeftSectionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillerMiddleSectionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillerMiddleSectionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrillerRightSectionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrillerRightSectionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/DrivePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/DrivePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/FreeModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/FreeModePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/FrontAdjPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/FrontAdjPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/GPSPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/GPSPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/HalfRaiseDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/HalfRaiseDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/HalfRaiseUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/HalfRaiseUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/HelpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/HelpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/LeftMarkerDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/LeftMarkerDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/LeftMarkerDownPic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/LeftMarkerDownPic0.png
--------------------------------------------------------------------------------
/examples/airmaster/images/LeftMarkerMiddlePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/LeftMarkerMiddlePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/LeftRightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/LeftRightPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/LeftRightSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/LeftRightSmallPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/MachinePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/MachinePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/MarkerUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/MarkerUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/MarkersUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/MarkersUpPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/MasterAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/MasterAlarmPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/MiniTramLinePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/MiniTramLinePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/NewSeqPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/NewSeqPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/OkPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/OkPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/PictureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/PictureGraphic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/PictureGraphic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/PictureGraphic0.png
--------------------------------------------------------------------------------
/examples/airmaster/images/PictureGraphic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/PictureGraphic1.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Point1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Point1Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Point2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Point2Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Point3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Point3Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/PresicionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/PresicionPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RearAdjPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RearAdjPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/ReportPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/ReportPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RightLeftPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RightLeftPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RightLeftSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RightLeftSmallPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RightMarkerDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RightMarkerDownPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RightMarkerDownPic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RightMarkerDownPic0.png
--------------------------------------------------------------------------------
/examples/airmaster/images/RightMarkerMiddlePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/RightMarkerMiddlePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/SeqPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/SeqPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/TCPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/TCPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/TramLineOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/TramLineOffPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/TramLineOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/TramLineOnPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/TramLinePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/TramLinePic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Weight0Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Weight0Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Weight1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Weight1Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Weight2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Weight2Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/Weight3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/Weight3Pic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/WeightLessPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/WeightLessPic.png
--------------------------------------------------------------------------------
/examples/airmaster/images/WeightMorePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/airmaster/images/WeightMorePic.png
--------------------------------------------------------------------------------
/examples/encoding_test.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/encoding_test.xml
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDownLimit2PIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDownLimit2PIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDownLimitPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDownLimitPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDragDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDragDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDragUpDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDragUpDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowDragUpPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowDragUpPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowFoldPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowFoldPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowGroundPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowGroundPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowOneDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowOneDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowOneUpPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowOneUpPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowUnfoldPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowUnfoldPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowUpDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowUpDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowUpLimitPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowUpLimitPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BlueArrowUpPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BlueArrowUpPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BluePropellerOffPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BluePropellerOffPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BluePropellerOnOffPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BluePropellerOnOffPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/BluePropellerOnPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/BluePropellerOnPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/GrayArrowOneDownPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/GrayArrowOneDownPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/GrayArrowOneUpPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/GrayArrowOneUpPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/IgnorePIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/IgnorePIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/PictureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/PictureGraphic.png
--------------------------------------------------------------------------------
/examples/harrow/images/PotilaPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/PotilaPIC.png
--------------------------------------------------------------------------------
/examples/harrow/images/ZeroGroundPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/harrow/images/ZeroGroundPIC.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic0.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic1.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic10.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic11.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic2.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic3.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic4.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic5.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic6.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic7.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic8.png
--------------------------------------------------------------------------------
/examples/mask01/images/picturegraphic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/images/picturegraphic9.png
--------------------------------------------------------------------------------
/examples/mask01/mask01.iop:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/mask01/mask01.iop
--------------------------------------------------------------------------------
/examples/sprayer/images/AckAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/AckAlarmPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/AgrixLogoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/AgrixLogoPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/AlarmFlagPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/AlarmFlagPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/AlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/AlarmPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ArrowDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ArrowDownPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ArrowUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ArrowUpPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/AutomaticPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/AutomaticPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/BackPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/BackPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/BulbLightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/BulbLightPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/BulbPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/BulbPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/CALPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/CALPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/CalibrationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/CalibrationPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ChangeArrowPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ChangeArrowPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ChangeSoftKeyPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ChangeSoftKeyPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ConfigurationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ConfigurationPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/DGNPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/DGNPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/DiagnosticsPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/DiagnosticsPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/DrivePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/DrivePic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/FLWPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/FLWPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/FieldModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/FieldModePic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/FreeModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/FreeModePic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/FreePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/FreePic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/FullTestPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/FullTestPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/GPSPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/GPSPIC.png
--------------------------------------------------------------------------------
/examples/sprayer/images/INVALID_NOZZLE_PIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/INVALID_NOZZLE_PIC.png
--------------------------------------------------------------------------------
/examples/sprayer/images/LeftMarkerOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/LeftMarkerOnPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/MainMenuPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/MainMenuPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/MarkersOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/MarkersOffPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/MediumTestPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/MediumTestPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/OFFPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/OFFPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PRCNT_GIF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PRCNT_GIF.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PRSPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PRSPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PictureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PictureGraphic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PictureGraphic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PictureGraphic0.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PictureGraphic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PictureGraphic1.png
--------------------------------------------------------------------------------
/examples/sprayer/images/PictureGraphic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/PictureGraphic2.png
--------------------------------------------------------------------------------
/examples/sprayer/images/QuickTestPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/QuickTestPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/ReportPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/ReportPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/RightMarkerOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/RightMarkerOnPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SegmentGIF_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SegmentGIF_1.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SprayAdjPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SprayAdjPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SprayAutoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SprayAutoPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SprayOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SprayOffPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SprayOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SprayOnPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/StartPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/StartPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/StopPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/StopPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/SuperSprayPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/SuperSprayPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/TankPIC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/TankPIC.png
--------------------------------------------------------------------------------
/examples/sprayer/images/TiltLeftPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/TiltLeftPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/TiltRightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/TiltRightPic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/TransportModePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/TransportModePic.png
--------------------------------------------------------------------------------
/examples/sprayer/images/TunePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/images/TunePic.png
--------------------------------------------------------------------------------
/examples/sprayer/sprayer.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/sprayer/sprayer.sav
--------------------------------------------------------------------------------
/examples/spreader/images/AckAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/AckAlarmPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/AgrixLogoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/AgrixLogoPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Alarm6Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Alarm6Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/AlarmInfoPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/AlarmInfoPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Alarm_ON_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Alarm_ON_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/AxisPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/AxisPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/BackPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/BackPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/CalibrationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/CalibrationPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/CancelPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/CancelPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ConfigurationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ConfigurationPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ContainerLevel0Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ContainerLevel0Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ContainerLevel1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ContainerLevel1Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ContainerLevel2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ContainerLevel2Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ContainerLevel3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ContainerLevel3Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ContainerLevel4Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ContainerLevel4Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/DragDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/DragDownPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/DragFoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/DragFoldPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/DragUnfoldPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/DragUnfoldPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/DragUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/DragUpPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Feed_Off_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Feed_Off_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Feed_On_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Feed_On_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Feed_On_Selected_PIc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Feed_On_Selected_PIc.png
--------------------------------------------------------------------------------
/examples/spreader/images/FrontAdjPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/FrontAdjPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/GPSPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/GPSPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/HelpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/HelpPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/IMP_HighPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/IMP_HighPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/IMP_LowPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/IMP_LowPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Impeller_off_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Impeller_off_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Impeller_on_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Impeller_on_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Impeller_on_sel_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Impeller_on_sel_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/LVL_FrontPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/LVL_FrontPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/LVL_Rear_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/LVL_Rear_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/LightOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/LightOffPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/LightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/LightPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Light_isOn_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Light_isOn_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/MasterAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/MasterAlarmPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/MittaritPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/MittaritPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/OkPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/OkPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/PictureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/PictureGraphic.png
--------------------------------------------------------------------------------
/examples/spreader/images/PictureGraphic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/PictureGraphic0.png
--------------------------------------------------------------------------------
/examples/spreader/images/Point1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Point1Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Point2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Point2Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Point3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Point3Pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/PresicionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/PresicionPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/RearAdjPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/RearAdjPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/SeqPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/SeqPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/SideSpreaderOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/SideSpreaderOffPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/SideSpreaderPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/SideSpreaderPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/Side_On_sel_pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/Side_On_sel_pic.png
--------------------------------------------------------------------------------
/examples/spreader/images/TCPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/TCPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ToolDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ToolDownPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ToolUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ToolUpPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/ViconPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/ViconPic.png
--------------------------------------------------------------------------------
/examples/spreader/images/alarm_OFF_Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/images/alarm_OFF_Pic.png
--------------------------------------------------------------------------------
/examples/spreader/spreader.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/spreader/spreader.sav
--------------------------------------------------------------------------------
/examples/superseed/images/Alarm3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/Alarm3Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/AlarmFlagPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/AlarmFlagPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/AlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/AlarmPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/BackPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/BackPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/BulbOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/BulbOffPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/CalibrationPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/CalibrationPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/ClockwisePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/ClockwisePic.png
--------------------------------------------------------------------------------
/examples/superseed/images/ClockwiseSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/ClockwiseSmallPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/CounterCWPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/CounterCWPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/CounterClockwiseSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/CounterClockwiseSmallPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/FeedAdjustPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/FeedAdjustPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/FreePic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/FreePic.png
--------------------------------------------------------------------------------
/examples/superseed/images/GPSPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/GPSPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/HalfRaiseAdjustPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/HalfRaiseAdjustPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/HalfRaiseDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/HalfRaiseDownPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/HalfRaiseUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/HalfRaiseUpPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/LeftDown2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/LeftDown2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/LeftMarkerDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/LeftMarkerDownPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/LeftRightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/LeftRightPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/LeftUp2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/LeftUp2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/LessWeightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/LessWeightPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/MainMenuPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/MainMenuPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/MarkersUpPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/MarkersUpPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/MoreWeightPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/MoreWeightPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/NewSEQPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/NewSEQPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/NoAlarmPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/NoAlarmPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic0.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic1.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic2.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic3.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic4.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic5.png
--------------------------------------------------------------------------------
/examples/superseed/images/PictureGraphic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PictureGraphic6.png
--------------------------------------------------------------------------------
/examples/superseed/images/Point1Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/Point1Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/Point2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/Point2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/Point3Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/Point3Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/PrecisionPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/PrecisionPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/ReportPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/ReportPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/RightDown2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/RightDown2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/RightLeftSmallPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/RightLeftSmallPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/RightMarkerDownPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/RightMarkerDownPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/RigthUp2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/RigthUp2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/SEQPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/SEQPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/SuperSeedPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/SuperSeedPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/TCPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/TCPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/TracksOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/TracksOffPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/TracksOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/TracksOnPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/TramLineOffPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/TramLineOffPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/TramLineOnPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/TramLineOnPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/WeightAdjustPic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/WeightAdjustPic.png
--------------------------------------------------------------------------------
/examples/superseed/images/WeightLess2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/WeightLess2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/images/WeigtMore2Pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/images/WeigtMore2Pic.png
--------------------------------------------------------------------------------
/examples/superseed/superseed.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/examples/superseed/superseed.sav
--------------------------------------------------------------------------------
/images/bunny1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/bunny1.png
--------------------------------------------------------------------------------
/images/bunny2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/bunny2.png
--------------------------------------------------------------------------------
/images/bunny3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/bunny3.png
--------------------------------------------------------------------------------
/images/bunny4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/bunny4.png
--------------------------------------------------------------------------------
/images/fill.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/fill.bmp
--------------------------------------------------------------------------------
/images/fly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/fly.png
--------------------------------------------------------------------------------
/images/simpleBitmap.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/images/simpleBitmap.bmp
--------------------------------------------------------------------------------
/import/images/README.txt:
--------------------------------------------------------------------------------
1 | Import images can be stored to this folder.
2 |
--------------------------------------------------------------------------------
/lib/idw-gpl.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/lib/idw-gpl.jar
--------------------------------------------------------------------------------
/lib/resolver.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/lib/resolver.jar
--------------------------------------------------------------------------------
/lib/serializer.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/lib/serializer.jar
--------------------------------------------------------------------------------
/lib/xercesImpl.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/lib/xercesImpl.jar
--------------------------------------------------------------------------------
/lib/xml-apis.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/lib/xml-apis.jar
--------------------------------------------------------------------------------
/manifest.mf:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | X-COMMENT: Main-Class will be added automatically by build
3 |
4 |
--------------------------------------------------------------------------------
/manual/PoolEditManual150.odt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/manual/PoolEditManual150.odt
--------------------------------------------------------------------------------
/manual/PoolEditManual150.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/manual/PoolEditManual150.pdf
--------------------------------------------------------------------------------
/nbproject/genfiles.properties:
--------------------------------------------------------------------------------
1 | build.xml.data.CRC32=93e1b747
2 | build.xml.script.CRC32=b006c39e
3 | build.xml.stylesheet.CRC32=f85dc8f2@1.93.0.48
4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6 | nbproject/build-impl.xml.data.CRC32=93e1b747
7 | nbproject/build-impl.xml.script.CRC32=f3717829
8 | nbproject/build-impl.xml.stylesheet.CRC32=f89f7d21@1.93.0.48
9 |
--------------------------------------------------------------------------------
/nbproject/project.properties:
--------------------------------------------------------------------------------
1 | application.desc=PoolEdit XML Graphical User Interface Editor for creating ISOBUS object pools.
2 | application.homepage=https://github.com/moehman/PoolEdit
3 | application.splash=
4 | auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
5 | #Fri Nov 08 04:20:36 EET 2019
6 | excludes=
7 | jar.archive.disabled=${jnlp.enabled}
8 | jar.index=${jnlp.enabled}
9 | javac.test.classpath=\
10 | ${javac.classpath}:\
11 | ${build.classes.dir}:\
12 | ${libs.junit_4.classpath}:\
13 | ${libs.hamcrest.classpath}
14 | jnlp.codebase.type=no.codebase
15 | jnlp.descriptor=application
16 | jnlp.enabled=false
17 | jnlp.mixed.code=default
18 | jnlp.offline-allowed=false
19 | jnlp.signed=false
20 | jnlp.signing=
21 | jnlp.signing.alias=
22 | jnlp.signing.keystore=
23 | # Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found.
24 | manifest.custom.application.library.allowable.codebase=
25 | # Optional override of default Caller-Allowable-Codebase attribute identifying the domains from which JavaScript code can make calls to your RIA without security prompts.
26 | manifest.custom.caller.allowable.codebase=
27 | # Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed
28 | manifest.custom.codebase=
29 | # Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions)
30 | manifest.custom.permissions=
31 | run.classpath=\
32 | ${javac.classpath}:\
33 | ${build.classes.dir}:\
34 | ${file.reference.resolver.jar}:\
35 | ${file.reference.serializer.jar}:\
36 | ${file.reference.xercesImpl.jar}:\
37 | ${file.reference.xml-apis.jar}
38 | file.reference.serializer.jar=lib/serializer.jar
39 | javac.processorpath=\
40 | ${javac.classpath}
41 | dist.javadoc.dir=${dist.dir}/javadoc
42 | test.src.dir=test
43 | run.modulepath=\
44 | ${javac.modulepath}
45 | annotation.processing.enabled=true
46 | build.sysclasspath=ignore
47 | debug.modulepath=${run.modulepath}
48 | javac.compilerargs=-Xlint:deprecation -Xlint:unchecked
49 | javadoc.noindex=false
50 | javadoc.private=false
51 | javadoc.author=false
52 | endorsed.classpath=
53 | main.class=pooledit.Main
54 | file.reference.xercesImpl.jar=lib/xercesImpl.jar
55 | junit.selected.version=3
56 | javac.source=1.8
57 | includes=**
58 | javadoc.use=true
59 | jar.compress=false
60 | javadoc.nonavbar=false
61 | annotation.processing.enabled.in.editor=false
62 | javadoc.notree=false
63 | annotation.processing.processors.list=
64 | javac.deprecation=false
65 | application.vendor=moehman
66 | jlink.launcher=false
67 | javadoc.additionalparam=
68 | jlink.launcher.name=PoolEditSrc
69 | build.generated.sources.dir=${build.dir}/generated-sources
70 | javadoc.splitindex=true
71 | file.reference.idw-gpl.jar=lib/idw-gpl.jar
72 | javac.processormodulepath=
73 | run.jvmargs=-Xmx256M
74 | javadoc.encoding=
75 | javac.classpath=\
76 | ${file.reference.idw-gpl.jar}
77 | mkdist.disabled=false
78 | run.test.modulepath=\
79 | ${javac.test.modulepath}
80 | build.classes.excludes=**/*.java,**/*.form
81 | dist.jar=${dist.dir}/PoolEditSrc.jar
82 | build.classes.dir=${build.dir}/classes
83 | debug.test.modulepath=${run.test.modulepath}
84 | build.test.classes.dir=${build.dir}/test/classes
85 | javadoc.windowtitle=
86 | build.test.results.dir=${build.dir}/test/results
87 | dist.dir=dist
88 | build.dir=build
89 | build.generated.dir=${build.dir}/generated
90 | javadoc.version=false
91 | application.args=
92 | application.title=PoolEditSrc
93 | javac.test.modulepath=\
94 | ${javac.modulepath}
95 | debug.test.classpath=${run.test.classpath}
96 | javac.external.vm=false
97 | javac.target=1.8
98 | platform.active=default_platform
99 | manifest.file=manifest.mf
100 | javadoc.html5=false
101 | meta.inf.dir=${src.dir}/META-INF
102 | run.test.classpath=\
103 | ${javac.test.classpath}:\
104 | ${build.test.classes.dir}
105 | file.reference.resolver.jar=lib/resolver.jar
106 | annotation.processing.run.all.processors=true
107 | file.reference.xml-apis.jar=lib/xml-apis.jar
108 | javac.modulepath=
109 | src.dir=src
110 | debug.classpath=${run.classpath}
111 |
--------------------------------------------------------------------------------
/nbproject/project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.netbeans.modules.java.j2seproject
4 |
5 |
6 | PoolEditSrc
7 | 1.6.5
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/screenshot.png
--------------------------------------------------------------------------------
/src/attributetable/AttributeTablePopupMenu.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package attributetable;
24 |
25 | import java.awt.Component;
26 | import java.awt.event.ActionEvent;
27 | import java.awt.event.ActionListener;
28 | import java.awt.event.MouseEvent;
29 | import javax.swing.JMenuItem;
30 | import javax.swing.JOptionPane;
31 | import javax.swing.JPopupMenu;
32 | import javax.swing.JTextField;
33 | import org.w3c.dom.Element;
34 | import treemodel.XMLTreeNode;
35 |
36 | /**
37 | *
38 | * @author mohman
39 | */
40 | public class AttributeTablePopupMenu {
41 |
42 | private final JPopupMenu popup;
43 | private final AttributeTable table;
44 |
45 | /**
46 | * Private constructor, call getInstance() instead.
47 | * @param table
48 | */
49 | public AttributeTablePopupMenu(AttributeTable table) {
50 | this.table = table;
51 | popup = new JPopupMenu();
52 | JMenuItem addAttribute = new JMenuItem("Add Attribute");
53 | addAttribute.addActionListener(new ActionListener() {
54 | @Override
55 | public void actionPerformed(ActionEvent e) {
56 | JTextField[] texts = new JTextField[] {new JTextField(),
57 | new JTextField()};
58 | int rv = showTextFieldDialog(null, new String[] {"Name", "Value"},
59 | texts, "Add Attribute", JOptionPane.QUESTION_MESSAGE);
60 | if (rv != JOptionPane.OK_OPTION) {
61 | return;
62 | }
63 | AttributeTableModel model = (AttributeTableModel) table.getModel();
64 | Element elem = model.getCurrentElement();
65 | elem.setAttribute(texts[0].getText(), texts[1].getText());
66 | }
67 | });
68 | popup.add(addAttribute);
69 |
70 | JMenuItem removeAttribute = new JMenuItem("Remove Attribute");
71 | removeAttribute.addActionListener(new ActionListener() {
72 | /**
73 | * Removes the specified attribute from both actual and link nodes,
74 | * if any
75 | */
76 | @Override
77 | public void actionPerformed(ActionEvent e) {
78 | JTextField[] texts = new JTextField[] {new JTextField()};
79 | int rv = showTextFieldDialog(null, new String[] {"Name"},
80 | texts, "Remove Attribute", JOptionPane.QUESTION_MESSAGE);
81 | if (rv != JOptionPane.OK_OPTION) {
82 | return;
83 | }
84 | AttributeTableModel model = (AttributeTableModel) table.getModel();
85 | XMLTreeNode node = model.getCurrentNode();
86 | if (node == null) {
87 | return;
88 | }
89 | Element actual = node.actual();
90 | if (actual != null) {
91 | actual.removeAttribute(texts[0].getText());
92 | }
93 | Element link = node.link();
94 | if (link != null) {
95 | link.removeAttribute(texts[0].getText());
96 | }
97 | }
98 | });
99 | popup.add(removeAttribute);
100 | }
101 |
102 | /**
103 | * Show a simple dialog assembled from labels and text fields.
104 | * @param parentComponent
105 | * @param labels
106 | * @param textFields
107 | * @param title
108 | * @param messageType
109 | * @return
110 | */
111 | public int showTextFieldDialog(Component parentComponent, String[] labels,
112 | JTextField[] textFields, String title, int messageType) {
113 |
114 | Object[] objects = new Object[labels.length + textFields.length];
115 | for (int i = 0, j = 0, k = 0; i < objects.length; ) {
116 | if (j < labels.length) {
117 | objects[i++] = labels[j++];
118 | }
119 | if (k < textFields.length) {
120 | objects[i++] = textFields[k++];
121 | }
122 | }
123 | return JOptionPane.showOptionDialog(parentComponent, objects, title,
124 | JOptionPane.OK_CANCEL_OPTION, messageType,
125 | null, null, null);
126 | }
127 |
128 | /**
129 | * Shows the popup menu.
130 | * @param e
131 | */
132 | public void showPopup(MouseEvent e) {
133 | popup.show(e.getComponent(), e.getX(), e.getY());
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/src/attributetable/CheckBoxListCellEditor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package attributetable;
24 |
25 | import java.awt.Component;
26 | import java.awt.Graphics;
27 | import javax.swing.DefaultCellEditor;
28 | import javax.swing.DefaultListCellRenderer;
29 | import javax.swing.Icon;
30 | import javax.swing.JComboBox;
31 | import javax.swing.JLabel;
32 | import javax.swing.JList;
33 | import javax.swing.JTable;
34 | import javax.swing.JTree;
35 | import javax.swing.ListCellRenderer;
36 | import pooledit.Utils;
37 |
38 | /**
39 | *
40 | * @author mohman
41 | */
42 | public class CheckBoxListCellEditor extends DefaultCellEditor {
43 |
44 | static private final Icon CHECK = Utils.createImageIcon("/images/check.png");
45 | static private final Icon NOCHECK = Utils.createImageIcon("/images/nocheck.png");
46 |
47 | static private final Icon EMPTY = new Icon() {
48 | @Override
49 | public void paintIcon(Component c, Graphics g, int x, int y) { }
50 | @Override
51 | public int getIconWidth() { return CHECK.getIconWidth(); }
52 | @Override
53 | public int getIconHeight() { return CHECK.getIconHeight(); }
54 | };
55 |
56 | static class CheckBoxListCellRenderer implements ListCellRenderer {
57 | protected DefaultListCellRenderer defren = new DefaultListCellRenderer();
58 | private final String selectedItems;
59 | CheckBoxListCellRenderer(String selectedItems) {
60 | this.selectedItems = selectedItems;
61 | }
62 | @Override
63 | public Component getListCellRendererComponent(JList list, String val,
64 | int idx, boolean isSel, boolean hasFocus) {
65 | JLabel renderer = (JLabel) defren.getListCellRendererComponent
66 | (list, val, idx, isSel, hasFocus);
67 |
68 | String clr = (String) val;
69 | renderer.setIcon(clr.isEmpty() ? EMPTY : Utils.optionsContain(selectedItems, clr) ? CHECK : NOCHECK);
70 | renderer.setText(clr);
71 | return renderer;
72 | }
73 | }
74 |
75 | static private JComboBox createJComboBox(String ... allItems) {
76 | JComboBox cb = new JComboBox<>();
77 | cb.addItem(""); // "no change item"
78 | for (int i = 0, n = allItems.length; i < n; i++) {
79 | cb.addItem(allItems[i]);
80 | }
81 | return cb;
82 | }
83 |
84 | private final String[] allItems;
85 | private String selectedItems;
86 |
87 | /**
88 | * Constructor.
89 | * @param allItems
90 | */
91 | public CheckBoxListCellEditor(String ... allItems) {
92 | super(createJComboBox(allItems));
93 | this.allItems = allItems;
94 | }
95 |
96 | /**
97 | * Gets a tree cell editor component.
98 | * @param tree
99 | * @param value
100 | * @param isSelected
101 | * @param expanded
102 | * @param leaf
103 | * @param row
104 | * @return
105 | */
106 | @Override
107 | public Component getTreeCellEditorComponent(JTree tree, Object value,
108 | boolean isSelected,
109 | boolean expanded,
110 | boolean leaf, int row) {
111 | //this.selectedItems = tree.convertValueToText(value, isSelected,
112 | // expanded, leaf, row, false);
113 | this.selectedItems = (String) value;
114 | JComboBox cb = (JComboBox) this.getComponent();
115 | cb.setRenderer(new CheckBoxListCellRenderer(selectedItems));
116 | return super.getTreeCellEditorComponent(tree, "" /*value*/, isSelected, expanded, leaf, row);
117 | }
118 |
119 | /**
120 | * Gets a table cell editor component.
121 | * @param table
122 | * @param value
123 | * @param isSelected
124 | * @param row
125 | * @param col
126 | * @return
127 | */
128 | @Override
129 | public Component getTableCellEditorComponent(JTable table, Object value,
130 | boolean isSelected,
131 | int row, int col) {
132 | this.selectedItems = (String) value;
133 | JComboBox cb = (JComboBox) this.getComponent();
134 | cb.setRenderer(new CheckBoxListCellRenderer(selectedItems));
135 | return super.getTableCellEditorComponent(table, "" /*value*/, isSelected, row, col);
136 | }
137 |
138 | /**
139 | * Gets cell editor value.
140 | * @return
141 | */
142 | @Override
143 | public Object getCellEditorValue() {
144 | String rv = (String) super.getCellEditorValue();
145 | // selecting the empty item has no effect to the selected items
146 | if (rv.isEmpty()) {
147 | rv = selectedItems;
148 | }
149 | // selecting already selected item removes it from the list
150 | else if (Utils.optionsContain(selectedItems, rv)) {
151 | rv = Utils.optionsRemove(selectedItems, rv);
152 | }
153 | // selecting non-selected item adds it to the list
154 | else {
155 | rv = selectedItems + "+" + rv;
156 | }
157 | // regenerate options string from the "all items" list,
158 | // this way the order of the items stays the same every time
159 | StringBuilder out = new StringBuilder();
160 | for (int i = 0, n = allItems.length; i < n; i++) {
161 | if (Utils.optionsContain(rv, allItems[i])) {
162 | if (out.length() > 0) {
163 | out.append('+');
164 | }
165 | out.append(allItems[i]);
166 | }
167 | }
168 | return out.toString();
169 | }
170 | }
171 |
--------------------------------------------------------------------------------
/src/attributetable/FileCellEditor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package attributetable;
24 |
25 | import java.awt.BorderLayout;
26 | import java.awt.Component;
27 | import java.awt.Insets;
28 | import java.awt.event.ActionEvent;
29 | import java.awt.event.ActionListener;
30 | import java.io.File;
31 | import javax.swing.DefaultCellEditor;
32 | import javax.swing.JButton;
33 | import javax.swing.JFileChooser;
34 | import javax.swing.JPanel;
35 | import javax.swing.JTable;
36 | import javax.swing.JTextField;
37 | import javax.swing.table.TableCellEditor;
38 |
39 | /**
40 | *
41 | * @author mohman
42 | */
43 | public class FileCellEditor extends DefaultCellEditor implements
44 | TableCellEditor, ActionListener {
45 |
46 | static private final String PATH = "images\\";
47 | private final JPanel panel = new JPanel();
48 | private final JButton button = new JButton("...");
49 | private final JFileChooser filechooser = new JFileChooser();
50 |
51 | private File file;
52 | private String value; // super class has probably value as well, but it is not writable?
53 |
54 | /**
55 | * Private constructor, use getInstance() instead.
56 | */
57 | private FileCellEditor() {
58 | super(new JTextField());
59 | //panel.setBackground(Color.WHITE);
60 | button.setMargin(new Insets(0, 0, 0, 0));
61 |
62 | panel.setLayout(new BorderLayout());
63 | panel.add(super.getComponent(), BorderLayout.CENTER);
64 | panel.add(button, BorderLayout.EAST);
65 |
66 | filechooser.setCurrentDirectory(new File(PATH));
67 | }
68 |
69 | /**
70 | * Creates a FileCellEditor.
71 | * @return
72 | */
73 | static public FileCellEditor getInstance() {
74 | FileCellEditor ce = new FileCellEditor();
75 | ce.button.addActionListener(ce);
76 | return ce;
77 | }
78 |
79 | /**
80 | * Shows the open file dialog when the button is pressed.
81 | * @param e
82 | */
83 | @Override
84 | public void actionPerformed(ActionEvent e) {
85 | if (filechooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
86 | file = filechooser.getSelectedFile();
87 | }
88 | stopCellEditing();
89 | }
90 |
91 | /**
92 | * Gets a table cell editor component.
93 | * @param table
94 | * @param value
95 | * @param isSelected
96 | * @param row
97 | * @param column
98 | * @return
99 | */
100 | @Override
101 | public Component getTableCellEditorComponent(JTable table, Object value,
102 | boolean isSelected, int row, int column) {
103 | super.getTableCellEditorComponent(table, value, isSelected, row, column);
104 | this.value = (String) value;
105 | filechooser.setSelectedFile(new File(this.value));
106 | return panel;
107 | }
108 |
109 | /**
110 | * Gets cell editor value.
111 | * @return
112 | */
113 | @Override
114 | public Object getCellEditorValue() {
115 | if (file != null) {
116 | value = file.getName();
117 | file = null;
118 | }
119 | else {
120 | value = (String) super.getCellEditorValue();
121 | }
122 | return value;
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/src/attributetable/FileCellRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package attributetable;
24 |
25 | import java.awt.BorderLayout;
26 | import java.awt.Component;
27 | import java.awt.Insets;
28 | import javax.swing.JButton;
29 | import javax.swing.JPanel;
30 | import javax.swing.JTable;
31 | import javax.swing.table.DefaultTableCellRenderer;
32 |
33 | /**
34 | *
35 | * @author mohman
36 | */
37 | public class FileCellRenderer extends DefaultTableCellRenderer {
38 |
39 | private final JPanel panel = new JPanel();
40 | /** This button is just for show, it does not have any listeners */
41 | private final JButton button = new JButton("...");
42 |
43 | /**
44 | * Private constructor, use getInstance() instead.
45 | */
46 | private FileCellRenderer() {
47 | button.setMargin(new Insets(0, 0, 0, 0));
48 | panel.setLayout(new BorderLayout());
49 | panel.add(button, BorderLayout.EAST);
50 | }
51 |
52 | /**
53 | * Creates a FileCellEditor.
54 | * @return
55 | */
56 | static public FileCellRenderer getInstance() {
57 | FileCellRenderer cr = new FileCellRenderer();
58 | cr.panel.add(cr);
59 | return cr;
60 | }
61 |
62 | /**
63 | * DefaultTableCellRenderer extends JLabel and normally the returned
64 | * component from this method is "this". Both JPanel and JLabel extend
65 | * JComponent, and so they both share foreground and background attributes.
66 | * @param tbl
67 | * @param val
68 | * @param isSel
69 | * @param hasFocus
70 | * @param row
71 | * @param col
72 | * @return
73 | */
74 | @Override
75 | public Component getTableCellRendererComponent(JTable tbl, Object val,
76 | boolean isSel, boolean hasFocus, int row, int col) {
77 | super.getTableCellRendererComponent(tbl, val, isSel, hasFocus, row, col);
78 | panel.setForeground(getForeground());
79 | panel.setBackground(getBackground());
80 | return panel;
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/color/ColorIcon.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package color;
24 |
25 | import java.awt.Color;
26 | import java.awt.Component;
27 | import java.awt.Graphics;
28 | import javax.swing.Icon;
29 |
30 | /**
31 | *
32 | * @author mohman
33 | */
34 | public class ColorIcon implements Icon {
35 | final int SIZE = 11;
36 | private Color color;
37 |
38 | /**
39 | * Private constructor, use getInstance() instead.
40 | */
41 | private ColorIcon() {
42 | }
43 |
44 | /**
45 | *
46 | * @return
47 | */
48 | static public ColorIcon getInstance() {
49 | return getInstance(Color.BLACK);
50 | }
51 |
52 | /**
53 | *
54 | * @param color
55 | * @return
56 | */
57 | static public ColorIcon getInstance(Color color) {
58 | ColorIcon ci = new ColorIcon();
59 | ci.setColor(color);
60 | return ci;
61 | }
62 |
63 | /**
64 | * Sets color.
65 | * @param color
66 | */
67 | public void setColor(Color color) {
68 | this.color = color;
69 | }
70 |
71 | /**
72 | * Gets icon height.
73 | * @return
74 | */
75 | @Override
76 | public int getIconHeight() {
77 | return SIZE;
78 | }
79 |
80 | /**
81 | * Gets icon width.
82 | * @return
83 | */
84 | @Override
85 | public int getIconWidth() {
86 | return SIZE;
87 | }
88 |
89 | /**
90 | * Paints the icon.
91 | * @param c
92 | * @param g
93 | * @param x
94 | * @param y
95 | */
96 | @Override
97 | public void paintIcon(Component c,
98 | Graphics g,
99 | int x, int y) {
100 | g.setColor(color);
101 | g.fillRect(x, y, SIZE, SIZE);
102 | g.setColor(Color.BLACK);
103 | g.drawRect(x, y, SIZE - 1, SIZE - 1);
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/dragndrop/XMLTransferable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package dragndrop;
24 |
25 | import static pooledit.Definitions.*;
26 | import java.awt.datatransfer.DataFlavor;
27 | import java.awt.datatransfer.Transferable;
28 | import java.awt.datatransfer.UnsupportedFlavorException;
29 | import java.io.IOException;
30 | import javax.swing.tree.TreePath;
31 | import pooledit.Tools;
32 | import treemodel.XMLTreeNode;
33 |
34 | /**
35 | *
36 | * @author mohman
37 | */
38 | public class XMLTransferable implements Transferable {
39 |
40 | private final TreePath[] paths;
41 |
42 | /**
43 | * Creates a new instance of XMLTransferrable
44 | * @param paths
45 | */
46 | public XMLTransferable(TreePath[] paths) {
47 | this.paths = paths;
48 | }
49 |
50 | public TreePath[] getPaths() {
51 | return paths;
52 | }
53 |
54 | /**
55 | * Returns an array of DataFlavor objects indicating the flavors the data
56 | * can be provided in.
57 | */
58 | @Override
59 | public DataFlavor[] getTransferDataFlavors() {
60 | return new DataFlavor[] {DataFlavor.stringFlavor};
61 | }
62 |
63 | /**
64 | * Returns whether or not the specified data flavor is supported for
65 | * this object.
66 | */
67 | @Override
68 | public boolean isDataFlavorSupported(DataFlavor flavor) {
69 | return DataFlavor.stringFlavor.equals(flavor);
70 | }
71 |
72 | /**
73 | * Returns an object which represents the data to be transferred. The class
74 | * of the object returned is defined by the representation class of the flavor.
75 | */
76 | @Override
77 | public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
78 |
79 | if (DataFlavor.stringFlavor.equals(flavor)) {
80 | String s = "";
81 |
82 | // FIXME: do not send separate objects, combine them?
83 | for (int i = 0, n = paths.length; i < n; i++) {
84 | XMLTreeNode node = (XMLTreeNode) paths[i].getLastPathComponent();
85 |
86 | // broken link
87 | if (node.isType(INCLUDE_OBJECT)) {
88 | s = Tools.writeToStringNoDec(node.actual());
89 | }
90 | else {
91 | //s = Tools.writeToStringNoDec(Tools.createMergedElementRecursive(node.actual(), node.getModel().getNameMap()));
92 |
93 | // this is very intresting:
94 | // the createMergedElementRecursive method is very good at handling links
95 | // - if the first object is a link, the method must also be given a link,
96 | // if a consistent behaviour is expected - it usually is :)
97 | s = Tools.writeToStringNoDec(Tools.createMergedElementRecursive(
98 | node.link() != null ? node.link() : node.actual(),
99 | node.getModel().getNameMap()));
100 | }
101 | }
102 | return s;
103 | }
104 | throw new UnsupportedFlavorException(flavor);
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/src/images/alarmmask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/alarmmask.png
--------------------------------------------------------------------------------
/src/images/archedbargraph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/archedbargraph.png
--------------------------------------------------------------------------------
/src/images/attributeobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/attributeobjects.png
--------------------------------------------------------------------------------
/src/images/auxiliarycontrolobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/auxiliarycontrolobjects.png
--------------------------------------------------------------------------------
/src/images/auxiliaryfunction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/auxiliaryfunction.png
--------------------------------------------------------------------------------
/src/images/auxiliaryinput.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/auxiliaryinput.png
--------------------------------------------------------------------------------
/src/images/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/button.png
--------------------------------------------------------------------------------
/src/images/check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/check.png
--------------------------------------------------------------------------------
/src/images/command.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/command.png
--------------------------------------------------------------------------------
/src/images/container.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/container.png
--------------------------------------------------------------------------------
/src/images/datamask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/datamask.png
--------------------------------------------------------------------------------
/src/images/ellipse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/ellipse.png
--------------------------------------------------------------------------------
/src/images/fillattribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/fillattribute.png
--------------------------------------------------------------------------------
/src/images/fixedbitmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/fixedbitmap.png
--------------------------------------------------------------------------------
/src/images/font128x128_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font128x128_.png
--------------------------------------------------------------------------------
/src/images/font128x192_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font128x192_.png
--------------------------------------------------------------------------------
/src/images/font12x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font12x16.png
--------------------------------------------------------------------------------
/src/images/font12x16_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font12x16_.png
--------------------------------------------------------------------------------
/src/images/font16x16_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font16x16_.png
--------------------------------------------------------------------------------
/src/images/font16x24_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font16x24_.png
--------------------------------------------------------------------------------
/src/images/font24x32_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font24x32_.png
--------------------------------------------------------------------------------
/src/images/font32x32_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font32x32_.png
--------------------------------------------------------------------------------
/src/images/font32x48_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font32x48_.png
--------------------------------------------------------------------------------
/src/images/font48x64_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font48x64_.png
--------------------------------------------------------------------------------
/src/images/font64x64_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font64x64_.png
--------------------------------------------------------------------------------
/src/images/font64x96_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font64x96_.png
--------------------------------------------------------------------------------
/src/images/font6x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font6x8.png
--------------------------------------------------------------------------------
/src/images/font6x8_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font6x8_.png
--------------------------------------------------------------------------------
/src/images/font8x12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font8x12.png
--------------------------------------------------------------------------------
/src/images/font8x12_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font8x12_.png
--------------------------------------------------------------------------------
/src/images/font8x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font8x8.png
--------------------------------------------------------------------------------
/src/images/font8x8_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font8x8_.png
--------------------------------------------------------------------------------
/src/images/font96x128_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/font96x128_.png
--------------------------------------------------------------------------------
/src/images/fontattribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/fontattribute.png
--------------------------------------------------------------------------------
/src/images/includeobject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/includeobject.png
--------------------------------------------------------------------------------
/src/images/inputattribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputattribute.png
--------------------------------------------------------------------------------
/src/images/inputbooleanfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputbooleanfield.png
--------------------------------------------------------------------------------
/src/images/inputfieldobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputfieldobjects.png
--------------------------------------------------------------------------------
/src/images/inputlistfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputlistfield.png
--------------------------------------------------------------------------------
/src/images/inputnumberfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputnumberfield.png
--------------------------------------------------------------------------------
/src/images/inputstringfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/inputstringfield.png
--------------------------------------------------------------------------------
/src/images/keyobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/keyobjects.png
--------------------------------------------------------------------------------
/src/images/language.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/language.png
--------------------------------------------------------------------------------
/src/images/line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/line.png
--------------------------------------------------------------------------------
/src/images/linearbargraph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/linearbargraph.png
--------------------------------------------------------------------------------
/src/images/lineattribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/lineattribute.png
--------------------------------------------------------------------------------
/src/images/macro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/macro.png
--------------------------------------------------------------------------------
/src/images/macroobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/macroobjects.png
--------------------------------------------------------------------------------
/src/images/meter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/meter.png
--------------------------------------------------------------------------------
/src/images/nocheck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/nocheck.png
--------------------------------------------------------------------------------
/src/images/numbervariable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/numbervariable.png
--------------------------------------------------------------------------------
/src/images/objectpointer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/objectpointer.png
--------------------------------------------------------------------------------
/src/images/objectpoolobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/objectpoolobjects.png
--------------------------------------------------------------------------------
/src/images/outputfieldobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/outputfieldobjects.png
--------------------------------------------------------------------------------
/src/images/outputgraphicobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/outputgraphicobjects.png
--------------------------------------------------------------------------------
/src/images/outputnumberfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/outputnumberfield.png
--------------------------------------------------------------------------------
/src/images/outputshapeobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/outputshapeobjects.png
--------------------------------------------------------------------------------
/src/images/outputstringfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/outputstringfield.png
--------------------------------------------------------------------------------
/src/images/picturegraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/picturegraphic.png
--------------------------------------------------------------------------------
/src/images/picturegraphicobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/picturegraphicobjects.png
--------------------------------------------------------------------------------
/src/images/point.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/point.png
--------------------------------------------------------------------------------
/src/images/pointerobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/pointerobjects.png
--------------------------------------------------------------------------------
/src/images/polygon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/polygon.png
--------------------------------------------------------------------------------
/src/images/pooleditlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/pooleditlogo.png
--------------------------------------------------------------------------------
/src/images/rectangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/rectangle.png
--------------------------------------------------------------------------------
/src/images/softkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/softkey.png
--------------------------------------------------------------------------------
/src/images/softkeymask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/softkeymask.png
--------------------------------------------------------------------------------
/src/images/stringvariable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/stringvariable.png
--------------------------------------------------------------------------------
/src/images/toplevelobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/toplevelobjects.png
--------------------------------------------------------------------------------
/src/images/variableobjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/variableobjects.png
--------------------------------------------------------------------------------
/src/images/workingset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/moehman/PoolEditSrc/7191d0c0210c71858bba9ad3a19480b668e284c5/src/images/workingset.png
--------------------------------------------------------------------------------
/src/objecttree/ObjectTreeCellEditor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this template, choose Tools | Templates
3 | * and open the template in the editor.
4 | */
5 |
6 | package objecttree;
7 |
8 | import static pooledit.Definitions.*;
9 | import java.awt.BorderLayout;
10 | import java.awt.Component;
11 | import java.awt.Container;
12 | import java.awt.event.MouseEvent;
13 | import java.util.EventObject;
14 | import javax.swing.Icon;
15 | import javax.swing.JLabel;
16 | import javax.swing.JTree;
17 | import javax.swing.tree.DefaultTreeCellEditor;
18 | import javax.swing.tree.DefaultTreeCellRenderer;
19 | import javax.swing.tree.TreePath;
20 | import org.w3c.dom.Element;
21 | import pooledit.TreeEditPopup;
22 | import treemodel.XMLTreeNode;
23 |
24 | /**
25 | *
26 | * @author mohman
27 | */
28 | class ObjectTreeCellEditor extends DefaultTreeCellEditor {
29 |
30 | final Container container = new Container();
31 | private XMLTreeNode node;
32 |
33 | /**
34 | * Constructor.
35 | * @param tree
36 | * @param renderer
37 | */
38 | public ObjectTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
39 | super(tree, renderer);
40 | container.setLayout(new BorderLayout());
41 | }
42 |
43 | /**
44 | * Gets cell editor value.
45 | * @return
46 | */
47 | @Override
48 | public Object getCellEditorValue() {
49 | String value = (String) super.getCellEditorValue();
50 | try {
51 | TreeEditPopup.renameObject(node, value);
52 | }
53 | catch (IllegalArgumentException ex) {
54 | }
55 | catch (IllegalStateException ex) {
56 | }
57 | return node;
58 | }
59 |
60 | /**
61 | * Gets tree cell editor component.
62 | * @param tree
63 | * @param value
64 | * @param sel
65 | * @param expanded
66 | * @param leaf
67 | * @param row
68 | * @return
69 | */
70 | @Override
71 | public Component getTreeCellEditorComponent(JTree tree, Object value,
72 | boolean sel, boolean expanded, boolean leaf, int row) {
73 |
74 | node = (XMLTreeNode) value;
75 |
76 | // get the name to be edited
77 | Element actual = node.actual();
78 | String name = actual.getAttribute(NAME);
79 |
80 | // get the editor (which does not print the icon for some reason...)
81 | Component editor = super.getTreeCellEditorComponent(tree, name, sel, expanded, leaf, row);
82 |
83 | // get the icon and put everything in the container
84 | Icon icon = node.link() != null ?
85 | ObjectTreeCellRenderer.getIcon(ObjectTreeCellRenderer.LINK_ICONS, node.getType()) :
86 | ObjectTreeCellRenderer.getIcon(ObjectTreeCellRenderer.ICONS, node.getType());
87 | container.removeAll();
88 | container.add(new JLabel(icon), BorderLayout.WEST);
89 | container.add(editor, BorderLayout.EAST);
90 |
91 | return container;
92 | }
93 |
94 | /**
95 | * Checks, whether a cell is editable or not. Only elements with names
96 | * should be editable.
97 | * @param event
98 | * @return
99 | */
100 | @Override
101 | public boolean isCellEditable(EventObject event) {
102 | // find out the path to the selected node
103 | TreePath p;
104 | if (event == null) {
105 | p = tree.getSelectionPath();
106 | }
107 | else {
108 | MouseEvent e = (MouseEvent) event;
109 | p = tree.getClosestPathForLocation(e.getX(), e.getY());
110 | }
111 | if (p != null) {
112 | // check if the node should be editable (i.e. it has a name)
113 | XMLTreeNode n = (XMLTreeNode) p.getLastPathComponent();
114 | Element actual = n.actual();
115 | if (actual != null && actual.hasAttribute(NAME)) {
116 | return super.isCellEditable(event);
117 | }
118 | }
119 | return false;
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/src/objecttree/ObjectTreeCellRenderer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objecttree;
24 |
25 | import static pooledit.Definitions.*;
26 | import java.awt.Color;
27 | import java.awt.Component;
28 | import java.awt.Graphics;
29 | import javax.swing.Icon;
30 | import javax.swing.JTree;
31 | import javax.swing.tree.DefaultTreeCellRenderer;
32 | import treemodel.XMLTreeNode;
33 | import pooledit.Utils;
34 |
35 | /**
36 | *
37 | * @author mohman
38 | */
39 | public class ObjectTreeCellRenderer extends DefaultTreeCellRenderer {
40 |
41 | static final Icon[] ICONS = new Icon[TREE_ELEMENTS.length];
42 | static final Icon[] LINK_ICONS = new Icon[TREE_ELEMENTS.length];
43 |
44 | static class LinkIcon implements Icon {
45 | private final Icon icon;
46 | public LinkIcon(Icon icon) { this.icon = icon; }
47 | @Override
48 | public void paintIcon(Component c, Graphics g, int x, int y) {
49 | icon.paintIcon(c, g, x, y);
50 | int w = getIconWidth();
51 | int w2 = w / 2;
52 | int w8 = w / 8;
53 | int h = getIconHeight();
54 | int h2 = h / 2;
55 | int h8 = h / 8;
56 | g.setColor(Color.BLUE);
57 | g.fillRect(w - w2, h - h2, w2, h2);
58 | g.setColor(Color.WHITE);
59 | g.drawLine(w - 3 * w8, h - 3 * h8, w - 3 * w8, h - h8);
60 | g.drawLine(w - 3 * w8, h - h8, w - w8, h - h8);
61 | }
62 | @Override
63 | public int getIconWidth() { return icon.getIconWidth(); }
64 | @Override
65 | public int getIconHeight() { return icon.getIconHeight(); }
66 | }
67 |
68 | static {
69 | for (int i = 0, n = TREE_ELEMENTS.length; i < n; i++) {
70 | ICONS[i] = Utils.createImageIcon(TREE_ELEMENT_PATH +
71 | TREE_ELEMENT_FILENAMES[i]);
72 | }
73 | for (int i = 0, n = TREE_ELEMENTS.length; i < n; i++) {
74 | LINK_ICONS[i] = new LinkIcon(ICONS[i]);
75 | }
76 | }
77 |
78 | /**
79 | * Gets icon.
80 | * @param type
81 | * @return
82 | */
83 | static public Icon getIcon(String type) {
84 | return getIcon(ICONS, type);
85 | }
86 |
87 | /**
88 | * Gets icon.
89 | * @param icons
90 | * @param type
91 | * @return
92 | */
93 | static protected Icon getIcon(Icon[] icons, String type) {
94 | if (type == null) {
95 | return null;
96 | }
97 | for (int i = 0, n = TREE_ELEMENTS.length; i < n; i++) {
98 | if (type.equals(TREE_ELEMENTS[i])) {
99 | return icons[i];
100 | }
101 | }
102 | return type.startsWith(COMMAND) ? icons[TREE_ELEMENTS.length - 1] : null;
103 | }
104 |
105 | /**
106 | * Gets a tree cell renderer component.
107 | * @param tree
108 | * @param value
109 | * @param sel
110 | * @param expanded
111 | * @param leaf
112 | * @param row
113 | * @param hasFocus
114 | * @return
115 | */
116 | @Override
117 | public Component getTreeCellRendererComponent(JTree tree, Object value,
118 | boolean sel, boolean expanded, boolean leaf, int row,
119 | boolean hasFocus) {
120 |
121 | super.getTreeCellRendererComponent
122 | (tree, value, sel, expanded, leaf, row, hasFocus);
123 |
124 | XMLTreeNode node = ((XMLTreeNode) value);
125 | Icon icon = node.link() != null ?
126 | getIcon(LINK_ICONS, node.getType()) :
127 | getIcon(ICONS, node.getType());
128 |
129 | if (icon != null) {
130 | setIcon(icon);
131 | }
132 | return this;
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/src/objecttree/ObjectTreeDragSourceListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objecttree;
24 |
25 | import java.awt.dnd.DnDConstants;
26 | import java.awt.dnd.DragSource;
27 | import java.awt.dnd.DragSourceContext;
28 | import java.awt.dnd.DragSourceDragEvent;
29 | import java.awt.dnd.DragSourceDropEvent;
30 | import java.awt.dnd.DragSourceEvent;
31 | import java.awt.dnd.DragSourceListener;
32 |
33 | /**
34 | *
35 | * @author mohman
36 | */
37 | public class ObjectTreeDragSourceListener implements DragSourceListener {
38 |
39 | private final boolean DEBUG = false;
40 |
41 | /**
42 | * Creates a new instance of ObjectTreeDragListener
43 | */
44 | public ObjectTreeDragSourceListener() {
45 | }
46 |
47 | /**
48 | * Prints debug messages.
49 | * @param msg
50 | */
51 | private void dmsg(Object msg) {
52 | if (DEBUG) {
53 | System.out.println("[" + getClass().getName() + "]: " + msg);
54 | }
55 | }
56 |
57 | @Override
58 | public void dragEnter(DragSourceDragEvent e) {
59 | dmsg("dragEnter");
60 | //intersection of the users selected action, and the source and target actions
61 | setCursor(e.getDropAction(), e.getDragSourceContext());
62 | }
63 |
64 | @Override
65 | public void dragOver(DragSourceDragEvent e) {
66 | DragSourceContext c = e.getDragSourceContext();
67 | dmsg( "dragOver:" +
68 | " source actions " + c.getSourceActions() +
69 | " user action " + e.getUserAction() +
70 | " drop actions " + e.getDropAction() +
71 | " target actions " + e.getTargetActions());
72 | }
73 |
74 | @Override
75 | public void dropActionChanged(DragSourceDragEvent e) {
76 | dmsg("dropActionChanged");
77 | setCursor(e.getDropAction(), e.getDragSourceContext());
78 | }
79 |
80 | /**
81 | * Sets cursor.
82 | * @param dropAction
83 | * @param context
84 | */
85 | private void setCursor(int dropAction, DragSourceContext context) {
86 | switch (dropAction) {
87 | case DnDConstants.ACTION_COPY:
88 | context.setCursor(DragSource.DefaultCopyDrop);
89 | break;
90 | case DnDConstants.ACTION_MOVE:
91 | context.setCursor(DragSource.DefaultMoveDrop);
92 | break;
93 | case DnDConstants.ACTION_LINK:
94 | context.setCursor(DragSource.DefaultLinkDrop);
95 | break;
96 | default:
97 | context.setCursor(DragSource.DefaultCopyNoDrop);
98 | break;
99 | }
100 | }
101 |
102 | @Override
103 | public void dragExit(DragSourceEvent e) {
104 | dmsg("dragExit");
105 | DragSourceContext context = e.getDragSourceContext();
106 | }
107 |
108 | @Override
109 | public void dragDropEnd(DragSourceDropEvent e) {
110 | if (e.getDropSuccess() == false) {
111 | dmsg("dragDropEnd (not ok)");
112 | return;
113 | }
114 |
115 | /*
116 | * the dropAction should be what the drop target specified
117 | * in acceptDrop
118 | */
119 | dmsg("dragDropEnd (ok)");
120 |
121 | // this is the action selected by the drop target
122 | if (e.getDropAction() != DnDConstants.ACTION_MOVE) {
123 | return;
124 | }
125 |
126 | Object source = e.getSource();
127 | if (!(source instanceof ObjectTree)) {
128 | return;
129 | }
130 |
131 | ObjectTree tree = (ObjectTree) source;
132 |
133 | //System.out.println("REMOVE SOMETHING FROM THE TREE!");
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/src/objecttree/ObjectTreePopup.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objecttree;
24 |
25 | import static pooledit.Definitions.*;
26 | import java.awt.event.MouseEvent;
27 | import java.awt.event.MouseListener;
28 | import javax.swing.tree.TreePath;
29 | import pooledit.TreeEditPopup;
30 | import treemodel.XMLTreeModel;
31 | import treemodel.XMLTreeNode;
32 |
33 | /**
34 | *
35 | * @author Autlab
36 | */
37 | public class ObjectTreePopup extends TreeEditPopup implements MouseListener {
38 |
39 | private final ObjectTree objectTree;
40 |
41 | /**
42 | * Constructor.
43 | * @param objectTree
44 | */
45 | public ObjectTreePopup(ObjectTree objectTree){
46 | this.objectTree = objectTree;
47 | }
48 |
49 | /**
50 | * Gets the current path.
51 | * @return
52 | */
53 | @Override
54 | public TreePath getCurrentPath() {
55 | return objectTree.getSelectionPath();
56 | }
57 |
58 | /**
59 | * Gets the xml tree model.
60 | * @return
61 | */
62 | @Override
63 | public XMLTreeModel getXMLTreeModel(){
64 | return (XMLTreeModel) objectTree.getModel();
65 | }
66 |
67 | /**
68 | * Reacts to mouse presses.
69 | * @param e
70 | */
71 | @Override
72 | public void mousePressed(MouseEvent e) {
73 | maybeShowPopup(e);
74 |
75 | // this is not absolutely necessary, but it makes starting of
76 | // in-place editing much more predictable!
77 | if (e.getClickCount() == 2) {
78 | // get current path and start in-place editing
79 | // (if the editor allows it for the selected node)
80 | TreePath path = objectTree.getClosestPathForLocation(e.getX(), e.getY());
81 | objectTree.startEditingAtPath(path);
82 | }
83 | }
84 |
85 | /**
86 | * Reacts to mouse releases.
87 | * @param e
88 | */
89 | @Override
90 | public void mouseReleased(MouseEvent e) {
91 | maybeShowPopup(e);
92 | }
93 |
94 | /**
95 | * Shows popup menu when appropriate.
96 | * @param e
97 | */
98 | private void maybeShowPopup(MouseEvent e) {
99 | if (e.isPopupTrigger()) {
100 | // popup trigger can change selection path
101 | TreePath path = objectTree.getClosestPathForLocation(e.getX(), e.getY());
102 | objectTree.setSelectionPath(path);
103 |
104 | // the popup is shown only for real isobus objects (and some other pseudo objects)
105 | // FIXME: how about commands?
106 | XMLTreeNode node = (XMLTreeNode) path.getLastPathComponent();
107 | if (node.isType(OBJECTS) ||
108 | node.isType(LANGUAGE, POINT, FIXEDBITMAP, INCLUDE_OBJECT) ||
109 | node.getType().startsWith(COMMAND)) {
110 | super.showPopup(e);
111 | }
112 | }
113 | }
114 |
115 | @Override
116 | public void mouseClicked(MouseEvent e) {
117 | }
118 |
119 | @Override
120 | public void mouseEntered(MouseEvent e) { }
121 |
122 | @Override
123 | public void mouseExited(MouseEvent e) { }
124 | }
125 |
--------------------------------------------------------------------------------
/src/objectview/HelpGrid.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objectview;
24 |
25 | import java.awt.BasicStroke;
26 | import java.awt.Color;
27 | import java.awt.Graphics2D;
28 | import java.awt.Shape;
29 | import java.awt.Stroke;
30 | import java.awt.geom.AffineTransform;
31 | import java.awt.geom.Line2D;
32 | import java.awt.geom.Rectangle2D;
33 | import java.util.ArrayList;
34 | import java.util.List;
35 | import treemodel.XMLTreeNode;
36 |
37 | /**
38 | *
39 | * @author mohman
40 | */
41 | public class HelpGrid {
42 |
43 | private final Stroke DASH_STROKE = new BasicStroke(0.0f,
44 | BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f,
45 | new float[] {1.0f, 1.0f}, 0.0f);
46 |
47 | private final List lines = new ArrayList<>();
48 | private final AffineTransform xform = new AffineTransform();
49 | private Rectangle2D rect;
50 |
51 | double dx = 10;
52 | double dy = 10;
53 | double ox = 0;
54 | double oy = 0;
55 |
56 | /**
57 | * Constructor.
58 | */
59 | public HelpGrid() {
60 | }
61 |
62 | public void reset() {
63 | rect = null;
64 | }
65 |
66 | public boolean isSet() {
67 | return rect != null;
68 | }
69 |
70 | public void makeLines(double width, double height) {
71 |
72 | lines.clear();
73 |
74 | // add vertical lines
75 | for (double x = ox; x < width; x += dx) {
76 | lines.add(new Line2D.Double(x, 0, x, height));
77 | }
78 |
79 | // add horizontal lines
80 | for (double y = oy; y < height; y += dy) {
81 | lines.add(new Line2D.Double(0, y, width, y));
82 | }
83 | }
84 |
85 | public void set(AffineTransform xfrm, Shape shape, XMLTreeNode source) {
86 | this.xform.setTransform(xfrm);
87 | rect = xform.createTransformedShape(shape).getBounds2D();
88 |
89 | Rectangle2D r = shape.getBounds2D();
90 | makeLines(r.getWidth(), r.getHeight());
91 | }
92 |
93 | public void adjust(AffineTransform xfrm) {
94 | if (isSet()) {
95 | xform.preConcatenate(xfrm);
96 | rect = xform.createTransformedShape(rect).getBounds2D();
97 | }
98 | }
99 |
100 | /**
101 | * Draws the help grid.
102 | * @param gfx
103 | * @param zoom
104 | */
105 | public void draw(Graphics2D gfx, double zoom) {
106 | Stroke olds = gfx.getStroke();
107 | gfx.setStroke(DASH_STROKE);
108 | gfx.setXORMode(Color.PINK);
109 | for (Line2D.Double line : lines) {
110 | gfx.draw(xform.createTransformedShape(line));
111 | }
112 | gfx.setPaintMode();
113 | gfx.setStroke(olds);
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/objectview/LineAttributes.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objectview;
24 |
25 | import java.awt.Color;
26 | import java.awt.Graphics2D;
27 | import java.awt.Stroke;
28 |
29 | /**
30 | *
31 | * @author mohman
32 | */
33 | public class LineAttributes {
34 | private final Color color;
35 | private final Stroke stroke;
36 |
37 | /**
38 | * Gets the line color.
39 | * @return
40 | */
41 | public Color getColor() {
42 | return color;
43 | }
44 |
45 | /**
46 | * Gets the line stroke.
47 | * @return
48 | */
49 | public Stroke getStroke() {
50 | return stroke;
51 | }
52 |
53 | /**
54 | * Creates a new instance of LineAttributes.
55 | * @param color
56 | * @param stroke
57 | */
58 | public LineAttributes(Color color, Stroke stroke) {
59 | this.color = color;
60 | this.stroke = stroke;
61 | }
62 |
63 | /**
64 | * Applies these line attributes to the given graphics context.
65 | * @param gfx
66 | */
67 | public void apply(Graphics2D gfx) {
68 | gfx.setColor(color);
69 | gfx.setStroke(stroke);
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/objectview/ObjectOperations.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objectview;
24 |
25 | import java.awt.Graphics2D;
26 | import java.awt.image.BufferedImage;
27 | import java.io.IOException;
28 | import treemodel.XMLTreeNode;
29 |
30 | /**
31 | *
32 | * @author mohman
33 | */
34 | public interface ObjectOperations {
35 | void setDepth(int depth);
36 |
37 | void incDepth();
38 |
39 | void decDepth();
40 |
41 | int getDepth();
42 |
43 | void opAlarmMask(Graphics2D gfx, XMLTreeNode node, int w, int h);
44 |
45 | void opArchedBarGraph(Graphics2D gfx, XMLTreeNode node);
46 |
47 | void opAuxiliaryFunction(Graphics2D gfx, XMLTreeNode node, int w, int h);
48 |
49 | void opAuxiliaryInput(Graphics2D gfx, XMLTreeNode node, int w, int h);
50 |
51 | void opButton(Graphics2D gfx, XMLTreeNode node);
52 |
53 | void opContainer(Graphics2D gfx, XMLTreeNode node);
54 |
55 | void opDataMask(Graphics2D gfx, XMLTreeNode node, int w, int h);
56 |
57 | void opEllipse(Graphics2D gfx, XMLTreeNode node, String imagepath) throws IOException;
58 |
59 | void opInputBoolean(Graphics2D gfx, XMLTreeNode node);
60 |
61 | void opInputList(Graphics2D gfx, XMLTreeNode node);
62 |
63 | void opInputNumber(Graphics2D gfx, XMLTreeNode node) throws IOException;
64 |
65 | void opInputString(Graphics2D gfx, XMLTreeNode node) throws IOException;
66 |
67 | void opKey(Graphics2D gfx, XMLTreeNode node, int w, int h);
68 |
69 | void opLine(Graphics2D gfx, XMLTreeNode node);
70 |
71 | void opLinearBarGraph(Graphics2D gfx, XMLTreeNode node);
72 |
73 | void opMeter(Graphics2D gfx, XMLTreeNode node);
74 |
75 | void opObjectPointer(Graphics2D gfx, XMLTreeNode node);
76 |
77 | void opOutputNumber(Graphics2D gfx, XMLTreeNode node) throws IOException;
78 |
79 | void opOutputString(Graphics2D gfx, XMLTreeNode node) throws IOException;
80 |
81 | void opPictureGraphic(Graphics2D gfx, XMLTreeNode node, BufferedImage image);
82 |
83 | void opPolygon(Graphics2D gfx, XMLTreeNode node, String imagepath) throws IOException;
84 |
85 | void opRectangle(Graphics2D gfx, XMLTreeNode node, String imagepath) throws IOException;
86 |
87 | void opSoftKeyMask(Graphics2D gfx, XMLTreeNode node, int w, int h, int sk_height);
88 |
89 | void opWorkingSet(Graphics2D gfx, XMLTreeNode node, int w, int h);
90 | }
91 |
--------------------------------------------------------------------------------
/src/objectview/ObjectViewPopup.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package objectview;
24 |
25 | import javax.swing.tree.TreePath;
26 | import pooledit.TreeEditPopup;
27 | import treemodel.XMLTreeModel;
28 |
29 |
30 | /**
31 | *
32 | * @author jkalmari
33 | */
34 | public class ObjectViewPopup extends TreeEditPopup {
35 |
36 | private final ObjectView objectView;
37 |
38 | /**
39 | * Constructor.
40 | * @param objectView
41 | */
42 | public ObjectViewPopup(ObjectView objectView){
43 | this.objectView = objectView;
44 | }
45 |
46 | /**
47 | * Gets the current path (which is in this case the active path from the
48 | * object view).
49 | * @return
50 | */
51 | @Override
52 | public TreePath getCurrentPath() {
53 | return objectView.getActivePath();
54 | }
55 |
56 | /**
57 | * Gets the xml tree model.
58 | * @return
59 | */
60 | @Override
61 | public XMLTreeModel getXMLTreeModel() {
62 | return objectView.getModel();
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/pooledit/DragLabel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package pooledit;
24 |
25 | import java.util.List;
26 | import java.util.Map;
27 | import javax.swing.JLabel;
28 | import multidom.SingleDOM;
29 | import objecttree.ObjectTreeCellRenderer;
30 | import org.w3c.dom.Document;
31 | import org.w3c.dom.Element;
32 |
33 | /**
34 | *
35 | * @author mohman
36 | */
37 | public class DragLabel extends JLabel {
38 |
39 | private final String type;
40 | private final SingleDOM libdoc;
41 |
42 | /**
43 | * Constructor.
44 | * @param type
45 | * @param libdoc
46 | */
47 | public DragLabel(String type, SingleDOM libdoc) {
48 | super(ObjectTreeCellRenderer.getIcon(type));
49 | this.type = type;
50 | this.libdoc = libdoc;
51 | }
52 |
53 | /**
54 | * Gets the XML description of the first element with a matching type.
55 | * @return
56 | */
57 | public String getXML() {
58 | Document doc = libdoc.actual();
59 | List list = Tools.getChildElementList(doc.getDocumentElement());
60 | for (Element e : list) {
61 | if (e.getNodeName().equals(type)) {
62 | Map namemap = Tools.createNameMap(doc);
63 | return Tools.writeToStringNoDec(Tools.createMergedElementRecursive(e, namemap));
64 | }
65 | }
66 | return null;
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/pooledit/DynamicView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package pooledit;
24 |
25 | import java.awt.Component;
26 | import javax.swing.Icon;
27 | import net.infonode.docking.View;
28 |
29 | /**
30 | *
31 | * @author mohman
32 | */
33 | public class DynamicView extends View {
34 | private final int id;
35 |
36 | /**
37 | * Constructor.
38 | * @param title the view title
39 | * @param icon the view icon
40 | * @param component the view component
41 | * @param id the view id
42 | */
43 | public DynamicView(String title, Icon icon, Component component, int id) {
44 | super(title, icon, component);
45 | this.id = id;
46 | }
47 |
48 | /**
49 | * Returns the view id.
50 | * @return the view id
51 | */
52 | public int getId() {
53 | return id;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/pooledit/FileTools.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package pooledit;
24 |
25 | import java.io.File;
26 | import java.util.regex.Matcher;
27 | import javax.swing.JFileChooser;
28 |
29 | /**
30 | *
31 | * @author moehman
32 | */
33 | public class FileTools {
34 | /**
35 | * Strip redundant separators and converts them to File.separator in
36 | * the process.
37 | * @param path
38 | * @return
39 | */
40 | static public String stripRedundantSeparators(String path) {
41 | return path.replaceAll("(?= 0) {
53 | if (i > 0 && options.charAt(i - 1) != '+') {
54 | continue;
55 | }
56 | int pos = i + option.length();
57 | int len = options.length();
58 | if (pos < len && options.charAt(pos) != '+') {
59 | continue;
60 | }
61 | return true;
62 | }
63 | return false;
64 | }
65 | /**
66 | * Removes the specified option from the options list.
67 | * @param options
68 | * @param option
69 | * @return
70 | */
71 | static public String optionsRemove(String options, String option) {
72 | int i = -1;
73 | while ((i = options.indexOf(option, i + 1)) >= 0) {
74 | if (i > 0 && options.charAt(i - 1) != '+') {
75 | continue;
76 | }
77 | int pos = i + option.length();
78 | int len = options.length();
79 | if (pos < len && options.charAt(pos) != '+') {
80 | continue;
81 | }
82 | String s = (i > 0) ? options.substring(0, i - 1) : "";
83 | String t = (pos < len) ? options.substring(pos + 1) : "";
84 | return t.isEmpty() ? s : s.isEmpty() ? t : s + "+" + t;
85 | }
86 | return options;
87 | }
88 |
89 | /**
90 | * Returns true, if at least one of the later values equals the first
91 | * value.
92 | * @param value
93 | * @param values
94 | * @return
95 | */
96 | public static boolean equals(String value, String ... values) {
97 | for (int i = 0, n = values.length; i < n; i++) {
98 | if (value.equals(values[i])) {
99 | return true;
100 | }
101 | }
102 | return false;
103 | }
104 |
105 | /**
106 | * Returns the index to the later value that is equal to the first
107 | * value. If there is no such value, this method returns -1.
108 | * @param name
109 | * @param names
110 | * @return
111 | */
112 | public static int indexEquals(String name, String ... names) {
113 | for (int i = 0, n = names.length; i < n; i++) {
114 | if (name.equals(names[i])) {
115 | return i;
116 | }
117 | }
118 | return -1;
119 | }
120 |
121 | /**
122 | * Check whether two objects are equals. Unlike in o1.equals(o2), both
123 | * objects can be null, equalObjects(null, null) return true.
124 | * @param o1
125 | * @param o2
126 | * @return
127 | */
128 | public static boolean equalObjects(Object o1, Object o2) {
129 | return (o1 == null && o2 == null) || (o1 != null && o1.equals(o2));
130 | }
131 |
132 | /*
133 | public static void main(String[] args) {
134 | System.out.println("Testing...");
135 |
136 | System.out.println("optionsContain(ab+a, a): " + optionsContain("ab+a", "a"));
137 | System.out.println("optionsContain(ab+c, a): " + optionsContain("ab+c", "a"));
138 | System.out.println("optionsContain(ab+b, b): " + optionsContain("ab+b", "b"));
139 | System.out.println("optionsContain(ab+c, b): " + optionsContain("ab+c", "b"));
140 |
141 | System.out.println("optionsContain(a+ab, a): " + optionsContain("a+ab", "a"));
142 | System.out.println("optionsContain(c+ab, a): " + optionsContain("c+ab", "a"));
143 | System.out.println("optionsContain(b+ab, b): " + optionsContain("b+ab", "b"));
144 | System.out.println("optionsContain(c+ab, b): " + optionsContain("c+ab", "b"));
145 |
146 | System.out.println("optionsContain(ab+aa+a+ca, a): " + optionsContain("ab+aa+a+ca", "a"));
147 | System.out.println("optionsContain(ab+c+aa+ca, a): " + optionsContain("ab+c+aa+ca", "a"));
148 | }
149 | */
150 | /*
151 | public static void main(String[] args) {
152 | System.out.println("Testing...");
153 |
154 | System.out.println("optionsRemove(ab+a, a): " + optionsRemove("ab+a", "a"));
155 | System.out.println("optionsRemove(a+ab, a): " + optionsRemove("a+ab", "a"));
156 | System.out.println("optionsRemove(ab+a+ca, a): " + optionsRemove("ab+a+ca", "a"));
157 | System.out.println("optionsRemove(ba+a+ac, a): " + optionsRemove("ba+a+ac", "a"));
158 | }
159 | */
160 | }
161 |
--------------------------------------------------------------------------------
/src/poolimporter/ByteReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | import java.util.List;
26 |
27 | /**
28 | *
29 | * @author moehman
30 | */
31 | public interface ByteReader {
32 | public int readId();
33 | public int readWord();
34 | public int readDWord();
35 | public float readFloat();
36 | public int readColor();
37 | public int readType();
38 | public int readByte();
39 | public byte[] readByteArray(int len);
40 | public int readKeyCode();
41 | public List readBytes(int nro);
42 | public int readRef();
43 | public List readRefs(int nro);
44 | public List readRefXYs(int nro);
45 | public List readPoints(int nro);
46 | public List readLanguages(int nro);
47 | public String readString(int len);
48 | }
49 |
--------------------------------------------------------------------------------
/src/poolimporter/CArrayReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | import java.nio.charset.Charset;
26 | import java.util.ArrayList;
27 | import java.util.List;
28 | import java.util.Scanner;
29 |
30 | /**
31 | *
32 | * @author moehman
33 | */
34 | class CArrayReader implements ByteReader {
35 | private final Scanner sc;
36 | public CArrayReader(Scanner sc) {
37 | this.sc = sc;
38 | }
39 | @Override
40 | public int readId() {
41 | return readWord();
42 | }
43 |
44 | @Override
45 | public int readWord() {
46 | return
47 | (readByte()) |
48 | (readByte() << 8);
49 | }
50 |
51 | @Override
52 | public int readDWord() {
53 | return
54 | (readByte()) |
55 | (readByte() << 8) |
56 | (readByte() << 16) |
57 | (readByte() << 24);
58 | }
59 |
60 | @Override
61 | public float readFloat() {
62 | return Float.intBitsToFloat(readDWord());
63 | }
64 |
65 | @Override
66 | public int readColor() {
67 | return readByte();
68 | }
69 |
70 | @Override
71 | public int readType() {
72 | return readByte();
73 | }
74 |
75 | @Override
76 | public int readByte() {
77 | final int val = Integer.parseInt(sc.next());
78 | if (val > 0xFF)
79 | throw new RuntimeException("byte too large: " + val);
80 |
81 | return val;
82 | }
83 |
84 | @Override
85 | public byte[] readByteArray(int len) {
86 | byte[] b = new byte[len];
87 | for (int i = 0; i < len; i++) {
88 | b[i] = (byte) readByte();
89 | }
90 | return b;
91 | }
92 |
93 | @Override
94 | public int readKeyCode() {
95 | return readByte();
96 | }
97 |
98 | @Override
99 | public List readBytes(int nro) {
100 | List list = new ArrayList<>();
101 | for (int i = 0; i < nro; i++) {
102 | list.add(readByte());
103 | }
104 | return list;
105 | }
106 |
107 | @Override
108 | public int readRef() {
109 | return readWord();
110 | }
111 |
112 | @Override
113 | public List readRefs(int nro) {
114 | List list = new ArrayList<>();
115 | for (int i = 0; i < nro; i++) {
116 | list.add(readRef());
117 | }
118 | return list;
119 | }
120 |
121 | @Override
122 | public List readRefXYs(int nro) {
123 | List list = new ArrayList<>();
124 | for (int i = 0; i < nro; i++) {
125 | list.add(new RefXY(readRef(),
126 | readWord(),
127 | readWord()));
128 | }
129 | return list;
130 | }
131 |
132 | @Override
133 | public List readPoints(int nro) {
134 | List list = new ArrayList<>();
135 | for (int i = 0; i < nro; i++) {
136 | list.add(new PointXY(readWord(), readWord()));
137 | }
138 | return list;
139 | }
140 |
141 | @Override
142 | public List readLanguages(int nro) {
143 | List list = new ArrayList<>();
144 | for (int i = 0; i < nro; i++) {
145 | String val = readString(2);
146 | list.add(val);
147 | }
148 | return list;
149 | }
150 |
151 | @Override
152 | public String readString(int len) {
153 | byte[] b = readByteArray(len);
154 | return new String(b, Charset.forName("ISO-8859-1"));
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/src/poolimporter/IOPReader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | import java.io.BufferedInputStream;
26 | import java.io.IOException;
27 | import java.nio.charset.Charset;
28 | import java.util.ArrayList;
29 | import java.util.List;
30 |
31 | /**
32 | *
33 | * @author moehman
34 | */
35 | class IOPReader implements ByteReader {
36 | BufferedInputStream in;
37 | public IOPReader(BufferedInputStream in) {
38 | this.in = in;
39 | }
40 | @Override
41 | public int readId() {
42 | return readWord();
43 | }
44 |
45 | @Override
46 | public int readWord() {
47 | return
48 | (readByte()) |
49 | (readByte() << 8);
50 | }
51 |
52 | @Override
53 | public int readDWord() {
54 | return
55 | (readByte()) |
56 | (readByte() << 8) |
57 | (readByte() << 16) |
58 | (readByte() << 24);
59 | }
60 |
61 | @Override
62 | public float readFloat() {
63 | return Float.intBitsToFloat(readDWord());
64 | }
65 |
66 | @Override
67 | public int readColor() {
68 | return readByte();
69 | }
70 |
71 | @Override
72 | public int readType() {
73 | return readByte();
74 | }
75 |
76 | @Override
77 | public int readByte() {
78 | int val = -1;
79 | try {
80 | val = in.read();
81 | }
82 | catch (IOException e) {}
83 |
84 | if (val < 0)
85 | throw new RuntimeException("unexpected end of stream");
86 | return val;
87 | }
88 |
89 | @Override
90 | public byte[] readByteArray(int len) {
91 | byte[] b = new byte[len];
92 | for (int i = 0; i < len; i++) {
93 | b[i] = (byte) readByte();
94 | }
95 | return b;
96 | }
97 |
98 | @Override
99 | public int readKeyCode() {
100 | return readByte();
101 | }
102 |
103 | @Override
104 | public List readBytes(int nro) {
105 | List list = new ArrayList<>();
106 | for (int i = 0; i < nro; i++) {
107 | list.add(readByte());
108 | }
109 | return list;
110 | }
111 |
112 | @Override
113 | public int readRef() {
114 | return readWord();
115 | }
116 |
117 | @Override
118 | public List readRefs(int nro) {
119 | List list = new ArrayList<>();
120 | for (int i = 0; i < nro; i++) {
121 | list.add(readRef());
122 | }
123 | return list;
124 | }
125 |
126 | @Override
127 | public List readRefXYs(int nro) {
128 | List list = new ArrayList<>();
129 | for (int i = 0; i < nro; i++) {
130 | list.add(new RefXY(readRef(),
131 | readWord(),
132 | readWord()));
133 | }
134 | return list;
135 | }
136 |
137 | @Override
138 | public List readPoints(int nro) {
139 | List list = new ArrayList<>();
140 | for (int i = 0; i < nro; i++) {
141 | list.add(new PointXY(readWord(), readWord()));
142 | }
143 | return list;
144 | }
145 |
146 | @Override
147 | public List readLanguages(int nro) {
148 | List list = new ArrayList<>();
149 | for (int i = 0; i < nro; i++) {
150 | String val = readString(2);
151 | list.add(val);
152 | }
153 | return list;
154 | }
155 |
156 | @Override
157 | public String readString(int len) {
158 | byte[] b = readByteArray(len);
159 | return new String(b, Charset.forName("ISO-8859-1"));
160 | }
161 | }
162 |
--------------------------------------------------------------------------------
/src/poolimporter/PointXY.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | /**
26 | *
27 | * @author moehman
28 | */
29 | public class PointXY {
30 | int x, y;
31 | PointXY(int x, int y) {
32 | this.x = x;
33 | this.y = y;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/poolimporter/RefXY.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | /**
26 | *
27 | * @author moehman
28 | */
29 | public class RefXY {
30 | int id, x, y;
31 | RefXY(int id, int x, int y) {
32 | this.id = id;
33 | this.x = x;
34 | this.y = y;
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/src/poolimporter/VTAbstObj.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | import java.io.PrintStream;
26 | import java.util.Map;
27 | import org.w3c.dom.Document;
28 |
29 | /**
30 | *
31 | * @author moehman
32 | */
33 | abstract class VTAbstObj implements VTObject {
34 | String name;
35 | int id;
36 | @Override
37 | public void setName(String name) {
38 | this.name = name;
39 | }
40 | @Override
41 | public void setId(int id) {
42 | this.id = id;
43 | }
44 | @Override
45 | abstract public void read(ByteReader br);
46 | @Override
47 | abstract public void emitXML(Map map, PrintStream out);
48 | @Override
49 | abstract public void appendDoc(Map map, Document doc);
50 | @Override
51 | abstract public String getType();
52 | }
53 |
--------------------------------------------------------------------------------
/src/poolimporter/VTObject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package poolimporter;
24 |
25 | import java.io.PrintStream;
26 | import java.util.Map;
27 | import org.w3c.dom.Document;
28 |
29 | /**
30 | *
31 | * @author moehman
32 | */
33 | public interface VTObject {
34 | public void setName(String name);
35 | public void setId(int id);
36 | public void read(ByteReader br);
37 | public void emitXML(Map map, PrintStream out);
38 | public void appendDoc(Map map, Document doc);
39 | public String getType();
40 | }
41 |
--------------------------------------------------------------------------------
/src/treemodel/XMLTreeNodeList.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2019 Automation technology laboratory,
3 | * Helsinki University of Technology
4 | *
5 | * Visit automation.tkk.fi for information about the automation
6 | * technology laboratory.
7 | *
8 | * This program is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU General Public License
10 | * as published by the Free Software Foundation; either version 3
11 | * of the License, or (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program; if not, write to the Free Software
20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 | * MA 02111-1307, USA.
22 | */
23 | package treemodel;
24 |
25 | import static pooledit.Definitions.*;
26 | import java.util.ArrayList;
27 | import org.w3c.dom.Node;
28 | import org.w3c.dom.NodeList;
29 | import org.w3c.dom.Element;
30 | import pooledit.Utils;
31 |
32 | /**
33 | *
34 | * @author mohman
35 | */
36 | class XMLTreeNodeList extends ArrayList {
37 |
38 | private final XMLTreeNode parent;
39 |
40 | /**
41 | * Constructor.
42 | * @param list
43 | */
44 | protected XMLTreeNodeList(XMLTreeNodeList list) {
45 | super(list);
46 | this.parent = list.parent;
47 | }
48 |
49 | /**
50 | * Constructor.
51 | * @param parent
52 | */
53 | protected XMLTreeNodeList(XMLTreeNode parent) {
54 | this.parent = parent;
55 |
56 | XMLTreeModel model = parent.getModel();
57 | String type = parent.getType();
58 | int index;
59 |
60 | // parent is root -> create category nodes
61 | if (Utils.indexEquals(type, OBJECTPOOL) >= 0) {
62 | for (int i = 0, n = CATEGORIES.length; i < n; i++) {
63 | XMLTreeNode node = model.CATEGORY_NODES[i];
64 | add(node);
65 | }
66 | }
67 | // parent is a category node -> create subcategory nodes
68 | else if ((index = Utils.indexEquals(type, CATEGORIES)) >= 0) {
69 | for (int i = 0, n = SUBCATEGORYGROUPS[index].length; i < n; i++) {
70 | XMLTreeNode node = model.SUBCATEGORY_NODES[index][i];
71 | add(node);
72 | }
73 | }
74 | // parent is a subcategory node -> create actual nodes stored in subcategories
75 | else if ((index = Utils.indexEquals(type, SUBCATEGORIES)) >= 0) {
76 |
77 | // iterate over all elements
78 | Element root = parent.getModel().getDocument().getDocumentElement();
79 | NodeList elements = root.getChildNodes();
80 | for (int i = 0, n = elements.getLength(); i < n; i++) {
81 | Node node = elements.item(i);
82 | if (node.getNodeType() == Node.ELEMENT_NODE &&
83 | node.getNodeName().equals(OBJECTS[index])) {
84 |
85 | add(parent.createChildNode((Element) node));
86 | }
87 | }
88 | }
89 | // parent is a real node (actual or link)
90 | else {
91 |
92 | // add child elements
93 | Element element = parent.actual();
94 | NodeList elements = element.getChildNodes();
95 | for (int i = 0, n = elements.getLength(); i < n; i++) {
96 | Node node = elements.item(i);
97 | if (node.getNodeType() == Node.ELEMENT_NODE) {
98 | add(parent.createChildNode((Element) node));
99 | }
100 | }
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/template.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------