├── .gitattributes ├── .gitignore ├── Images ├── ListEditorRemovefListfromList.png ├── ListEditorRemovefromList.png ├── MFM UI 0.9.5-1.png ├── MFM UI 0.9.5-2.png ├── MFM UI 0.9.5-3 (SoftwareList Menu).png ├── MFM UI 0.9.5-4 (segacd SoftwareList).png ├── MFM UI 0.9.5-5 List Editor.png ├── MFM UI 01.png ├── MFM UI 03.png ├── MFM UI 04.png ├── MFM UI ListBuilder 0.9.png ├── MFM-Scan Resources.png └── dir.txt ├── LICENSE ├── Lists └── Favs.txt ├── MAME File Manager User Guide.odt ├── MAME File Manager User Guide.pdf ├── MFM.bat ├── MFM.sh ├── README.md ├── Settings ├── MAME_Controllers.ini ├── MAME_folders.ini └── datafile2018.xsd ├── build.gradle ├── category └── CategoryListsMap.xml ├── folders ├── arcade.ini ├── catver.ini ├── languages.ini └── nplayers.ini ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jars ├── EaSynthLookAndFeel.jar ├── LiquidLnF.jar ├── quaqua.jar └── synthetica.jar └── src └── main ├── java └── com │ └── github │ └── phweda │ ├── mfm │ ├── FFMPEG.java │ ├── MAMECommands.java │ ├── MAMEInfo.java │ ├── MAME_Resources.java │ ├── MAMEexe.java │ ├── MFM.java │ ├── MFMListBuilder.java │ ├── MFMListGenerator.java │ ├── MFMPlayLists.java │ ├── MFMSettings.java │ ├── MFM_Constants.java │ ├── MFM_Data.java │ ├── MachineControllers.java │ ├── datafile │ │ ├── Archive.java │ │ ├── Biosset.java │ │ ├── Clrmamepro.java │ │ ├── Datafile.java │ │ ├── Disk.java │ │ ├── Game.java │ │ ├── Header.java │ │ ├── ObjectFactory.java │ │ ├── Release.java │ │ ├── Rom.java │ │ ├── Romcenter.java │ │ ├── Sample.java │ │ └── package-info.java │ ├── mame │ │ ├── Adjuster.java │ │ ├── Analog.java │ │ ├── Biosset.java │ │ ├── Chip.java │ │ ├── Condition.java │ │ ├── Configuration.java │ │ ├── Conflocation.java │ │ ├── Confsetting.java │ │ ├── Control.java │ │ ├── Device.java │ │ ├── DeviceRef.java │ │ ├── Diplocation.java │ │ ├── Dipswitch.java │ │ ├── Dipvalue.java │ │ ├── Disk.java │ │ ├── Display.java │ │ ├── Driver.java │ │ ├── Extension.java │ │ ├── Feature.java │ │ ├── Input.java │ │ ├── Instance.java │ │ ├── LoadNonMAMEresources.java │ │ ├── MAME_Game_Prefixes.java │ │ ├── Machine.java │ │ ├── Mame.java │ │ ├── ObjectFactory.java │ │ ├── ParseMAMEexternalData.java │ │ ├── ParseMAMElistInfo.java │ │ ├── ParseMAMElistXML.java │ │ ├── ParseSoftwareLists.java │ │ ├── Port.java │ │ ├── Ramoption.java │ │ ├── Rom.java │ │ ├── Sample.java │ │ ├── Slot.java │ │ ├── Slotoption.java │ │ ├── Softwarelist.java │ │ ├── Sound.java │ │ ├── package-info.java │ │ └── softwarelist │ │ │ ├── Dataarea.java │ │ │ ├── Dipswitch.java │ │ │ ├── Dipvalue.java │ │ │ ├── Disk.java │ │ │ ├── Diskarea.java │ │ │ ├── Feature.java │ │ │ ├── Info.java │ │ │ ├── ObjectFactory.java │ │ │ ├── Part.java │ │ │ ├── Rom.java │ │ │ ├── Sharedfeat.java │ │ │ ├── Software.java │ │ │ ├── Softwarelist.java │ │ │ └── Softwarelists.java │ ├── ui │ │ ├── AddRemoveDividerUI.java │ │ ├── CommandDialog.java │ │ ├── DynamicCBpanel.java │ │ ├── FFMPEG_Panel.java │ │ ├── ImagePanel.java │ │ ├── ImagesViewer.java │ │ ├── JCheckBoxTree.java │ │ ├── JMultiLineToolTip.java │ │ ├── LinkEditorPane.java │ │ ├── ListBuilderUI.form │ │ ├── ListBuilderUI.java │ │ ├── ListDialog.java │ │ ├── ListEditor.form │ │ ├── ListEditor.java │ │ ├── ListEditorModel.java │ │ ├── MAME_Stats.java │ │ ├── MAMEtoJTree.java │ │ ├── MFMAction.java │ │ ├── MFMBusyPainter.java │ │ ├── MFMCategoryTree.java │ │ ├── MFMController.java │ │ ├── MFMHTMLTextPane.java │ │ ├── MFMInformationPanel.java │ │ ├── MFMKeyActions.java │ │ ├── MFMListActions.java │ │ ├── MFMOptionPane.java │ │ ├── MFMProgressBar.java │ │ ├── MFMUI.java │ │ ├── MFMUI_Resources.java │ │ ├── MFMUI_Setup.java │ │ ├── MFMVideoActions.java │ │ ├── MFM_Components.java │ │ ├── MFM_Menubar.java │ │ ├── MFM_SettingsPanel.java │ │ ├── MFM_Wiki.java │ │ ├── MachineListForm.form │ │ ├── MachineListForm.java │ │ ├── MachineListTable.java │ │ ├── MachineListTableModel.java │ │ ├── MenuScroller.java │ │ ├── SettingsPanel.form │ │ ├── SettingsPanel.java │ │ ├── SoftwareListtoJTree.java │ │ ├── StatusBar.java │ │ └── component │ │ │ ├── ValidatedComboBox.form │ │ │ ├── ValidatedComboBox.java │ │ │ ├── ValidatedFSPathInputBox.form │ │ │ ├── ValidatedFSPathInputBox.java │ │ │ └── validation │ │ │ ├── UiMessageSeverity.java │ │ │ ├── ValidationBase.form │ │ │ ├── ValidationBase.java │ │ │ └── ValidationResult.java │ └── utils │ │ ├── AnalyzeCategories.java │ │ ├── DTD_Formatter.java │ │ ├── MAMEDocType.java │ │ ├── MFMFileOps.java │ │ ├── MFM_Clean_Logs.java │ │ ├── MFM_DATmaker.java │ │ ├── ParseCatverINI.java │ │ ├── ParseCommandList.java │ │ ├── ParseExtrasInfoDATs.java │ │ ├── ParseFolderINIs.java │ │ ├── ParseGameList.java │ │ ├── ParseHistoryDAT.java │ │ ├── ParseMAMEList.java │ │ ├── ParseRootOnlyINI.java │ │ ├── ParseSYSINFODAT.java │ │ └── ParsenPlayerINI.java │ └── utils │ ├── ClickListener.java │ ├── ClockPanel.java │ ├── Debug.java │ ├── DirectorytoXML.java │ ├── FileUtils.java │ ├── Hasher.java │ ├── LangUtils.java │ ├── MemoryMonitor.java │ ├── ParseTextFile.java │ ├── Pastie.java │ ├── PersistUtils.java │ ├── QuadState.java │ ├── StringUtils.java │ ├── SwingUtils.java │ ├── SysUtils.java │ ├── TriState.java │ ├── VideoSource.java │ ├── VideoUtils.java │ ├── XMLUtils.java │ └── ZipUtils.java └── resources └── com └── github └── phweda └── mfm ├── ui ├── 2Joystick_control.png ├── A.png ├── Arrow.png ├── Button_control.png ├── C.png ├── CheckMark.png ├── Dial_control.png ├── EX.png ├── GNU GPL V3.html ├── Gambling_control.png ├── Hanafuda_control.png ├── Hot Keys.html ├── Joystick_control.png ├── Keyboard_control.png ├── Keypad_control.png ├── L.png ├── Lightgun_control.png ├── MFM Copyright.html ├── MFM.html ├── MFM_Icon.png ├── MFM_Image.png ├── Mahjong_control2.png ├── Minus.png ├── Mouse_control.png ├── P.png ├── Paddle_control.png ├── Pedal_control.png ├── Positional_control.png ├── R.png ├── S.png ├── Stick_control.png ├── Trackball_control.png ├── UpArrow.png ├── circular_arrow.png ├── flags │ ├── AD.png │ ├── AF.png │ ├── AG.png │ ├── AI.png │ ├── AL.png │ ├── AM.png │ ├── AN.png │ ├── AO.png │ ├── AR.png │ ├── AS.png │ ├── AT.png │ ├── AU.png │ ├── AW.png │ ├── AZ.png │ ├── BA.png │ ├── BB.png │ ├── BD.png │ ├── BE.png │ ├── BF.png │ ├── BG.png │ ├── BH.png │ ├── BI.png │ ├── BJ.png │ ├── BM.png │ ├── BN.png │ ├── BO.png │ ├── BR.png │ ├── BS.png │ ├── BT.png │ ├── BW.png │ ├── BY.png │ ├── BZ.png │ ├── CA.png │ ├── CD.png │ ├── CF.png │ ├── CG.png │ ├── CI.png │ ├── CK.png │ ├── CL.png │ ├── CM.png │ ├── CN.png │ ├── CO.png │ ├── CR.png │ ├── CU.png │ ├── CV.png │ ├── CY.png │ ├── CZ.png │ ├── DE.png │ ├── DJ.png │ ├── DK.png │ ├── DM.png │ ├── DO.png │ ├── DZ.png │ ├── EC.png │ ├── EE.png │ ├── EG.png │ ├── ER.png │ ├── ET.png │ ├── FI.png │ ├── FJ.png │ ├── FM.png │ ├── FO.png │ ├── FR.png │ ├── GA.png │ ├── GD.png │ ├── GE.png │ ├── GG.png │ ├── GH.png │ ├── GI.png │ ├── GL.png │ ├── GM.png │ ├── GN.png │ ├── GP.png │ ├── GQ.png │ ├── GR.png │ ├── GT.png │ ├── GU.png │ ├── GW.png │ ├── GY.png │ ├── HK.png │ ├── HN.png │ ├── HR.png │ ├── HU.png │ ├── ID.png │ ├── IE.png │ ├── IL.png │ ├── IM.png │ ├── IN.png │ ├── IQ.png │ ├── IR.png │ ├── IS.png │ ├── IT.png │ ├── JE.png │ ├── JM.png │ ├── JO.png │ ├── JP.png │ ├── KE.png │ ├── KG.png │ ├── KH.png │ ├── KI.png │ ├── KM.png │ ├── KP.png │ ├── KW.png │ ├── KY.png │ ├── KZ.png │ ├── LA.png │ ├── LB.png │ ├── LI.png │ ├── LR.png │ ├── LT.png │ ├── LU.png │ ├── LV.png │ ├── MA.png │ ├── MC.png │ ├── MD.png │ ├── ME.png │ ├── MG.png │ ├── MH.png │ ├── MK.png │ ├── ML.png │ ├── MM.png │ ├── MN.png │ ├── MO.png │ ├── MQ.png │ ├── MR.png │ ├── MS.png │ ├── MT.png │ ├── MU.png │ ├── MV.png │ ├── MW.png │ ├── MX.png │ ├── MY.png │ ├── MZ.png │ ├── NA.png │ ├── NC.png │ ├── NE.png │ ├── NG.png │ ├── NI.png │ ├── NL.png │ ├── NO.png │ ├── PF.png │ ├── PR.png │ ├── PS.png │ ├── RE.png │ ├── TC.png │ ├── US.png │ ├── VG.png │ ├── VI.png │ ├── WL.png │ ├── WV.png │ ├── XK.png │ ├── ae.png │ ├── ch.png │ ├── eh.png │ ├── es.png │ ├── gb.png │ ├── ht.png │ ├── kn.png │ ├── kr.png │ ├── ks.png │ ├── lc.png │ ├── lk.png │ ├── ls.png │ ├── ly.png │ ├── np.png │ ├── nr.png │ ├── nz.png │ ├── om.png │ ├── pa.png │ ├── pe.png │ ├── pg.png │ ├── ph.png │ ├── pk.png │ ├── pl.png │ ├── pt.png │ ├── pw.png │ ├── py.png │ ├── qa.png │ ├── ro.png │ ├── rs.png │ ├── ru.png │ ├── rw.png │ ├── sa.png │ ├── sb.png │ ├── sc.png │ ├── sd.png │ ├── se.png │ ├── sg.png │ ├── si.png │ ├── sk.png │ ├── sl.png │ ├── sm.png │ ├── sn.png │ ├── so.png │ ├── sr.png │ ├── st.png │ ├── sv.png │ ├── sy.png │ ├── sz.png │ ├── td.png │ ├── tg.png │ ├── th.png │ ├── tj.png │ ├── tl.png │ ├── tm.png │ ├── tn.png │ ├── to.png │ ├── tr.png │ ├── tt.png │ ├── tv.png │ ├── tw.png │ ├── tz.png │ ├── ua.png │ ├── ug.png │ ├── uy.png │ ├── uz.png │ ├── va.png │ ├── vc.png │ ├── ve.png │ ├── vn.png │ ├── vu.png │ ├── ws.png │ ├── ye.png │ ├── za.png │ ├── zm.png │ └── zw.png ├── i.png ├── mame-logo-SM.png ├── mame-logo.png └── vdub_32.png └── version.properties /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # VSS 2 | *.scc 3 | 4 | # MFM 5 | .~lock* 6 | bak/ 7 | data/* 8 | _data/* 9 | .idea/* 10 | .gradle/* 11 | build/* 12 | 13 | Custom.ini 14 | Genre.ini 15 | Images/* 16 | Mature.ini 17 | Multimonitor.ini 18 | lists/* 19 | !lists/favs.txt 20 | logs 21 | out/Production/* 22 | settings/* 23 | !settings/*.ini 24 | !settings/datafile2018.xsd 25 | 26 | # Windows image file caches 27 | Thumbs.db 28 | ehthumbs.db 29 | 30 | # Folder config file 31 | Desktop.ini 32 | 33 | # Recycle Bin used on file shares 34 | $RECYCLE.BIN/ 35 | 36 | # Windows Installer files 37 | *.cab 38 | *.msi 39 | *.msm 40 | *.msp 41 | 42 | # Windows shortcuts 43 | *.lnk 44 | 45 | # ========================= 46 | # Operating System Files 47 | # ========================= 48 | 49 | # OSX 50 | # ========================= 51 | 52 | .DS_Store 53 | .AppleDouble 54 | .LSOverride 55 | 56 | # Thumbnails 57 | ._* 58 | 59 | # Files that might appear in the root of a volume 60 | .DocumentRevisions-V100 61 | .fseventsd 62 | .Spotlight-V100 63 | .TemporaryItems 64 | .Trashes 65 | .VolumeIcon.icns 66 | 67 | # Directories potentially created on remote AFP share 68 | .AppleDB 69 | .AppleDesktop 70 | Network Trash Folder 71 | Temporary Items 72 | .apdisk 73 | .idea/compiler.xml 74 | folders/nplayers.ini-special cases.txt 75 | *.iml 76 | -------------------------------------------------------------------------------- /Images/ListEditorRemovefListfromList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/ListEditorRemovefListfromList.png -------------------------------------------------------------------------------- /Images/ListEditorRemovefromList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/ListEditorRemovefromList.png -------------------------------------------------------------------------------- /Images/MFM UI 0.9.5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 0.9.5-1.png -------------------------------------------------------------------------------- /Images/MFM UI 0.9.5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 0.9.5-2.png -------------------------------------------------------------------------------- /Images/MFM UI 0.9.5-3 (SoftwareList Menu).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 0.9.5-3 (SoftwareList Menu).png -------------------------------------------------------------------------------- /Images/MFM UI 0.9.5-4 (segacd SoftwareList).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 0.9.5-4 (segacd SoftwareList).png -------------------------------------------------------------------------------- /Images/MFM UI 0.9.5-5 List Editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 0.9.5-5 List Editor.png -------------------------------------------------------------------------------- /Images/MFM UI 01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 01.png -------------------------------------------------------------------------------- /Images/MFM UI 03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 03.png -------------------------------------------------------------------------------- /Images/MFM UI 04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI 04.png -------------------------------------------------------------------------------- /Images/MFM UI ListBuilder 0.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM UI ListBuilder 0.9.png -------------------------------------------------------------------------------- /Images/MFM-Scan Resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/Images/MFM-Scan Resources.png -------------------------------------------------------------------------------- /Images/dir.txt: -------------------------------------------------------------------------------- 1 | Places Wiki images here. 2 | -------------------------------------------------------------------------------- /Lists/Favs.txt: -------------------------------------------------------------------------------- 1 | 005 2 | arkanoid 3 | asteroid 4 | btime 5 | canyon 6 | centiped 7 | defender 8 | depthch 9 | dkong 10 | drmario 11 | frogger 12 | galaga 13 | invaders 14 | klax 15 | llander 16 | missile 17 | nibbler 18 | pacman 19 | polepos2 20 | qbert 21 | suprmrio 22 | tempest 23 | vstetris 24 | zaxxon -------------------------------------------------------------------------------- /MAME File Manager User Guide.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/MAME File Manager User Guide.odt -------------------------------------------------------------------------------- /MAME File Manager User Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/MAME File Manager User Guide.pdf -------------------------------------------------------------------------------- /MFM.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM Command Switches: -list (list only view); -d (debug logging); -m (memory usage logging); 3 | 4 | java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xms1g -Xmx3g -jar .\MFM.jar 5 | 6 | REM Next entry is for 32 bit Java if 64 bit is not possible 7 | REM java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xms1280m -Xmx1280m -jar .\MFM.jar 8 | 9 | REM Next entry is for full debug 10 | REM java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:./Logs/MFM_GC_log.txt -Xms1g -Xmx3g -jar .\MFM.jar -d -s -m 11 | -------------------------------------------------------------------------------- /MFM.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Command Switches: -list (list only view); -d (debug logging); -m (memory usage logging); 3 | 4 | if [[ $(uname -m) == 'x86_64' ]]; then 5 | java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xms1g -Xmx3g -jar ./MFM.jar 6 | else 7 | java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xms1280m -Xmx1280m -jar ./MFM.jar 8 | fi 9 | 10 | # Next entry is for full debug 11 | #java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:./Logs/MFM_GC_log.txt -Xms1g -Xmx3g -jar ./MFM.jar -d -s -m -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MFM 2 | MFM - MAME File Manager 3 | 4 | Desktop application for creating lists and extracting play sets of MAME Roms, CHDs and Extras to another location from complete or larger sets. 5 | 6 | Built in lists: Arcade, BIOS, CHD, Clone, Devices, Cocktail, Horizontal, Imperfect, LCD, No Clone, Raster, Simultaneous, System(MESS), Vector, Vertical. 7 | 8 | ListBuilder with filters for: MAME(Arcade, System), Orientation(Vertical,Horizontal,Cocktail), Display(Raster,Vector,LCD), No Clones, No Imperfect, No Mature, No Mechanical, # of Game Buttons, # of Players, Simultaneous play, Joystick(s), Languages, Year, Categories, Controls(Any, All, Exact). 9 | 10 | ListEditor: Multi-select to add to or remove from a Working List. Add a list to the current Working List. Intersection (machines in both) of this list with current Working List entries. Subtract a list from the current Working List 11 | 12 | GUI based on MAMEUI. You can scroll through machines, view extras images & read all related information(history.dat, mameinfo.dat, messinfo.dat, sysinfo.dat). 13 | 14 | Basic front end capability to run MAME. 15 | -------------------------------------------------------------------------------- /Settings/MAME_Controllers.ini: -------------------------------------------------------------------------------- 1 | dial = Dial 2 | doublejoy = 2 Joysticks 3 | gambling = Gambling 4 | hanafuda = Hanafuda 5 | joy = Joystick 6 | keyboard = Keyboard 7 | keypad = Keypad 8 | lightgun = Lightgun 9 | mahjong = Mahjong 10 | mouse = Mouse 11 | only_buttons = Buttons 12 | paddle = Paddle 13 | pedal = Pedal 14 | positional = Positional 15 | stick = Stick 16 | trackball = Trackball 17 | -------------------------------------------------------------------------------- /Settings/MAME_folders.ini: -------------------------------------------------------------------------------- 1 | artwork 2 | artwork preview 3 | artpreview 4 | bkground 5 | bosses 6 | cabdevs 7 | cabinets 8 | chds 9 | covers_SL 10 | cpanel 11 | ctrlr 12 | devices 13 | ends 14 | flyers 15 | folders 16 | gameover 17 | howto 18 | icons 19 | ini 20 | logo 21 | manuals 22 | manuals_SL 23 | marquees 24 | pcb 25 | roms 26 | samples 27 | scores 28 | select 29 | snap 30 | snap_SL 31 | snaps 32 | Software Lists 33 | titles 34 | titles_SL 35 | versus 36 | video 37 | videosnaps -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | id 'application' 4 | } 5 | 6 | Properties versionProps = new Properties() 7 | versionProps.load(new FileInputStream("src/main/resources/com/github/phweda/mfm/version.properties")) 8 | version = versionProps['BUILD_VERSION'] 9 | 10 | repositories { 11 | flatDir { 12 | dirs './lib' 13 | } 14 | mavenCentral() 15 | } 16 | 17 | application { 18 | mainClassName = 'com.github.phweda.mfm.MFM' 19 | applicationDefaultJvmArgs = ['-XX:+UseG1GC' , '-XX:MaxGCPauseMillis=200', '-Xms1g', '-Xmx3g' ] 20 | } 21 | 22 | jar { 23 | manifest { 24 | attributes('Implementation-Title': 'Mame File Manager', 25 | 'Implementation-Version': version, 26 | 'Main-Class': 'com.github.phweda.mfm.MFM' 27 | ) 28 | } 29 | 30 | from { 31 | configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 32 | } 33 | } 34 | 35 | dependencies { 36 | compile group: 'com.jgoodies', name: 'jgoodies-common', version: '1.7.0' 37 | compile group: 'com.jgoodies', name: 'looks', version: '2.2.2' 38 | compile group: 'com.jtattoo', name: 'JTattoo', version: '1.6.10' 39 | compile group: 'com.seaglasslookandfeel', name: 'seaglasslookandfeel', version: '0.2' 40 | compile group: 'javax.media', name: 'jmf', version: '2.1.1e' 41 | compile group: 'org.swinglabs.swingx', name: 'swingx-painters', version: '1.6.5-1' 42 | compile group: 'org.swinglabs.swingx', name: 'swingx-core', version: '1.6.5-1' 43 | compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8' 44 | compile group: 'org.jetbrains', name: 'annotations', version: '16.0.3' 45 | compile group: 'com.intellij', name: 'forms_rt', version: '7.0.3' 46 | 47 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu May 09 23:41:05 CEST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /jars/EaSynthLookAndFeel.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/jars/EaSynthLookAndFeel.jar -------------------------------------------------------------------------------- /jars/LiquidLnF.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/jars/LiquidLnF.jar -------------------------------------------------------------------------------- /jars/quaqua.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/jars/quaqua.jar -------------------------------------------------------------------------------- /jars/synthetica.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/jars/synthetica.jar -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/datafile/Archive.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.10.24 at 07:22:36 PM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.datafile; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

