├── .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 | ![Screenshot](screenshot.png) 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 | --------------------------------------------------------------------------------