diff --git a/CHANGELOG.md b/CHANGELOG.md index eb972db14..03ad524e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - `-configFile` and `-storeConfigFile` commandline parameters for loading/storing configuration file - Option to .bat and .sh file to enable J2D_D3D_NO_HWCHECK - [#2404] Quick find in text/script editors - show number of occurences +- [#1418] Option to make main window Always on top ### Fixed - [#2456] FLA export - NullPointer exception while exporting to CS4 or lower via commandline @@ -3803,6 +3804,7 @@ Major version of SWF to XML export changed to 2. [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 [#2404]: https://www.free-decompiler.com/flash/issues/2404 +[#1418]: https://www.free-decompiler.com/flash/issues/1418 [#2456]: https://www.free-decompiler.com/flash/issues/2456 [#2427]: https://www.free-decompiler.com/flash/issues/2427 [#1826]: https://www.free-decompiler.com/flash/issues/1826 diff --git a/lib/substance-fix.jar b/lib/substance-fix.jar index 9980821b9..63f6dda77 100644 Binary files a/lib/substance-fix.jar and b/lib/substance-fix.jar differ diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels.properties new file mode 100644 index 000000000..46abb093f --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels.properties @@ -0,0 +1,33 @@ +# Default labels by Kirill Grouchnikov + +SystemMenu.close=Close + +SystemMenu.iconify=Iconify + +SystemMenu.restore=Restore + +SystemMenu.maximize=Maximize + +SystemMenu.skins=Substance skins + +SystemMenu.showHeapStatus=Show heap status + +Tooltip.contentsNotSaved=contents not saved + +Tooltip.heapStatusPanel=Heap status. Click to run garbage collector + +Xoetrope.hue=Hue + +Xoetrope.brightness=Brightness + +Xoetrope.saturation=Saturation + +Xoetrope.warm=WARM + +Xoetrope.cold=COLD + +Xoetrope.decimalRGB=Decimal RGB + +Xoetrope.webSafeColors=Use web safe colors + +SystemMenu.alwaysOnTop=Toggle "Always on top" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ar.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ar.properties new file mode 100644 index 000000000..16ecd40c0 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ar.properties @@ -0,0 +1,33 @@ +# Arabic translation by QamarAlZaman Habeek + +SystemMenu.close=\u0625\u063a\ufefb\u0642 + +SystemMenu.iconify=\u062a\u0635\u063a\u064a\u0631 + +SystemMenu.restore=\u0627\u0633\u062a\u0631\u062c\u0627\u0639 + +SystemMenu.maximize=\u062a\u0643\u0628\u064a\u0631 + +SystemMenu.skins=\u0623\u064f\u0647\u064f\u0628 \u0627\u0644\u0633\u0628\u0633\u062a\u0646\u0633 + +SystemMenu.showHeapStatus=\u0625\u0638\u0647\u0627\u0631 \u0648\u0636\u0639 \u0627\u0644\u0631\u0643\u0627\u0645 + +Tooltip.contentsNotSaved=\u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u063a\u064a\u0631 \u0645\u062d\u0641\u0648\u0638 + +Tooltip.heapStatusPanel=\u0648\u0636\u0639 \u0627\u0644\u0631\u0643\u0627\u0645. \u0627\u0646\u0642\u0631 \u0644\u062a\u0646\u0641\u064a\u0630 \u062c\u0627\u0645\u0639 \u0627\u0644\u0646\u0641\u0627\u064a\u0627\u062a + +Xoetrope.hue=\u0635\u0650\u0628\u0652\u063a + +Xoetrope.brightness=\u0627\u0644\u0623\u0644\u0645\u0639\u064a\u0629 + +Xoetrope.saturation=\u062a\u0634\u0628\u0639 + +Xoetrope.warm=\u062f\u0627\u0641\u0626 + +Xoetrope.cold=\u0628\u0627\u0631\u062f + +Xoetrope.decimalRGB=\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0639\u062f\u062f\u064a \u0644\u0644\u0623\u0644\u0648\u0627\u0646 + +Xoetrope.webSafeColors=\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0645\u0644\u0627\u0626\u0645\u0629 \u0644\u0644\u0634\u0628\u0643\u0629 + +SystemMenu.alwaysOnTop=\u062a\u0628\u062f\u064a\u0644 "\u062f\u0627\u0626\u0645\u064b\u0627 \u0641\u064a \u0627\u0644\u0623\u0639\u0644\u0649" \ No newline at end of file diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_bg.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_bg.properties new file mode 100644 index 000000000..d5875a513 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_bg.properties @@ -0,0 +1,33 @@ +# Bulgarian translation by Zar Petkov + +SystemMenu.close=\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435 + +SystemMenu.iconify=\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0438\u043a\u043e\u043d\u0438 + +SystemMenu.restore=\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 + +SystemMenu.maximize=\u041c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u0430\u043d\u0435 + +SystemMenu.skins=\u0421\u0442\u0438\u043b\u043e\u0432\u0435 \u043d\u0430 Substance + +SystemMenu.showHeapStatus=\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u0430\u0442\u0430 \u043f\u0430\u043c\u0435\u0442 + +Tooltip.contentsNotSaved=\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u043d\u0435 \u0435 \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u043e \u0432\u044a\u0440\u0445\u0443 \u0434\u0438\u0441\u043a\u0430 + +Tooltip.heapStatusPanel=\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u0430\u0442\u0430 \u043f\u0430\u043c\u0435\u0442. \u041a\u043b\u0438\u043a\u043d\u0438 \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0448 garbage collector + +Xoetrope.hue=\u0422\u043e\u043d + +Xoetrope.brightness=\u041e\u0441\u0432\u0435\u0442\u0435\u043d\u043e\u0441\u0442 + +Xoetrope.saturation=\u041d\u0430\u0441\u0438\u0442\u0435\u043d\u043e\u0441\u0442 + +Xoetrope.warm=\u0421\u0422\u0423\u0414\u0415\u041d\u041e + +Xoetrope.cold=\u0422\u041e\u041f\u041b\u041e + +Xoetrope.decimalRGB=\u0414\u0435\u0441\u0435\u0442\u0438\u0447\u043d\u043e RGB + +Xoetrope.webSafeColors=\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 \u0446\u0432\u0435\u0442\u043e\u0432\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438 \u0437\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. + +SystemMenu.alwaysOnTop=\u041f\u0440\u0435\u0432\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u201e\u0412\u0438\u043d\u0430\u0433\u0438 \u043e\u0442\u0433\u043e\u0440\u0435\u201c diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_cs.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_cs.properties new file mode 100644 index 000000000..0f92158b8 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_cs.properties @@ -0,0 +1,33 @@ +# Czech translation by Milan Misak + +SystemMenu.close=Zav\u0159\u00edt + +SystemMenu.iconify=Minimalizovat + +SystemMenu.restore=Obnovit + +SystemMenu.maximize=Maximalizovat + +SystemMenu.skins=Substance skiny + +SystemMenu.showHeapStatus=Uka\u017e heap stav + +Tooltip.contentsNotSaved=obsah nen\u00ed ulo\u017een + +Tooltip.heapStatusPanel=Heap stav. Klikni pro spu\u0161t\u011bn\u00ed garbage collectoru + +Xoetrope.hue=Zabarven\u00fd + +Xoetrope.brightness=Sv\u011btlost + +Xoetrope.saturation=Nasycen\u00fd + +Xoetrope.warm=TEPL\u00c9 + +Xoetrope.cold=CHLADN\u00c9 + +Xoetrope.decimalRGB=Des\u00fdtkov\u00e9 RGB + +Xoetrope.webSafeColors=Pou\u017e\u00fd barvy bezpe\u010dn\u00e9 pro web + +SystemMenu.alwaysOnTop=P\u0159epnout "V\u017edy na vrchu" \ No newline at end of file diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_da.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_da.properties new file mode 100644 index 000000000..b99d7e2a8 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_da.properties @@ -0,0 +1,33 @@ +# Danish translation by Carsten O. Madsen + +SystemMenu.close=Luk + +SystemMenu.iconify=Ikoniser + +SystemMenu.restore=Genskab + +SystemMenu.maximize=Maksimer + +SystemMenu.skins=Substance skins + +SystemMenu.showHeapStatus=Vis heap status + +Tooltip.contentsNotSaved=indhold er ikke gemt + +Tooltip.heapStatusPanel=Heap status. Klick for at k\u00f8re garbage collectoren + +Xoetrope.hue=Farvetone + +Xoetrope.brightness=Lysintensitet + +Xoetrope.saturation=Farvem\u00e6tning + +Xoetrope.warm=VARM + +Xoetrope.cold=KOLD + +Xoetrope.decimalRGB=Decimal RGB + +Xoetrope.webSafeColors=Brug www sikre farver + +SystemMenu.alwaysOnTop=Skift "Altid \u00f8verst" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_de.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_de.properties new file mode 100644 index 000000000..aff7f0f69 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_de.properties @@ -0,0 +1,147 @@ +# German translation by Andreas Golchert + +SystemMenu.close=Schlie\u00dfen + +SystemMenu.iconify=Ikonifizieren + +SystemMenu.restore=Wiederherstellen + +SystemMenu.maximize=Maximieren + +SystemMenu.skins=Substance skins + +SystemMenu.showHeapStatus=Heap Status anzeigen + +Tooltip.contentsNotSaved=Inhalte wurden nicht gespeichert + +Tooltip.heapStatusPanel=Heap Status. Hier klicken, um den Garbage Collector zu starten + +Xoetrope.hue=Farbton + +Xoetrope.brightness=Helligkeit + +Xoetrope.saturation=S\u00e4ttigung + +Xoetrope.warm=WARM + +Xoetrope.cold=KALT + +Xoetrope.decimalRGB=Dezimal RGB + +Xoetrope.webSafeColors=Nur Webfarben anzeigen + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=Alle Dateien + +FileChooser.cancelButtonMnemonic=65 + +FileChooser.cancelButtonText=Abbrechen + +FileChooser.cancelButtonToolTipText=Dialogfeld f\u00fcr Dateiauswahl abbrechen + +FileChooser.directoryDescriptionText=Verzeichnis + +FileChooser.directoryOpenButtonMnemonic=69 + +FileChooser.directoryOpenButtonText=\u00d6ffnen + +FileChooser.directoryOpenButtonToolTipText=Markiertes Verzeichnis \u00f6ffnen + +FileChooser.fileDescriptionText=Allgemeine Datei + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=Hilfe + +FileChooser.helpButtonToolTipText=Hilfe f\u00fcr Dateiauswahl + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=Fehler beim Erstellen eines neuen Ordners + +FileChooser.openButtonMnemonic=70 + +FileChooser.openButtonText=\u00d6ffnen + +FileChooser.openButtonToolTipText=Ausgew\u00e4hlte Datei \u00f6ffnen + +FileChooser.openDialogTitleText=\u00d6ffnen + +FileChooser.other.newFolder=Neuer Ordner + +FileChooser.other.newFolder.subsequent=Neuer Ordner.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=Speichern + +FileChooser.saveButtonToolTipText=Ausgew\u00e4hlte Datei speichern + +FileChooser.saveDialogTitleText=Speichern + +FileChooser.updateButtonMnemonic=75 + +FileChooser.updateButtonText=Aktualisieren + +FileChooser.updateButtonToolTipText=Verzeichnisliste aktualisieren + +FileChooser.win32.newFolder=Neuer Ordner + +FileChooser.win32.newFolder.subsequent=Neuer Ordner ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=Details + +FileChooser.detailsViewButtonAccessibleName=Details + +FileChooser.detailsViewButtonToolTipText=Details + +FileChooser.fileAttrHeaderText=Attribut + +FileChooser.fileDateHeaderText=Ge\u00e4ndert + +FileChooser.fileNameHeaderText=Dateiname + +FileChooser.fileNameLabelText=Dateiname: + +FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe + +FileChooser.fileTypeHeaderText=Typ + +FileChooser.filesOfTypeLabelText=Dateityp: + +FileChooser.homeFolderAccessibleName=Home + +FileChooser.homeFolderToolTipText=Home + +FileChooser.listViewActionLabelText=Liste + +FileChooser.listViewButtonAccessibleName=Liste + +FileChooser.listViewButtonToolTipText=Liste + +FileChooser.lookInLabelText=Suchen in: + +FileChooser.newFolderAccessibleName=Neuer Ordner + +FileChooser.newFolderActionLabelText=Neuer Ordner + +FileChooser.newFolderToolTipText=Neuen Ordner erstellen + +FileChooser.refreshActionLabelText=Aktualisieren + +FileChooser.saveInLabelText=Speichern in: + +FileChooser.upFolderAccessibleName=H\u00f6her + +FileChooser.upFolderToolTipText=Eine Ebene h\u00f6her + +FileChooser.viewMenuLabelText=Ansicht + +SystemMenu.alwaysOnTop=\u201eImmer im Vordergrund\u201c umschalten diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_el.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_el.properties new file mode 100644 index 000000000..67e5b5e4b --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_el.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf\u03af\u03b2\u03b1\u03c2 + +Tooltip.contentsNotSaved=\u03c4\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03b4\u03b5\u03bd \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b1\u03bd + +Tooltip.heapStatusPanel=\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf\u03af\u03b2\u03b1\u03c2. \u039a\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03b5\u03af \u03bf \u03c3\u03c5\u03bb\u03bb\u03ad\u03ba\u03c4\u03b7\u03c2 \u03b1\u03c0\u03bf\u03c1\u03c1\u03b9\u03bc\u03ac\u03c4\u03c9\u03bd + +Xoetrope.hue=\u0391\u03c0\u03cc\u03c7\u03c1\u03c9\u03c3\u03b7 + +Xoetrope.brightness=\u03a6\u03c9\u03c4\u03b5\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1 + +Xoetrope.saturation=\u039a\u03bf\u03c1\u03b5\u03c3\u03bc\u03cc\u03c2 + +Xoetrope.warm=\u0398\u0395\u03a1\u039c\u039f + +Xoetrope.cold=\u03a8\u03a5\u03a7\u03a1\u039f + +Xoetrope.decimalRGB=\u0394\u03b5\u03ba\u03b1\u03b4\u03b9\u03ba\u03cc RGB + +Xoetrope.webSafeColors=\u03a7\u03c1\u03ae\u03c3\u03b7 \u03b1\u03c3\u03c6\u03b1\u03bb\u03ce\u03bd \u03b3\u03b9\u03b1 \u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c7\u03c1\u03c9\u03bc\u03ac\u03c4\u03c9\u03bd + +SystemMenu.alwaysOnTop=\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae "\u03a0\u03ac\u03bd\u03c4\u03b1 \u03c3\u03c4\u03b7\u03bd \u03ba\u03bf\u03c1\u03c5\u03c6\u03ae" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_en_GB.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_en_GB.properties new file mode 100644 index 000000000..4b2abcfaa --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_en_GB.properties @@ -0,0 +1,29 @@ +# British labels by Robert Gibson + +SystemMenu.showHeapStatus=Show heap status + +Tooltip.contentsNotSaved=contents not saved + +Tooltip.heapStatusPanel=Heap status. Click to run garbage collector + +Tooltip.menuSearchButton=Select to view menu search panel + +Tooltip.menuSearchField=Enter search string and press 'Enter' button to search + +Tooltip.menuSearchTooltip=Click to locate menu + +Xoetrope.hue=Hue + +Xoetrope.brightness=Brightness + +Xoetrope.saturation=Saturation + +Xoetrope.warm=WARM + +Xoetrope.cold=COLD + +Xoetrope.decimalRGB=Decimal RGB + +Xoetrope.webSafeColors=Use web safe colours + +SystemMenu.alwaysOnTop=Toggle "Always on top" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es.properties new file mode 100644 index 000000000..da5eeb27f --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es.properties @@ -0,0 +1,147 @@ +# Danish translation by David \u00c1lvarez Le\u00f3n + +SystemMenu.close=Cerrar + +SystemMenu.iconify=Minimizar + +SystemMenu.restore=Restaurar + +SystemMenu.maximize=Maximizar + +SystemMenu.skins=Fondos Substance + +SystemMenu.showHeapStatus=Mostrar estado de pila + +Tooltip.contentsNotSaved=Contenidos sin guardar + +Tooltip.heapStatusPanel=Estado de pila. Pulse para pasar el recolector de basura. + +Xoetrope.hue=Tonalidad + +Xoetrope.brightness=Brillo + +Xoetrope.saturation=Saturaci\u00f3n + +Xoetrope.warm=c\u00c1LIDO + +Xoetrope.cold=F\u00cdRO + +Xoetrope.decimalRGB=RGB Decimal + +Xoetrope.webSafeColors=Use colores web seguros + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=Todos los archivos + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=Cancelar + +FileChooser.cancelButtonToolTipText=Cuadro de di\u00e1logo para cancelar elector de archivo + +FileChooser.directoryDescriptionText=Directorio + +FileChooser.directoryOpenButtonMnemonic=82 + +FileChooser.directoryOpenButtonText=Abrir + +FileChooser.directoryOpenButtonToolTipText=Abrir directorio seleccionado + +FileChooser.fileDescriptionText=Archivo gen\u00e9rico + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=89 + +FileChooser.helpButtonText=Ayuda + +FileChooser.helpButtonToolTipText=Ayuda elector de archivos + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=Error al crear una nueva carpeta + +FileChooser.openButtonMnemonic=65 + +FileChooser.openButtonText=Abrir + +FileChooser.openButtonToolTipText=Abrir archivo seleccionado + +FileChooser.openDialogTitleText=Abrir + +FileChooser.other.newFolder=Carpeta nueva + +FileChooser.other.newFolder.subsequent=Carpeta nueva.{0} + +FileChooser.saveButtonMnemonic=71 + +FileChooser.saveButtonText=Guardar + +FileChooser.saveButtonToolTipText=Guardar archivo seleccionado + +FileChooser.saveDialogTitleText=Guardar + +FileChooser.updateButtonMnemonic=84 + +FileChooser.updateButtonText=Actualizar + +FileChooser.updateButtonToolTipText=Actualizar lista de directorios + +FileChooser.win32.newFolder=Carpeta nueva + +FileChooser.win32.newFolder.subsequent=Carpeta nueva ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=Detalles + +FileChooser.detailsViewButtonAccessibleName=Detalles + +FileChooser.detailsViewButtonToolTipText=Detalles + +FileChooser.fileAttrHeaderText=Atributos + +FileChooser.fileDateHeaderText=Modificado + +FileChooser.fileNameHeaderText=Nombre + +FileChooser.fileNameLabelText=Nombre de archivo: + +FileChooser.fileSizeHeaderText=Tama\u00f1o + +FileChooser.fileTypeHeaderText=Tipo + +FileChooser.filesOfTypeLabelText=Archivos de tipo: + +FileChooser.homeFolderAccessibleName=Principal + +FileChooser.homeFolderToolTipText=Principal + +FileChooser.listViewActionLabelText=Lista + +FileChooser.listViewButtonAccessibleName=Lista + +FileChooser.listViewButtonToolTipText=Lista + +FileChooser.lookInLabelText=Buscar en: + +FileChooser.newFolderAccessibleName=Carpeta nueva + +FileChooser.newFolderActionLabelText=Carpeta nueva + +FileChooser.newFolderToolTipText=Crear carpeta nueva + +FileChooser.refreshActionLabelText=Renovar + +FileChooser.saveInLabelText=Guardar en: + +FileChooser.upFolderAccessibleName=Arriba + +FileChooser.upFolderToolTipText=Subir un nivel + +FileChooser.viewMenuLabelText=Ver + +SystemMenu.alwaysOnTop= Alternar "Siempre encima" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_AR.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_AR.properties new file mode 100644 index 000000000..97e4ee559 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_AR.properties @@ -0,0 +1,106 @@ +# Spanish (Argentina) translation by Iv\u00e1n Ridao Freitas + +SystemMenu.close=Cerrar + +SystemMenu.iconify=Minimizar + +SystemMenu.restore=Restaurar + +SystemMenu.maximize=Maximizar + +SystemMenu.skins=Temas de Substance + +SystemMenu.showHeapStatus=Mostrar estado de pila + +TabbedPane.overviewButtonTooltip=Mostrar visi\u00f3n general de las pesta\u00f1as + +TabbedPane.overviewDialogTitle=Visi\u00f3n general de las pesta\u00f1as + +TabbedPane.overviewDialogTitleRefresh=Visi\u00f3n general de las pesta\u00f1as [actualizar cada {0} seg.] + +TabbedPane.overviewWidgetTooltip=Haga clic para cerrar la visi\u00f3n general y seleccionar la pesta\u00f1a + +Tooltip.contentsNotSaved=cambios sin guardar + +Tooltip.heapStatusPanel=Estado de pila. Haga clic para ejecutar el recolector de basura + +Tooltip.menuSearchButton=Seleccione para ver el panel de b\u00fasqueda del men\u00fa + +Tooltip.menuSearchField=Ingrese la cadena de b\u00fasqueda y presione la tecla 'Enter' para buscar + +Tooltip.menuSearchTooltip=Haga clic para ubicar el men\u00fa + +Xoetrope.hue=Tono + +Xoetrope.brightness=Brillo + +Xoetrope.saturation=Saturaci\u00f3n + +Xoetrope.warm=C\u00c1LIDO + +Xoetrope.cold=FR\u00cdO + +Xoetrope.decimalRGB=RGB decimal + +Xoetrope.webSafeColors=Usar colores web seguros + +EditMenu.copy=Copiar + +EditMenu.cut=Cortar + +EditMenu.paste=Pegar + +EditMenu.delete=Eliminar + +EditMenu.selectAll=Seleccionar todo + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=Detalles + +FileChooser.detailsViewButtonAccessibleName=Detalles + +FileChooser.detailsViewButtonToolTipText=Detalles + +FileChooser.fileAttrHeaderText=Atributos + +FileChooser.fileDateHeaderText=Modificado + +FileChooser.fileNameHeaderText=Nombre + +FileChooser.fileNameLabelText=Nombre de archivo: + +FileChooser.fileSizeHeaderText=Tama\u00f1o + +FileChooser.fileTypeHeaderText=Tipo + +FileChooser.filesOfTypeLabelText=Archivos de tipo: + +FileChooser.homeFolderAccessibleName=Principal + +FileChooser.homeFolderToolTipText=Principal + +FileChooser.listViewActionLabelText=Lista + +FileChooser.listViewButtonAccessibleName=Lista + +FileChooser.listViewButtonToolTipText=Lista + +FileChooser.lookInLabelText=Buscar en: + +FileChooser.newFolderAccessibleName=Carpeta nueva + +FileChooser.newFolderActionLabelText=Carpeta nueva + +FileChooser.newFolderToolTipText=Crear carpeta nueva + +FileChooser.refreshActionLabelText=Actualizar + +FileChooser.saveInLabelText=Guardar en: + +FileChooser.upFolderAccessibleName=Arriba + +FileChooser.upFolderToolTipText=Subir un nivel + +FileChooser.viewMenuLabelText=Ver + +SystemMenu.alwaysOnTop=Alternar "Siempre encima" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_MX.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_MX.properties new file mode 100644 index 000000000..45d4bdd87 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_es_MX.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=Mostrar estado de pila + +Tooltip.contentsNotSaved=contenidos no guardados + +Tooltip.heapStatusPanel=Estado de pila. Haga clic para ejecutar el basurero + +Xoetrope.hue=Tono + +Xoetrope.brightness=Brillo + +Xoetrope.saturation=Saturaci\u00f3n + +Xoetrope.warm=C\u00c1LIDO + +Xoetrope.cold=FR\u00cdO + +Xoetrope.decimalRGB=RGB decimal + +Xoetrope.webSafeColors=Use colores seguros para la Web + +SystemMenu.alwaysOnTop=Alternar "Siempre encima" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fi.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fi.properties new file mode 100644 index 000000000..358d4a31d --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fi.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=N\u00e4yt\u00e4 keon tila + +Tooltip.contentsNotSaved=sis\u00e4lt\u00f6\u00e4 ei tallennettu + +Tooltip.heapStatusPanel=Keon tila. Suorita muistin siivous napsauttamalla + +Xoetrope.hue=S\u00e4vy + +Xoetrope.brightness=Kirkkaus + +Xoetrope.saturation=Kyll\u00e4isyys + +Xoetrope.warm=L\u00c4MMIN + +Xoetrope.cold=KYLM\u00c4 + +Xoetrope.decimalRGB=Desimaali-RGB + +Xoetrope.webSafeColors=K\u00e4yt\u00e4 selainturvallisia v\u00e4rej\u00e4 + +SystemMenu.alwaysOnTop=Vaihda "Aina p\u00e4\u00e4llimm\u00e4isen\u00e4" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr.properties new file mode 100644 index 000000000..f02af441d --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr.properties @@ -0,0 +1,147 @@ +# French translation by Alois Cochard + +SystemMenu.close=Fermer + +SystemMenu.iconify=R\u00e9duire + +SystemMenu.restore=Restaurer + +SystemMenu.maximize=Agrandir + +SystemMenu.skins=Substance skins + +SystemMenu.showHeapStatus=Voir le statut de la pile + +Tooltip.contentsNotSaved=contenu non sauv\u00e9 + +Tooltip.heapStatusPanel=Statut de la pile. Cliquez pour lancer 'garbage collector' + +Xoetrope.hue=Ton + +Xoetrope.brightness=Luminosit\u00e9 + +Xoetrope.saturation=Saturation + +Xoetrope.warm=CHAUD + +Xoetrope.cold=FROID + +Xoetrope.decimalRGB=RGB D\u00e9cimal + +Xoetrope.webSafeColors=Couleurs compatible web + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=Tous les fichiers + +FileChooser.cancelButtonMnemonic=65 + +FileChooser.cancelButtonText=Annuler + +FileChooser.cancelButtonToolTipText=Ferme la bo\u00eete de dialogue du s\u00e9lecteur de fichiers + +FileChooser.directoryDescriptionText=R\u00e9pertoire + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=Ouvrir + +FileChooser.directoryOpenButtonToolTipText=Ouvrir le r\u00e9pertoire s\u00e9lectionn\u00e9 + +FileChooser.fileDescriptionText=Fichier g\u00e9n\u00e9rique + +FileChooser.fileSizeGigaBytes={0} Go + +FileChooser.fileSizeKiloBytes={0} Ko + +FileChooser.fileSizeMegaBytes={0} Mo + +FileChooser.helpButtonMnemonic=68 + +FileChooser.helpButtonText=Aide + +FileChooser.helpButtonToolTipText=Aide sur le s\u00e9lecteur de fichiers + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=Erreur lors de la cr\u00e9ation du nouveau dossier + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=Ouvrir + +FileChooser.openButtonToolTipText=Ouvre le fichier s\u00e9lectionn\u00e9 + +FileChooser.openDialogTitleText=Ouvrir + +FileChooser.other.newFolder=Nouveau dossier + +FileChooser.other.newFolder.subsequent=Nouveau dossier.{0} + +FileChooser.saveButtonMnemonic=69 + +FileChooser.saveButtonText=Enregistrer + +FileChooser.saveButtonToolTipText=Enregistre le fichier s\u00e9lectionn\u00e9 + +FileChooser.saveDialogTitleText=Enregistrer + +FileChooser.updateButtonMnemonic=77 + +FileChooser.updateButtonText=Mise \u00e0 jour + +FileChooser.updateButtonToolTipText=Met \u00e0 jour la liste des r\u00e9pertoires + +FileChooser.win32.newFolder=Nouveau dossier + +FileChooser.win32.newFolder.subsequent=Nouveau dossier ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=D\u00e9tails + +FileChooser.detailsViewButtonAccessibleName=D\u00e9tails + +FileChooser.detailsViewButtonToolTipText=D\u00e9tails + +FileChooser.fileAttrHeaderText=Attributs + +FileChooser.fileDateHeaderText=Modifi\u00e9 + +FileChooser.fileNameHeaderText=Nom + +FileChooser.fileNameLabelText=Nom de fichier : + +FileChooser.fileSizeHeaderText=Taille + +FileChooser.fileTypeHeaderText=Type + +FileChooser.filesOfTypeLabelText=Fichiers du type : + +FileChooser.homeFolderAccessibleName=Accueil + +FileChooser.homeFolderToolTipText=R\u00e9pertoire d'accueil + +FileChooser.listViewActionLabelText=Liste + +FileChooser.listViewButtonAccessibleName=Liste + +FileChooser.listViewButtonToolTipText=Liste + +FileChooser.lookInLabelText=Rechercher dans : + +FileChooser.newFolderAccessibleName=Nouveau dossier + +FileChooser.newFolderActionLabelText=Nouveau dossier + +FileChooser.newFolderToolTipText=Cr\u00e9e un nouveau dossier. + +FileChooser.refreshActionLabelText=Actualiser + +FileChooser.saveInLabelText=Enregistrer dans : + +FileChooser.upFolderAccessibleName=Vers le haut + +FileChooser.upFolderToolTipText=Remonte d'un niveau. + +FileChooser.viewMenuLabelText=Affichage + +SystemMenu.alwaysOnTop=Basculer "Toujours au-dessus" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr_CA.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr_CA.properties new file mode 100644 index 000000000..10ed20d44 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_fr_CA.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=Afficher l\'\u00e9tat d\'entassement + +Tooltip.contentsNotSaved=contenu non enregistr\u00e9 + +Tooltip.heapStatusPanel=\u00c9tat d\'entassement. Cliquez pour ex\u00e9cuter le nettoyeur + +Xoetrope.hue=Teinte + +Xoetrope.brightness=Luminosit\u00e9 + +Xoetrope.saturation=Saturation + +Xoetrope.warm=CHAUD + +Xoetrope.cold=FROID + +Xoetrope.decimalRGB=RVB d\u00e9cimal + +Xoetrope.webSafeColors=Utiliser des couleurs s\u00fbres pour le Web + +SystemMenu.alwaysOnTop=Basculer "Toujours au-dessus" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_hu.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_hu.properties new file mode 100644 index 000000000..136cb8f67 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_hu.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=Halom \u00e1llapot\u00e1nak megjelen\u00edt\u00e9se + +Tooltip.contentsNotSaved=A tartalom nincs mentve. + +Tooltip.heapStatusPanel=A halommem\u00f3ria \u00e1llapota. Kattintson ide a szem\u00e9tgy\u00fbjt\u00f5 futtat\u00e1s\u00e1hoz. + +Xoetrope.hue=\u00c1rnyalat + +Xoetrope.brightness=F\u00e9nyer\u00f5 + +Xoetrope.saturation=Tel\u00edtetts\u00e9g + +Xoetrope.warm=MELEG + +Xoetrope.cold=HIDEG + +Xoetrope.decimalRGB=Decim\u00e1lis RGB + +Xoetrope.webSafeColors=Weben megjelen\u00edthet\u00f5 sz\u00ednek haszn\u00e1lata + +SystemMenu.alwaysOnTop=\u201eMindig fel\u00fcl\u201d kapcsol\u00e1sa diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_it.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_it.properties new file mode 100644 index 000000000..8b3ba6a91 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_it.properties @@ -0,0 +1,149 @@ +# Italian translation by Sandro Martini + +SystemMenu.close=Chiudi + +SystemMenu.iconify=Iconizza + +SystemMenu.restore=Ripristina + +SystemMenu.maximize=Massimizza + +SystemMenu.skins=Skin di Substance + +SystemMenu.showHeapStatus=Visualizza stato memoria + +SystemMenu.titlePainters=Disegna Titoli di Substance + +Tooltip.contentsNotSaved=contenuto non salvato + +Tooltip.heapStatusPanel=Stato memoria. Clicca per eseguire il Garbage Collector + +Xoetrope.hue=Tonalit\u00e0 + +Xoetrope.brightness=Luminosit\u00e0 + +Xoetrope.saturation=Saturazione + +Xoetrope.warm=CALDO + +Xoetrope.cold=FREDDO + +Xoetrope.decimalRGB=RGB Decimale + +Xoetrope.webSafeColors=Usa colori sicuri per il web + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=Tutti i file + +FileChooser.cancelButtonMnemonic=65 + +FileChooser.cancelButtonText=Annulla + +FileChooser.cancelButtonToolTipText=Finestra di dialogo Interrompi selezione file + +FileChooser.directoryDescriptionText=Directory + +FileChooser.directoryOpenButtonMnemonic=82 + +FileChooser.directoryOpenButtonText=Apri + +FileChooser.directoryOpenButtonToolTipText=Apri directory selezionata + +FileChooser.fileDescriptionText=File generico + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=63 + +FileChooser.helpButtonText=? + +FileChooser.helpButtonToolTipText=Guida di Selezione file + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=Errore durante la creazione della nuova cartella + +FileChooser.openButtonMnemonic=80 + +FileChooser.openButtonText=Apri + +FileChooser.openButtonToolTipText=Apri file selezionato + +FileChooser.openDialogTitleText=Apri + +FileChooser.other.newFolder=Nuova cartella + +FileChooser.other.newFolder.subsequent=Nuova cartella.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=Salva + +FileChooser.saveButtonToolTipText=Salva file selezionato + +FileChooser.saveDialogTitleText=Salva + +FileChooser.updateButtonMnemonic=71 + +FileChooser.updateButtonText=Aggiorna + +FileChooser.updateButtonToolTipText=Aggiorna elenco directory + +FileChooser.win32.newFolder=Nuova cartella + +FileChooser.win32.newFolder.subsequent=Nuova cartella ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=Dettagli + +FileChooser.detailsViewButtonAccessibleName=Dettagli + +FileChooser.detailsViewButtonToolTipText=Dettagli + +FileChooser.fileAttrHeaderText=Attributi + +FileChooser.fileDateHeaderText=Modificato + +FileChooser.fileNameHeaderText=Nome + +FileChooser.fileNameLabelText=Nome file: + +FileChooser.fileSizeHeaderText=Dimensioni + +FileChooser.fileTypeHeaderText=Tipo + +FileChooser.filesOfTypeLabelText=Tipo file: + +FileChooser.homeFolderAccessibleName=Principale + +FileChooser.homeFolderToolTipText=Principale + +FileChooser.listViewActionLabelText=Elenco + +FileChooser.listViewButtonAccessibleName=Elenco + +FileChooser.listViewButtonToolTipText=Elenco + +FileChooser.lookInLabelText=Cerca in: + +FileChooser.newFolderAccessibleName=Nuova cartella + +FileChooser.newFolderActionLabelText=Nuova cartella + +FileChooser.newFolderToolTipText=Crea nuova cartella + +FileChooser.refreshActionLabelText=Aggiorna + +FileChooser.saveInLabelText=Salva in: + +FileChooser.upFolderAccessibleName=Superiore + +FileChooser.upFolderToolTipText=Cartella superiore + +FileChooser.viewMenuLabelText=Visualizza + +SystemMenu.alwaysOnTop=Attiva/disattiva "Sempre in primo piano" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_iw.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_iw.properties new file mode 100644 index 000000000..7a2aae5d0 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_iw.properties @@ -0,0 +1,33 @@ +# Hebrew translation by Kirill Grouchnikov + +SystemMenu.close=\u05e1\u05d2\u05d5\u05e8 + +SystemMenu.iconify=\u05de\u05d6\u05e2\u05e8 + +SystemMenu.restore=\u05e9\u05d7\u05d6\u05e8 + +SystemMenu.maximize=\u05d4\u05d2\u05d3\u05dc + +SystemMenu.skins=\u05e7\u05e8\u05d5\u05de\u05d9\u05dd \u05d1:Substance + +SystemMenu.showHeapStatus=\u05d4\u05e8\u05d0\u05d4 \u05de\u05e6\u05d1 \u05d4\u05e2\u05e8\u05d9\u05de\u05d4 + +Tooltip.contentsNotSaved=\u05ea\u05db\u05d5\u05dc\u05d4 \u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d4 + +Tooltip.heapStatusPanel=\u05de\u05e6\u05d1 \u05d4\u05e2\u05e8\u05d9\u05de\u05d4. \u05dc\u05d7\u05e5 \u05dc\u05d4\u05e8\u05e6\u05ea \u05d0\u05d5\u05e1\u05e3 \u05d0\u05e9\u05e4\u05d4 + +Xoetrope.hue=\u05d2\u05d5\u05d5\u05df + +Xoetrope.brightness=\u05d1\u05d4\u05d9\u05e8\u05d5\u05ea + +Xoetrope.saturation=\u05d4\u05e8\u05d5\u05d5\u05d9\u05d4 + +Xoetrope.warm=\u05d7\u05d5\u05dd + +Xoetrope.cold=\u05e7\u05d5\u05e8 + +Xoetrope.decimalRGB=\u05e2\u05e9\u05e8\u05d5\u05e0\u05d9 + +Xoetrope.webSafeColors=\u05e7\u05d7 \u05e6\u05d1\u05e2\u05d9 web + +SystemMenu.alwaysOnTop=\u05d4\u05d7\u05dc\u05e3 "\u05ea\u05de\u05d9\u05d3 \u05e2\u05dc\u05d9\u05d5\u05df" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ja.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ja.properties new file mode 100644 index 000000000..be538bbbc --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ja.properties @@ -0,0 +1,135 @@ +SystemMenu.showHeapStatus=\u30d2\u30fc\u30d7 \u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8868\u793a + +Tooltip.contentsNotSaved=\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u305b\u3093 + +Tooltip.heapStatusPanel=\u30d2\u30fc\u30d7 \u30b9\u30c6\u30fc\u30bf\u30b9\u3002\u30ac\u30fc\u30d9\u30b8 \u30b3\u30ec\u30af\u30bf\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059 + +Xoetrope.hue=\u8272\u5408\u3044 + +Xoetrope.brightness=\u8f1d\u5ea6 + +Xoetrope.saturation=\u5f69\u5ea6 + +Xoetrope.warm=\u6696 + +Xoetrope.cold=\u51b7 + +Xoetrope.decimalRGB=10 \u9032\u6570 RGB + +Xoetrope.webSafeColors=Web \u30bb\u30fc\u30d5 \u30ab\u30e9\u30fc\u3092\u4f7f\u7528 + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=\u53d6\u6d88\u3057 + +FileChooser.cancelButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u7d42\u4e86 + +FileChooser.directoryDescriptionText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=\u958b\u304f + +FileChooser.directoryOpenButtonToolTipText=\u9078\u629e\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u958b\u304f + +FileChooser.fileDescriptionText=\u6c4e\u7528\u30d5\u30a1\u30a4\u30eb + +FileChooser.fileSizeGigaBytes={0} G \u30d0\u30a4\u30c8 + +FileChooser.fileSizeKiloBytes={0} K \u30d0\u30a4\u30c8 + +FileChooser.fileSizeMegaBytes={0} M \u30d0\u30a4\u30c8 + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=\u30d8\u30eb\u30d7(H) + +FileChooser.helpButtonToolTipText=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e5\u30fc\u30b6\u30d8\u30eb\u30d7 + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u306b\u5931\u6557 + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=\u958b\u304f + +FileChooser.openButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f + +FileChooser.openDialogTitleText=\u958b\u304f + +FileChooser.other.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 + +FileChooser.other.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=\u4fdd\u5b58 + +FileChooser.saveButtonToolTipText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58 + +FileChooser.saveDialogTitleText=\u4fdd\u5b58 + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=\u66f4\u65b0(U) + +FileChooser.updateButtonToolTipText=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4e00\u89a7\u3092\u66f4\u65b0 + +FileChooser.win32.newFolder=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 + +FileChooser.win32.newFolder.subsequent=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=\u8a73\u7d30 + +FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30 + +FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30 + +FileChooser.fileAttrHeaderText=\u5c5e\u6027 + +FileChooser.fileDateHeaderText=\u4fee\u6b63\u65e5 + +FileChooser.fileNameHeaderText=\u540d\u524d + +FileChooser.fileNameLabelText=\u30d5\u30a1\u30a4\u30eb\u540d: + +FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba + +FileChooser.fileTypeHeaderText=\u578b + +FileChooser.filesOfTypeLabelText=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: + +FileChooser.homeFolderAccessibleName=\u30db\u30fc\u30e0 + +FileChooser.homeFolderToolTipText=\u30db\u30fc\u30e0 + +FileChooser.listViewActionLabelText=\u30ea\u30b9\u30c8 + +FileChooser.listViewButtonAccessibleName=\u30ea\u30b9\u30c8 + +FileChooser.listViewButtonToolTipText=\u30ea\u30b9\u30c8 + +FileChooser.lookInLabelText=\u53c2\u7167: + +FileChooser.newFolderAccessibleName=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 + +FileChooser.newFolderActionLabelText=\u65b0\u898f\u30d5\u30a9\u30eb\u30c0 + +FileChooser.newFolderToolTipText=\u30d5\u30a9\u30eb\u30c0\u306e\u65b0\u898f\u4f5c\u6210 + +FileChooser.refreshActionLabelText=\u66f4\u65b0 + +FileChooser.saveInLabelText=\u4fdd\u5b58: + +FileChooser.upFolderAccessibleName=\u4e0a\u3078 + +FileChooser.upFolderToolTipText=1 \u30ec\u30d9\u30eb\u4e0a\u3078 + +FileChooser.viewMenuLabelText=\u8868\u793a + +SystemMenu.alwaysOnTop=\u300c\u5e38\u306b\u6700\u524d\u9762\u300d\u3092\u5207\u308a\u66ff\u3048 diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ko.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ko.properties new file mode 100644 index 000000000..01ca1bd36 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ko.properties @@ -0,0 +1,115 @@ +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=\ubaa8\ub4e0 \ud30c\uc77c + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=\ucde8\uc18c + +FileChooser.cancelButtonToolTipText=\ud30c\uc77c \uc120\ud0dd \ub300\ud654 \uc0c1\uc790 \uc911\uc9c0 + +FileChooser.directoryDescriptionText=\ub514\ub809\ud1a0\ub9ac + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=\uc5f4\uae30 + +FileChooser.directoryOpenButtonToolTipText=\uc120\ud0dd\ub41c \ub514\ub809\ud1a0\ub9ac \uc5f4\uae30 + +FileChooser.fileDescriptionText=\uc77c\ubc18 \ud30c\uc77c + +FileChooser.fileSizeGigaBytes={0}GB + +FileChooser.fileSizeKiloBytes={0}KB + +FileChooser.fileSizeMegaBytes={0}MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0(H) + +FileChooser.helpButtonToolTipText=FileChooser \ub3c4\uc6c0\ub9d0 + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=\uc0c8 \ud3f4\ub354 \uc791\uc131 \uc624\ub958 + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=\uc5f4\uae30 + +FileChooser.openButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc5f4\uae30 + +FileChooser.openDialogTitleText=\uc5f4\uae30 + +FileChooser.other.newFolder=\uc0c8 \ud3f4\ub354 + +FileChooser.other.newFolder.subsequent=\uc0c8 \ud3f4\ub354.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=\uc800\uc7a5 + +FileChooser.saveButtonToolTipText=\uc120\ud0dd\ub41c \ud30c\uc77c \uc800\uc7a5 + +FileChooser.saveDialogTitleText=\uc800\uc7a5 + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8(U) + +FileChooser.updateButtonToolTipText=\ub514\ub809\ud1a0\ub9ac \ubaa9\ub85d \uc5c5\ub370\uc774\ud2b8 + +FileChooser.win32.newFolder=\uc0c8 \ud3f4\ub354 + +FileChooser.win32.newFolder.subsequent=\uc0c8 \ud3f4\ub354 ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=\uc790\uc138\ud788 + +FileChooser.detailsViewButtonAccessibleName=\uc790\uc138\ud788 + +FileChooser.detailsViewButtonToolTipText=\uc790\uc138\ud788 + +FileChooser.fileAttrHeaderText=\uc18d\uc131 + +FileChooser.fileDateHeaderText=\uc218\uc815 + +FileChooser.fileNameHeaderText=\uc774\ub984 + +FileChooser.fileNameLabelText=\ud30c\uc77c \uc774\ub984: + +FileChooser.fileSizeHeaderText=\ud06c\uae30 + +FileChooser.fileTypeHeaderText=\uc885\ub958 + +FileChooser.filesOfTypeLabelText=\ud30c\uc77c \uc885\ub958: + +FileChooser.homeFolderAccessibleName=\ud648 + +FileChooser.homeFolderToolTipText=\ud648 + +FileChooser.listViewActionLabelText=\ubaa9\ub85d + +FileChooser.listViewButtonAccessibleName=\ubaa9\ub85d + +FileChooser.listViewButtonToolTipText=\ubaa9\ub85d + +FileChooser.lookInLabelText=\uac80\uc0c9 \uc704\uce58: + +FileChooser.newFolderAccessibleName=\uc0c8 \ud3f4\ub354 + +FileChooser.newFolderActionLabelText=\uc0c8 \ud3f4\ub354 + +FileChooser.newFolderToolTipText=\uc0c8 \ud3f4\ub354 \uc791\uc131 + +FileChooser.refreshActionLabelText=\uac31\uc2e0 + +FileChooser.saveInLabelText=\uc800\uc7a5 \uc704\uce58 + +FileChooser.upFolderAccessibleName=\uc704 + +FileChooser.upFolderToolTipText=\ud55c \ub2e8\uacc4 \uc704\ub85c + +FileChooser.viewMenuLabelText=\ubcf4\uae30 + +SystemMenu.alwaysOnTop="\ud56d\uc0c1 \uc704\uc5d0 \uace0\uc815" \uc804\ud658 diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_nl.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_nl.properties new file mode 100644 index 000000000..326b25354 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_nl.properties @@ -0,0 +1,33 @@ +# Dutch translation by Ilana Paktor and Joachim van den Berg + +SystemMenu.close=Sluit + +SystemMenu.iconify=Minimaliseer + +SystemMenu.restore=Herstel + +SystemMenu.maximize=Maximaliseer + +SystemMenu.skins=Substance skins + +SystemMenu.showHeapStatus=Toon heap status + +Tooltip.contentsNotSaved=contents zijn niet bewaard + +Tooltip.heapStatusPanel=Heap status. Klik om de Garbage Collector te activeren + +Xoetrope.hue=Kleurschakering + +Xoetrope.brightness=Helderheid + +Xoetrope.saturation=Verzadiging + +Xoetrope.warm=WARM + +Xoetrope.cold=KOUD + +Xoetrope.decimalRGB=Decimale RGB + +Xoetrope.webSafeColors=Gebruik Web-Veilige kleuren + +SystemMenu.alwaysOnTop="Altijd bovenop" wisselen diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_no.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_no.properties new file mode 100644 index 000000000..9dc121626 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_no.properties @@ -0,0 +1,33 @@ +# Norwegian translation by Nils-Morten Nilssen + +SystemMenu.close=Lukk + +SystemMenu.iconify=Ikoniser + +SystemMenu.restore=Gjenopprett + +SystemMenu.maximize=Maksimer + +SystemMenu.skins=Substance drakter + +SystemMenu.showHeapStatus=Vis heap status + +Tooltip.contentsNotSaved=innholdet er ikke lagret + +Tooltip.heapStatusPanel=Heap status. Klikk for \u00e5 kj\u00f8re garbage collector + +Xoetrope.hue=Fargetone + +Xoetrope.brightness=Lysstyrke + +Xoetrope.saturation=Metningsgrad + +Xoetrope.warm=VARM + +Xoetrope.cold=KALD + +Xoetrope.decimalRGB=Desimal RGB + +Xoetrope.webSafeColors=Bruk websikre farger + +SystemMenu.alwaysOnTop=Veksle "Alltid \u00f8verst" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pl.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pl.properties new file mode 100644 index 000000000..be8ea0db1 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pl.properties @@ -0,0 +1,33 @@ +# Polish translation by Maciej Zwirski + +SystemMenu.close=Zamknij + +SystemMenu.iconify=Minimalizuj + +SystemMenu.restore=Przywr\u00f3\u0107 + +SystemMenu.maximize=Maksymalizuj + +SystemMenu.skins=Sk\u00f3rki Substance + +SystemMenu.showHeapStatus=Poka\u017c stan stosu + +Tooltip.contentsNotSaved=zawarto\u015b\u0107 nie zosta\u0142a zapisana + +Tooltip.heapStatusPanel=Stan stosu. Kliknij, aby uruchomi\u0107 od\u015bmiecanie pami\u0119ci + +Xoetrope.hue=Odcie\u0144 + +Xoetrope.brightness=Jasno\u015b\u0107 + +Xoetrope.saturation=Nasycenie + +Xoetrope.warm=CIEP\u0141E + +Xoetrope.cold=ZIMNE + +Xoetrope.decimalRGB=Dziesi\u0119tne RGB + +Xoetrope.webSafeColors=U\u017cyj kolor\u00f3w przyjaznych dla sieci + +SystemMenu.alwaysOnTop=Prze\u0142\u0105cz \u201eZawsze na wierzchu\u201d diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt.properties new file mode 100644 index 000000000..54c1cce89 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=Mostrar status da pilha + +Tooltip.contentsNotSaved=conte\u00fado n\u00e3o gravado + +Tooltip.heapStatusPanel=Status da pilha. Clique para executar a coleta de lixo + +Xoetrope.hue=Matiz + +Xoetrope.brightness=Brilho + +Xoetrope.saturation=Satura\u00e7\u00e3o + +Xoetrope.warm=QUENTE + +Xoetrope.cold=FRIO + +Xoetrope.decimalRGB=RGB decimal + +Xoetrope.webSafeColors=Usar cores de seguran\u00e7a da Web + +SystemMenu.alwaysOnTop=Alternar "Sempre no topo" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt_BR.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt_BR.properties new file mode 100644 index 000000000..bb12cef27 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_pt_BR.properties @@ -0,0 +1,33 @@ +# Portuguese (Brazil) translation by Claudio de Oliveira Miranda + +SystemMenu.close=Fechar + +SystemMenu.iconify=Minimizar + +SystemMenu.restore=Restaurar + +SystemMenu.maximize=Maximizar + +SystemMenu.skins=Apar\u00eancia do Substance + +SystemMenu.showHeapStatus=Mostrar status do heap + +Tooltip.contentsNotSaved=Conte\u00fado n\u00e3o gravado + +Tooltip.heapStatusPanel=Status do heap. Clique para acionar o garbage collector + +Xoetrope.hue=Tonalidade + +Xoetrope.brightness=Brilho + +Xoetrope.saturation=Satura\u00e7\u00e3o + +Xoetrope.warm=QUENTE + +Xoetrope.cold=FRIO + +Xoetrope.decimalRGB=RGB Decimal + +Xoetrope.webSafeColors=Usar cores seguras da web + +SystemMenu.alwaysOnTop=Alternar "Sempre no topo" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ro.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ro.properties new file mode 100644 index 000000000..5f9f484c9 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ro.properties @@ -0,0 +1,23 @@ +# Romanian translation by Sergiu Nicolae Nacu and Ran Locar + +SystemMenu.showHeapStatus=Vizionare stare memorie heap + +Tooltip.contentsNotSaved=con\u0163inutul nu a fost salvat + +Tooltip.heapStatusPanel=Stare memorie heap. Apasa\u0163i pentru a porni garbage colector - ul + +Xoetrope.hue=Nuan\u0163\u0103 + +Xoetrope.brightness=Luminozitate + +Xoetrope.saturation=Satura\u0163ie + +Xoetrope.warm=CALD + +Xoetrope.cold=RECE + +Xoetrope.decimalRGB=RGB decimal + +Xoetrope.webSafeColors=Folose\u015fte culori compatibile web + +SystemMenu.alwaysOnTop=Comutare \u201e\u00centotdeauna deasupra\u201d diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ru.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ru.properties new file mode 100644 index 000000000..bdc4b3b28 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_ru.properties @@ -0,0 +1,33 @@ +# Russian translation by Kirill Grouchnikov + +SystemMenu.close=\u0417\u0430\u043a\u0440\u044b\u0442\u044c + +SystemMenu.iconify=\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c + +SystemMenu.restore=\u0412\u0435\u0440\u043d\u0443\u0442\u044c + +SystemMenu.maximize=\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c + +SystemMenu.skins=\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 Substance + +SystemMenu.showHeapStatus=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0443\u0447\u0438 + +Tooltip.contentsNotSaved=\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e + +Tooltip.heapStatusPanel=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0443\u0447\u0438. \u041a\u043b\u0438\u043a \u043c\u044b\u0448\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430. + +Xoetrope.hue=\u041e\u0442\u0442\u0435\u043d\u043e\u043a + +Xoetrope.brightness=\u042f\u0440\u043a\u043e\u0441\u0442\u044c + +Xoetrope.saturation=\u0421\u0430\u0442\u0443\u0440\u0430\u0446\u0438\u044f + +Xoetrope.warm=\u0422\u0415\u041f\u041b\u041e + +Xoetrope.cold=\u0425\u041e\u041b\u041e\u0414 + +Xoetrope.decimalRGB=\u0414\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 + +Xoetrope.webSafeColors=\u0411\u0440\u0430\u0442\u044c web-\u0446\u0432\u0435\u0442\u0430 + +SystemMenu.alwaysOnTop=\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u00ab\u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u00bb diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_sv.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_sv.properties new file mode 100644 index 000000000..76887450d --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_sv.properties @@ -0,0 +1,143 @@ +SystemMenu.close=St\u00e4ng + +SystemMenu.iconify=Minimera + +SystemMenu.restore=\u00c5terst\u00e4ll + +SystemMenu.maximize=Maximera + +SystemMenu.showHeapStatus=Visa heap-status + +Tooltip.contentsNotSaved=inneh\u00e5llet har inte sparats + +Tooltip.heapStatusPanel=Heap-status. Klicka h\u00e4r f\u00f6r att k\u00f6ra skr\u00e4pinsamlaren + +Xoetrope.hue=Nyans + +Xoetrope.brightness=Ljusstyrka + +Xoetrope.saturation=M\u00e4ttnad + +Xoetrope.warm=VARM + +Xoetrope.cold=KALL + +Xoetrope.decimalRGB=RGB-decimaler + +Xoetrope.webSafeColors=Anv\u00e4nd webbs\u00e4kra f\u00e4rger + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=Alla filer + +FileChooser.cancelButtonMnemonic=65 + +FileChooser.cancelButtonText=Avbryt + +FileChooser.cancelButtonToolTipText=Avbryt filvalsdialogruta + +FileChooser.directoryDescriptionText=Katalog + +FileChooser.directoryOpenButtonMnemonic=80 + +FileChooser.directoryOpenButtonText=\u00d6ppna + +FileChooser.directoryOpenButtonToolTipText=\u00d6ppnar den markerade katalogen + +FileChooser.fileDescriptionText=Generisk fil + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=Hj\u00e4lp + +FileChooser.helpButtonToolTipText=Hj\u00e4lp - Filv\u00e4ljare + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=Fel d\u00e5 ny mapp skapades + +FileChooser.openButtonMnemonic=78 + +FileChooser.openButtonText=\u00d6ppna + +FileChooser.openButtonToolTipText=\u00d6ppna markerad fil + +FileChooser.openDialogTitleText=\u00d6ppna + +FileChooser.other.newFolder=Ny mapp + +FileChooser.other.newFolder.subsequent=Ny mapp.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=Spara + +FileChooser.saveButtonToolTipText=Spara markerad fil + +FileChooser.saveDialogTitleText=Spara + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=Uppdatera + +FileChooser.updateButtonToolTipText=Uppdatera kataloglistan + +FileChooser.win32.newFolder=Ny mapp + +FileChooser.win32.newFolder.subsequent=Ny mapp ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=Detaljerad lista + +FileChooser.detailsViewButtonAccessibleName=Detaljerad lista + +FileChooser.detailsViewButtonToolTipText=Detaljerad lista + +FileChooser.fileAttrHeaderText=Attribut + +FileChooser.fileDateHeaderText=\u00c4ndrad + +FileChooser.fileNameHeaderText=Namn + +FileChooser.fileNameLabelText=Filnamn: + +FileChooser.fileSizeHeaderText=Storlek + +FileChooser.fileTypeHeaderText=Typ + +FileChooser.filesOfTypeLabelText=Filformat: + +FileChooser.homeFolderAccessibleName=Hem + +FileChooser.homeFolderToolTipText=Hem + +FileChooser.listViewActionLabelText=Lista + +FileChooser.listViewButtonAccessibleName=Lista + +FileChooser.listViewButtonToolTipText=Lista + +FileChooser.lookInLabelText=S\u00f6k i: + +FileChooser.newFolderAccessibleName=Ny mapp + +FileChooser.newFolderActionLabelText=Ny mapp + +FileChooser.newFolderToolTipText=Skapa ny mapp + +FileChooser.refreshActionLabelText=Uppdatera + +FileChooser.saveInLabelText=Spara i: + +FileChooser.upFolderAccessibleName=Upp + +FileChooser.upFolderToolTipText=Upp en niv\u00e5 + +FileChooser.viewMenuLabelText=Vy + +SystemMenu.alwaysOnTop=V\u00e4xla "Alltid \u00f6verst" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_th.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_th.properties new file mode 100644 index 000000000..f44466752 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_th.properties @@ -0,0 +1,21 @@ +SystemMenu.showHeapStatus=\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e42\u0e14\u0e22\u0e23\u0e27\u0e21 + +Tooltip.contentsNotSaved=\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2d\u0e07\u0e04\u0e4c\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a + +Tooltip.heapStatusPanel=\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e42\u0e14\u0e22\u0e23\u0e27\u0e21 \u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e23\u0e27\u0e1a\u0e23\u0e27\u0e21\u0e02\u0e22\u0e30 + +Xoetrope.hue=\u0e2a\u0e35\u0e2a\u0e31\u0e19 + +Xoetrope.brightness=\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e27\u0e48\u0e32\u0e07 + +Xoetrope.saturation=\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e21 + +Xoetrope.warm=\u0e2d\u0e1a\u0e2d\u0e38\u0e48\u0e19 + +Xoetrope.cold=\u0e40\u0e22\u0e47\u0e19\u0e0a\u0e32 + +Xoetrope.decimalRGB=RGB \u0e40\u0e1b\u0e47\u0e19\u0e17\u0e28\u0e19\u0e34\u0e22\u0e21 + +Xoetrope.webSafeColors=\u0e43\u0e0a\u0e49\u0e2a\u0e35\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e1a\u0e19\u0e40\u0e27\u0e47\u0e1a + +SystemMenu.alwaysOnTop=\u0e2a\u0e25\u0e31\u0e1a "\u0e2d\u0e22\u0e39\u0e48\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\u0e40\u0e2a\u0e21\u0e2d" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_tr.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_tr.properties new file mode 100644 index 000000000..769f89421 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_tr.properties @@ -0,0 +1,31 @@ +# Turkish translation by Magnus de Pourbaix and Oncu Altuntas + +SystemMenu.close=Kapat + +SystemMenu.iconify=Simge Durumuna K\u00fc\u00e7\u00fclt + +SystemMenu.restore=\u00d6nceki boyut + +SystemMenu.maximize=Ekran\u0131 Kapla + +SystemMenu.showHeapStatus=K\u00fcme durumunu g\u00f6ster + +Tooltip.contentsNotSaved=i\u00e7erik kaydedilmedi + +Tooltip.heapStatusPanel=K\u00fcme durumu. \u00c7\u00f6p toplay\u0131c\u0131y\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in t\u0131klay\u0131n + +Xoetrope.hue=Renk tonu + +Xoetrope.brightness=Parlakl\u0131k + +Xoetrope.saturation=Doygunluk + +Xoetrope.warm=ILIK + +Xoetrope.cold=SO\u011eUK + +Xoetrope.decimalRGB=Ondal\u0131k RGB + +Xoetrope.webSafeColors=Web i\u00e7in g\u00fcvenli renkler kullan + +SystemMenu.alwaysOnTop="Her zaman \u00fcstte" ge\u00e7i\u015f yap diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_vi.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_vi.properties new file mode 100644 index 000000000..cb8f4843f --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_vi.properties @@ -0,0 +1,21 @@ +#Vietnamese translation by Thang Nguyen + +SystemMenu.close = \u0110\u00f3ng +SystemMenu.iconify = T\u1ed1i thi\u1ec3u +SystemMenu.maximize = T\u1ed1i \u0111a +SystemMenu.restore = Ph\u1ee5c h\u1ed3i +SystemMenu.showHeapStatus = Hi\u1ec3n th\u1ecb thanh tr\u1ea1ng th\u00e1i +SystemMenu.skins = B\u1ed9 m\u00e0u + +Tooltip.contentsNotSaved = N\u1ed9i dung ch\u01b0a \u0111\u01b0\u1ee3c l\u01b0u +Tooltip.heapStatusPanel = Thanh tr\u1ea1ng th\u00e1i. Nh\u1ea5p chu\u1ed9t \u0111\u1ec3 d\u1ecdn d\u1eb9p b\u1ed9 nh\u1edb + +Xoetrope.brightness = \u0110\u1ed9 s\u00e1ng +Xoetrope.cold = L\u1ea0NH +Xoetrope.decimalRGB = RGB th\u1eadp ph\u00e2n +Xoetrope.hue = M\u00e0u s\u1eafc +Xoetrope.saturation = \u0110\u1ed9 s\u1eabm +Xoetrope.warm = N\u00d3NG +Xoetrope.webSafeColors = S\u1eed d\u1ee5ng m\u00e0u web + +SystemMenu.alwaysOnTop=Chuy\u1ec3n \u0111\u1ed5i "Lu\u00f4n \u1edf tr\u00ean c\u00f9ng" diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_CN.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_CN.properties new file mode 100644 index 000000000..ff602a0d9 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_CN.properties @@ -0,0 +1,145 @@ +# Chinese translation by Pprun and Qil Wong + +SystemMenu.close=\u5173\u95ed + +SystemMenu.iconify=\u6700\u5c0f\u5316 + +SystemMenu.restore=\u6062\u590d + +SystemMenu.maximize=\u6700\u5927\u5316 + +SystemMenu.showHeapStatus=\u663e\u793a\u5783\u573e\uff08GC\uff09\u5806\u72b6\u6001 + +Tooltip.contentsNotSaved=\u5185\u5bb9\u672a\u4fdd\u5b58 + +Tooltip.heapStatusPanel=\u5355\u51fb\u8fd0\u884c\u5783\u573e\u6536\u96c6 + +Xoetrope.hue=\u8272\u8c03 + +Xoetrope.brightness=\u4eae\u5ea6 + +Xoetrope.saturation=\u9971\u548c\u5ea6 + +Xoetrope.warm=\u6696\u8272\u8c03 + +Xoetrope.cold=\u51b7\u8272\u8c03 + +Xoetrope.decimalRGB=\u5341\u8fdb\u5236RGB + +Xoetrope.webSafeColors=\u4ec5\u4f7f\u7528WEB\u8272 + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6587\u4ef6 + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=\u53d6\u6d88 + +FileChooser.cancelButtonToolTipText=\u4e2d\u6b62\u6587\u4ef6\u9009\u62e9\u5668\u5bf9\u8bdd\u6846 + +FileChooser.directoryDescriptionText=\u76ee\u5f55 + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=\u6253\u5f00 + +FileChooser.directoryOpenButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u76ee\u5f55 + +FileChooser.fileDescriptionText=\u666e\u901a\u7684\u6587\u4ef6 + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=\u5e2e\u52a9(H) + +FileChooser.helpButtonToolTipText=\u6587\u4ef6\u9009\u62e9\u5668\u5e2e\u52a9 + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939\u65f6\u53d1\u751f\u9519\u8bef + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=\u6253\u5f00 + +FileChooser.openButtonToolTipText=\u6253\u5f00\u9009\u62e9\u7684\u6587\u4ef6 + +FileChooser.openDialogTitleText=\u6253\u5f00 + +FileChooser.other.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939 + +FileChooser.other.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=\u4fdd\u5b58 + +FileChooser.saveButtonToolTipText=\u4fdd\u5b58\u9009\u62e9\u7684\u6587\u4ef6 + +FileChooser.saveDialogTitleText=\u4fdd\u5b58 + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=\u66f4\u65b0(U) + +FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u5f55\u5217\u8868 + +FileChooser.win32.newFolder=\u65b0\u5efa\u6587\u4ef6\u5939 + +FileChooser.win32.newFolder.subsequent=\u65b0\u5efa\u6587\u4ef6\u5939 ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=\u8be6\u7ec6\u4fe1\u606f + +FileChooser.detailsViewButtonAccessibleName=\u8be6\u7ec6\u4fe1\u606f + +FileChooser.detailsViewButtonToolTipText=\u8be6\u7ec6\u4fe1\u606f + +FileChooser.fileAttrHeaderText=\u5c5e\u6027 + +FileChooser.fileDateHeaderText=\u4fee\u6b63\u7248 + +FileChooser.fileNameHeaderText=\u540d\u79f0 + +FileChooser.fileNameLabelText=\u6587\u4ef6\u540d\uff1a + +FileChooser.fileSizeHeaderText=\u5927\u5c0f + +FileChooser.fileTypeHeaderText=\u7c7b\u578b + +FileChooser.filesOfTypeLabelText=\u6587\u4ef6\u7c7b\u578b\uff1a + +FileChooser.homeFolderAccessibleName=\u8d77\u59cb\u76ee\u5f55 + +FileChooser.homeFolderToolTipText=\u8d77\u59cb\u76ee\u5f55 + +FileChooser.listViewActionLabelText=\u5217\u8868 + +FileChooser.listViewButtonAccessibleName=\u5217\u8868 + +FileChooser.listViewButtonToolTipText=\u5217\u8868 + +FileChooser.lookInLabelText=\u67e5\u770b\uff1a + +FileChooser.newFolderAccessibleName=\u65b0\u5efa\u6587\u4ef6\u5939 + +FileChooser.newFolderActionLabelText=\u65b0\u5efa\u6587\u4ef6\u5939 + +FileChooser.newFolderToolTipText=\u521b\u5efa\u65b0\u7684\u6587\u4ef6\u5939 + +FileChooser.refreshActionLabelText=\u5237\u65b0 + +FileChooser.saveInLabelText=\u4fdd\u5b58\uff1a + +FileChooser.upFolderAccessibleName=\u5411\u4e0a + +FileChooser.upFolderToolTipText=\u5411\u4e0a\u4e00\u5c42 + +FileChooser.viewMenuLabelText=\u89c6\u56fe + +SystemMenu.alwaysOnTop=\u5207\u6362\u201c\u59cb\u7ec8\u5728\u6700\u4e0a\u5c42\u201d diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_HK.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_HK.properties new file mode 100644 index 000000000..598a17294 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_HK.properties @@ -0,0 +1,135 @@ +SystemMenu.showHeapStatus=\u986f\u793a\u5806\u7a4d\u72c0\u614b + +Tooltip.contentsNotSaved=\u5167\u5bb9\u672a\u5132\u5b58 + +Tooltip.heapStatusPanel=\u5806\u7a4d\u72c0\u614b\uff0c\u9ede\u64ca\u4f86\u57f7\u884c\u5783\u573e\u56de\u6536 + +Xoetrope.hue=\u8272\u5f69 + +Xoetrope.brightness=\u5149\u6697 + +Xoetrope.saturation=\u98fd\u548c\u5ea6 + +Xoetrope.warm=\u6696\u8272 + +Xoetrope.cold=\u51b7\u8272 + +Xoetrope.decimalRGB=\u5341\u9032\u4f4d\u5236RGB + +Xoetrope.webSafeColors=\u4f7f\u7528\u7db2\u9801\u5b89\u5168\u8272 + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848 + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=\u53d6\u6d88 + +FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a + +FileChooser.directoryDescriptionText=\u76ee\u9304 + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=\u958b\u555f + +FileChooser.directoryOpenButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u76ee\u9304 + +FileChooser.fileDescriptionText=\u4e00\u822c\u6a94\u6848 + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=\u8aaa\u660e(H) + +FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=\u5efa\u7acb\u65b0\u6a94\u6848\u593e\u6642\u767c\u751f\u932f\u8aa4 + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=\u958b\u555f + +FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848 + +FileChooser.openDialogTitleText=\u958b\u555f + +FileChooser.other.newFolder=\u65b0\u8cc7\u6599\u593e + +FileChooser.other.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=\u5132\u5b58 + +FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848 + +FileChooser.saveDialogTitleText=\u5132\u5b58 + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=\u66f4\u65b0(U) + +FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae + +FileChooser.win32.newFolder=\u65b0\u8cc7\u6599\u593e + +FileChooser.win32.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.fileAttrHeaderText=\u5c6c\u6027 + +FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539 + +FileChooser.fileNameHeaderText=\u540d\u7a31 + +FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55 + +FileChooser.fileSizeHeaderText=\u5927\u5c0f + +FileChooser.fileTypeHeaderText=\u985e\u578b + +FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55 + +FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304 + +FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304 + +FileChooser.listViewActionLabelText=\u6e05\u55ae + +FileChooser.listViewButtonAccessibleName=\u6e05\u55ae + +FileChooser.listViewButtonToolTipText=\u6e05\u55ae + +FileChooser.lookInLabelText=\u67e5\u770b\ufe55 + +FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e + +FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e + +FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e + +FileChooser.refreshActionLabelText=\u66f4\u65b0 + +FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a + +FileChooser.upFolderAccessibleName=\u5f80\u4e0a + +FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64 + +FileChooser.viewMenuLabelText=\u6aa2\u8996 + +SystemMenu.alwaysOnTop=\u5207\u63db\u300c\u6c38\u9060\u7f6e\u9802\u300d diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_TW.properties b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_TW.properties new file mode 100644 index 000000000..47d245c8b --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/resources/Labels_zh_TW.properties @@ -0,0 +1,135 @@ +SystemMenu.showHeapStatus=\u986f\u793a\u5806\u7a4d\u72c0\u614b + +Tooltip.contentsNotSaved=\u5167\u5bb9\u672a\u5132\u5b58 + +Tooltip.heapStatusPanel=\u5c0d\u6a5f\u72c0\u614b\u3002\u9ede\u9078\u672c\u7d10\u57f7\u884c\u5ee2\u6599\u6536\u96c6\u5668\u3002 + +Xoetrope.hue=\u8272\u8abf + +Xoetrope.brightness=\u4eae\u5ea6 + +Xoetrope.saturation=\u98fd\u548c\u5ea6 + +Xoetrope.warm=\u6eab\u6696 + +Xoetrope.cold=\u5bd2\u51b7 + +Xoetrope.decimalRGB=RGB \u503c + +Xoetrope.webSafeColors=\u4f7f\u7528\u9069\u65bc\u7db2\u969b\u7db2\u8def\u7684\u984f\u8272 + +# File chooser strings from com.sun.swing.internal.plaf.basic.resources.basic +FileChooser.acceptAllFileFilterText=\u6240\u6709\u6a94\u6848 + +FileChooser.cancelButtonMnemonic=67 + +FileChooser.cancelButtonText=\u53d6\u6d88 + +FileChooser.cancelButtonToolTipText=\u4e2d\u65b7\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u5c0d\u8a71\u65b9\u584a + +FileChooser.directoryDescriptionText=\u76ee\u9304 + +FileChooser.directoryOpenButtonMnemonic=79 + +FileChooser.directoryOpenButtonText=\u958b\u555f + +FileChooser.directoryOpenButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u76ee\u9304 + +FileChooser.fileDescriptionText=\u4e00\u822c\u6a94\u6848 + +FileChooser.fileSizeGigaBytes={0} GB + +FileChooser.fileSizeKiloBytes={0} KB + +FileChooser.fileSizeMegaBytes={0} MB + +FileChooser.helpButtonMnemonic=72 + +FileChooser.helpButtonText=\u8aaa\u660e(H) + +FileChooser.helpButtonToolTipText=\u300c\u6a94\u6848\u9078\u64c7\u5668\u300d\u8aaa\u660e + +FileChooser.newFolderErrorSeparator=: + +FileChooser.newFolderErrorText=\u5efa\u7acb\u65b0\u6a94\u6848\u593e\u6642\u767c\u751f\u932f\u8aa4 + +FileChooser.openButtonMnemonic=79 + +FileChooser.openButtonText=\u958b\u555f + +FileChooser.openButtonToolTipText=\u958b\u555f\u9078\u53d6\u7684\u6a94\u6848 + +FileChooser.openDialogTitleText=\u958b\u555f + +FileChooser.other.newFolder=\u65b0\u8cc7\u6599\u593e + +FileChooser.other.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e.{0} + +FileChooser.saveButtonMnemonic=83 + +FileChooser.saveButtonText=\u5132\u5b58 + +FileChooser.saveButtonToolTipText=\u5132\u5b58\u9078\u53d6\u7684\u6a94\u6848 + +FileChooser.saveDialogTitleText=\u5132\u5b58 + +FileChooser.updateButtonMnemonic=85 + +FileChooser.updateButtonText=\u66f4\u65b0(U) + +FileChooser.updateButtonToolTipText=\u66f4\u65b0\u76ee\u9304\u6e05\u55ae + +FileChooser.win32.newFolder=\u65b0\u8cc7\u6599\u593e + +FileChooser.win32.newFolder.subsequent=\u65b0\u8cc7\u6599\u593e ({0}) + +# File chooser strings from com.sun.swing.internal.plaf.metal.resources.metal +FileChooser.detailsViewActionLabelText=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.detailsViewButtonAccessibleName=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.detailsViewButtonToolTipText=\u8a73\u7d30\u8cc7\u8a0a + +FileChooser.fileAttrHeaderText=\u5c6c\u6027 + +FileChooser.fileDateHeaderText=\u5df2\u4fee\u6539 + +FileChooser.fileNameHeaderText=\u540d\u7a31 + +FileChooser.fileNameLabelText=\u6a94\u6848\u540d\u7a31\ufe55 + +FileChooser.fileSizeHeaderText=\u5927\u5c0f + +FileChooser.fileTypeHeaderText=\u985e\u578b + +FileChooser.filesOfTypeLabelText=\u6a94\u6848\u985e\u578b\ufe55 + +FileChooser.homeFolderAccessibleName=\u4e3b\u76ee\u9304 + +FileChooser.homeFolderToolTipText=\u4e3b\u76ee\u9304 + +FileChooser.listViewActionLabelText=\u6e05\u55ae + +FileChooser.listViewButtonAccessibleName=\u6e05\u55ae + +FileChooser.listViewButtonToolTipText=\u6e05\u55ae + +FileChooser.lookInLabelText=\u67e5\u770b\ufe55 + +FileChooser.newFolderAccessibleName=\u65b0\u8cc7\u6599\u593e + +FileChooser.newFolderActionLabelText=\u65b0\u8cc7\u6599\u593e + +FileChooser.newFolderToolTipText=\u5efa\u7acb\u65b0\u8cc7\u6599\u593e + +FileChooser.refreshActionLabelText=\u66f4\u65b0 + +FileChooser.saveInLabelText=\u5132\u5b58\u65bc\uff1a + +FileChooser.upFolderAccessibleName=\u5f80\u4e0a + +FileChooser.upFolderToolTipText=\u5f80\u4e0a\u4e00\u5c64 + +FileChooser.viewMenuLabelText=\u6aa2\u8996 + +SystemMenu.alwaysOnTop=\u5207\u63db\u300c\u6c38\u9060\u5728\u6700\u4e0a\u5c64\u300d diff --git a/libsrc/substance-fix/src/org/pushingpixels/substance/internal/utils/SubstanceTitlePane.java b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/utils/SubstanceTitlePane.java new file mode 100644 index 000000000..ee7812586 --- /dev/null +++ b/libsrc/substance-fix/src/org/pushingpixels/substance/internal/utils/SubstanceTitlePane.java @@ -0,0 +1,2034 @@ +/* + * Copyright (c) 2005-2010 Substance Kirill Grouchnikov. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * o Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * o Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * o Neither the name of Substance Kirill Grouchnikov nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.pushingpixels.substance.internal.utils; + +import java.awt.AlphaComposite; +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Component; +import java.awt.ComponentOrientation; +import java.awt.Container; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.LayoutManager; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.awt.geom.Ellipse2D; +import java.awt.image.BufferedImage; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.ref.WeakReference; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Formatter; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.Map; +import java.util.Set; + +import javax.swing.AbstractAction; +import javax.swing.AbstractButton; +import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JRootPane; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.plaf.UIResource; + +import org.pushingpixels.lafwidget.animation.effects.GhostPaintingUtils; +import org.pushingpixels.lafwidget.utils.RenderingUtils; +import org.pushingpixels.lafwidget.utils.TrackableThread; +import org.pushingpixels.substance.api.DecorationAreaType; +import org.pushingpixels.substance.api.SubstanceColorScheme; +import org.pushingpixels.substance.api.SubstanceLookAndFeel; +import org.pushingpixels.substance.api.SubstanceSkin; +import org.pushingpixels.substance.api.SubstanceConstants.SubstanceWidgetType; +import org.pushingpixels.substance.api.skin.SkinInfo; +import org.pushingpixels.substance.internal.painter.BackgroundPaintingUtils; +import org.pushingpixels.substance.internal.ui.SubstanceButtonUI; +import org.pushingpixels.substance.internal.ui.SubstanceRootPaneUI; +import org.pushingpixels.substance.internal.utils.filters.NegatedFilter; +import org.pushingpixels.substance.internal.utils.icon.SubstanceIconFactory; +import org.pushingpixels.substance.internal.utils.icon.TransitionAwareIcon; + +/** + * Title pane for Substance look and feel. + * + * @author Kirill Grouchnikov + */ +public class SubstanceTitlePane extends JComponent { + /** + * PropertyChangeListener added to the JRootPane. + */ + private PropertyChangeListener propertyChangeListener; + + /** + * JMenuBar, typically renders the system menu items. + */ + protected JMenuBar menuBar; + + /** + * Action used to close the Window. + */ + private Action closeAction; + + /** + * Action used to iconify the Frame. + */ + private Action iconifyAction; + + /** + * Action to restore the Frame size. + */ + private Action restoreAction; + + /** + * Action to restore the Frame size. + */ + private Action maximizeAction; + + /** + * Action to set frame as Always on top. + */ + private Action alwaysOnTopAction; + + /** + * Button used to maximize or restore the frame. + */ + protected JButton toggleButton; + + /** + * Button used to set always on top + */ + protected JButton alwaysOnTopButton; + + /** + * Button used to minimize the frame + */ + protected JButton minimizeButton; + + /** + * Button used to close the frame. + */ + protected JButton closeButton; + + /** + * Listens for changes in the state of the Window listener to update the + * state of the widgets. + */ + private WindowListener windowListener; + + /** + * Window we're currently in. + */ + protected Window window; + + /** + * JRootPane rendering for. + */ + protected JRootPane rootPane; + + /** + * Buffered Frame.state property. As state isn't bound, this is kept to + * determine when to avoid updating widgets. + */ + private int state; + + /** + * SubstanceRootPaneUI that created us. + */ + private SubstanceRootPaneUI rootPaneUI; + + /** + * The logfile name for the heap status panel. Can be null - in + * this case the {@link HeapStatusThread} will not write heap information. + */ + private static String heapStatusLogfileName; + + /** + * The heap status panel of this title pane. + */ + protected HeapStatusPanel heapStatusPanel; + + /** + * The heap status toggle menu item of this title pane. + */ + protected JCheckBoxMenuItem heapStatusMenuItem; + + /** + * Listens on changes to componentOrientation and + * {@link SubstanceLookAndFeel#WINDOW_MODIFIED} properties. + */ + protected PropertyChangeListener propertyListener; + + /** + * Client property to mark every child to be either leading or trailing. The + * value must be one of {@link ExtraComponentKind}. + * + * @see #markExtraComponent(JComponent, ExtraComponentKind) + * @see #getTitleTextRectangle() + */ + protected static final String EXTRA_COMPONENT_KIND = "substancelaf.internal.titlePane.extraComponentKind"; + + /** + * The application icon to be displayed. + */ + protected Image appIcon; + + /** + * Enumerates the types of children components. + * + * @author Kirill Grouchnikov + */ + protected enum ExtraComponentKind { + /** + * Leading child components (left on LTR and right on RTL). + */ + LEADING, + + /** + * Trailing child components (right on LTR and left on RTL). + */ + TRAILING + } + + /** + * Panel that shows heap status and allows running the garbage collector. + * + * @author Kirill Grouchnikov + */ + public static class HeapStatusPanel extends JPanel { + /** + * The current heap size in kilobytes. + */ + private int currHeapSizeKB; + + /** + * The current used portion of heap in kilobytes. + */ + private int currTakenHeapSizeKB; + + /** + * History of used heap portion (in percents). Each value is in 0.0-1.0 + * range. + */ + private LinkedList graphValues; + + /** + * Creates new heap status panel. + */ + public HeapStatusPanel() { + this.graphValues = new LinkedList(); + HeapStatusThread.getInstance(); + } + + /** + * Updates the values for this heap status panel. + * + * @param currHeapSizeKB + * The current heap size in kilobytes. + * @param currTakenHeapSizeKB + * The current used portion of heap in kilobytes. + */ + public synchronized void updateStatus(int currHeapSizeKB, + int currTakenHeapSizeKB) { + this.currHeapSizeKB = currHeapSizeKB; + this.currTakenHeapSizeKB = currTakenHeapSizeKB; + double newGraphValue = (double) currTakenHeapSizeKB + / (double) currHeapSizeKB; + this.graphValues.addLast(newGraphValue); + this.repaint(); + } + + /* + * (non-Javadoc) + * + * @see javax.swing.JComponent#paint(java.awt.Graphics) + */ + @Override + public synchronized void paint(Graphics g) { + Graphics2D graphics = (Graphics2D) g.create(); + + SubstanceColorScheme scheme = SubstanceCoreUtilities.getSkin(this) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE); + + graphics.setColor(scheme.getDarkColor()); + int w = this.getWidth(); + int h = this.getHeight(); + + graphics.drawRect(0, 0, w - 1, h - 1); + + graphics.setColor(scheme.getExtraLightColor()); + graphics.fillRect(1, 1, w - 2, h - 2); + + while (this.graphValues.size() > (w - 2)) + this.graphValues.removeFirst(); + + int xOff = w - this.graphValues.size() - 1; + graphics.setColor(scheme.getMidColor()); + int count = 0; + for (double value : this.graphValues) { + int valueH = (int) (value * (h - 2)); + graphics.drawLine(xOff + count, h - 1 - valueH, xOff + count, + h - 2); + count++; + } + + graphics.setFont(UIManager.getFont("Panel.font")); + FontMetrics fm = graphics.getFontMetrics(); + + StringBuffer longFormat = new StringBuffer(); + Formatter longFormatter = new Formatter(longFormat); + longFormatter.format("%.1fMB / %.1fMB", + this.currTakenHeapSizeKB / 1024.f, + this.currHeapSizeKB / 1024.f); + int strW = fm.stringWidth(longFormat.toString()); + int strH = fm.getAscent() + fm.getDescent(); + + graphics.setColor(scheme.getForegroundColor()); + RenderingUtils.installDesktopHints(graphics, this); + if (strW < (w - 5)) { + graphics.drawString(longFormat.toString(), (w - strW) / 2, + (h + strH) / 2 - 2); + } else { + String shortFormat = (this.currTakenHeapSizeKB / 1024) + + "MB / " + (this.currHeapSizeKB / 1024) + "MB"; + strW = fm.stringWidth(shortFormat); + graphics.drawString(shortFormat, (w - strW) / 2, + (h + strH) / 2 - 2); + } + + graphics.dispose(); + } + + /** + * Returns the preferred width of this panel. + * + * @return Preferred width of this panel. + */ + public int getPreferredWidth() { + BufferedImage dummy = new BufferedImage(1, 1, + BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = dummy.createGraphics(); + RenderingUtils.installDesktopHints(g2d, this); + g2d.setFont(UIManager.getFont("Panel.font")); + FontMetrics fm = g2d.getFontMetrics(); + int result = fm.stringWidth("100.9MB / 200.9MB"); + g2d.dispose(); + return result; + } + } + + /** + * Thread for heap status panel. + */ + public static class HeapStatusThread extends TrackableThread { + /** + * Current heap size in kilobytes. + */ + private int heapSizeKB; + + /** + * Current used portion of heap in kilobytes. + */ + private int takenHeapSizeKB; + + /** + * All heap status panels. + */ + private static Set> panels = new HashSet>(); + + /** + * Single instance of this thread. + */ + private static HeapStatusThread instance; + + /** + * Formatter object (for logfile). + */ + private SimpleDateFormat format; + + /** + * Signifies whether a stop request has been issued on this + * thread using the {@link #requestStop()} call. + */ + private boolean isStopRequested; + + /** + * Simple constructor. Defined private for singleton. + * + * @see #getInstance() + */ + private HeapStatusThread() { + this.format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SSS"); + this.isStopRequested = false; + this.setName("Substance heap status"); + } + + /** + * Gets singleton instance of this thread. + * + * @return Singleton instance of this thread. + */ + public synchronized static HeapStatusThread getInstance() { + if (HeapStatusThread.instance == null) { + HeapStatusThread.instance = new HeapStatusThread(); + HeapStatusThread.instance.start(); + } + return HeapStatusThread.instance; + } + + /** + * Registers new heap status panel with this thread. + * + * @param panel + * Heap statuc panel. + */ + public static synchronized void registerPanel(HeapStatusPanel panel) { + panels.add(new WeakReference(panel)); + } + + /** + * Unregisters new heap status panel from this thread. + * + * @param panel + * Heap statuc panel. + */ + public static synchronized void unregisterPanel(HeapStatusPanel panel) { + for (Iterator> it = panels + .iterator(); it.hasNext();) { + WeakReference ref = it.next(); + HeapStatusPanel currPanel = ref.get(); + if (panel == currPanel) { + it.remove(); + return; + } + } + } + + /** + * Updates the values of heap status. + */ + private synchronized void updateHeapCounts() { + long heapSize = Runtime.getRuntime().totalMemory(); + long heapFreeSize = Runtime.getRuntime().freeMemory(); + + this.heapSizeKB = (int) (heapSize / 1024); + this.takenHeapSizeKB = (int) ((heapSize - heapFreeSize) / 1024); + } + + /* + * (non-Javadoc) + * + * @see java.lang.Thread#run() + */ + @Override + public void run() { + while (!this.isStopRequested) { + try { + // update every 0.5 seconds + Thread.sleep(500); + } catch (InterruptedException ie) { + } + if (!SubstanceWidgetManager.getInstance().isAllowedAnywhere( + SubstanceWidgetType.TITLE_PANE_HEAP_STATUS)) + continue; + this.updateHeapCounts(); + for (Iterator> it = panels + .iterator(); it.hasNext();) { + WeakReference refPanel = it.next(); + HeapStatusPanel panel = refPanel.get(); + if (panel == null) { + // prune + it.remove(); + continue; + } + + panel.updateStatus(this.heapSizeKB, this.takenHeapSizeKB); + } + // see if need to put info in log file + if (SubstanceTitlePane.heapStatusLogfileName != null) { + PrintWriter pw = null; + try { + pw = new PrintWriter(new FileWriter( + SubstanceTitlePane.heapStatusLogfileName, true)); + pw.println(this.format.format(new Date()) + " " + + this.takenHeapSizeKB + "KB / " + + this.heapSizeKB + "KB"); + } catch (IOException ioe) { + + } finally { + if (pw != null) { + pw.close(); + } + } + } + } + } + + @Override + protected void requestStop() { + this.isStopRequested = true; + HeapStatusThread.instance = null; + } + } + + /** + * Creates a new title pane. + * + * @param root + * Root pane. + * @param ui + * Root pane UI. + */ + public SubstanceTitlePane(JRootPane root, SubstanceRootPaneUI ui) { + this.rootPane = root; + this.rootPaneUI = ui; + + this.state = -1; + + this.installSubcomponents(); + this.installDefaults(); + + this.setLayout(this.createLayout()); + + this.setToolTipText(this.getTitle()); + + SubstanceLookAndFeel.setDecorationType(this, + DecorationAreaType.PRIMARY_TITLE_PANE); + this.setForeground(SubstanceColorUtilities + .getForegroundColor(SubstanceCoreUtilities.getSkin(this) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + // SubstanceColorSchemeUtilities + // .getColorScheme(this, ComponentState.ACTIVE))); + } + + /** + * Uninstalls the necessary state. + */ + public void uninstall() { + this.uninstallListeners(); + this.window = null; + + HeapStatusThread.unregisterPanel(this.heapStatusPanel); + + // Swing bug (?) - the updateComponentTree never gets to the + // system menu (and in our case we have radio menu items with + // rollover listeners). Fix for defect 109 - memory leak on skin + // switch + if ((this.menuBar != null) && (this.menuBar.getMenuCount() > 0)) { + this.menuBar.getUI().uninstallUI(this.menuBar); + SubstanceCoreUtilities.uninstallMenu(this.menuBar.getMenu(0)); + } + + if (this.heapStatusPanel != null) { + for (MouseListener listener : this.heapStatusPanel + .getMouseListeners()) + this.heapStatusPanel.removeMouseListener(listener); + HeapStatusThread.unregisterPanel(this.heapStatusPanel); + this.remove(this.heapStatusPanel); + } + + if (this.menuBar != null) + this.menuBar.removeAll(); + this.removeAll(); + } + + /** + * Installs the necessary listeners. + */ + private void installListeners() { + if (this.window != null) { + this.windowListener = new WindowHandler(); + this.window.addWindowListener(this.windowListener); + this.propertyChangeListener = new PropertyChangeHandler(); + this.window.addPropertyChangeListener(this.propertyChangeListener); + } + + // Property change listener for pulsating close button + // when window has been marked as changed. + // Fix for defect 109 - memory leak on skin change. + this.propertyListener = new PropertyChangeListener() { + @Override + public void propertyChange(final PropertyChangeEvent evt) { + if (SubstanceLookAndFeel.WINDOW_MODIFIED.equals(evt + .getPropertyName())) { + syncCloseButtonTooltip(); + // if (Boolean.TRUE.equals(evt.getNewValue())) { + // SubstanceTitlePane.this.closeButton + // .setToolTipText(SubstanceLookAndFeel + // .getLabelBundle().getString( + // "SystemMenu.close") + // + " [" + // + SubstanceLookAndFeel + // .getLabelBundle() + // .getString( + // "Tooltip.contentsNotSaved") + // + "]"); + // } else { + // SubstanceTitlePane.this.closeButton + // .setToolTipText(SubstanceLookAndFeel + // .getLabelBundle().getString( + // "SystemMenu.close")); + // } + // SubstanceTitlePane.this.closeButton.repaint(); + } + + if ("componentOrientation".equals(evt.getPropertyName())) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + if (SubstanceTitlePane.this.menuBar != null) { + SubstanceTitlePane.this.menuBar + .applyComponentOrientation((ComponentOrientation) evt + .getNewValue()); + } + } + }); + } + } + }; + // Wire it on the frame itself and its root pane. + this.rootPane.addPropertyChangeListener(this.propertyListener); + if (this.getFrame() != null) + this.getFrame().addPropertyChangeListener(this.propertyListener); + } + + /** + * Uninstalls the necessary listeners. + */ + private void uninstallListeners() { + if (this.window != null) { + this.window.removeWindowListener(this.windowListener); + this.windowListener = null; + this.window + .removePropertyChangeListener(this.propertyChangeListener); + this.propertyChangeListener = null; + } + + // Fix for defect 109 - memory leak on skin change. + this.rootPane.removePropertyChangeListener(this.propertyListener); + if (this.getFrame() != null) + this.getFrame().removePropertyChangeListener(this.propertyListener); + this.propertyListener = null; + + } + + /** + * Returns the JRootPane this was created for. + */ + @Override + public JRootPane getRootPane() { + return this.rootPane; + } + + /** + * Returns the decoration style of the JRootPane. + * + * @return Decoration style of the JRootPane. + */ + protected int getWindowDecorationStyle() { + return this.getRootPane().getWindowDecorationStyle(); + } + + /* + * (non-Javadoc) + * + * @see java.awt.Component#addNotify() + */ + @Override + public void addNotify() { + super.addNotify(); + + this.uninstallListeners(); + + this.window = SwingUtilities.getWindowAncestor(this); + if (this.window != null) { + this.setActive(this.window.isActive()); + if (this.window instanceof Frame) { + this.setState(((Frame) this.window).getExtendedState()); + } else { + this.setState(0); + } + if (this.getComponentCount() == 0) { + // fix for issue 385 - add the sub-components uninstalled + // in the removeNotify. This happens when a decorated + // dialog has been disposed and then reshown. + this.installSubcomponents(); + } + this.installListeners(); + } + this.setToolTipText(this.getTitle()); + this.updateAppIcon(); + } + + /* + * (non-Javadoc) + * + * @see java.awt.Component#removeNotify() + */ + @Override + public void removeNotify() { + super.removeNotify(); + + this.uninstall(); + this.window = null; + } + + /** + * Adds any sub-Components contained in the SubstanceTitlePane. + */ + private void installSubcomponents() { + int decorationStyle = this.getWindowDecorationStyle(); + if (decorationStyle == JRootPane.FRAME) { + this.createActions(); + this.menuBar = this.createMenuBar(); + if (this.menuBar != null) { + this.add(this.menuBar); + } + this.createButtons(); + this.add(this.alwaysOnTopButton); + this.add(this.minimizeButton); + this.add(this.toggleButton); + this.add(this.closeButton); + + this.heapStatusPanel = new HeapStatusPanel(); + this.markExtraComponent(this.heapStatusPanel, + ExtraComponentKind.TRAILING); + this.add(this.heapStatusPanel); + boolean isHeapStatusPanelShowing = SubstanceWidgetManager + .getInstance().isAllowed(rootPane, + SubstanceWidgetType.TITLE_PANE_HEAP_STATUS); + this.heapStatusPanel.setVisible(isHeapStatusPanelShowing); + this.heapStatusPanel.setPreferredSize(new Dimension(80, this + .getPreferredSize().height)); + this.heapStatusPanel.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString( + "Tooltip.heapStatusPanel")); + this.heapStatusPanel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + System.gc(); + } + }); + + HeapStatusThread.registerPanel(this.heapStatusPanel); + } else { + if ((decorationStyle == JRootPane.PLAIN_DIALOG) + || (decorationStyle == JRootPane.INFORMATION_DIALOG) + || (decorationStyle == JRootPane.ERROR_DIALOG) + || (decorationStyle == JRootPane.COLOR_CHOOSER_DIALOG) + || (decorationStyle == JRootPane.FILE_CHOOSER_DIALOG) + || (decorationStyle == JRootPane.QUESTION_DIALOG) + || (decorationStyle == JRootPane.WARNING_DIALOG)) { + this.createActions(); + this.createButtons(); + this.add(this.closeButton); + } + } + } + + /** + * Installs the fonts and necessary properties. + */ + private void installDefaults() { + this.setFont(UIManager.getFont("InternalFrame.titleFont", this + .getLocale())); + } + + /** + * Returns the JMenuBar displaying the appropriate system menu + * items. + * + * @return JMenuBar displaying the appropriate system menu + * items. + */ + protected JMenuBar createMenuBar() { + this.menuBar = new SubstanceMenuBar(); + this.menuBar.setFocusable(false); + this.menuBar.setBorderPainted(true); + this.menuBar.add(this.createMenu()); + this.menuBar.setOpaque(false); + // support for RTL + this.menuBar.applyComponentOrientation(this.rootPane + .getComponentOrientation()); + + this.markExtraComponent(this.menuBar, ExtraComponentKind.LEADING); + + return this.menuBar; + } + + /** + * Create the Actions that get associated with the buttons and + * menu items. + */ + private void createActions() { + this.closeAction = new CloseAction(); + if (this.getWindowDecorationStyle() == JRootPane.FRAME) { + this.alwaysOnTopAction = new AlwaysOnTopAction(); + this.iconifyAction = new IconifyAction(); + this.restoreAction = new RestoreAction(); + this.maximizeAction = new MaximizeAction(); + } + } + + /** + * Returns the JMenu displaying the appropriate menu items for + * manipulating the Frame. + * + * @return JMenu displaying the appropriate menu items for + * manipulating the Frame. + */ + private JMenu createMenu() { + JMenu menu = new JMenu(""); + menu.setOpaque(false); + menu.setBackground(null); + if (this.getWindowDecorationStyle() == JRootPane.FRAME) { + this.addMenuItems(menu); + } + return menu; + } + + /** + * Adds the necessary JMenuItems to the specified menu. + * + * @param menu + * Menu. + */ + private void addMenuItems(JMenu menu) { + menu.add(this.alwaysOnTopAction); + menu.add(this.restoreAction); + + menu.add(this.iconifyAction); + + if (Toolkit.getDefaultToolkit().isFrameStateSupported( + Frame.MAXIMIZED_BOTH)) { + menu.add(this.maximizeAction); + } + + if (SubstanceCoreUtilities.toShowExtraWidgets(rootPane)) { + menu.addSeparator(); + JMenu skinMenu = new JMenu(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString("SystemMenu.skins")); + Map allSkins = SubstanceLookAndFeel.getAllSkins(); + for (Map.Entry skinEntry : allSkins.entrySet()) { + final String skinClassName = skinEntry.getValue() + .getClassName(); + JMenuItem jmiSkin = new JMenuItem(skinEntry.getKey()); + jmiSkin.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + SubstanceLookAndFeel.setSkin(skinClassName); + } + }); + } + }); + + skinMenu.add(jmiSkin); + } + menu.add(skinMenu); + } + + menu.addSeparator(); + + menu.add(this.closeAction); + } + + /** + * Returns a JButton appropriate for placement on the + * TitlePane. + * + * @return Title button. + */ + private JButton createTitleButton() { + JButton button = new SubstanceTitleButton(); + + button.setFocusPainted(false); + button.setFocusable(false); + button.setOpaque(true); + + this.markExtraComponent(button, ExtraComponentKind.TRAILING); + + return button; + } + + /** + * Creates the Buttons that will be placed on the TitlePane. + */ + private void createButtons() { + this.closeButton = this.createTitleButton(); + this.closeButton.setAction(this.closeAction); + this.closeButton.setText(null); + this.closeButton.setBorder(null); + // this.closeButton.setToolTipText(SubstanceLookAndFeel + // .getLabelBundle().getString( + // "SystemMenu.close")); + + Icon closeIcon = new TransitionAwareIcon(closeButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon(SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.CLOSE, + scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.closeIcon"); + this.closeButton.setIcon(closeIcon); + + this.closeButton.setFocusable(false); + this.closeButton.putClientProperty(SubstanceLookAndFeel.FLAT_PROPERTY, + Boolean.TRUE); + + this.closeButton.putClientProperty( + SubstanceButtonUI.IS_TITLE_CLOSE_BUTTON, Boolean.TRUE); + + if (this.getWindowDecorationStyle() == JRootPane.FRAME) { + this.alwaysOnTopButton = this.createTitleButton(); + this.alwaysOnTopButton.setAction(this.alwaysOnTopAction); + this.alwaysOnTopButton.setText(null); + this.alwaysOnTopButton.setBorder(null); + + Icon alwaysOnTopIcon = new TransitionAwareIcon(this.alwaysOnTopButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return getAlwaysOnTopIcon(scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + false); + } + }, "substance.titlePane.alwaysOnTopIcon"); + this.alwaysOnTopButton.setIcon(alwaysOnTopIcon); + + this.alwaysOnTopButton.setFocusable(false); + this.alwaysOnTopButton.putClientProperty( + SubstanceLookAndFeel.FLAT_PROPERTY, Boolean.TRUE); + this.alwaysOnTopButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane) + .getString("SystemMenu.alwaysOnTop")); + + + this.minimizeButton = this.createTitleButton(); + this.minimizeButton.setAction(this.iconifyAction); + this.minimizeButton.setText(null); + this.minimizeButton.setBorder(null); + + Icon minIcon = new TransitionAwareIcon(this.minimizeButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.MINIMIZE, + scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.minIcon"); + this.minimizeButton.setIcon(minIcon); + + this.minimizeButton.setFocusable(false); + this.minimizeButton.putClientProperty( + SubstanceLookAndFeel.FLAT_PROPERTY, Boolean.TRUE); + this.minimizeButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane) + .getString("SystemMenu.iconify")); + + this.toggleButton = this.createTitleButton(); + this.toggleButton.setAction(this.restoreAction); + this.toggleButton.setBorder(null); + this.toggleButton.setText(null); + + Icon maxIcon = new TransitionAwareIcon(this.toggleButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.MAXIMIZE, + scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.maxIcon"); + this.toggleButton.setIcon(maxIcon); + + this.toggleButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString( + "SystemMenu.maximize")); + this.toggleButton.setFocusable(false); + this.toggleButton.putClientProperty( + SubstanceLookAndFeel.FLAT_PROPERTY, Boolean.TRUE); + + } + syncCloseButtonTooltip(); + } + + /** + * Returns the LayoutManager that should be installed on the + * SubstanceTitlePane. + * + * @return Layout manager. + */ + protected LayoutManager createLayout() { + return new TitlePaneLayout(); + } + + /** + * Updates state dependant upon the Window's active state. + * + * @param isActive + * if true, the window is in active state. + */ + private void setActive(boolean isActive) { + this.getRootPane().repaint(); + } + + /** + * Sets the state of the Window. + * + * @param state + * Window state. + */ + private void setState(int state) { + this.setState(state, false); + } + + /** + * Sets the state of the window. If updateRegardless is true + * and the state has not changed, this will update anyway. + * + * @param state + * Window state. + * @param updateRegardless + * if true, the update is done in any case. + */ + private void setState(int state, boolean updateRegardless) { + Window w = this.getWindow(); + + if ((w != null) && (this.getWindowDecorationStyle() == JRootPane.FRAME)) { + if ((this.state == state) && !updateRegardless) { + return; + } + Frame frame = this.getFrame(); + + if (frame != null) { + final JRootPane rootPane = this.getRootPane(); + + + updateAlwaysOnTopButton(); + + if (((state & Frame.MAXIMIZED_BOTH) != 0) + && ((rootPane.getBorder() == null) || (rootPane + .getBorder() instanceof UIResource)) + && frame.isShowing()) { + rootPane.setBorder(null); + } else { + if ((state & Frame.MAXIMIZED_BOTH) == 0) { + // This is a croak, if state becomes bound, this can + // be nuked. + this.rootPaneUI.installBorder(rootPane); + } + } + if (frame.isResizable()) { + if ((state & Frame.MAXIMIZED_BOTH) != 0) { + Icon restoreIcon = new TransitionAwareIcon( + this.toggleButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.RESTORE, + scheme, + SubstanceCoreUtilities + .getSkin( + rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.restoreIcon"); + this + .updateToggleButton(this.restoreAction, + restoreIcon); + this.toggleButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString( + "SystemMenu.restore")); + this.maximizeAction.setEnabled(false); + this.restoreAction.setEnabled(true); + } else { + Icon maxIcon = new TransitionAwareIcon( + this.toggleButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.MAXIMIZE, + scheme, + SubstanceCoreUtilities + .getSkin( + rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.maxIcon"); + this.updateToggleButton(this.maximizeAction, maxIcon); + this.toggleButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString( + "SystemMenu.maximize")); + this.maximizeAction.setEnabled(true); + this.restoreAction.setEnabled(false); + } + if ((this.toggleButton.getParent() == null) + || (this.minimizeButton.getParent() == null) + || (this.alwaysOnTopButton.getParent() == null) + ) { + this.add(this.alwaysOnTopButton); + this.add(this.toggleButton); + this.add(this.minimizeButton); + this.revalidate(); + this.repaint(); + } + this.toggleButton.setText(null); + this.alwaysOnTopAction.setEnabled(true); + } else { + this.maximizeAction.setEnabled(false); + this.restoreAction.setEnabled(false); + if (this.toggleButton.getParent() != null) { + this.remove(this.toggleButton); + this.revalidate(); + this.repaint(); + } + } + } else { + // Not contained in a Frame + this.alwaysOnTopAction.setEnabled(false); + this.maximizeAction.setEnabled(false); + this.restoreAction.setEnabled(false); + this.iconifyAction.setEnabled(false); + this.remove(this.alwaysOnTopButton); + this.remove(this.toggleButton); + this.remove(this.minimizeButton); + this.revalidate(); + this.repaint(); + } + this.alwaysOnTopAction.setEnabled(true); + this.closeAction.setEnabled(true); + this.state = state; + } + } + + /** + * Updates the toggle button to contain the Icon icon, and + * Action action. + * + * @param action + * Action. + * @param icon + * Icon. + */ + private void updateToggleButton(Action action, Icon icon) { + this.toggleButton.setAction(action); + this.toggleButton.setIcon(icon); + this.toggleButton.setText(null); + } + + private void updateAlwaysOnTopButton() { + Frame frame = this.getFrame(); + if (frame.isAlwaysOnTop()) { + Icon alwaysOnTopIconEnabled = new TransitionAwareIcon(this.alwaysOnTopButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return getAlwaysOnTopIcon(scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + true); + } + }, "substance.titlePane.alwaysOnTopIconEnabled"); + this.alwaysOnTopButton.setIcon(alwaysOnTopIconEnabled); + } else { + Icon alwaysOnTopIcon = new TransitionAwareIcon(this.alwaysOnTopButton, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return getAlwaysOnTopIcon(scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + false); + } + }, "substance.titlePane.alwaysOnTopIcon"); + this.alwaysOnTopButton.setIcon(alwaysOnTopIcon); + } + } + + /** + * Returns the Frame rendering in. This will return null if the + * JRootPane is not contained in a Frame. + * + * @return Frame. + */ + private Frame getFrame() { + Window window = this.getWindow(); + + if (window instanceof Frame) { + return (Frame) window; + } + return null; + } + + /** + * Returns the Window the JRootPane is contained + * in. This will return null if there is no parent ancestor of the + * JRootPane. + * + * @return Window. + */ + private Window getWindow() { + return this.window; + } + + /** + * Returns the String to display as the title. + * + * @return Display title. + */ + private String getTitle() { + Window w = this.getWindow(); + + if (w instanceof Frame) { + return ((Frame) w).getTitle(); + } + if (w instanceof Dialog) { + return ((Dialog) w).getTitle(); + } + return null; + } + + /* + * (non-Javadoc) + * + * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) + */ + @Override + public void paintComponent(Graphics g) { + // long start = System.nanoTime(); + // As state isn't bound, we need a convenience place to check + // if it has changed. Changing the state typically changes the + if (this.getFrame() != null) { + this.setState(this.getFrame().getExtendedState()); + } + final JRootPane rootPane = this.getRootPane(); + Window window = this.getWindow(); + boolean leftToRight = (window == null) ? rootPane + .getComponentOrientation().isLeftToRight() : window + .getComponentOrientation().isLeftToRight(); + int width = this.getWidth(); + int height = this.getHeight(); + + SubstanceSkin skin = SubstanceCoreUtilities.getSkin(rootPane); + if (skin == null) { + SubstanceCoreUtilities + .traceSubstanceApiUsage(this, + "Substance delegate used when Substance is not the current LAF"); + } + SubstanceColorScheme scheme = skin + .getEnabledColorScheme(DecorationAreaType.PRIMARY_TITLE_PANE); + + int xOffset = 0; + String theTitle = this.getTitle(); + + if (theTitle != null) { + Rectangle titleTextRect = this.getTitleTextRectangle(); + FontMetrics fm = rootPane.getFontMetrics(g.getFont()); + int titleWidth = titleTextRect.width - 20; + String clippedTitle = SubstanceCoreUtilities.clipString(fm, + titleWidth, theTitle); + // show tooltip with full title only if necessary + if (theTitle.equals(clippedTitle)) { + this.setToolTipText(null); + } else { + this.setToolTipText(theTitle); + } + theTitle = clippedTitle; + if (leftToRight) + xOffset = titleTextRect.x; + else + xOffset = titleTextRect.x + titleTextRect.width + - fm.stringWidth(theTitle); + } + + Graphics2D graphics = (Graphics2D) g.create(); + Font font = SubstanceLookAndFeel.getFontPolicy().getFontSet( + "Substance", null).getWindowTitleFont(); + graphics.setFont(font); + + BackgroundPaintingUtils + .update(graphics, SubstanceTitlePane.this, false); + // DecorationPainterUtils.paintDecorationBackground(graphics, + // SubstanceTitlePane.this, false); + + // draw the title (if needed) + if (theTitle != null) { + FontMetrics fm = rootPane.getFontMetrics(graphics.getFont()); + int yOffset = ((height - fm.getHeight()) / 2) + fm.getAscent(); + + SubstanceTextUtilities.paintTextWithDropShadow(this, graphics, + SubstanceColorUtilities.getForegroundColor(scheme), + theTitle, width, height, xOffset, yOffset); + } + + GhostPaintingUtils.paintGhostImages(this, graphics); + + // long end = System.nanoTime(); + // System.out.println(end - start); + graphics.dispose(); + } + + /** + * Computes the rectangle of the title text. This method looks at all the + * children components of the title pane, grouping them by leading and + * trailing (based on {@link #EXTRA_COMPONENT_KIND} client property). The + * title text rectangle is the space between the leading group and the + * trailing group. + * + * @return Rectangle of the title text. + * @throws IllegalStateException + * If at least one child component of this title pane is not + * marked with the {@link #EXTRA_COMPONENT_KIND} client + * property. + * @see #markExtraComponent(JComponent, ExtraComponentKind) + * @see #EXTRA_COMPONENT_KIND + */ + protected Rectangle getTitleTextRectangle() { + JRootPane rootPane = this.getRootPane(); + Window window = this.getWindow(); + boolean leftToRight = (window == null) ? rootPane + .getComponentOrientation().isLeftToRight() : window + .getComponentOrientation().isLeftToRight(); + + if (leftToRight) { + int maxLeadingX = 0; + int minTrailingX = this.getWidth(); + + for (int i = 0; i < this.getComponentCount(); i++) { + Component child = this.getComponent(i); + if (!child.isVisible()) + continue; + if (child instanceof JComponent) { + ExtraComponentKind kind = (ExtraComponentKind) ((JComponent) child) + .getClientProperty(EXTRA_COMPONENT_KIND); + if (kind == null) { + throw new IllegalStateException("Title pane child " + + child.getClass().getName() + + " is not marked as leading or trailing"); + } + if (kind == ExtraComponentKind.LEADING) { + int cx = child.getX() + child.getWidth(); + if (cx > maxLeadingX) + maxLeadingX = cx; + } else { + int cx = child.getX(); + if (cx < minTrailingX) + minTrailingX = cx; + } + } + } + + int start = maxLeadingX + 10; + int end = minTrailingX - 5; + return new Rectangle(start, 0, end - start, this.getHeight()); + } else { + int minLeadingX = this.getWidth(); + int maxTrailingX = 0; + + for (int i = 0; i < this.getComponentCount(); i++) { + Component child = this.getComponent(i); + if (!child.isVisible()) + continue; + if (child instanceof JComponent) { + ExtraComponentKind kind = (ExtraComponentKind) ((JComponent) child) + .getClientProperty(EXTRA_COMPONENT_KIND); + if (kind == null) { + throw new IllegalStateException("Title pane child " + + child.getClass().getName() + + " is not marked as leading or trailing"); + } + if (kind == ExtraComponentKind.LEADING) { + int cx = child.getX(); + if (cx < minLeadingX) + minLeadingX = cx; + } else { + int cx = child.getX() + child.getWidth(); + if (cx > maxTrailingX) + maxTrailingX = cx; + } + } + } + + int start = maxTrailingX + 5; + int end = minLeadingX - 10; + return new Rectangle(start, 0, end - start, this.getHeight()); + } + } + + /** + * Actions used to close the Window. + */ + private class CloseAction extends AbstractAction { + /** + * Creates a new close action. + */ + public CloseAction() { + super(SubstanceCoreUtilities.getResourceBundle(rootPane).getString( + "SystemMenu.close"), SubstanceImageCreator.getCloseIcon( + SubstanceCoreUtilities.getSkin(rootPane) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + SubstanceCoreUtilities.getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + } + + @Override + public void actionPerformed(ActionEvent e) { + Window window = SubstanceTitlePane.this.getWindow(); + + if (window != null) { + window.dispatchEvent(new WindowEvent(window, + WindowEvent.WINDOW_CLOSING)); + } + } + } + + /** + * Actions used to iconfiy the Frame. + */ + private class IconifyAction extends AbstractAction { + /** + * Creates a new iconify action. + */ + public IconifyAction() { + super( + SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("SystemMenu.iconify"), + SubstanceImageCreator + .getMinimizeIcon( + SubstanceCoreUtilities + .getSkin(rootPane) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + } + + @Override + public void actionPerformed(ActionEvent e) { + Frame frame = SubstanceTitlePane.this.getFrame(); + if (frame != null) { + frame.setExtendedState(SubstanceTitlePane.this.state + | Frame.ICONIFIED); + } + } + } + + private class AlwaysOnTopAction extends AbstractAction { + /** + * Creates a new restore action. + */ + public AlwaysOnTopAction() { + super( + /*SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("SystemMenu.restore"),*/ + //"Always on top", + SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("SystemMenu.alwaysOnTop"), + SubstanceImageCreator + .getRestoreIcon( + SubstanceCoreUtilities + .getSkin(rootPane) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + } + + @Override + public void actionPerformed(ActionEvent e) { + Frame frame = SubstanceTitlePane.this.getFrame(); + + if (frame == null) { + return; + } + + frame.setAlwaysOnTop(!frame.isAlwaysOnTop()); + updateAlwaysOnTopButton(); + } + } + + /** + * Actions used to restore the Frame. + */ + private class RestoreAction extends AbstractAction { + /** + * Creates a new restore action. + */ + public RestoreAction() { + super( + SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("SystemMenu.restore"), + SubstanceImageCreator + .getRestoreIcon( + SubstanceCoreUtilities + .getSkin(rootPane) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + } + + @Override + public void actionPerformed(ActionEvent e) { + Frame frame = SubstanceTitlePane.this.getFrame(); + + if (frame == null) { + return; + } + + if ((SubstanceTitlePane.this.state & Frame.ICONIFIED) != 0) { + frame.setExtendedState(SubstanceTitlePane.this.state + & ~Frame.ICONIFIED); + } else { + frame.setExtendedState(SubstanceTitlePane.this.state + & ~Frame.MAXIMIZED_BOTH); + } + } + } + + /** + * Actions used to restore the Frame. + */ + private class MaximizeAction extends AbstractAction { + /** + * Creates a new maximize action. + */ + public MaximizeAction() { + super( + SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("SystemMenu.maximize"), + SubstanceImageCreator + .getMaximizeIcon( + SubstanceCoreUtilities + .getSkin(rootPane) + .getActiveColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE), + SubstanceCoreUtilities + .getSkin(rootPane) + .getEnabledColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE))); + } + + @Override + public void actionPerformed(ActionEvent e) { + Frame frame = SubstanceTitlePane.this.getFrame(); + if (frame != null) { + if (frame instanceof JFrame) { + SubstanceRootPaneUI rpUI = (SubstanceRootPaneUI) ((JFrame) frame) + .getRootPane().getUI(); + rpUI.setMaximized(); + } + frame.setExtendedState(SubstanceTitlePane.this.state + | Frame.MAXIMIZED_BOTH); + } + } + } + + /** + * Class responsible for drawing the system menu. Looks up the image to draw + * from the Frame associated with the JRootPane. + */ + public class SubstanceMenuBar extends JMenuBar { + @Override + public void paint(Graphics g) { + if (appIcon != null) { + g.drawImage(appIcon, 0, 0, null); + } else { + Icon icon = UIManager.getIcon("InternalFrame.icon"); + if (icon != null) { + icon.paintIcon(this, g, 0, 0); + } + } + } + + @Override + public Dimension getMinimumSize() { + return this.getPreferredSize(); + } + + @Override + public Dimension getPreferredSize() { + Dimension size = super.getPreferredSize(); + + int iSize = SubstanceSizeUtils.getTitlePaneIconSize(); + return new Dimension(Math.max(iSize, size.width), Math.max( + size.height, iSize)); + } + } + + /** + * Layout manager for the title pane. + * + * @author Kirill Graphics + */ + protected class TitlePaneLayout implements LayoutManager { + /* + * (non-Javadoc) + * + * @see java.awt.LayoutManager#addLayoutComponent(java.lang.String, + * java.awt.Component) + */ + @Override + public void addLayoutComponent(String name, Component c) { + } + + /* + * (non-Javadoc) + * + * @see java.awt.LayoutManager#removeLayoutComponent(java.awt.Component) + */ + @Override + public void removeLayoutComponent(Component c) { + } + + /* + * (non-Javadoc) + * + * @see java.awt.LayoutManager#preferredLayoutSize(java.awt.Container) + */ + @Override + public Dimension preferredLayoutSize(Container c) { + int height = this.computeHeight(); + return new Dimension(height, height); + } + + /** + * Computes title pane height. + * + * @return Title pane height. + */ + private int computeHeight() { + FontMetrics fm = SubstanceTitlePane.this.rootPane + .getFontMetrics(SubstanceTitlePane.this.getFont()); + int fontHeight = fm.getHeight(); + fontHeight += 7; + int iconHeight = 0; + if (SubstanceTitlePane.this.getWindowDecorationStyle() == JRootPane.FRAME) { + iconHeight = SubstanceSizeUtils.getTitlePaneIconSize(); + } + + int finalHeight = Math.max(fontHeight, iconHeight); + return finalHeight; + } + + /* + * (non-Javadoc) + * + * @see java.awt.LayoutManager#minimumLayoutSize(java.awt.Container) + */ + @Override + public Dimension minimumLayoutSize(Container c) { + return this.preferredLayoutSize(c); + } + + /* + * (non-Javadoc) + * + * @see java.awt.LayoutManager#layoutContainer(java.awt.Container) + */ + @Override + public void layoutContainer(Container c) { + boolean leftToRight = (SubstanceTitlePane.this.window == null) ? SubstanceTitlePane.this + .getRootPane().getComponentOrientation().isLeftToRight() + : SubstanceTitlePane.this.window.getComponentOrientation() + .isLeftToRight(); + + int w = SubstanceTitlePane.this.getWidth(); + int x; + int y = 3; + int spacing; + int buttonHeight; + int buttonWidth; + + if ((SubstanceTitlePane.this.closeButton != null) + && (SubstanceTitlePane.this.closeButton.getIcon() != null)) { + buttonHeight = SubstanceTitlePane.this.closeButton.getIcon() + .getIconHeight(); + buttonWidth = SubstanceTitlePane.this.closeButton.getIcon() + .getIconWidth(); + } else { + buttonHeight = SubstanceSizeUtils.getTitlePaneIconSize(); + buttonWidth = SubstanceSizeUtils.getTitlePaneIconSize(); + } + + y = (getHeight() - buttonHeight) / 2; + + // assumes all buttons have the same dimensions + // these dimensions include the borders + + x = leftToRight ? w : 0; + + spacing = 5; + x = leftToRight ? spacing : w - buttonWidth - spacing; + if (SubstanceTitlePane.this.menuBar != null) { + SubstanceTitlePane.this.menuBar.setBounds(x, y, buttonWidth, + buttonHeight); + // System.out.println(menuBar.getBounds()); + } + + x = leftToRight ? w : 0; + spacing = 3; + x += leftToRight ? -spacing - buttonWidth : spacing; + if (SubstanceTitlePane.this.closeButton != null) { + SubstanceTitlePane.this.closeButton.setBounds(x, y, + buttonWidth, buttonHeight); + } + + if (!leftToRight) + x += buttonWidth; + + if (SubstanceTitlePane.this.getWindowDecorationStyle() == JRootPane.FRAME) { + if (Toolkit.getDefaultToolkit().isFrameStateSupported( + Frame.MAXIMIZED_BOTH)) { + if (SubstanceTitlePane.this.toggleButton.getParent() != null) { + spacing = 10; + x += leftToRight ? -spacing - buttonWidth : spacing; + SubstanceTitlePane.this.toggleButton.setBounds(x, y, + buttonWidth, buttonHeight); + if (!leftToRight) { + x += buttonWidth; + } + } + } + + if ((SubstanceTitlePane.this.minimizeButton != null) + && (SubstanceTitlePane.this.minimizeButton.getParent() != null)) { + spacing = 2; + x += leftToRight ? -spacing - buttonWidth : spacing; + SubstanceTitlePane.this.minimizeButton.setBounds(x, y, + buttonWidth, buttonHeight); + if (!leftToRight) { + x += buttonWidth; + } + } + + if ((SubstanceTitlePane.this.alwaysOnTopButton != null) + && (SubstanceTitlePane.this.alwaysOnTopButton.getParent() != null)) { + spacing = 2; + x += leftToRight ? -spacing - buttonWidth : spacing; + SubstanceTitlePane.this.alwaysOnTopButton.setBounds(x, y, + buttonWidth, buttonHeight); + if (!leftToRight) { + x += buttonWidth; + } + } + + if ((SubstanceTitlePane.this.heapStatusPanel != null) + && SubstanceTitlePane.this.heapStatusPanel.isVisible()) { + spacing = 5; + x += leftToRight ? (-spacing - SubstanceTitlePane.this.heapStatusPanel + .getPreferredWidth()) + : spacing; + SubstanceTitlePane.this.heapStatusPanel.setBounds(x, 1, + SubstanceTitlePane.this.heapStatusPanel + .getPreferredWidth(), + SubstanceTitlePane.this.getHeight() - 3); + } + } + // buttonsWidth = leftToRight ? w - x : x; + } + + } + + /** + * PropertyChangeListener installed on the Window. Updates the necessary + * state as the state of the Window changes. + */ + private class PropertyChangeHandler implements PropertyChangeListener { + @Override + public void propertyChange(PropertyChangeEvent pce) { + String name = pce.getPropertyName(); + + // Frame.state isn't currently bound. + if ("resizable".equals(name) || "state".equals(name)) { + Frame frame = SubstanceTitlePane.this.getFrame(); + + if (frame != null) { + SubstanceTitlePane.this.setState(frame.getExtendedState(), + true); + } + if ("resizable".equals(name)) { + SubstanceTitlePane.this.getRootPane().repaint(); + } + } else { + if ("title".equals(name)) { + SubstanceTitlePane.this.repaint(); + SubstanceTitlePane.this.setToolTipText((String) pce + .getNewValue()); + } else if ("componentOrientation" == name) { + revalidate(); + repaint(); + } else if ("iconImage" == name) { + updateAppIcon(); + revalidate(); + repaint(); + } + } + } + } + + /** + * WindowListener installed on the Window, updates the state as necessary. + */ + private class WindowHandler extends WindowAdapter { + @Override + public void windowActivated(WindowEvent ev) { + SubstanceTitlePane.this.setActive(true); + } + + @Override + public void windowDeactivated(WindowEvent ev) { + SubstanceTitlePane.this.setActive(false); + } + } + + /** + * Sets location for heap status logfile. Relevant if + * {@link #setCanHaveHeapStatusPanel(boolean)} was called with + * true. + * + * @param heapStatusLogfileName + * Logfile for the heap status panel. + */ + public static void setHeapStatusLogfileName(String heapStatusLogfileName) { + SubstanceTitlePane.heapStatusLogfileName = heapStatusLogfileName; + } + + /** + * Synchronizes the tooltip of the close button. + */ + protected void syncCloseButtonTooltip() { + if (SubstanceCoreUtilities.isRootPaneModified(this.getRootPane())) { + this.closeButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString("SystemMenu.close") + + " [" + + SubstanceCoreUtilities.getResourceBundle(rootPane) + .getString("Tooltip.contentsNotSaved") + "]"); + } else { + this.closeButton.setToolTipText(SubstanceCoreUtilities + .getResourceBundle(rootPane).getString("SystemMenu.close")); + } + this.closeButton.repaint(); + } + + /** + * Marks the specified child component with the specified extra component + * kind. + * + * @param comp + * Child component. + * @param kind + * Extra kind. + * @see #getTitleTextRectangle() + * @see #EXTRA_COMPONENT_KIND + */ + protected void markExtraComponent(JComponent comp, ExtraComponentKind kind) { + comp.putClientProperty(EXTRA_COMPONENT_KIND, kind); + } + + /** + * Updates the application icon. + */ + private void updateAppIcon() { + Window window = getWindow(); + if (window == null) { + this.appIcon = null; + return; + } + java.util.List icons = window.getIconImages(); + + if (icons.size() == 0) { + this.appIcon = null; + } else { + int prefSize = SubstanceSizeUtils.getTitlePaneIconSize(); + this.appIcon = SubstanceCoreUtilities.getScaledIconImage(icons, + prefSize, prefSize); + } + } + + public AbstractButton getCloseButton() { + return this.closeButton; + } + + + public static Icon getAlwaysOnTopIcon(SubstanceColorScheme scheme, + SubstanceColorScheme backgroundScheme, boolean enabled) { + int iSize = SubstanceSizeUtils.getTitlePaneIconSize(); + BufferedImage image = SubstanceCoreUtilities + .getBlankImage(iSize, iSize); + Graphics2D graphics = (Graphics2D) image.getGraphics(); + Color color = SubstanceColorUtilities.getMarkColor(scheme, true); + graphics.setColor(color); + //graphics.fillRect(start + 2, end - 2, size, 3); + Ellipse2D ellipse = new Ellipse2D.Double(iSize / 3, iSize / 3, iSize / 3, iSize / 3); + if (enabled) { + graphics.fill(ellipse); + } + graphics.draw(ellipse); + + graphics.drawLine(iSize / 2, iSize * 2 / 3, iSize / 2, iSize - 4); + + int fgStrength = SubstanceColorUtilities.getColorBrightness(color + .getRGB()); + int fgNegativeStrength = SubstanceColorUtilities + .getColorBrightness(SubstanceColorUtilities + .getNegativeColor(color.getRGB())); + int bgStrength = SubstanceColorUtilities + .getColorBrightness(backgroundScheme.getLightColor().getRGB()); + boolean noEcho = (fgStrength > fgNegativeStrength) + && (fgStrength < bgStrength); + + return new ImageIcon(overlayEcho(image, + noEcho ? 0 : SubstanceColorUtilities.getColorStrength(color), + 1, 1)); + } + + private static BufferedImage getNegated(BufferedImage bi) { + return new NegatedFilter().filter(bi, null); + } + + private static BufferedImage overlayEcho(BufferedImage image, + float echoAlpha, int offsetX, int offsetY) { + int width = image.getWidth(); + int height = image.getHeight(); + + // blur the original image + // ConvolveOp convolve = new ConvolveOp(new Kernel(3, 3, new float[] { + // .4f, .4f, .4f, .4f, .0f, .4f, .4f, .4f, .4f }), + // ConvolveOp.EDGE_NO_OP, null); + offsetX = offsetY = 0; + BufferedImage negated = getNegated(image); + BufferedImage result = SubstanceCoreUtilities.getBlankImage(width, + height); + Graphics2D graphics = (Graphics2D) result.getGraphics().create(); + graphics.setComposite(AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, 0.2f * echoAlpha * echoAlpha + * echoAlpha)); + graphics.drawImage(negated, offsetX - 1, offsetY - 1, null); + graphics.drawImage(negated, offsetX + 1, offsetY - 1, null); + graphics.drawImage(negated, offsetX - 1, offsetY + 1, null); + graphics.drawImage(negated, offsetX + 1, offsetY + 1, null); + graphics.setComposite(AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, 0.7f * echoAlpha * echoAlpha + * echoAlpha)); + graphics.drawImage(negated, offsetX, offsetY - 1, null); + graphics.drawImage(negated, offsetX, offsetY + 1, null); + graphics.drawImage(negated, offsetX - 1, offsetY, null); + graphics.drawImage(negated, offsetX + 1, offsetY, null); + + graphics.setComposite(AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, 1.0f)); + graphics.drawImage(image, 0, 0, null); + + graphics.dispose(); + return result; + } +} diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index 8cd016043..b03f5347b 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -25,7 +25,6 @@ import com.jpexs.decompiler.flash.abc.ABC; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.configuration.ConfigurationItemChangeListener; import com.jpexs.decompiler.flash.console.ContextMenuTools; -import com.jpexs.decompiler.flash.easygui.EasyPanel; import com.jpexs.decompiler.flash.exporters.swf.SwfFlashDevelopExporter; import com.jpexs.decompiler.flash.exporters.swf.SwfIntelliJIdeaExporter; import com.jpexs.decompiler.flash.exporters.swf.SwfVsCodeExporter; @@ -1292,6 +1291,9 @@ public abstract class MainFrameMenu implements MenuBuilder { finishMenu("/file/start"); addMenuItem("/file/view", translate("menu.view"), null, null, 0, null, false, null, false); + if (!supportsAppMenu()) { + addToggleMenuItem("/file/view/alwaysOnTop", translate("menu.file.view.alwaysOnTop"), null, null, this::alwaysOnTopActionPerformed, 0, null); + } addToggleMenuItem("/file/view/viewResources", translate("menu.file.view.resources"), "view", "viewresources16", this::viewResourcesActionPerformed, PRIORITY_MEDIUM, null); addToggleMenuItem("/file/view/viewTagList", translate("menu.file.view.tagList"), "view", "taglist16", this::viewTagListActionPerformed, PRIORITY_MEDIUM, null); addToggleMenuItem("/file/view/viewHex", translate("menu.file.view.hex"), "view", "viewhex16", this::viewHexActionPerformed, PRIORITY_MEDIUM, null); @@ -1555,6 +1557,11 @@ public abstract class MainFrameMenu implements MenuBuilder { break; } } + + private void alwaysOnTopActionPerformed(ActionEvent evt) { + mainFrame.getWindow().setAlwaysOnTop(!mainFrame.getWindow().isAlwaysOnTop()); + setMenuChecked("/file/view/alwaysOnTop", mainFrame.getWindow().isAlwaysOnTop()); + } private void viewResourcesActionPerformed(ActionEvent evt) { if (mainFrame.getPanel().checkEdited()) { diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java index 81e2e87f3..c91ba8d17 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java @@ -38,9 +38,22 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowStateListener; import java.io.File; import java.util.List; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JTree; +import javax.swing.plaf.RootPaneUI; import org.pushingpixels.flamingo.api.ribbon.JRibbon; import org.pushingpixels.flamingo.internal.ui.ribbon.appmenu.JRibbonApplicationMenuButton; +import org.pushingpixels.substance.api.DecorationAreaType; +import org.pushingpixels.substance.api.SubstanceColorScheme; +import org.pushingpixels.substance.api.SubstanceLookAndFeel; +import org.pushingpixels.substance.flamingo.ribbon.ui.SubstanceRibbonRootPaneUI; +import org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities; +import org.pushingpixels.substance.internal.utils.SubstanceTitleButton; +import org.pushingpixels.substance.internal.utils.icon.SubstanceIconFactory; +import org.pushingpixels.substance.internal.utils.icon.TransitionAwareIcon; /** * @author JPEXS @@ -168,10 +181,70 @@ public final class MainFrameRibbon extends AppRibbonFrame { } }); - View.centerScreenMain(this); - - } + View.centerScreenMain(this); + /*addWindowListener(new WindowAdapter() { + @Override + public void windowOpened(WindowEvent e) { + RootPaneUI ui = getRootPane().getUI(); + if (ui instanceof SubstanceRibbonRootPaneUI) { + SubstanceRibbonRootPaneUI sui = (SubstanceRibbonRootPaneUI) ui; + JComponent titlePane = sui.getTitlePane(); + final String EXTRA_COMPONENT_KIND = "substancelaf.internal.titlePane.extraComponentKind"; + Object trailing = null; + int i = 0; + int cnt = titlePane.getComponentCount(); + for (; i < cnt; i++) { + Component c = titlePane.getComponent(i); + + if (c instanceof JComponent) { + JComponent jc = (JComponent) c; + Object o = jc.getClientProperty(EXTRA_COMPONENT_KIND); + if ("TRAILING".equals("" + o)) { + trailing = o; + break; + } + } + } + if (trailing != null) { + JButton button = new SubstanceTitleButton(); + button.setFocusPainted(false); + button.setFocusable(false); + button.setOpaque(true); + button.putClientProperty(EXTRA_COMPONENT_KIND, trailing); + button.setText(null); + button.setBorder(null); + + Icon minIcon = new TransitionAwareIcon(button, + new TransitionAwareIcon.Delegate() { + @Override + public Icon getColorSchemeIcon( + SubstanceColorScheme scheme) { + return SubstanceIconFactory + .getTitlePaneIcon( + SubstanceIconFactory.IconKind.MINIMIZE, + scheme, + SubstanceCoreUtilities + .getSkin(rootPane) + .getBackgroundColorScheme( + DecorationAreaType.PRIMARY_TITLE_PANE)); + } + }, "substance.titlePane.minIcon"); + + button.setIcon(minIcon); + button.setToolTipText("Zkouska"); + button.putClientProperty(SubstanceLookAndFeel.FLAT_PROPERTY, + Boolean.TRUE); + + titlePane.remove(i); + titlePane.add(button, i); + titlePane.revalidate(); + } + } + } + });*/ + } + @Override public void setExtendedState(int state) { if ((state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) { diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index be4a5b61d..104b953da 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -1053,4 +1053,6 @@ zoom.enter = Enter zoom percentage value: contextmenu.showInEasy = Show in Simple editor #after 23.0.1 -work.debugging.start = Starting Flash content debugger \ No newline at end of file +work.debugging.start = Starting Flash content debugger + +menu.file.view.alwaysOnTop = Always on top \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ca.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ca.properties index 2b23ba068..2c7b376a0 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ca.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ca.properties @@ -611,4 +611,7 @@ message.confirm.remove.nodep = Segur que vols eliminar %item%? message.confirm.removemultiple.nodep = Segur que vols eliminar %count% elements? #... -filter.swf_spl = Fitxers SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Fitxers SWF (*.swf, *.spl) + +#... +menu.file.view.alwaysOnTop = Sempre al damunt \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index f4060bf59..3ee44fd1b 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -442,8 +442,8 @@ text.align.right = Zarovnat vpravo text.align.center = Zarovnat na st\u0159ed text.align.justify = Zarovnat do bloku text.undo = Vr\u00e1tit zm\u011bny -menu.file.import.xml = Import SWF XML -menu.file.export.xml = Export SWF XML +menu.file.import.xml = Importovat SWF XML +menu.file.export.xml = Exportovat SWF XML #after version 4.1.1 text.align.translatex.decrease = Sn\u00ed\u017eit TranslateX text.align.translatex.increase = Zv\u00fd\u0161it TranslateX @@ -1053,4 +1053,5 @@ zoom.enter = Zadejte hodnotu p\u0159ibl\u00ed\u017een\u00ed v procentech: contextmenu.showInEasy = Zobrazit v Jednoduch\u00e9m editoru #after 23.0.1 -work.debugging.start = Spou\u0161t\u00ed se Flash content debugger \ No newline at end of file +work.debugging.start = Spou\u0161t\u00ed se Flash content debugger +menu.file.view.alwaysOnTop = V\u017edy navrchu \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_de.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_de.properties index 0e1309af0..fc45dbf83 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_de.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_de.properties @@ -495,4 +495,7 @@ message.confirm.removemultiple.nodep = Wollen sie wirklich %count% Elemente entf contextmenu.exportFla = Exportiere als *.FLA #... -filter.swf_spl = SWF Dateien (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF Dateien (*.swf, *.spl) + +#... +menu.file.view.alwaysOnTop = Immer im Vordergrund \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_es.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_es.properties index 612d956b7..cd02dbfc3 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_es.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_es.properties @@ -566,4 +566,6 @@ message.confirm.remove.nodep = Est\u00e1 seguro que desea remover %item%? message.confirm.removemultiple.nodep = Est\u00e1 seguro que desea eliminar %count% art\u00edculos? contextmenu.exportFla = Exportar a FLA #... -filter.swf_spl = Archivos SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Archivos SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Siempre encima \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_fr.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_fr.properties index 0c84b8ebf..0a7b35861 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_fr.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_fr.properties @@ -582,4 +582,6 @@ message.confirm.remove.nodep = \u00cates-vous s\u00fbr de vouloir retirer les ob message.confirm.removemultiple.nodep = \u00cates-vous s\u00fbr de vouloir retirer %count% objets ? contextmenu.exportFla = Exporter en FLA #... -filter.swf_spl = Fichiers SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Fichiers SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Toujours au-dessus \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties index bf6b9274e..07397682d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties @@ -563,4 +563,6 @@ message.confirm.remove.nodep = Biztos benne, hogy t\u00f6r\u00f6lni k\u00edv\u00 message.confirm.removemultiple.nodep = Biztos benne, hogy t\u00f6r\u00f6lni k\u00edv\u00e1nja a %count% elemet ? contextmenu.exportFla = Export\u00e1l\u00e1s FLA-ba #... -filter.swf_spl = SWF f\u00e1ljok (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF f\u00e1ljok (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Mindig fel\u00fcl \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_it.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_it.properties index 958bf62aa..90cbe0b91 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_it.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_it.properties @@ -566,4 +566,6 @@ message.confirm.remove.nodep = Sicuro di voler remuovere %item%? message.confirm.removemultiple.nodep = Confermare la rimozione di %count% elementi? contextmenu.exportFla = Esporta come FLA #... -filter.swf_spl = File SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = File SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Sempre in primo piano \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ja.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ja.properties index ae5929e42..8d50bb5ed 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ja.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ja.properties @@ -646,4 +646,6 @@ button.showin.flashprojector = flash projector \u3067\u8868\u793a contextmenu.exportFla = FLA \u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 #... -filter.swf_spl = SWF \u30d5\u30a1\u30a4\u30eb (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF \u30d5\u30a1\u30a4\u30eb (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = \u5e38\u306b\u6700\u524d\u9762 \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_nl.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_nl.properties index 7ba5fcfe5..11db5d835 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_nl.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_nl.properties @@ -958,4 +958,6 @@ node.scenes = sc\u00e8nes contextmenu.showInFramesFolder = Weergeven in framesmap contextmenu.exportFla = Naar FLA exporteren #... -filter.swf_spl = SWF-bestanden (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF-bestanden (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Altijd bovenop \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pl.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pl.properties index 2a99287c6..140f58229 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pl.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pl.properties @@ -410,4 +410,6 @@ message.confirm.remove.nodep = Czy na pewno chcesz usun\u0105\u0107 %item%? message.confirm.removemultiple.nodep = Czy na pewno chcesz usun\u0105\u0107 %count% obiekt\u00f3w(y)? contextmenu.exportFla = Eskportuj do pliku FLA #... -filter.swf_spl = Pliki SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Pliki SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Zawsze na wierzchu \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt.properties index 1814c42c1..83c4a643d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt.properties @@ -283,4 +283,6 @@ ColorChooser.sampleText = Amostra de Texto Amostra de Texto message.confirm.remove.nodep = Tem a certeza que pretende remover %item%? contextmenu.exportFla = Exportar para FLA #... -filter.swf_spl = Ficheiros SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Ficheiros SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Sempre no topo \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt_BR.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt_BR.properties index 10300af53..829425c54 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt_BR.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_pt_BR.properties @@ -925,4 +925,6 @@ shaperecords.edge.style.fillstyle1=FillStyle1 = %value% shaperecords.edge.end = Fim da forma contextmenu.exportFla = Exportar para FLA #... -filter.swf_spl = Arquivos SWF (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = Arquivos SWF (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Sempre no topo \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ru.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ru.properties index c9519ae73..536b2d92a 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ru.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_ru.properties @@ -454,4 +454,6 @@ message.confirm.remove.nodep = \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d message.confirm.removemultiple.nodep = \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435: %count%? contextmenu.exportFla = \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 FLA #... -filter.swf_spl = SWF \u0444\u0430\u0439\u043b\u044b (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF \u0444\u0430\u0439\u043b\u044b (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties index a0839884c..9fe60e33e 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_sv.properties @@ -644,4 +644,6 @@ notavailable.activex.disable = Du kan aktivera med intern visning genom att avma button.showin.flashprojector = Visa i flash projector contextmenu.exportFla = Exporterar FLA #... -filter.swf_spl = SWF filer (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF filer (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = Alltid \u00f6verst \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_tr.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_tr.properties index 17d51c5be..10161fd4e 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_tr.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_tr.properties @@ -1037,3 +1037,5 @@ zoom.enter = Yak\u0131nla\u015ft\u0131rma y\u00fczdesi de\u011ferini girin: contextmenu.showInEasy = Basit d\u00fczenleyicide g\u00f6ster #after 23.0.1 work.debugging.start = Flash i\u00e7erik hata ay\u0131klay\u0131c\u0131s\u0131n\u0131 ba\u015flatma +#... +menu.file.view.alwaysOnTop = Her zaman \u00fcstte \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_uk.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_uk.properties index 670f56be7..b10d71091 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_uk.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_uk.properties @@ -337,4 +337,6 @@ message.confirm.remove.nodep = \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435 message.confirm.removemultiple.nodep = \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0443 \u043a\u0456\u043b\u044c\u043a\u043e\u0441\u0442\u0456: %count%? contextmenu.exportFla = \u0415\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u043e FLA #... -filter.swf_spl = SWF \u0444\u0430\u0439\u043b\u0438 (*.swf, *.spl) \ No newline at end of file +filter.swf_spl = SWF \u0444\u0430\u0439\u043b\u0438 (*.swf, *.spl) +#... +menu.file.view.alwaysOnTop = \u0417\u0430\u0432\u0436\u0434\u0438 \u0437\u0432\u0435\u0440\u0445\u0443 \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties index a1ec28d94..9bbf2b268 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties @@ -1007,3 +1007,5 @@ menu.tools.solEditor = \u5b58\u6863\u7f16\u8f91\u5668 node.cookies = \u5b58\u6863 menu.help.wiki = \u8bbf\u95eeFFDec\u7ef4\u57fa\u767e\u79d1 message.wiki = \u8bbf\u95eeFFDec\u7ef4\u57fa\u767e\u79d1: \r\n%url% +#... +menu.file.view.alwaysOnTop = \u59cb\u7ec8\u5728\u6700\u4e0a\u5c42 \ No newline at end of file