38 |  * <complexType>
39 |  *   <complexContent>
40 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 |  *     </restriction>
43 |  *   </complexContent>
44 |  * </complexType>
45 |  * 
46 | */ 47 | @XmlAccessorType(XmlAccessType.FIELD) 48 | @XmlType(name = "") 49 | @XmlRootElement(name = "archive") 50 | public class Archive { 51 | 52 | @XmlAttribute(name = "name", required = true) 53 | protected String name; 54 | 55 | /** 56 | * Gets the value of the name property. 57 | * 58 | * @return possible object is 59 | * {@link String } 60 | */ 61 | public String getName() { 62 | return name; 63 | } 64 | 65 | /** 66 | * Sets the value of the name property. 67 | * 68 | * @param value allowed object is 69 | * {@link String } 70 | */ 71 | public void setName(String value) { 72 | this.name = value; 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/datafile/Sample.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.10.24 at 07:22:36 PM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.datafile; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

38 |  * <complexType>
39 |  *   <complexContent>
40 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 |  *     </restriction>
43 |  *   </complexContent>
44 |  * </complexType>
45 |  * 
46 | */ 47 | @XmlAccessorType(XmlAccessType.FIELD) 48 | @XmlType(name = "") 49 | @XmlRootElement(name = "sample") 50 | public class Sample { 51 | 52 | @XmlAttribute(name = "name", required = true) 53 | protected String name; 54 | 55 | /** 56 | * Gets the value of the name property. 57 | * 58 | * @return possible object is 59 | * {@link String } 60 | */ 61 | public String getName() { 62 | return name; 63 | } 64 | 65 | /** 66 | * Sets the value of the name property. 67 | * 68 | * @param value allowed object is 69 | * {@link String } 70 | */ 71 | public void setName(String value) { 72 | this.name = value; 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/datafile/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.10.24 at 07:22:36 PM EDT 24 | // 25 | 26 | @javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 27 | package com.github.phweda.mfm.datafile; 28 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/Analog.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | import java.util.List; 31 | 32 | 33 | /** 34 | *

Java class for anonymous complex type. 35 | * 36 | *

The following schema fragment specifies the expected content contained within this class. 37 | * 38 | *

39 |  * <complexType>
40 |  *   <complexContent>
41 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
42 |  *       <attribute name="mask" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "analog") 51 | public class Analog { 52 | 53 | @XmlAttribute(name = "mask", required = true) 54 | protected String mask; 55 | 56 | // Catchall for any unknown Elements. As MAME DTD changes this will allow for 57 | // continuation of MFM without a code change. BUT IS NOT RECOMMENDED. 58 | // Addition of Elements and Attributes should be handled with code updates. 59 | @XmlAnyElement(lax = true) 60 | private List unknownElements; 61 | 62 | /** 63 | * Gets the value of the mask property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getMask() { 69 | return mask; 70 | } 71 | 72 | /** 73 | * Sets the value of the mask property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setMask(String value) { 79 | this.mask = value; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/DeviceRef.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | import java.util.List; 31 | 32 | 33 | /** 34 | *

Java class for anonymous complex type. 35 | * 36 | *

The following schema fragment specifies the expected content contained within this class. 37 | * 38 | *

39 |  * <complexType>
40 |  *   <complexContent>
41 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
42 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "device_ref") 51 | public class DeviceRef { 52 | 53 | // Catchall for any unknown Elements. As MAME DTD changes this will allow for 54 | // continuation of MFM without a code change. BUT IS NOT RECOMMENDED. 55 | // Addition of Elements and Attributes should be handled with code updates. 56 | @XmlAnyElement(lax = true) 57 | private List unknownElements; 58 | 59 | @XmlAttribute(name = "name", required = true) 60 | protected String name; 61 | 62 | /** 63 | * Gets the value of the name property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getName() { 69 | return name; 70 | } 71 | 72 | /** 73 | * Sets the value of the name property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setName(String value) { 79 | this.name = value; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/Extension.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | import java.util.List; 31 | 32 | 33 | /** 34 | *

Java class for anonymous complex type. 35 | * 36 | *

The following schema fragment specifies the expected content contained within this class. 37 | * 38 | *

39 |  * <complexType>
40 |  *   <complexContent>
41 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
42 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "extension") 51 | public class Extension { 52 | 53 | @XmlAttribute(name = "name", required = true) 54 | protected String name; 55 | 56 | // Catchall for any unknown Elements. As MAME DTD changes this will allow for 57 | // continuation of MFM without a code change. BUT IS NOT RECOMMENDED. 58 | // Addition of Elements and Attributes should be handled with code updates. 59 | @XmlAnyElement(lax = true) 60 | private List unknownElements; 61 | 62 | /** 63 | * Gets the value of the name property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getName() { 69 | return name; 70 | } 71 | 72 | /** 73 | * Sets the value of the name property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setName(String value) { 79 | this.name = value; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/ParseSoftwareLists.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.mame; 20 | 21 | import com.github.phweda.mfm.MFM; 22 | import com.github.phweda.mfm.mame.softwarelist.Softwarelist; 23 | import com.github.phweda.mfm.mame.softwarelist.Softwarelists; 24 | import com.github.phweda.utils.PersistUtils; 25 | 26 | import java.io.IOException; 27 | import java.nio.file.Files; 28 | import java.nio.file.Path; 29 | import java.nio.file.Paths; 30 | import java.util.TreeSet; 31 | 32 | /** 33 | * Created by IntelliJ IDEA. 34 | * User: Phweda 35 | * Date: 10/26/2017 36 | * Time: 5:26 PM 37 | */ 38 | class ParseSoftwareLists { 39 | 40 | /** 41 | * Import all Software Lists and populate into Softwarelists 42 | * 43 | * @param softwarelists 44 | * @param directory 45 | */ 46 | static void generateSoftwareLists(Softwarelists softwarelists, String directory) { 47 | TreeSet set = new TreeSet<>(); 48 | // Older versions have no software lists 49 | if (!Files.exists(Paths.get(directory))) { 50 | MFM.getLogger().addToList("No MAME Hash directory found. Softwarelists not parsed.", true); 51 | return; 52 | } 53 | try { 54 | Files.list(Paths.get(directory)) 55 | .forEach((Path file) -> { 56 | if (file.toString().endsWith(".xml")) { 57 | Softwarelist softwareList = 58 | (com.github.phweda.mfm.mame.softwarelist.Softwarelist) PersistUtils.retrieveJAXB( 59 | file.toAbsolutePath().toString(), com.github.phweda.mfm.mame.softwarelist.Softwarelist.class); 60 | set.add(softwareList); 61 | } 62 | }); 63 | } catch (IOException e) { 64 | e.printStackTrace(); 65 | } 66 | softwarelists.setSoftwarelists(set); 67 | } 68 | 69 | } 70 | 71 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/Ramoption.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

 38 |  * <complexType>
 39 |  *   <simpleContent>
 40 |  *     <extension base="<http://www.w3.org/2001/XMLSchema>string">
 41 |  *       <attribute name="default" type="{http://www.w3.org/2001/XMLSchema}string" />
 42 |  *     </extension>
 43 |  *   </simpleContent>
 44 |  * </complexType>
 45 |  * 
46 | */ 47 | @XmlAccessorType(XmlAccessType.FIELD) 48 | @XmlType(name = "", propOrder = { 49 | "value" 50 | }) 51 | @XmlRootElement(name = "ramoption") 52 | public class Ramoption { 53 | 54 | @XmlValue 55 | protected String value; 56 | @XmlAttribute(name = "default") 57 | protected String _default; 58 | 59 | // NO catchall for unknown Elements because this Object has a Value 60 | // "If a class has @XmlElement property, it cannot have @XmlValue property." 61 | 62 | /** 63 | * Gets the value of the value property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getValue() { 69 | return value; 70 | } 71 | 72 | /** 73 | * Sets the value of the value property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setValue(String value) { 79 | this.value = value; 80 | } 81 | 82 | /** 83 | * Gets the value of the default property. 84 | * 85 | * @return possible object is 86 | * {@link String } 87 | */ 88 | public String getDefault() { 89 | return _default; 90 | } 91 | 92 | /** 93 | * Sets the value of the default property. 94 | * 95 | * @param value allowed object is 96 | * {@link String } 97 | */ 98 | public void setDefault(String value) { 99 | this._default = value; 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/Sample.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | import java.util.List; 31 | 32 | 33 | /** 34 | *

Java class for anonymous complex type. 35 | * 36 | *

The following schema fragment specifies the expected content contained within this class. 37 | * 38 | *

39 |  * <complexType>
40 |  *   <complexContent>
41 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
42 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "sample") 51 | public class Sample { 52 | 53 | @XmlAttribute(name = "name", required = true) 54 | protected String name; 55 | 56 | // Catchall for any unknown Elements. As MAME DTD changes this will allow for 57 | // continuation of MFM without a code change. BUT IS NOT RECOMMENDED. 58 | // Addition of Elements and Attributes should be handled with code updates. 59 | @XmlAnyElement(lax = true) 60 | private List unknownElements; 61 | 62 | /** 63 | * Gets the value of the name property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getName() { 69 | return name; 70 | } 71 | 72 | /** 73 | * Sets the value of the name property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setName(String value) { 79 | this.name = value; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/Sound.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame; 28 | 29 | import javax.xml.bind.annotation.*; 30 | import java.util.List; 31 | 32 | 33 | /** 34 | *

Java class for anonymous complex type. 35 | * 36 | *

The following schema fragment specifies the expected content contained within this class. 37 | * 38 | *

39 |  * <complexType>
40 |  *   <complexContent>
41 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
42 |  *       <attribute name="channels" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "sound") 51 | public class Sound { 52 | 53 | @XmlAttribute(name = "channels", required = true) 54 | protected String channels; 55 | 56 | // Catchall for any unknown Elements. As MAME DTD changes this will allow for 57 | // continuation of MFM without a code change. BUT IS NOT RECOMMENDED. 58 | // Addition of Elements and Attributes should be handled with code updates. 59 | @XmlAnyElement(lax = true) 60 | private List unknownElements; 61 | 62 | /** 63 | * Gets the value of the channels property. 64 | * 65 | * @return possible object is 66 | * {@link String } 67 | */ 68 | public String getChannels() { 69 | return channels; 70 | } 71 | 72 | /** 73 | * Sets the value of the channels property. 74 | * 75 | * @param value allowed object is 76 | * {@link String } 77 | */ 78 | public void setChannels(String value) { 79 | this.channels = value; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT 24 | // 25 | 26 | // NOTE namespace = "" required here. Need annotation change???? 27 | @javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = XmlNsForm.UNQUALIFIED) 28 | package com.github.phweda.mfm.mame; 29 | 30 | import javax.xml.bind.annotation.XmlNsForm; -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/softwarelist/Feature.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame.softwarelist; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

38 |  * <complexType>
39 |  *   <complexContent>
40 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 |  *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "feature") 51 | public class Feature { 52 | 53 | @XmlAttribute(name = "name", required = true) 54 | protected String name; 55 | @XmlAttribute(name = "value") 56 | protected String value; 57 | 58 | /** 59 | * Gets the value of the name property. 60 | * 61 | * @return possible object is 62 | * {@link String } 63 | */ 64 | public String getName() { 65 | return name; 66 | } 67 | 68 | /** 69 | * Sets the value of the name property. 70 | * 71 | * @param value allowed object is 72 | * {@link String } 73 | */ 74 | public void setName(String value) { 75 | this.name = value; 76 | } 77 | 78 | /** 79 | * Gets the value of the value property. 80 | * 81 | * @return possible object is 82 | * {@link String } 83 | */ 84 | public String getValue() { 85 | return value; 86 | } 87 | 88 | /** 89 | * Sets the value of the value property. 90 | * 91 | * @param value allowed object is 92 | * {@link String } 93 | */ 94 | public void setValue(String value) { 95 | this.value = value; 96 | } 97 | 98 | } 99 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/softwarelist/Info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame.softwarelist; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

38 |  * <complexType>
39 |  *   <complexContent>
40 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 |  *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "info") 51 | public class Info { 52 | 53 | @XmlAttribute(name = "name", required = true) 54 | protected String name; 55 | @XmlAttribute(name = "value") 56 | protected String value; 57 | 58 | /** 59 | * Gets the value of the name property. 60 | * 61 | * @return possible object is 62 | * {@link String } 63 | */ 64 | public String getName() { 65 | return name; 66 | } 67 | 68 | /** 69 | * Sets the value of the name property. 70 | * 71 | * @param value allowed object is 72 | * {@link String } 73 | */ 74 | public void setName(String value) { 75 | this.name = value; 76 | } 77 | 78 | /** 79 | * Gets the value of the value property. 80 | * 81 | * @return possible object is 82 | * {@link String } 83 | */ 84 | public String getValue() { 85 | return value; 86 | } 87 | 88 | /** 89 | * Sets the value of the value property. 90 | * 91 | * @param value allowed object is 92 | * {@link String } 93 | */ 94 | public void setValue(String value) { 95 | this.value = value; 96 | } 97 | 98 | } 99 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/softwarelist/Sharedfeat.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | // 20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 21 | // See http://java.sun.com/xml/jaxb 22 | // Any modifications to this file will be lost upon recompilation of the source schema. 23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT 24 | // 25 | 26 | 27 | package com.github.phweda.mfm.mame.softwarelist; 28 | 29 | import javax.xml.bind.annotation.*; 30 | 31 | 32 | /** 33 | *

Java class for anonymous complex type. 34 | * 35 | *

The following schema fragment specifies the expected content contained within this class. 36 | * 37 | *

38 |  * <complexType>
39 |  *   <complexContent>
40 |  *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 |  *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 |  *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 |  *     </restriction>
44 |  *   </complexContent>
45 |  * </complexType>
46 |  * 
47 | */ 48 | @XmlAccessorType(XmlAccessType.FIELD) 49 | @XmlType(name = "") 50 | @XmlRootElement(name = "sharedfeat") 51 | public class Sharedfeat { 52 | 53 | @XmlAttribute(name = "name", required = true) 54 | protected String name; 55 | @XmlAttribute(name = "value") 56 | protected String value; 57 | 58 | /** 59 | * Gets the value of the name property. 60 | * 61 | * @return possible object is 62 | * {@link String } 63 | */ 64 | public String getName() { 65 | return name; 66 | } 67 | 68 | /** 69 | * Sets the value of the name property. 70 | * 71 | * @param value allowed object is 72 | * {@link String } 73 | */ 74 | public void setName(String value) { 75 | this.name = value; 76 | } 77 | 78 | /** 79 | * Gets the value of the value property. 80 | * 81 | * @return possible object is 82 | * {@link String } 83 | */ 84 | public String getValue() { 85 | return value; 86 | } 87 | 88 | /** 89 | * Sets the value of the value property. 90 | * 91 | * @param value allowed object is 92 | * {@link String } 93 | */ 94 | public void setValue(String value) { 95 | this.value = value; 96 | } 97 | 98 | } 99 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/mame/softwarelist/Softwarelists.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.mame.softwarelist; 20 | 21 | /** 22 | * Created by IntelliJ IDEA. 23 | * User: Phweda 24 | * Date: 5/5/2018 25 | * Time: 5:23 PM 26 | *

27 | * MFM unique pseudo XML to allow saving all MAME Softwarelist XML in a single file 28 | */ 29 | 30 | import javax.xml.bind.annotation.*; 31 | import java.util.Set; 32 | import java.util.TreeMap; 33 | import java.util.TreeSet; 34 | 35 | /** 36 | * MFM unique pseudo XML Object to allow saving all MAME Softwarelist XML files(objects) in a single file
37 | * Softwarelists class serves as the XML root for all Softwarelist entries 38 | */ 39 | 40 | @XmlAccessorType(XmlAccessType.FIELD) 41 | @XmlType(name = "", propOrder = { 42 | "softwarelists" 43 | }) 44 | @XmlRootElement(name = "softwarelists") 45 | public class Softwarelists { 46 | protected Set softwarelists; 47 | @XmlAttribute(name = "version") 48 | protected String version; 49 | @XmlTransient 50 | private TreeMap softwarelistsMap; 51 | 52 | public Set getSoftwarelists() { 53 | if (softwarelists == null) { 54 | softwarelists = new TreeSet<>(); 55 | } 56 | return this.softwarelists; 57 | } 58 | 59 | public void setSoftwarelists(Set softwarelists) { 60 | this.softwarelists = softwarelists; 61 | } 62 | 63 | 64 | public TreeMap getSoftwarelistsMap() { 65 | if (softwarelistsMap == null) { 66 | softwarelistsMap = generateSoftwarelistsMap(); 67 | } 68 | return this.softwarelistsMap; 69 | } 70 | 71 | /** 72 | * Gets the value of the build property. 73 | * 74 | * @return possible object is 75 | * {@link String } 76 | */ 77 | public String getVersion() { 78 | return version; 79 | } 80 | 81 | /** 82 | * Sets the value of the build property. 83 | * 84 | * @param value allowed object is 85 | * {@link String } 86 | */ 87 | public void setVersion(String value) { 88 | this.version = value; 89 | } 90 | 91 | private TreeMap generateSoftwarelistsMap() { 92 | TreeMap map = new TreeMap<>(); 93 | this.getSoftwarelists().forEach(softwarelist -> map.put(softwarelist.getName(), softwarelist)); 94 | return map; 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/DynamicCBpanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import java.awt.*; 23 | import java.util.ArrayList; 24 | import java.util.List; 25 | import java.util.Map; 26 | import java.util.TreeSet; 27 | 28 | /** 29 | * Created by IntelliJ IDEA. 30 | * User: Phweda 31 | * Date: 9/19/2015 32 | * Time: 11:55 AM 33 | */ 34 | 35 | /** 36 | * JPanel for dynamic lists of checkboxes 37 | */ 38 | @SuppressWarnings("ALL") 39 | public class DynamicCBpanel extends JPanel { 40 | 41 | private ArrayList checkBoxes = new ArrayList<>(); 42 | 43 | DynamicCBpanel(List keys, int columns) { 44 | super(); 45 | this.setLayout(new GridLayout(keys.size() / columns + 1, columns)); 46 | addCheckboxes(keys); 47 | } 48 | 49 | void setToolTips(Map map) { 50 | checkBoxes.parallelStream() 51 | .forEach(cb -> 52 | { 53 | cb.setToolTipText(map.get(cb.getText())); 54 | System.out.println(map.get(cb.getText())); 55 | }); 56 | } 57 | 58 | ArrayList getCheckBoxes() { 59 | return checkBoxes; 60 | } 61 | 62 | private void addCheckboxes(List keys) { 63 | for (Object key : keys) { 64 | JCheckBox checkBox = new JCheckBox(key.toString()); 65 | this.add(checkBox); 66 | checkBoxes.add(checkBox); 67 | } 68 | } 69 | 70 | TreeSet getChecked() { 71 | TreeSet ts = new TreeSet<>(); 72 | for (JCheckBox checkBox : checkBoxes) { 73 | if (checkBox.isSelected()) { 74 | ts.add(checkBox.getText()); 75 | } 76 | } 77 | return ts; 78 | } 79 | 80 | JCheckBox getJCheckBoxbyText(String text) { 81 | for (JCheckBox box : getCheckBoxes()) { 82 | if (box.getText().equalsIgnoreCase(text)) { 83 | return box; 84 | } 85 | } 86 | return null; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/LinkEditorPane.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import javax.swing.event.HyperlinkEvent; 23 | import java.awt.*; 24 | import java.io.IOException; 25 | import java.net.URI; 26 | import java.net.URISyntaxException; 27 | 28 | /** 29 | * Created by IntelliJ IDEA. 30 | * User: Phweda 31 | * Date: 10/7/2017 32 | * Time: 10:45 AM 33 | */ 34 | @SuppressWarnings("WeakerAccess") 35 | public class LinkEditorPane { 36 | 37 | private LinkEditorPane() { // Cover implicit public constructor per squid:S1118 38 | } 39 | 40 | public static JEditorPane getLinkPane(String displayText, String link) { 41 | JLabel label = new JLabel(); 42 | Font font = label.getFont(); 43 | 44 | StringBuilder style = new StringBuilder("font-family:" + font.getFamily() + ";"); 45 | style.append("font-weight:"); 46 | style.append((font.isBold() ? "bold" : "normal")); 47 | style.append(";"); 48 | style.append("font-size:"); 49 | style.append((font.getSize() + 4)); 50 | style.append("pt;"); 51 | 52 | // Construct href 53 | String html = "" + 54 | "" + displayText + ""; 55 | JEditorPane ep = new JEditorPane("text/html", html); 56 | ep.addHyperlinkListener(e -> { 57 | Desktop desktop = Desktop.getDesktop(); 58 | if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED && desktop.isSupported(Desktop.Action.BROWSE)) { 59 | try { 60 | desktop.browse(new URI(link)); 61 | } catch (IOException | URISyntaxException e1) { 62 | e1.printStackTrace(); 63 | } 64 | } 65 | }); 66 | ep.setEditable(false); 67 | ep.setBackground(label.getBackground()); 68 | 69 | return ep; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/ListEditorModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import java.util.List; 23 | 24 | /** 25 | * Created by IntelliJ IDEA. 26 | * User: Phweda 27 | * Date: 6/23/2017 28 | * Time: 12:02 PM 29 | */ 30 | class ListEditorModel extends DefaultListModel { 31 | 32 | /** 33 | * Add all elements from input List 34 | * 35 | * @param elements to add to active list 36 | */ 37 | void addAll(List elements) { 38 | elements.forEach(element -> { 39 | if (!this.contains(element)) { 40 | this.addElement(element); 41 | } 42 | }); 43 | this.fireContentsChanged(this, 0, this.getSize()); 44 | } 45 | 46 | /** 47 | * Remove all elements from input List 48 | * 49 | * @param elements to remove from active list 50 | */ 51 | void removeAll(List elements) { 52 | elements.forEach(this::removeElement); 53 | this.fireContentsChanged(this, 0, this.getSize()); 54 | } 55 | 56 | /** 57 | * Replace existing list with new list 58 | * 59 | * @param newList new list to display 60 | */ 61 | void refreshList(List newList) { 62 | this.clear(); 63 | newList.forEach(this::addElement); 64 | this.fireContentsChanged(this, 0, this.getSize()); 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MFMBusyPainter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import org.jdesktop.swingx.painter.BusyPainter; 22 | 23 | import java.awt.*; 24 | import java.text.SimpleDateFormat; 25 | import java.util.Date; 26 | 27 | /** 28 | * Created by IntelliJ IDEA. 29 | * User: Phweda 30 | * Date: 11/23/2016 31 | * Time: 8:15 PM 32 | */ 33 | public class MFMBusyPainter extends BusyPainter { 34 | private final long startMillis = System.currentTimeMillis(); 35 | 36 | MFMBusyPainter(Shape point, Shape trajectory) { 37 | super(point, trajectory); 38 | } 39 | 40 | @Override 41 | protected void doPaint(Graphics2D g, Object t, int width, int height) { 42 | super.doPaint(g, t, width, height); 43 | g.drawString(getTime(), (width / 7) * 2, (int) (height / 1.82)); // 44 | } 45 | 46 | private String getTime() { 47 | return (new SimpleDateFormat("mm:ss")).format(new Date(System.currentTimeMillis() - startMillis)); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MFMCategoryTree.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.tree.DefaultMutableTreeNode; 22 | import java.util.ArrayList; 23 | import java.util.Map; 24 | import java.util.SortedMap; 25 | 26 | /** 27 | * Created by IntelliJ IDEA. 28 | * User: Phweda 29 | * Date: 9/28/2015 30 | * Time: 10:41 AM 31 | */ 32 | public class MFMCategoryTree { 33 | 34 | private JCheckBoxTree jcbtree; 35 | 36 | public MFMCategoryTree(SortedMap> treeMap) { 37 | buildTree(treeMap); 38 | } 39 | 40 | public JCheckBoxTree getJCBTree() { 41 | return jcbtree; 42 | } 43 | 44 | private void buildTree(SortedMap> treeMap) { 45 | 46 | DefaultMutableTreeNode root; 47 | root = new DefaultMutableTreeNode("root"); 48 | jcbtree = new JCheckBoxTree(root); 49 | 50 | for (Map.Entry> entry : treeMap.entrySet()) { 51 | DefaultMutableTreeNode catNode = new DefaultMutableTreeNode(entry.getKey()); 52 | if (!entry.getValue().isEmpty()) { 53 | for (String childCat : entry.getValue()) { 54 | catNode.add(new DefaultMutableTreeNode(childCat)); 55 | } 56 | } 57 | root.add(catNode); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MFMHTMLTextPane.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import javax.swing.event.HyperlinkEvent; 23 | import javax.swing.event.HyperlinkListener; 24 | import java.awt.*; 25 | import java.io.IOException; 26 | import java.net.URISyntaxException; 27 | 28 | /** 29 | * Created by IntelliJ IDEA. 30 | * User: Phweda 31 | * Date: 5/12/2015 32 | * Time: 10:08 PM 33 | */ 34 | @SuppressWarnings("squid:MaximumInheritanceDepth") 35 | class MFMHTMLTextPane extends JTextPane { 36 | 37 | MFMHTMLTextPane() { 38 | this.setContentType("text/html"); 39 | this.addHyperlinkListener(new UrlHyperlinkListener()); 40 | } 41 | 42 | private class UrlHyperlinkListener implements HyperlinkListener { 43 | @Override 44 | public void hyperlinkUpdate(final HyperlinkEvent event) { 45 | if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 46 | try { 47 | Desktop.getDesktop().browse(event.getURL().toURI()); 48 | } catch (final IOException | URISyntaxException e) { 49 | throw new RuntimeException("Can't open URL", e); 50 | } 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MFMInformationPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import java.awt.*; 23 | 24 | /** 25 | * Created by IntelliJ IDEA. 26 | * User: Phweda 27 | * Date: 1/21/12 28 | * Time: 2:44 AM 29 | */ 30 | public class MFMInformationPanel extends JPanel { 31 | private static final String MESSAGE = "message"; 32 | private static final String PROGRESS = "progress"; 33 | private static JLabel messageLabel = new JLabel(); 34 | private static JProgressBar progressBar = new MFMProgressBar(); 35 | private static JPanel progressPanel = new JPanel(); 36 | private boolean running = false; 37 | private Timer timer; 38 | 39 | MFMInformationPanel() { 40 | super(); 41 | progressPanel.add(progressBar); 42 | CardLayout cl = new CardLayout(); 43 | cl.addLayoutComponent(messageLabel, MESSAGE); 44 | cl.addLayoutComponent(progressPanel, PROGRESS); 45 | this.add(messageLabel); 46 | this.add(progressPanel); 47 | this.setLayout(cl); 48 | this.setPreferredSize(new Dimension(350, 100)); 49 | } 50 | 51 | void showProgress(String title) { 52 | ((CardLayout) this.getLayout()).last(this); 53 | progressBar.setString(title); 54 | messageLabel.setText(""); 55 | updateUI(); 56 | progressPanel.setVisible(true); 57 | running = true; 58 | runProgress(); 59 | } 60 | 61 | public void showProgress(String message, int fontSize) { 62 | progressBar.setFont(new Font("Arial", Font.BOLD, fontSize)); 63 | showProgress(message); 64 | } 65 | 66 | public void showMessage(String message) { 67 | running = false; 68 | MFMInformationPanel.messageLabel.setText(message); 69 | if (timer != null) { 70 | timer.stop(); 71 | timer = null; 72 | } 73 | ((CardLayout) this.getLayout()).first(this); 74 | } 75 | 76 | private void runProgress() { 77 | // JOptionPane.showMessageDialog(null, "We are in runProgress()"); 78 | progressBar.setIndeterminate(true); 79 | progressBar.setStringPainted(true); 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MFMProgressBar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.ui; 20 | 21 | import javax.swing.*; 22 | import java.awt.*; 23 | 24 | import static java.lang.Thread.sleep; 25 | 26 | /** 27 | * Created by IntelliJ IDEA. 28 | * User: Phweda 29 | * Date: 1/17/12 30 | * Time: 9:16 PM 31 | */ 32 | public class MFMProgressBar extends JProgressBar implements Runnable { 33 | MFMProgressBar() { 34 | super(0, 100); 35 | this.setBackground(Color.white); 36 | this.setForeground(Color.green); 37 | this.setPreferredSize(new Dimension(600, 30)); 38 | this.setIndeterminate(true); 39 | } 40 | 41 | private void increment(int newValue) { 42 | this.setIndeterminate(false); 43 | this.setValue(newValue); 44 | repaint(); 45 | } 46 | 47 | @SuppressWarnings("InfiniteLoopStatement") 48 | @Override 49 | public void run() { 50 | // Progress bar is stopped by deletion 51 | while (true) { 52 | increment(this.getValue() + 5); 53 | try { 54 | sleep(1000); 55 | } catch (InterruptedException e) { 56 | e.printStackTrace(); 57 | Thread.currentThread().interrupt(); 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/MachineListForm.form: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
53 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/component/validation/UiMessageSeverity.java: -------------------------------------------------------------------------------- 1 | package com.github.phweda.mfm.ui.component.validation; 2 | 3 | public enum UiMessageSeverity { 4 | ERROR, 5 | WARNING; 6 | 7 | public static UiMessageSeverity maxSeverity(UiMessageSeverity ums1, UiMessageSeverity ums2) { 8 | if (ERROR == ums1 || ERROR == ums2) { 9 | return ERROR; 10 | } else if (WARNING == ums1 || WARNING == ums2){ 11 | return WARNING; 12 | } 13 | return null; 14 | } 15 | 16 | public static boolean higherSeverity(UiMessageSeverity origS, UiMessageSeverity newS) { 17 | return origS==null || (WARNING == origS && newS ==ERROR); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationBase.form: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationBase.java: -------------------------------------------------------------------------------- 1 | package com.github.phweda.mfm.ui.component.validation; 2 | 3 | import com.intellij.uiDesigner.core.GridConstraints; 4 | import com.intellij.uiDesigner.core.GridLayoutManager; 5 | import com.intellij.uiDesigner.core.Spacer; 6 | 7 | import javax.swing.*; 8 | import java.awt.*; 9 | 10 | public class ValidationBase { 11 | private JPanel pnlValidationMsgHolder; 12 | private JLabel lblValidationMsg; 13 | private UiMessageSeverity severity = null; 14 | private JPanel panelComponentHolder; 15 | 16 | public void setPanelComponentHolder(JPanel panelComponentHolder) { 17 | this.panelComponentHolder = panelComponentHolder; 18 | } 19 | 20 | public void clearMessage() { 21 | severity = null; 22 | lblValidationMsg.setText(""); 23 | panelComponentHolder.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); 24 | } 25 | 26 | public boolean setMessage(String text, UiMessageSeverity messageSeverity) { 27 | if (!UiMessageSeverity.higherSeverity(this.severity, messageSeverity)) { 28 | return false; 29 | } 30 | lblValidationMsg.setText(text); 31 | this.severity = messageSeverity; 32 | switch (messageSeverity) { 33 | case ERROR: 34 | lblValidationMsg.setForeground(Color.RED); 35 | panelComponentHolder.setBorder(BorderFactory.createLineBorder(Color.RED, 2)); 36 | break; 37 | case WARNING: 38 | lblValidationMsg.setForeground(Color.ORANGE); 39 | panelComponentHolder.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 2)); 40 | break; 41 | default: 42 | throw new RuntimeException("Unknown severity: " + messageSeverity); 43 | } 44 | return true; 45 | } 46 | 47 | { 48 | // GUI initializer generated by IntelliJ IDEA GUI Designer 49 | // >>> IMPORTANT!! <<< 50 | // DO NOT EDIT OR ADD ANY CODE HERE! 51 | $$$setupUI$$$(); 52 | } 53 | 54 | /** 55 | * Method generated by IntelliJ IDEA GUI Designer 56 | * >>> IMPORTANT!! <<< 57 | * DO NOT edit this method OR call it in your code! 58 | * 59 | * @noinspection ALL 60 | */ 61 | private void $$$setupUI$$$() { 62 | pnlValidationMsgHolder = new JPanel(); 63 | pnlValidationMsgHolder.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1)); 64 | lblValidationMsg = new JLabel(); 65 | lblValidationMsg.setText(""); 66 | pnlValidationMsgHolder.add(lblValidationMsg, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); 67 | final Spacer spacer1 = new Spacer(); 68 | pnlValidationMsgHolder.add(spacer1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); 69 | } 70 | 71 | /** 72 | * @noinspection ALL 73 | */ 74 | public JComponent $$$getRootComponent$$$() { 75 | return pnlValidationMsgHolder; 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationResult.java: -------------------------------------------------------------------------------- 1 | package com.github.phweda.mfm.ui.component.validation; 2 | 3 | public class ValidationResult { 4 | 5 | UiMessageSeverity mesasgeSeverity = null; 6 | 7 | public UiMessageSeverity getMesasgeSeverity() { 8 | return mesasgeSeverity; 9 | } 10 | 11 | public void updateMessageSeverity(UiMessageSeverity nMesasgeSeverity) { 12 | mesasgeSeverity = UiMessageSeverity.maxSeverity(mesasgeSeverity, nMesasgeSeverity); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/MFM_Clean_Logs.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.mfm.MFM; 22 | 23 | import java.io.File; 24 | import java.io.IOException; 25 | import java.nio.file.Files; 26 | import java.nio.file.Paths; 27 | 28 | /** 29 | * Created by IntelliJ IDEA. 30 | * User: Phweda 31 | * Date: 7/9/13 32 | * Time: 4:04 PM 33 | */ 34 | public class MFM_Clean_Logs { 35 | 36 | private MFM_Clean_Logs() { // Hide implicit public constructor - squid:S1118 37 | } 38 | 39 | public static void cleanLogs() { 40 | // 86,400,000 == 1 day in milliseconds 41 | long deleteTime = System.currentTimeMillis() - 86400000; 42 | 43 | File logsDirectory = new File(MFM.getMfmLogsDir()); 44 | File[] files = logsDirectory.listFiles(); 45 | if (files != null) { 46 | for (File child : files) { 47 | if (child.lastModified() < deleteTime) 48 | try { 49 | Files.deleteIfExists(Paths.get(child.getAbsolutePath())); 50 | } catch (IOException e) { 51 | e.printStackTrace(); 52 | } 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseCatverINI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.mfm.MFM; 22 | import com.github.phweda.utils.ParseTextFile; 23 | 24 | import java.util.HashMap; 25 | import java.util.Map; 26 | import java.util.Scanner; 27 | 28 | /** 29 | * Created by IntelliJ IDEA. 30 | * User: Phweda 31 | * Date: 12/3/11 32 | * Time: 2:06 PM 33 | */ 34 | public class ParseCatverINI extends ParseTextFile { 35 | /* Sort of redundant to have both */ 36 | private boolean category = false; 37 | private boolean MAMEVersionAdded = false; 38 | 39 | /** 40 | * Constructor. 41 | * 42 | * @param fileName full name of an existing, readable file. 43 | */ 44 | public ParseCatverINI(String fileName, Map mapIn) { 45 | super(fileName, mapIn); 46 | MFM.getLogger().addToList("Catver file name: " + fileName, true); 47 | } 48 | 49 | @Override 50 | protected void processLine(String line) { 51 | if (line.startsWith("[") || line.length() < 3) { 52 | if (line.startsWith("[Category]")) { 53 | category = true; 54 | // Not needed but just to be robust if they ever change the file format order 55 | MAMEVersionAdded = false; 56 | } 57 | if (line.startsWith("[VerAdded]")) { 58 | MAMEVersionAdded = true; 59 | category = false; 60 | } 61 | return; 62 | } 63 | //use a second Scanner to parse the content of each line 64 | Scanner lineScanner = new Scanner(line); 65 | lineScanner.useDelimiter("="); 66 | if (lineScanner.hasNext()) { 67 | String key = lineScanner.next(); 68 | String value = ""; 69 | if (lineScanner.hasNext()) { 70 | value = lineScanner.next(); 71 | } 72 | if (category) { 73 | ((HashMap) map.get("category")).put(key.trim(), value.trim()); 74 | } else if (MAMEVersionAdded) { 75 | ((HashMap) map.get("version")).put(key.trim(), value.trim()); 76 | } else { 77 | // WE SHOULD NEVER GET HERE BUT ... 78 | MFM.getLogger().addToList("ParseCatverINI We failed to find version or category"); 79 | } 80 | } 81 | lineScanner.close(); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseCommandList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.HashMap; 24 | import java.util.Map; 25 | 26 | /** 27 | * Created by IntelliJ IDEA. 28 | * User: Phweda 29 | * Date: 11/27/11 30 | * Time: 5:31 PM 31 | */ 32 | public class ParseCommandList extends ParseTextFile { 33 | private Map commands; 34 | 35 | /** 36 | * Constructor. 37 | * 38 | * @param fileName full name of an existing, readable file. 39 | * @param mapIn A Map of Maps with the command set Category as key 40 | */ 41 | public ParseCommandList(String fileName, Map mapIn) { 42 | super(fileName, mapIn); 43 | } 44 | 45 | @Override 46 | protected void processLine(String line) { 47 | /* Eliminate any lines not a Command Category '#' or Command '-' */ 48 | if (line.length() < 3 || (line.charAt(0) != '-' && line.charAt(0) != '#' && line.charAt(0) != '*')) { 49 | return; 50 | } 51 | 52 | if (line.charAt(0) == '#' || line.charAt(0) == '*') { 53 | StringBuilder sb = new StringBuilder(line); 54 | sb.delete(0, 1); //Remove # and space 55 | String category = sb.toString().trim(); 56 | if (map.containsKey(category)) { 57 | // Bad design this uses different Map 58 | commands = (Map) map.get(category); 59 | } else { 60 | commands = new HashMap<>(20); 61 | // Bad design this uses different Map 62 | map.put(category, commands); 63 | } 64 | 65 | } else if (line.charAt(0) == '-') { 66 | /* Split at First whitespace */ 67 | // TODO fix this REGEX returns empty first string - String[] strs = line.split("^(\\S*)"); 68 | String[] strs = new String[2]; 69 | if (!line.contains("/")) { // early MAME versions had short command switches 70 | int index = line.indexOf(' '); 71 | strs[0] = line.substring(0, index); 72 | strs[1] = line.substring(index + 1); 73 | commands.put(strs[0], strs[1].trim()); 74 | } else { 75 | strs[0] = line.substring(0, 31); 76 | strs[1] = line.substring(32); 77 | commands.put(strs[0].trim(), strs[1].trim()); 78 | } 79 | } else { 80 | /* We should never get here but ... */ 81 | log("Invalid line. Unable to process."); 82 | } 83 | 84 | } 85 | } -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseExtrasInfoDATs.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | 25 | /** 26 | * Created by IntelliJ IDEA. 27 | * User: Phweda 28 | * Date: 12/3/2014 29 | * Time: 7:43 PM 30 | */ 31 | public class ParseExtrasInfoDATs extends ParseTextFile { 32 | /** 33 | * Constructor. 34 | * 35 | * @param fileName full name of an existing, readable file 36 | */ 37 | public ParseExtrasInfoDATs(String fileName, Map mapIn) { 38 | super(fileName, mapIn); 39 | } 40 | 41 | @Override 42 | protected void processLine(String line) { 43 | 44 | StringBuilder infoText = new StringBuilder(); 45 | 46 | /* Find next line starting with $info */ 47 | while (!line.startsWith("$info") && scanner.hasNext()) { 48 | line = scanner.nextLine(); 49 | } 50 | 51 | // $info line has one game 52 | String game = line.substring(6); 53 | 54 | // NOTE March 2017 end of messinfo.dat has changed we can get here on EOF 55 | /* Find next line starting with $mame & GOTO next line */ 56 | if (scanner.hasNext()) { 57 | do { 58 | line = scanner.nextLine(); 59 | } while (!line.startsWith("$mame") && scanner.hasNext()); 60 | } 61 | 62 | /* Are we at EOF? */ 63 | if (!scanner.hasNext()) { 64 | return; 65 | } 66 | line = scanner.nextLine(); // skip $mame 67 | 68 | /* Until line starting with $end */ 69 | do { 70 | infoText.append(line).append('\n'); 71 | line = scanner.nextLine(); 72 | } while (!line.startsWith("$end")); 73 | 74 | map.put(game, infoText.toString()); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseGameList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | import java.util.Scanner; 25 | 26 | /** 27 | * Created by IntelliJ IDEA. 28 | * User: Phweda 29 | * Date: 11/25/11 30 | * Time: 9:49 PM 31 | */ 32 | public class ParseGameList extends ParseTextFile { 33 | /** 34 | * Constructor. 35 | * 36 | * @param fileName full name of an existing, readable file. 37 | */ 38 | public ParseGameList(String fileName, Map mapIn) { 39 | super(fileName, mapIn); 40 | } 41 | 42 | @Override 43 | protected void processLine(String line) { 44 | //use a second Scanner to parse the content of each line 45 | try (Scanner scanner = new Scanner(line)) { 46 | scanner.useDelimiter("\""); 47 | if (scanner.hasNext()) { 48 | String key = scanner.next(); 49 | String value = ""; 50 | if (scanner.hasNext()) { 51 | value = scanner.next(); 52 | } 53 | map.put(key.trim(), value.trim()); 54 | } else { 55 | log("Empty or invalid line. Unable to process."); 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseHistoryDAT.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | 25 | /** 26 | * Created by IntelliJ IDEA. 27 | * User: Phweda 28 | * Date: 12/2/11 29 | * Time: 10:08 PM 30 | */ 31 | public class ParseHistoryDAT extends ParseTextFile { 32 | /** 33 | * Constructor. 34 | * 35 | * @param fileName full name of an existing, readable file 36 | */ 37 | public ParseHistoryDAT(String fileName, Map mapIn) { 38 | super(fileName, mapIn); 39 | } 40 | 41 | @Override 42 | protected void processLine(String line) { 43 | 44 | StringBuilder historyText = new StringBuilder(); 45 | 46 | /* Find next line starting with $info */ 47 | while (!line.startsWith("$info") && scanner.hasNext()) { 48 | line = scanner.nextLine(); 49 | } 50 | /* Are we at EOF? */ 51 | if (!scanner.hasNext()) { 52 | return; 53 | } 54 | // $info line has one or more game names 55 | line = line.substring(6, line.length() - 1); 56 | String[] games = line.trim().split("[,]"); 57 | /* Find next line starting with $bio & GOTO next line */ 58 | do { 59 | line = scanner.nextLine(); 60 | } while (!line.startsWith("$bio")); 61 | line = scanner.nextLine(); // skip $bio 62 | 63 | /* Until line starting with $end */ 64 | do { 65 | historyText.append(line).append('\n'); 66 | line = scanner.nextLine(); 67 | } while (!line.startsWith("$end")); 68 | 69 | for (String game : games) { 70 | map.put(game, historyText.toString()); 71 | } 72 | 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseMAMEList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | /** 22 | * Created by IntelliJ IDEA. 23 | * User: Phweda 24 | * Date: 11/29/11 25 | * Time: 9:27 PM 26 | */ 27 | public class ParseMAMEList { 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseRootOnlyINI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | 25 | /** 26 | * Created by IntelliJ IDEA. 27 | * User: Phweda 28 | * Date: 1/15/2018 29 | * Time: 10:57 AM 30 | */ 31 | public class ParseRootOnlyINI extends ParseTextFile { 32 | ParseRootOnlyINI(String fileName, Map mapIn) { 33 | super(fileName, mapIn); 34 | } 35 | 36 | @Override 37 | protected void processLine(String line) { 38 | 39 | while (scanner.hasNext()) { 40 | 41 | /* TODO figure out the Regex : match left square bracket followed by zero 42 | * or more alpha and or numeric characters followed by right square bracket 43 | * That would greatly reduce the following 44 | */ 45 | //scanner.next(Pattern.compile("[\[\d*?\w\*?]]")) 46 | if (line.contains("[") && !line.contains("FOLDER_SETTINGS")) { 47 | // Resolve the 'only has Root Folder' issue 48 | if (line.contains("ROOT_FOLDER")) { 49 | do { 50 | line = scanner.nextLine(); 51 | } while (line.matches("\\s*") || line.startsWith(";")); 52 | } 53 | 54 | 55 | while (scanner.hasNext()) { 56 | if (line.length() > 0) { 57 | map.put(line, ""); 58 | } 59 | line = scanner.nextLine(); 60 | } 61 | } else { 62 | line = scanner.nextLine(); 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParseSYSINFODAT.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | 25 | /** 26 | * Created by IntelliJ IDEA. 27 | * User: Phweda 28 | * Date: 9/16/2015 29 | * Time: 8:43 PM 30 | */ 31 | public class ParseSYSINFODAT extends ParseTextFile { 32 | 33 | /** 34 | * Constructor. 35 | * 36 | * @param fileName full name of an existing, readable file. 37 | */ 38 | public ParseSYSINFODAT(String fileName, Map mapIn) { 39 | super(fileName, mapIn); 40 | } 41 | 42 | @Override 43 | protected void processLine(String line) { 44 | StringBuilder infoText = new StringBuilder(); 45 | 46 | /* Find next line starting with $info */ 47 | while (!line.startsWith("$info") && scanner.hasNext()) { 48 | line = scanner.nextLine(); 49 | } 50 | // $info line may have multiple comma separated systems and may end with a comma 51 | 52 | if (line.startsWith("$info") && line.length() > 6) { 53 | line = line.substring(6); 54 | if (line.endsWith(",")) { 55 | line = line.substring(0, line.length() - 2); 56 | } 57 | } 58 | 59 | String[] systems = line.split("[,]"); 60 | 61 | /* Find next line starting with $bio & GOTO next line */ 62 | do { 63 | /* Are we at EOF? */ 64 | if (!scanner.hasNext()) { 65 | return; 66 | } 67 | line = scanner.nextLine(); 68 | } while (!line.startsWith("$bio") && scanner.hasNext()); 69 | line = scanner.nextLine(); // skip $bio 70 | 71 | /* Until line starting with $end */ 72 | do { 73 | infoText.append(line).append('\n'); 74 | line = scanner.nextLine(); 75 | } while (!line.startsWith("$end")); 76 | 77 | for (String system : systems) { 78 | map.put(system, infoText.toString()); 79 | } 80 | 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/mfm/utils/ParsenPlayerINI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.mfm.utils; 20 | 21 | import com.github.phweda.utils.ParseTextFile; 22 | 23 | import java.util.Map; 24 | import java.util.Scanner; 25 | 26 | /** 27 | * Created by IntelliJ IDEA. 28 | * User: Phweda 29 | * Date: 10/6/2015 30 | * Time: 9:23 PM 31 | */ 32 | public class ParsenPlayerINI extends ParseTextFile { 33 | public ParsenPlayerINI(String fileName, Map nplayers) { 34 | super(fileName, nplayers); 35 | } 36 | 37 | @Override 38 | protected void processLine(String line) { 39 | if (line.isEmpty() || !line.contains("=")) { 40 | return; 41 | } 42 | //use a second Scanner to parse the content of each line 43 | try (Scanner lineScanner = new Scanner(line)) { 44 | lineScanner.useDelimiter("="); 45 | if (lineScanner.hasNext()) { 46 | String key = lineScanner.next(); 47 | String value = ""; 48 | if (lineScanner.hasNext()) { 49 | value = lineScanner.next(); 50 | } 51 | map.put(key, value); 52 | } 53 | //no need to call lineScanner.close(), since the source is a String 54 | } 55 | } 56 | } 57 | 58 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/ClickListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | import javax.swing.*; 22 | import java.awt.*; 23 | import java.awt.event.ActionEvent; 24 | import java.awt.event.ActionListener; 25 | import java.awt.event.MouseAdapter; 26 | import java.awt.event.MouseEvent; 27 | 28 | public abstract class ClickListener extends MouseAdapter implements ActionListener { 29 | private static final int CLICK_INTERVAL = 500; 30 | private MouseEvent lastEvent; 31 | private Timer timer; 32 | 33 | public ClickListener() { 34 | this(CLICK_INTERVAL); 35 | } 36 | 37 | private ClickListener(int delay) { 38 | Integer desktopMultiClickInterval = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty( 39 | "awt.multiClickInterval"); 40 | if (desktopMultiClickInterval != null) { 41 | delay = desktopMultiClickInterval; 42 | } 43 | timer = new Timer(delay, this); 44 | } 45 | 46 | // For testing and validation 47 | public static void main(String[] args) { 48 | JFrame frame = new JFrame("Double Click Test"); 49 | frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 50 | frame.addMouseListener(new ClickListener() { 51 | 52 | @Override 53 | public void singleClick(MouseEvent e) { 54 | System.out.println("single : " + e.toString()); 55 | } 56 | 57 | @Override 58 | public void doubleClick(MouseEvent e) { 59 | System.out.println("double : " + e.toString()); 60 | } 61 | }); 62 | frame.setPreferredSize(new Dimension(200, 200)); 63 | frame.pack(); 64 | frame.setVisible(true); 65 | } 66 | 67 | /* 68 | * NOTE always call super when you override this method 69 | * to ensure double click behavior 70 | * 71 | */ 72 | @Override 73 | public void mouseClicked(MouseEvent e) { 74 | lastEvent = e; 75 | if (timer.isRunning() && !e.isConsumed() && e.getClickCount() > 1) { 76 | doubleClick(lastEvent); 77 | timer.stop(); 78 | } else { 79 | timer.restart(); 80 | } 81 | } 82 | 83 | /* 84 | * NOTE always call super when you override this method 85 | * to ensure double click behavior 86 | * 87 | */ 88 | @Override 89 | public void actionPerformed(ActionEvent e) { 90 | timer.stop(); 91 | singleClick(lastEvent); 92 | } 93 | 94 | public abstract void singleClick(MouseEvent e); 95 | 96 | public abstract void doubleClick(MouseEvent e); 97 | 98 | } -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/ClockPanel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | import javax.swing.*; 22 | import java.awt.*; 23 | import java.util.Calendar; 24 | 25 | public class ClockPanel extends JPanel implements Runnable { 26 | private transient Thread thread; 27 | 28 | public ClockPanel() { 29 | setPreferredSize(new Dimension(60, 30)); 30 | // setFont(new Font("Arial", Font.BOLD, 16)); 31 | } 32 | 33 | @Override 34 | public void paintComponent(Graphics g) { 35 | g.setColor(super.getBackground()); 36 | g.fillRect(0, 0, getWidth(), getHeight()); 37 | g.setColor(super.getForeground()); 38 | g.drawString(timeNow(), 20, 25); 39 | } 40 | 41 | private String timeNow() { 42 | Calendar now = Calendar.getInstance(); 43 | int hrs = now.get(Calendar.HOUR_OF_DAY); 44 | int min = now.get(Calendar.MINUTE); 45 | int sec = now.get(Calendar.SECOND); 46 | return zero(hrs) + ":" + zero(min) + ":" + zero(sec); 47 | } 48 | 49 | private String zero(int num) { 50 | return (num < 10) ? ("0" + num) : ("" + num); 51 | } 52 | 53 | public void start() { 54 | if (thread == null) thread = new Thread(this); 55 | thread.start(); 56 | } 57 | 58 | public void run() { 59 | while (thread == Thread.currentThread()) { 60 | repaint(); 61 | try { 62 | Thread.sleep(1000); 63 | } catch (InterruptedException e) { 64 | System.err.println("Clock thread InterruptedException"); 65 | Thread.currentThread().interrupt(); 66 | } 67 | 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/LangUtils.java: -------------------------------------------------------------------------------- 1 | package com.github.phweda.utils; 2 | 3 | /** 4 | * java language utils 5 | * 6 | * @author voji 7 | * 8 | */ 9 | public class LangUtils { 10 | 11 | /** 12 | * determinate given number is in range 13 | * @param rangeStart 14 | * range start 15 | * 16 | * @param rangeEnd 17 | * range end 18 | * 19 | * @param value 20 | * given value to check 21 | * 22 | * @return 23 | * true - given value is between given range 24 | * false - given vaule isnt in given range 25 | */ 26 | public static boolean isBetween(int rangeStart, int rangeEnd, int value) { 27 | return rangeEnd > rangeStart ? value > rangeStart && value < rangeEnd : value > rangeEnd 28 | && value < rangeStart; 29 | } 30 | 31 | /** 32 | * return given array element at given index. if array is null you outindex the array 33 | * return given default value instead of excepion 34 | * 35 | * @param array 36 | * given array 37 | * 38 | * @param index 39 | * given index 40 | * 41 | * @param defaultValue 42 | * default value if fails 43 | * 44 | * @return 45 | * array item from given index or default value on error 46 | */ 47 | public static T safeGetArray(T[] array, int index, T defaultValue) { 48 | if (array != null) { 49 | // check indexes 50 | int arrayLength = array.length; 51 | if (isBetween(-1, arrayLength, index)) { 52 | return array[index]; 53 | } 54 | } 55 | return defaultValue; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/ParseTextFile.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | import java.io.File; 22 | import java.io.FileNotFoundException; 23 | import java.io.FileReader; 24 | import java.util.Map; 25 | import java.util.Scanner; 26 | 27 | /** 28 | * Created by IntelliJ IDEA. 29 | * User: phweda 30 | * Date: 11/24/11 31 | * Time: 3:16 PM 32 | */ 33 | public class ParseTextFile { 34 | 35 | protected static final String ALPHANUM_REGEX = "^[a-zA-Z0-9]"; 36 | protected static final String NUM_REGEX = "^[0-9]"; 37 | protected static final String ALPHA_REGEX = "^[a-zA-Z]"; 38 | protected Scanner scanner; 39 | // Bad design we overload with multiple Map parameter types 40 | protected Map map; 41 | private File file; 42 | 43 | /** 44 | * Constructor. 45 | * 46 | * @param fileName full name of an existing, readable file. 47 | */ 48 | public ParseTextFile(String fileName, Map mapIn) { 49 | file = new File(fileName); 50 | map = mapIn; 51 | } 52 | 53 | protected static void log(Object object) { 54 | System.out.println(String.valueOf(object)); 55 | } 56 | 57 | /** */ 58 | public Map processFile() throws FileNotFoundException { 59 | //FileReader is used, not File, since File is not Closeable 60 | scanner = new Scanner(new FileReader(file)); 61 | try { 62 | //Scanner to get each line 63 | while (scanner.hasNextLine()) { 64 | processLine(scanner.nextLine()); 65 | } 66 | } finally { 67 | //Close the underlying stream 68 | scanner.close(); 69 | } 70 | return map; 71 | } 72 | 73 | /** 74 | * Overridable method for processing lines in different ways. 75 | **/ 76 | protected void processLine(String line) { 77 | //use a second Scanner to parse the content of each line 78 | try (Scanner scanner = new Scanner(line)) { 79 | scanner.useDelimiter("="); 80 | if (scanner.hasNext()) { 81 | String key = scanner.next(); 82 | String value = ""; 83 | if (scanner.hasNext()) { 84 | value = scanner.next(); 85 | } 86 | log("Key is : " + quote(key.trim()) + ", and Value is : " + quote(value.trim())); 87 | } else { 88 | log("Empty or invalid line. Unable to process."); 89 | } 90 | } 91 | //no need to call scanner.close(), since the source is a String 92 | } 93 | 94 | private String quote(String text) { 95 | String singleQuote = "'"; 96 | return singleQuote + text + singleQuote; 97 | } 98 | 99 | } 100 | 101 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/Pastie.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | import java.io.BufferedReader; 22 | import java.io.IOException; 23 | import java.io.InputStreamReader; 24 | import java.io.OutputStreamWriter; 25 | import java.net.URL; 26 | import java.net.URLConnection; 27 | import java.net.URLEncoder; 28 | import java.util.regex.Matcher; 29 | import java.util.regex.Pattern; 30 | 31 | /** 32 | * Created by IntelliJ IDEA. 33 | * User: phweda 34 | * Date: 11/25/2015 35 | * Time: 4:23 PM 36 | */ 37 | public class Pastie { 38 | 39 | private static Pattern pattern = Pattern.compile("download\\?key=(.+?)\""); 40 | 41 | public String postText(String text) throws IOException { 42 | 43 | // int 6 is the Pastie value for Text post see 44 | String response = shareAndGetResponse(text, 6); 45 | String pastedCodeFragmentUniqueKey = extractKeyFrom(response); 46 | 47 | String pastieBaseUrl = "http://pastie.org/private/"; 48 | return pastieBaseUrl + pastedCodeFragmentUniqueKey; 49 | } 50 | 51 | private String shareAndGetResponse(String selection, int languageDropdownId) throws IOException { 52 | URL url = new URL("http://pastie.org/pastes"); 53 | URLConnection conn = url.openConnection(); 54 | conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 55 | conn.setDoOutput(true); 56 | OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 57 | 58 | String data = "paste[parser_id]=" + languageDropdownId + 59 | "&paste[authorization]=burger&paste[restricted]=1&paste[body]=" + URLEncoder.encode(selection, "UTF-8"); 60 | writer.write(data); 61 | writer.flush(); 62 | writer.close(); 63 | 64 | StringBuilder answer = loadResponse(conn); 65 | return answer.toString(); 66 | } 67 | 68 | private StringBuilder loadResponse(URLConnection conn) throws IOException { 69 | StringBuilder answer = new StringBuilder(); 70 | BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 71 | String line; 72 | while ((line = reader.readLine()) != null) { 73 | answer.append(line); 74 | } 75 | reader.close(); 76 | return answer; 77 | } 78 | 79 | private String extractKeyFrom(String response) { 80 | Matcher matcher = pattern.matcher(response); 81 | if (matcher.find()) { 82 | return matcher.group(1); 83 | } 84 | throw new RuntimeException("Sorry. Plugin wasn't able to extract url to pasted code fragment."); 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/QuadState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | /** 22 | * Created by IntelliJ IDEA. 23 | * User: phweda 24 | * Date: 10/26/2015 25 | * Time: 12:19 PM 26 | */ 27 | public class QuadState { 28 | public static final String ALL = "All"; 29 | private static final int ALL_THREE = 0; 30 | private static final int FIRST = 1; 31 | private static final int SECOND = 2; 32 | private static final int THIRD = 3; 33 | private final String firstName; 34 | private final String secondName; 35 | private final String thirdName; 36 | private int state; 37 | 38 | public QuadState(String first, String second, String third, String state) { 39 | this.firstName = first; 40 | this.secondName = second; 41 | this.thirdName = third; 42 | setState(state); 43 | } 44 | 45 | public String getState() { 46 | if (state == FIRST) { 47 | return firstName; 48 | } else if (state == SECOND) { 49 | return secondName; 50 | } else if (state == THIRD) { 51 | return thirdName; 52 | } else if (state == ALL_THREE) { 53 | return ALL; 54 | } 55 | // NOTE Error condition. 56 | return null; 57 | } 58 | 59 | public void setState(String stateIn) { 60 | if (stateIn.equals(firstName)) { 61 | state = FIRST; 62 | } else if (stateIn.equals(secondName)) { 63 | state = SECOND; 64 | } else if (stateIn.equals(thirdName)) { 65 | state = THIRD; 66 | } else if (stateIn.equals(ALL)) { 67 | state = ALL_THREE; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/SysUtils.java: -------------------------------------------------------------------------------- 1 | package com.github.phweda.utils; 2 | 3 | import java.net.InetAddress; 4 | import java.net.UnknownHostException; 5 | 6 | public class SysUtils { 7 | private static String computerName = null; 8 | 9 | /** 10 | * return computer name (calculated or forced) 11 | * 12 | * @return computer name 13 | */ 14 | public static String getComputerName() { 15 | if (computerName == null) { 16 | try { 17 | String origComputerName = InetAddress.getLocalHost().getHostName(); 18 | computerName = FileUtils.sanitizeFileName(origComputerName).toLowerCase(); 19 | } catch (UnknownHostException e1) { 20 | } 21 | if (computerName==null) { 22 | computerName = "ufo"; 23 | } 24 | } 25 | return computerName; 26 | } 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/github/phweda/utils/TriState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MAME FILE MANAGER - MAME resources management tool 3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | package com.github.phweda.utils; 20 | 21 | /** 22 | * Created by IntelliJ IDEA. 23 | * User: phweda 24 | * Date: 10/12/2015 25 | * Time: 2:28 PM 26 | */ 27 | 28 | /** 29 | * TriState encapsulates settings that need an either or, or BOTHINT state 30 | */ 31 | public class TriState { 32 | 33 | public static final String BOTH = "all"; 34 | private static final int FIRST = 0; 35 | private static final int SECOND = 1; 36 | private static final int BOTHINT = 2; 37 | private final String firstName; 38 | private final String secondName; 39 | private int state; 40 | 41 | public TriState(String first, String second, String state) { 42 | this.firstName = first; 43 | this.secondName = second; 44 | setState(state); 45 | } 46 | 47 | public String getState() { 48 | if (state == FIRST) { 49 | return firstName; 50 | } else if (state == SECOND) { 51 | return secondName; 52 | } else if (state == BOTHINT) { 53 | return BOTH; 54 | } 55 | // NOTE Error condition. 56 | return "ERROR"; 57 | } 58 | 59 | public void setState(String stateIn) { 60 | if (stateIn.equals(firstName)) { 61 | state = FIRST; 62 | } else if (stateIn.equals(secondName)) { 63 | state = SECOND; 64 | } else if (stateIn.equals(BOTH)) { 65 | state = BOTHINT; 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/2Joystick_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/2Joystick_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/A.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Arrow.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Button_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Button_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/C.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/CheckMark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/CheckMark.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Dial_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Dial_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/EX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/EX.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/GNU GPL V3.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/GNU GPL V3.html -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Gambling_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Gambling_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Hanafuda_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Hanafuda_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Joystick_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Joystick_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Keyboard_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Keyboard_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Keypad_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Keypad_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/L.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Lightgun_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Lightgun_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/MFM Copyright.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | 23 | MFM Copyright 24 | 25 | 26 | 27 | 28 |

MAME FILE MANAGER - MAME Front End and 29 | resources management

30 | 31 |

Copyright (c) 2012-2018 Author phweda : 32 | phweda1@yahoo.com

33 | 34 |

35 | 36 |

This program is free software: you can redistribute 37 | it and/or modify

38 | 39 |

it under the terms of the GNU General Public License 40 | as published by

41 | 42 |

the Free Software Foundation, either version 3 of 43 | the License, or

44 | 45 |

(at your option) any later version.

46 | 47 |

48 | 49 |

This program is distributed in the hope that it will 50 | be useful,

51 | 52 |

but WITHOUT ANY WARRANTY; without even the implied 53 | warranty of

54 | 55 |

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 56 | See the

57 | 58 |

GNU General Public License for more details.

59 | 60 |

61 | 62 |

You should have 63 | received a copy of the GNU General Public License along with this program. If 64 | not, see <http://www.gnu.org/licenses/>.

65 | 66 |

67 | 68 | 69 | -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/MFM_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/MFM_Icon.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/MFM_Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/MFM_Image.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Mahjong_control2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Mahjong_control2.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Minus.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Mouse_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Mouse_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/P.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/P.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Paddle_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Paddle_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Pedal_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Pedal_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Positional_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Positional_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/R.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/S.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Stick_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Stick_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/Trackball_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Trackball_control.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/UpArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/UpArrow.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/circular_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/circular_arrow.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AD.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AF.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AS.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AW.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/AZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BB.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BD.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BF.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BH.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BJ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BS.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BW.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BY.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/BZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CD.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CF.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CK.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CV.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CY.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/CZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DJ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DK.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/DZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/EC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EC.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/EE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/EG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ER.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ET.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/FI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/FJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FJ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/FM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/FO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/FR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GD.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GH.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GP.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GQ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GW.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/GY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GY.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/HK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HK.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/HN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/HR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/HU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ID.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IQ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IS.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/IT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/JE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/JM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/JO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/JP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JP.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KH.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KP.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KW.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KY.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/KZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LB.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/LV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LV.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MC.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MD.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ME.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MH.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MK.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ML.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MN.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MQ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MS.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MT.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MU.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MV.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MW.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MX.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MY.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/MZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MZ.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NA.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NC.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/NO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NO.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/PF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PF.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PR.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/PS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PS.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/RE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/RE.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/TC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/TC.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/US.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/VG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/VG.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/VI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/VI.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/WL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/WL.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/WV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/WV.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/XK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/XK.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ae.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ch.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/eh.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/es.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/gb.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ht.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/kn.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/kr.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ks.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/lc.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/lk.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ls.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ly.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/np.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/nr.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/nz.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/om.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pa.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pe.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pg.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ph.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pk.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pl.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pt.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pw.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/py.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/qa.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ro.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/rs.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ru.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/rw.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sa.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sb.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sc.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sd.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/se.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sg.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/si.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sk.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sl.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sm.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sn.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/so.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sr.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/st.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sv.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sy.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sz.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/td.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tg.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/th.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tj.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tl.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tm.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tn.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/to.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tr.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tt.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tv.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tw.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tz.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ua.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ug.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/uy.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/uz.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/va.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vc.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ve.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vn.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vu.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ws.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ye.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/za.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/zm.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/flags/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/zw.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/i.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/mame-logo-SM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/mame-logo-SM.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/mame-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/mame-logo.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/ui/vdub_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/vdub_32.png -------------------------------------------------------------------------------- /src/main/resources/com/github/phweda/mfm/version.properties: -------------------------------------------------------------------------------- 1 | BUILD_VERSION=0.9.6 2 | RELEASE_VERSION=0.9.5 3 | RELEASE_DATE=Sept 2018 4 | --------------------------------------------------------------------------------