Codebase list freeplane / a235c10
Update upstream source from tag 'upstream/1.7.5' Update to upstream version '1.7.5' with Debian dir 67e981687fd45a7abb8c131eef0231bd3fe804ae Felix Natter 5 years ago
3114 changed file(s) with 10163 addition(s) and 7720 deletion(s). Raw diff Collapse all Expand all
JOrtho_0.4_freeplane/out/production/classes/SampleApplet.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/SampleApplication.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/AutoSpellChecker$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/AutoSpellChecker$2.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/AutoSpellChecker.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/CheckerListener$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/CheckerListener$2.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/CheckerListener.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/CheckerMenu.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/CheckerPopup.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/Dictionary.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryBase.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryEditDialog$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryEditDialog$DeleteAction.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryEditDialog.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryFactory$Node.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryFactory$NodeEntry.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/DictionaryFactory.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/FileUserDictionary.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/LanguageChangeEvent.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/LanguageChangeListener.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/LetterBasedBreakIterator.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/PopupListener.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/RedZigZagPainter.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$ActionToggleButtonModel.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$DisableLanguageAction.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$LanguageAction$1$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$LanguageAction$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker$LanguageAction.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellChecker.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellCheckerDialog$1.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellCheckerDialog$2.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellCheckerDialog$3.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellCheckerDialog.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/SpellCheckerOptions.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/Suggestion.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/Suggestions.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/Tokenizer.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/UserDictionaryProvider.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/production/classes/com/inet/jortho/Utils.class less more
Binary diff not shown
+0
-16
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource.properties less more
0 addDictionaries=Add dictionaries...
1 addToDictionary=Add to Dictionary
2 change=Change
3 changeAll=Change All
4 close=Close
5 delete=Delete
6 disable=Disable Spellchecker
7 editDictionary=Edit dictionary
8 ignore=Ignore Once
9 ignoreAll=Ignore All
10 languages=Languages
11 msgFinish=The Spell check is finished.
12 notInDictionary=Not in Dictionary
13 spelling=Spelling
14 suggestions=Suggestions
15 userDictionary=User dictionary
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_cs.properties less more
0 addDictionaries=P\u0159idat slovn\u00EDky...
1 addToDictionary=P\u0159idat do slovn\u00EDku
2 change=Zam\u011Bnit
3 changeAll=Zam\u011B\u0148ovat
4 close=Storno
5 delete=Odstranit
6 editDictionary=Upravit slovn\u00EDk
7 ignore=P\u0159esko\u010Dit
8 ignoreAll=P\u0159eskakovat
9 languages=Jazyky
10 msgFinish=Kontrola pravopisu je dokon\u010Dena.
11 notInDictionary=Nen\u00ED ve slovn\u00EDku
12 spelling=Pravopis
13 suggestions=N\u00E1vrhy
14 userDictionary=U\u017Eivatelsk\u00FD slovn\u00EDk
+0
-16
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_de.properties less more
0 addDictionaries=W?rterb\u00FCcher hinzuf\u00FCgen...
1 addToDictionary=Zum W?rterbuch hinzuf\u00FCgen
2 change=\u00C4ndern
3 changeAll=Alle \u00E4ndern
4 close=Schlie\u00DFen
5 delete=L\u00F6schen
6 disable=Keine Pr\u00FCfung
7 editDictionary=W\u00F6rterbuch bearbeiten
8 ignore=Einmal ignorieren
9 ignoreAll=Alle ignorieren
10 languages=Sprachen
11 msgFinish=Die Rechtschreibpr\u00FCfung ist abgeschlossen.
12 notInDictionary=Nicht im W\u00F6rterbuch
13 spelling=Rechtschreibung
14 suggestions=Vorschl\u00E4ge
15 userDictionary=Benutzerw\u00F6rterbuch
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_es.properties less more
0 addDictionaries=A\u00F1adir diccionarios
1 addToDictionary=A\u00F1ada al diccionario
2 change=Cambia
3 changeAll=Cambia todo
4 close=Cerrar
5 delete=Borrar
6 editDictionary=Editar diccionario
7 ignore=Ignora una vez
8 ignoreAll=Ignora todo
9 languages=Idiomas
10 msgFinish=El corrector ortogr\u00E1fico termin\u00F3
11 notInDictionary=No est\u00E1 en el diccionario
12 spelling=Deletreando
13 suggestions=Sugerencias
14 userDictionary=Diccionario de usario
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_es_MX.properties less more
0 addDictionaries=A\u00F1adir diccionarios
1 addToDictionary=A\u00F1ada al diccionario
2 change=Cambia
3 changeAll=Cambia todo
4 close=Cerrar
5 delete=Borrar
6 editDictionary=Editar diccionario
7 ignore=Ignora una vez
8 ignoreAll=Ignora todo
9 languages=Idiomas
10 msgFinish=El corrector ortogr\u00E1fico termin\u00F3
11 notInDictionary=No est\u00E1 en el diccionario
12 spelling=Deletreando
13 suggestions=Sugerencias
14 userDictionary=Diccionario de usario
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_fr.properties less more
0 addDictionaries=Ajouter au dictionnaire
1 addToDictionary=Ajouter au dictionnaire
2 change=Changer
3 changeAll=Changer tout
4 close=Fermer
5 delete=Effacer
6 editDictionary=\u00C9diter le dictionnaire
7 ignore=Ignorer une fois
8 ignoreAll=Ignorer tous
9 languages=Langues
10 msgFinish=La v\u00E9rification de l\u2019orthographe est termin\u00E9e.
11 notInDictionary=Pas dans le dictionnaire
12 spelling=Orthographe
13 suggestions=Propositions
14 userDictionary=Dictionnaire d\u2019usage
+0
-16
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_hr.properties less more
0 addDictionaries=Dodaj rje\u010Dnike...
1 addToDictionary=Dodaj u rje\u010Dnik
2 change=Promijeni
3 changeAll=Promijeni sve
4 close=Zatvori
5 delete=Obri\u0161i
6 disable=Onemogu\u0107i provjeru pravopisa
7 editDictionary=Uredi rje\u010Dnik
8 ignore=Zanemari jednom
9 ignoreAll=Zanemari sve
10 languages=Jezici
11 msgFinish=Provjera pravopisa je zavr\u0161ena.
12 notInDictionary=Nije u rje\u010Dniku
13 spelling=Provjera pravopisa
14 suggestions=Prijedlozi
15 userDictionary=Korisni\u010Dki rje\u010Dnik
+0
-16
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_it.properties less more
0 addDictionaries=Aggiungere dizionari
1 addToDictionary=Aggiungere al dizionario
2 change=Cambiare
3 changeAll=Cambiare tutti
4 close=Chiudi
5 delete=Eliminare
6 disable=Disabilitare Controllo
7 editDictionary=Modifica Dizionario
8 ignore=Ignorare una volta
9 ignoreAll=Ignorare tutti
10 languages=Lingue
11 msgFinish=Controllo ortografico terminato
12 notInDictionary=Non nel dizionario
13 spelling=Ortografia
14 suggestions=Suggerimenti
15 userDictionary=Dizionario Utente
+0
-16
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_nl.properties less more
0 addDictionaries=Voeg woordenlijst toe...
1 addToDictionary=Aan woordenlijst toeveoegen
2 change=Verander
3 changeAll=Verander alles
4 close=Sluit
5 delete=Wis
6 disable=Spellingscontrole uitschakelen
7 editDictionary=Bewerk woordenlijst
8 ignore=Negeer eenmaal
9 ignoreAll=Negeer alles
10 languages=Talen
11 msgFinish=De spellingscontrole is klaar
12 notInDictionary=Niet in de woordenlijst
13 spelling=Spelling
14 suggestions=Suggesties
15 userDictionary=Persoonlijke woordenlijst
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_pl.properties less more
0 addDictionaries=Dodaj s\u0142owniki...
1 addToDictionary=Dodaj do s\u0142ownika
2 change=Zmie\u0144
3 changeAll=Zmie\u0144 wszystkie
4 close=Zamknij
5 delete=Usu\u0144
6 editDictionary=Edytuj s\u0142ownik
7 ignore=Ignoruj raz
8 ignoreAll=Ignoruj wszystkie
9 languages=J\u0119zyk
10 msgFinish=Zako\u0144czono sprawdzanie.
11 notInDictionary=Nie ma w s\u0142owniku
12 spelling=Pisownia
13 suggestions=Propozycje
14 userDictionary=S\u0142ownik u\u017Cytkownika
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_ru.properties less more
0 addDictionaries=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u043B\u043E\u0432\u0430\u0440\u0438\u2026
1 addToDictionary=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A \u0441\u043B\u043E\u0432\u0430\u0440\u044E
2 change=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C
3 changeAll=\u0412\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C
4 close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C
5 delete=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
6 editDictionary=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u043B\u043E\u0432\u0430\u0440\u044C
7 ignore=\u0418\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C
8 ignoreAll=\u0412\u0441\u0435 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C
9 languages=\u042F\u0437\u044B\u043A\u0438
10 msgFinish=\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043F\u0440\u0430\u0432\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044F \u0437\u0430\u043A\u043E\u043D\u0447\u0435\u043D\u0430.
11 notInDictionary=\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0441\u043B\u043E\u0432\u0430\u0440\u0435
12 spelling=\u041F\u0440\u0430\u0432\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435
13 suggestions=\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F
14 userDictionary=\u0421\u043B\u043E\u0432\u0430\u0440\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F
+0
-15
JOrtho_0.4_freeplane/out/production/resources/com/inet/jortho/i18n/resource_sk.properties less more
0 addDictionaries=Prida\u0165 slovn\u00EDky...
1 addToDictionary=Prida\u0165 do slovn\u00EDka
2 change=Zmeni\u0165
3 changeAll=Zmeni\u0165 v\u0161etky
4 close=Zru\u0161i\u0165
5 delete=Odstr\u00E1ni\u0165
6 editDictionary=Upravi\u0165 slovn\u00EDk
7 ignore=Ignorova\u0165 raz
8 ignoreAll=Ignorova\u0165 v\u0161etky
9 languages=Jazyky
10 msgFinish=Kontrola pravopisu je dokon\u010Den\u00E1.
11 notInDictionary=Nie je v slovn\u00EDku
12 spelling=Pravopis
13 suggestions=N\u00E1vrhy
14 userDictionary=U\u017E\u00EDvate\u013Esk\u00FD slovn\u00EDk
+0
-2
JOrtho_0.4_freeplane/out/production/resources/dictionaries.cnf less more
0 extension=.ortho
1 languages=de,en,it,fr,es,ru
JOrtho_0.4_freeplane/out/production/resources/dictionary_en.ortho less more
Binary diff not shown
JOrtho_0.4_freeplane/out/test/classes/com/inet/jorthotests/AllTests.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/test/classes/com/inet/jorthotests/EventTest.class less more
Binary diff not shown
JOrtho_0.4_freeplane/out/test/classes/com/inet/jorthotests/MemoryTest.class less more
Binary diff not shown
00 plugins {
11 id "nebula.ospackage" version "5.0.4"
22 }
3
4 Properties props = new Properties()
5 props.load(new FileInputStream(rootDir.path + '/freeplane/src/viewer/resources/version.properties'))
36
47 allprojects {
58 // in a multi-project setup, all projects must have the same version number!
69 // the real (specific) version number is in freeplane/viewer-resources/version.properties!
7 version = '1.5'
10 ext.majorVersion = props['freeplane_version']
11 ext.versionStatus = props['freeplane_version_status']
12 ext.minorVersion = System.getProperty('minor', '')
13 ext.distVersion = "$majorVersion${versionStatus.empty?'':'-'+versionStatus}${minorVersion.empty?'':'-pre' + minorVersion}"
14 version = ext.majorVersion
815
916 // WARNING: this is removed with "gradle clean"!!
1017 ext.globalBin = rootDir.path + '/BIN'
6774 }
6875 javadoc {
6976 options.encoding = "UTF-8"
77 options.docEncoding = "UTF-8"
78 options.charSet = "UTF-8"
7079 enabled = false
7180 failOnError = false
7281 }
00 ext.globalDist = rootDir.path + '/DIST'
1
2 Properties props = new Properties()
3 props.load(new FileInputStream(rootDir.path + '/freeplane/src/viewer/resources/version.properties'))
4
5 ext.majorVersion = props['freeplane_version']
6 ext.versionStatus = props['freeplane_version_status']
7 ext.minorVersion = System.getProperty('minor', '')
8 ext.distVersion = "$majorVersion${versionStatus.empty?'':'-'+versionStatus}${minorVersion.empty?'':'-pre' + minorVersion}"
91
102 task gitinfoDist(type: Copy) {
113 from(globalBin) {
7171 org.freeplane.core.ui.components,
7272 org.freeplane.core.ui.components.calendar,
7373 org.freeplane.core.ui.components.html,
74 org.freeplane.core.ui.components.resizer,
7475 org.freeplane.core.ui.textchanger,
7576 org.freeplane.core.ui.menubuilders,
7677 org.freeplane.core.ui.menubuilders.action,
103104 org.freeplane.features.link,
104105 org.freeplane.features.link.mindmapmode,
105106 org.freeplane.features.map,
107 org.freeplane.features.map.clipboard,
106108 org.freeplane.features.map.filemode,
107109 org.freeplane.features.map.mindmapmode,
110 org.freeplane.features.map.mindmapmode.clipboard,
108111 org.freeplane.features.mapio,
109112 org.freeplane.features.mapio.mindmapmode,
110113 org.freeplane.features.mode,
41124112 </p>
41134113 <ul>
41144114 <li>
4115 Select Menu item &quot;Configure node reference&quot; from node pop-up menu or Edit-&gt;Node properties.
4115 Select Menu item &quot;Set node alias&quot; from node pop-up menu or Edit-&gt;Node properties.
41164116 </li>
41174117 <li>
41184118 Enter alias consisting of letters, digits, underscores including at least one letter e.g. <code>#at(:~my_alias)</code>. Spaces are not allowed.
0 ===============================
1 1.7.5
2 ===============================
3 Bug fixes
4
5 ===============================
6 1.7.4
7 ===============================
8 Insert reference to node attribute in formula editor on mouse click in the attribute table
9 Use "at"-syntax for global nodes with aliases when node reference is inserted in formula editor
10 Copy, cut and paste of selected attributes
11 URLs in string or file attribute values are interpreted at runtime
12 URLs returned by formulas in attribute values are considered
13 Image preview is shown as tool tip for attribute values
14 containing URL pointing to svg or some known bitmap image
15 Creating attributes from plain text in clipboard
16 Show map titles in dialogs showing nodes from different maps
17 Show all passed reminders in one time task dialog on start or after the map is loaded
18 Add execute script and remove reminder buttons to time task dialog
19 Show past reminders action
20 Support dependency management in groovy scripts (see http://docs.groovy-lang.org/latest/html/documentation/grape.html)
21 Bug fixes
22
23 ===============================
24 1.7.3
25 ===============================
26 Show exception traces in formula editor
27 Bug fixes
28
029 ===============================
130 1.7.2
231 ===============================
332 Java 7 support dropped, Java 8 is required
433 Formula dependency tracing
5
34 Java 11 compatibility
635 ===============================
736 1.7.1
837 ===============================
1342 Node aliases
1443 Global nodes
1544 Filtering nodes on aliases and on global accessibility
16 Option to skip dialog for unnassigned F-keys
45 Option to skip dialog for unassigned F-keys
1746 Denied (inverted) conditions in filter toolbar
1847 Update Groovy to version 2.5.2
19 Update JLatexMath to versin 1.0.7
48 Update JLatexMath to version 1.0.7
2049 Update batik to version 2.10
21 Java 11 compatibility (wip)
2250 Export for selected branches only
2351 Go to nodes by their "reference paths"
2452
113141 ===============================
114142 Bug fixes
115143 Java 9 support
116 REmoved broken export to flash
144 REmoved broken export to flash
117145
118146 ===============================
119147 1.6.2
155183 Configurable edge line type
156184 Configurable node border line type
157185 Configurable standard for connector arrows
158 Configurable standard for connector line types
186 Configurable standard for connector line types
159187 Presentations
160188 Export for java web start
161189 Editor dialog for automatic edge colors
212240 ===============================
213241 Support High Density Monitors by scaling UI elements
214242 New SimplyHTML actions and short cuts for color and font size changes
215 Improve posisioning of inline editing field for left side nodes
243 Improve positioning of inline editing field for left side nodes
216244 Performance optimizations for filtered maps
217245 Performance optimizations for huge maps
218246
297325 Clones
298326 Scripting API extensions
299327 Save and restore last edit location
300 New handling for summary nodes
328 New handling for summary nodes
301329 Actions for splitting node text to words
302330
303331 ===============================
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$1.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$10.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$11.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$12.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$13.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$14.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$2.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$3.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$4.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$5.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$6.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$7.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$8.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$9.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$DefaultThreadFactory.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr$ServerThreadFactory.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/AsyncScalr.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/Scalr$1.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/Scalr$Method.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/Scalr$Mode.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/Scalr$Rotation.class less more
Binary diff not shown
freeplane/out/production/classes/com/thebuzzmedia/imgscalr/Scalr.class less more
Binary diff not shown
freeplane/out/production/classes/net/infonode/gui/RotatableLabelUI.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/extension/Configurable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/extension/ExtensionContainer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/extension/HighlightedElements.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/extension/IExtension.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/extension/SmallExtensionMap.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/BackwardCompatibleQuantityWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IAttributeHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IAttributeWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IElementContentHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IElementDOMHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IElementHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IElementWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IExtensionAttributeWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IExtensionElementWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IHintProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/IReadCompletionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/ITreeWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/ListHashTable$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/ListHashTable$EmptyIterator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/ListHashTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/ReadManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/UnknownElementWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/UnknownElements.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/WriteManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/LocalEntityResolver.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/StdXMLBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/TreeXmlReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/TreeXmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/XMLLocalParserFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/XMLParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/io/xml/XMLWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/IFreeplanePropertyListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/OptionPanelController$PropertyLoadListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/OptionPanelController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/ResourceBundles$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/ResourceBundles.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/ResourceController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/SetBooleanPropertyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/SetStringPropertyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/TranslatedObject$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/TranslatedObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/WindowConfigurationStorage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/BooleanProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/BooleanProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/BooleanProperty$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/BooleanProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ColorProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ColorProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ColorProperty$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ColorProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ComboProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/EditableComboProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/EditableComboProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/EditableComboProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/FontProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/FontProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/GrabKeyDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/GrabKeyDialog$ActionHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/GrabKeyDialog$InputPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/GrabKeyDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IKeystrokeValidator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IPropertyControl.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IPropertyControlCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IValidator$ValidationResult.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IValidator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/IconProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/KeyEventTranslator$Key.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/KeyEventTranslator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/KeyProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/KeyProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/NextColumnProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/NextLineProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/NumberProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/NumberProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/NumberProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel$IOptionPanelFeedback.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$BooleanOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$ColorOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$ComboOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$ComboPropertyCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$EmptyCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$FontOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$KeyOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$LanguagesComboCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$LengthOptionCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$LengthOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$NumberOptionCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$NumberOptionCreator$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$NumberOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$Path.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$PathOptionCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$PathOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$PropertyCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$PropertyCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$RemindValueCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$SeparatorCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$StringOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$TabCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$TextBoxOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$TextCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$TimePeriodOptionCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder$TimePeriodOptionCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/OptionPanelWindowConfigurationStorage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PathProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PathProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PathProperty$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PathProperty$SelectFileAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PathProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PropertyAdapter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/PropertyBean.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/QuantityProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/QuantityProperty$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/QuantityProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/RemindValueProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/RemindValueProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/SeparatorProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ShowPreferencesAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ShowPreferencesAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ShowPreferencesAction$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/ShowPreferencesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/StringProperty$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/StringProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/TabProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/TextBoxProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/TextLine.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/resources/components/VariableSizeCardLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/AFreeplaneAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/AMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/AMultipleNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/AccelerateableAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/AccelerateableAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ActionAcceleratorManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ActionAcceleratorManager$KeystrokeValidator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ActionAcceleratorManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ActionEnabler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ButtonModelStateChangeListenerForProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ColorTracker$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ColorTracker$Closer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ColorTracker$DisposeOnClose.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ColorTracker.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ColoredIconCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ControllerPopupMenuListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/DelayedMouseListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/DelayedMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/DelegatingPopupMenuListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/DoubleClickTimer$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/DoubleClickTimer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/EnabledAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ExampleFileFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/FileOpener$Listener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/FileOpener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/FixedBasicComboBoxEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IAcceleratorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IEditHandler$FirstAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IEditHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IFreeplaneAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IKeyStrokeProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IMenuItemEnabledListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IMouseWheelEventHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IUserInputListenerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IndexedTree$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IndexedTree$Node.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IndexedTree$UserObjects.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/IndexedTree.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/KeyAlreadyUsedException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/LabelAndMnemonicSetter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/LengthUnits.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/MenuSplitter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/MenuSplitterConfiguration.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/MouseInsideListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/SelectableAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/SetAcceleratorOnNextClickAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/ShowSelectionAsRectangleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/TimePeriodUnits.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/UIBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ActionToggleButtonModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/AutoHide$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/AutoHide$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/AutoHide.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/BitmapImagePreview.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/BlindIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ContainerComboBoxEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ContainerComboBoxEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/DashIconFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/DashIconFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/EnterPasswordDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/EnterPasswordDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/EnterPasswordDialog$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/EnterPasswordDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FButtonBar$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FButtonBar$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FButtonBar.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FreeplaneMenuBar.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FreeplaneToolBar$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/FreeplaneToolBar.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/IKeyBindingManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/IconSelectionPopupDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/IconSelectionPopupDialog$Position.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/IconSelectionPopupDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JAutoCheckBoxMenuItem.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JAutoRadioButtonMenuItem.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JAutoScrollBarPane$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JAutoScrollBarPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JAutoToggleButton.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JComboBoxWithBorder$RendererWithBorder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JComboBoxWithBorder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JFreeplaneMenuItem.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JResizer$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JResizer$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JResizer$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JResizer$Direction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JResizer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/JRestrictedSizeScrollPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/MultipleImage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ObjectAndIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OneTouchCollapseResizer$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OneTouchCollapseResizer$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OneTouchCollapseResizer$ComponentCollapseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OneTouchCollapseResizer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OptionalDontShowMeAgainDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OptionalDontShowMeAgainDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OptionalDontShowMeAgainDialog$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/OptionalDontShowMeAgainDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/PersistentEditableComboBox$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/PersistentEditableComboBox.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/PropertyChangeListenerWithSelectionSupport.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/RenderedContent$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/RenderedContent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/RenderedContentSupplier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ResizeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ResizerListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/SetFKeyAcceleratorOnNextClickAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/SetFKeyAcceleratorOnNextClickAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/SetFKeyAcceleratorOnNextClickAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ToolbarLayout$BlockEndPosition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/ToolbarLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/TypedListCellRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$1EscapeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$3$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools$InsertEolAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/UITools.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JCalendar$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JCalendar$JCalendarPopupMenu.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JCalendar.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JDayChooser$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JDayChooser$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JDayChooser$DecoratorButton.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JDayChooser$JDayButton.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JDayChooser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JMonthChooser$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JMonthChooser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JSpinField$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JSpinField$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JSpinField.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTimeChooser$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTimeChooser$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTimeChooser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTripleCalendar$JInfoPanel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTripleCalendar$JInfoPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JTripleCalendar.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/calendar/JYearChooser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/CssRuleBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/ScaledEditorKit.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/ScaledHTML$Renderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/ScaledHTML.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/ScaledStyleSheet.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/SynchronousScaledEditorKit$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/components/html/SynchronousScaledEditorKit.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/FreeplaneResourceAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/MenuStructureXmlHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/XmlEntryStructureBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/AcceleratebleActionProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/AcceleratorBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/AcceleratorDestroyer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/ActionFinder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/ActionSelectListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/ComponentBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/EntriesForAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/IAcceleratorMap.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/action/IEntriesForAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/AttributeAlreadySetException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/BuildPhaseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/BuildProcessFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/BuilderDestroyerPair$VisitorType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/BuilderDestroyerPair.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/ChildActionEntryRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/ChildEntryFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/ChildEntryRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EmptyEntryVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/Entry.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryNavigator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryNavigatorFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryPopupListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryPopupListenerCollection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/EntryVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/IllegalEntryVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/NullResourceAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/PhaseProcessor$Phase.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/PhaseProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/RecursiveMenuStructureProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/ResourceAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/SkippingEntryVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/generic/SubtreeProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/ComponentProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/ConditionalActionBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/EmptyMenuItemBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JComponentRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JMenuItemBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JMenuRadioGroupBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JMenubarBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JMenubarBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JToolbarBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/JToolbarComponentBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuAcceleratorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuActionComponentProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuBuildProcessFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuBuildProcessFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuBuildProcessFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuIconScaling.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/MenuRadioActionComponentProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/PopupBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/PopupMenuListenerForEntry$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/PopupMenuListenerForEntry.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/menubuilders/menu/ToolbarComponentProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/CachingIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory$SVGIconCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/FreeplaneIconFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/svgicons/GraphicsHints.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/TextChangeHotKeyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/TranslatedElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/TranslatedElementFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$2$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger$UrlCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/ui/textchanger/UITextChanger.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/CompoundActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/IActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/IUndoHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/SelectionActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$ActorList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$RedoAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler$UndoAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/undo/UndoHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ActionUtils$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ActionUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ClassLoaderFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ClassLoaderFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ColorUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/Compat$OS.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/Compat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ConfigurationUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ConstantObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/Convertible.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/DelayedRunner$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/DelayedRunner.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/FactoryMethod.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/FileUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/FixedHTMLWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/FreeplaneVersion.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/HtmlProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/HtmlUtils$HtmlReplacer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/HtmlUtils$IndexPair.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/HtmlUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/LogUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/MenuUtils$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/MenuUtils$MenuEntry.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/MenuUtils$MenuEntryTreeBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/MenuUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/ObjectRule.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/Pair.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/Quantity.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/RuleReference.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/SerializationMethod.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/SysUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/TextUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/TypeReference.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/XHTMLWriter$XHTMLFilterWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/XHTMLWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/XmlUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/XsltPipeReaderFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/XsltPipeReaderFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/DoubleListModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/DoubleListModel$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/DoubleListModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/ExtendedComboBoxModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/ExtendedComboBoxModel$ExtensionDataListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/ExtendedComboBoxModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/IListModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/MultipleValueMap.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/SortedComboBoxModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/SortedComboBoxModel$Comparator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/SortedComboBoxModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/SortedMapVector$MapElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/collection/SortedMapVector.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/LogHandlers.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/LogFileHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/LogInitializer$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/LogInitializer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/LoggingOutputStream.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/StdFormatter$StdOutErrLevel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/core/util/logging/internal/StdFormatter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/DashVariant.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/Attribute.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$16.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$17.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$AttributeProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$AttributeWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder$RegisteredAttributeProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeCompareCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeMatchesCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeNotExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistry.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistryComboBoxColumnModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistryElement$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistryElement$RegisteredAttributeValues.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistryElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeRegistryTableModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeTableLayoutModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/AttributeViewTypeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/ColumnWidthChangeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/FontSizeExtension.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/HideAllAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/IAttributeTableModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/IAttributesListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/IColumnWidthChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/ModelessAttributeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/NodeAttribute.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/NodeAttributeTableModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/ShowAllAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/ShowSelectedAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AddAttributeAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AddAttributeAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AddAttributeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AddStyleAttributes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$AddAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$ClonedComboBoxModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$DeleteAttributeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$DeleteValueAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$IteratingAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog$ReplaceValueAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributeDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AssignAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$ApplyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$CancelAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$ClosingListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$EditListAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$ImportAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog$OKAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeManagerDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeRegistryTable$ButtonEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeRegistryTable$ButtonRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeRegistryTable$ToggleAllAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeRegistryTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/AttributeUtilities.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/CopyAttributes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog$AttributeTreeNodeInfo.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog$MyRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog$TreeNodeInfo.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ImportAttributesDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$AddAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$CloseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$DeleteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$ListSelectionChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$RenameAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog$TextChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ListDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$AttributeChanger.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$AttributeRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$AttributeRenamer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$AttributeValueRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$IVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$InsertAttributeActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$Iterator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$RegistryAttributeActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$RegistryAttributeValueActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$RemoveAttributeActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$ReplaceAttributeValueActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$SetAttributeColumnWidthActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$SetAttributeNameActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$SetAttributeRestrictedActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$SetAttributeValueActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$SetAttributeVisibleActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$UnregistryAttributeActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController$UnregistryAttributeValueActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/MAttributeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/PasteAttributes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/RemoveAllAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/RemoveFirstAttributeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/RemoveLastAttributeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/attribute/mindmapmode/ShowAttributeDialogAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/ClipboardController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/CopyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/CopyIDAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/CopyNodeURIAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/CopySingleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/HtmlSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/MindMapHTMLWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/MindMapNodesSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/SingleCopySource.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/CloneAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/CutAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$DirectHtmlFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$FileListFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$IDataFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$ImageFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$MindMapNodesFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$Operation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$PasteHtmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$StringFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$StructuredHtmlFlavorHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController$TextFragment.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MClipboardController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/MoveAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/PasteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/SelectedPasteAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/SelectedPasteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/clipboard/mindmapmode/TargetFileCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudModel$Shape.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/CloudModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/CloudAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/CloudColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/CloudShapeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/MCloudController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/MCloudController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/MCloudController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/MCloudController$ExtensionCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/cloud/mindmapmode/MCloudController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/AutomaticEdgeColor$Rule.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/AutomaticEdgeColor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/AutomaticEdgeColorHook$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/AutomaticEdgeColorHook$Listener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/AutomaticEdgeColorHook.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeColorConfiguration.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeColorsConfigurationFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController$Rules.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/EdgeStyle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$ColorAdder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$ColorAdder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$RowButtons$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$RowButtons$2$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$RowButtons$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$RowButtons$ColorSwapper.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder$RowButtons.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/ColorListEditorPanelBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/EdgeColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/EdgeStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/EdgeStyleAsParentAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/EdgeWidthAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController$ExtensionCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/edge/mindmapmode/MEdgeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/Base64Coding.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/DesEncrypter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/EncryptionController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/EncryptionController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/EncryptionController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/EncryptionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/EnterPassword.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/PasswordStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/SingleDesEncrypter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/SwingPasswordStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/TripleDesEncrypter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/mindmapmode/EncryptedMap.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/mindmapmode/MEncryptionController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/mindmapmode/MEncryptionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/encrypt/mindmapmode/RemoveEncryption.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AccessedNodes$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AccessedNodes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AliasCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AliasEqualsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AliasExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/AliasStartsWithCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/Command.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/CopySuggestedReferenceAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$3$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$3$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$6$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep$Cardinality.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStep.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/ExploringStepBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/GlobalNodeCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/GlobalNodes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorerConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorerController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorerController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorerController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/MapExplorerController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeAlias.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeAliases.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher$MatchedElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/NodeMatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/mindmapmode/ConfigureNodeReference.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/mindmapmode/MMapExplorerController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/mindmapmode/MMapExplorerController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/explorer/mindmapmode/MMapExplorerController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/BranchXmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportBranchesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportBranchesToHTML.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportDialog$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportToHTML.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportToImage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportToOoWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ExportWithXSLT.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/IExportEngine.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ImageCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ImportMindmanagerFiles.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/ImportXmlFile.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/XmlImporter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/XsltExportEngine$XsltExportPolicy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/XsltExportEngine.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/XsltExportEngineFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/export/mindmapmode/XsltExportEngineFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$AddElementaryConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$CloseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$ConditionListMouseListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$ConditionListMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$ConditionListSelectionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$CreateConjunctConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$CreateDisjunctConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$CreateNotSatisfiedConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$DeleteConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$LoadAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$MindMapFilterFileFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$MoveConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$NameConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$SaveAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog$SplitConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/AFilterComposerDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ApplyNamedFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ApplyNoFilteringAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ApplySelectedViewConditionAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ApplyToVisibleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ApplyToVisibleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/DamerauLevenshtein.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/EditDistanceStringMatchingStrategy$Type.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/EditDistanceStringMatchingStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/EditFilterAction$FilterComposerDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/EditFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ExactStringMatchingStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Filter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Filter$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Filter$FilterInfoAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Filter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterComposerDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterConditionEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterConditionEditor$ElementaryConditionChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterConditionEditor$FilteredPropertyChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterConditionEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$FilterChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$ToggleFilterToolbarAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController$ToggleFilterToolbarAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterHistory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterInfo.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FilterMenuBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FindAction$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FindAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FindAction$FindNextAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FindAction$FindPreviousAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FindAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/FoundNodes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/NextNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/NextPresentationItemAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/PseudoDamerauLevenshtein$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/PseudoDamerauLevenshtein$Alignment.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/PseudoDamerauLevenshtein.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/QuickFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/QuickFindAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/QuickFindAllAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/QuickHighlightAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/QuickHighlightAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ReapplyFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/RedoFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Searcher$Algorithm.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/Searcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ShowAncestorsAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ShowAncestorsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ShowDescendantsAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/ShowDescendantsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/StringMatchingStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/UndoFilterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ASelectableCondition$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ASelectableCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/CompareConditionAdapter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ConditionFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ConditionNotSatisfiedDecorator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ConditionSnapshotFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ConjunctConditions.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/DefaultConditionRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/DisjunctConditions.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ICombinedCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/ICondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/IElementaryConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/JCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/NoFilteringCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/SelectedViewCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/filter/condition/SelectedViewSnapshotCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/DateFormatParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/DatePatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/DecimalFormatParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/DecimalPatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormatController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormatController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormatUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormattedDate.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormattedFormula.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormattedNumber.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormattedObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/FormatterPatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/IFormattedObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/IdentityPatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/IsoDateParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/NumberLiteralParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/Parser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/PatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/Scanner.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/ScannerController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/format/StandardPatternFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/AboutAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/DocumentationAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/DocumentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/FilePropertiesAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/FilePropertiesAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/FilePropertiesAction$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/FilePropertiesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/HelpController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/HotKeyInfoAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/OnlineDocumentationAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/OnlineDocumentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/OpenSourceForgeURLAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/help/OpenURLAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/highlight/HighlightController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/highlight/NodeHighlighter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/AccumulatedIcons.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/HierarchicalIcons$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/HierarchicalIcons$Mode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/HierarchicalIcons.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/HierarchicalIcons2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IIconInformation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IStateIconProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconBuilder$IconProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconClickedEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconContainedCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconNotFound.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconRegistry.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/IconStore.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/MindIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/PriorityCompareCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/PriorityConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/UIIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/UIIconSet.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/UserIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/ZoomedIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/IconFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/IconStoreFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/IconStoreFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/IconStoreFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/MindIconFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/factory/WeakValueCache.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/IconAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/IconSelectionPlugin.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$ExtensionCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$IconActionBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController$Keys.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/MIconController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/RemoveAllIconsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/icon/mindmapmode/RemoveIconAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ArrowType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorArrows.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorLabelCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorLabelContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorLabelEqualsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorModel$Shape.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/ConnectorProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/Connectors.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/FollowLinkAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/GotoLinkNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/HyperLinkCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/HyperLinkContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/HyperLinkEqualsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/HyperLinkExistsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/HyperTextLinkModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$16.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$ClonesMenuBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$ClosePopupAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController$LinkType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkMenuBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/LinkTransformer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/MapLinks.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/NodeLinkModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/NodeLinks.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/AddConnectorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/AddExecutionLinkAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/AddLocalLinkAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/AddMenuItemLinkAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ChangeConnectorArrowsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ChangeConnectorDashAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ChangeConnectorShapeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ClearLinkAnchorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ConnectorColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/ExtractLinkFromTextAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$16.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$17.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$18.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$19.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$4$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$CreateArrowLinkActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$MapLinkChanger$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$MapLinkChanger.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$MiddleLabelSetter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$SourceLabelSetter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$StyleCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController$TargetLabelSetter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MLinkController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MakeLinkFromAnchorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/MakeLinkToAnchorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/RemoveConnectorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SelectMenuItemDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SelectMenuItemDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SelectMenuItemDialog$CloseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SelectMenuItemDialog$MenuIconRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SelectMenuItemDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SetLinkAnchorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SetLinkByFileChooserAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/link/mindmapmode/SetLinkByTextFieldAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/AlwaysUnfoldedNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/CloneConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/CloneEncryptedNodeException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/CloneOfSelectedViewCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/CloneOfSelectedViewSnapshotCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/Cloner.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/Clones.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/DetachedNodeList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/EncryptionModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FirstGroupNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FirstGroupNodeFlag.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldAllAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldOneLevelAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldingPopupMenu$FoldAllPopupAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldingPopupMenu$FoldOneLevelPopupAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldingPopupMenu$UnfoldAllPopupAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldingPopupMenu$UnfoldOneLevelPopupAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$FoldingPopupMenu.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$UnfoldAllAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController$UnfoldOneLevelAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FoldingController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/FreeNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/GotoNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/HistoryInformationModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IEncrypter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IExtensionCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IMapChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IMapLifeCycleListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IMapSelection$NodePosition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IMapSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/IMapSelectionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/INodeChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/INodeSelectionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/INodeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/ITooltipProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/LeafCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapChangeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$ActionEnablerOnChange$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$ActionEnablerOnChange.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$ActionSelectorOnChange$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$ActionSelectorOnChange.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$Direction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$NodeRefreshKey.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$NodeRefreshValue.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$NodesDepthComparator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$Refresher$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController$Refresher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapNavigationUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapReader$NodeTreeCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapWriter$Hint.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapWriter$Mode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapWriter$WriterHint.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MapWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/MultipleNodeList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeAbsolutePath.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$CloneHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder$IconProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeChangeAnnouncer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeChangeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeDeletionEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeIconSetModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeLevelCompareCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeLevelConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeModel$CloneType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeModel$NodeChangeType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeMoveEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeRelativePath$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeRelativePath.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NodeWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NumberComboBoxEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/NumberComboBoxEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/PeriodicLevelCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/RootCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/SharedNodeData.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/ShowNextChildAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/SingleNodeList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/SummaryLevels.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/SummaryNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/SummaryNodeFlag.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/ToggleChildrenFoldedAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/ToggleFoldedAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/filemode/CenterAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/filemode/FMapController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/filemode/FMapModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/filemode/FNodeModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/filemode/OpenPathAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/ChangeNodeLevelController$ChangeNodeLevelLeftsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/ChangeNodeLevelController$ChangeNodeLevelRightsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/ChangeNodeLevelController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/ConvertCloneToIndependentNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/DeleteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/DocuMapAttribute.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/MMapModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewChildAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewFreeNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewMapViewAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewParentNode$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewParentNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewPreviousSiblingAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewSiblingAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NewSummaryAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NodeDownAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NodeSorter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/NodeUpAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/RemoveAllAlwaysUnfoldedNodeFlagsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/SetAlwaysUnfoldedNodeFlagsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/SummaryGroupEdgeListAdder$ParentProcessedNodes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/SummaryGroupEdgeListAdder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/map/mindmapmode/SummaryNodeMapUpdater.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mapio/MapIO.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mapio/mindmapmode/MMapIO.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/AController$ActionSelectorOnPropertyChange.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/AController$IActionOnChange.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/AController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/CloseAllMapsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/CloseAllOtherMapsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/CombinedPropertyChain.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/Controller$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/Controller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/ExclusivePropertyChain.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/FreeplaneActions.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/IControllerExecuteExtension.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/IPropertyHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/MapExtensions.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/ModeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/ModeController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/ModeController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/ModeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/MoveSelectedNodeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/MoveToRootAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/NodeHookDescriptor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$HookAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$SelectableEnumAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$SelectableHookAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$ToggleHookActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$XmlReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook$XmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/PersistentNodeHook.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/QuitAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/SelectionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/filemode/FModeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/LoadAcceleratorPresetsAction$AcceleratorPresetsBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/LoadAcceleratorPresetsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/MModeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/RedoAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/SaveAcceleratorPresetsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/SelectAllAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/SelectBranchAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/UndoAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/mode/mindmapmode/UndoAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/LocationModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/ChangeShiftXActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/ChangeShiftYActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/ChangeVGapActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/MLocationController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/MLocationController$StyleCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/MLocationController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodelocation/mindmapmode/ResetNodeLocationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/FontUtils.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeBorderModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeSizeModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$16.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$17.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$18.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$19.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$20.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$21.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$22.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$23.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$24.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$25.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$26.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$27.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$28.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder$FontProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleModel$HorizontalTextAlignment.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleModel$Shape.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/NodeStyleModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/ShapeConfigurationModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/BoldAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/CopyFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/FontFamilyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/FontSizeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/HorizontalTextAlignmentAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/ItalicAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$16.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$17.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$18.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$19.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$20.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$21.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$22.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$23.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController$StyleCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/MNodeStyleController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/NodeBackgroundColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/NodeColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/NodeColorBlendAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/NodeShapeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/PasteFormat.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/RemoveFormatAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/RevisionPlugin.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/nodestyle/mindmapmode/StrikeThroughAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/NoteWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/EditNoteInDialogAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$NoteDocumentListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController$SouthPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/MNoteController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/NoteDialogStarter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/NoteDialogStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/NoteManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/NoteManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/RemoveNoteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/SelectNoteAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/SelectNoteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/SetNoteWindowPosition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/note/mindmapmode/ShowHideNoteAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionBoxController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionChangedEvent$EventType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/CollectionChangedEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/EscapeKeyEventDispatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/MapPresentations.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NamedElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NamedElementCollection$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NamedElementCollection$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NamedElementCollection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NamedElementFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationKeyEventDispatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$ShowFirstSlideAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$ShowFirstSlideAndStartPresentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$ShowLastSlideAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$ShowNextSlideAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$ShowPreviousSlideAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$StartPresentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$StartPresentationOrShowNextSlideAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController$StopPresentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/NavigationPanelController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/Presentation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationAutomation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$9$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationEditorController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationEditorController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationEditorController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationEditorController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationKeyEventDispatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter$ActionInstaller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter$ExportAllPresentationsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter$ExportPresentationAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter$PresentationPngExporterFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationPngExporter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationState.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationStateChangeEvent$EventType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationStateChangeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationStateChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/PresentationWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/Slide$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/Slide$NodeIterator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/Slide.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideChangeEvent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/SlideEditorController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/Stringifyed.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableNamedElementCollection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/presentations/mindmapmode/UndoableSlide.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/AbstractPrintAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/BrowseAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/BrowseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/FitMap.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PageAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PageAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/Preview.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PreviewDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PrintAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PrintController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PrintDirectAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/PrintPreviewAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/print/ZoomAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/script/IScriptEditorStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/script/IScriptStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/spellchecker/mindmapmode/SpellCheckerController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/spellchecker/mindmapmode/SpellCheckerController$2$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/spellchecker/mindmapmode/SpellCheckerController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/spellchecker/mindmapmode/SpellCheckerController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/spellchecker/mindmapmode/SpellCheckerController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/AutomaticLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/AutomaticLayoutController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/AutomaticLayoutController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/ConditionPredicate.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/ConditionalStyleChecker.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/ConditionalStyleModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/ConditionalStyleModel$Item.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/ConditionalStyleModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/IStyle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleFilterController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleKeys.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/LogicalStyleModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$MyXmlReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle$XmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapStyleModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/MapViewLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/SetBooleanMapPropertyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/SetBooleanMapViewPropertyAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleMapModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleString.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/StyleTranslatedObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AManageConditionalStylesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/AssignStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ComboBoxRendererWithTooltip.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ConditionalStyleTable$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ConditionalStyleTable$ConditionEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ConditionalStyleTable$ConditionEditor$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ConditionalStyleTable$ConditionEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ConditionalStyleTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/CopyMapStylesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/CopyStyleExtensionsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/DefaultStyleRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/EditablePatternComboProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$7$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$AddConditionalStyleActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$ExtensionCopier.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$RemoveConditionalStyleActor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$StyleMenuBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController$StyleRemover.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MLogicalStyleController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MUIFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MUIFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MUIFactory$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MUIFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ManageMapConditionalStylesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ManageNodeConditionalStylesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/MapBackgroundColorAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/NewUserStyleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/NewUserStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/PatternProperty.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/RedefineStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/ShowFormatPanelAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderColorAndColorMatchesEdgeControlGroup$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderColorAndColorMatchesEdgeControlGroup$BorderColorListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderColorAndColorMatchesEdgeControlGroup$BorderColorMatchesEdgeColorListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderColorAndColorMatchesEdgeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderDashAndDashMatchesEdgeControlGroup$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderDashAndDashMatchesEdgeControlGroup$BorderDashListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderDashAndDashMatchesEdgeControlGroup$BorderDashMatchesEdgeDashListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderDashAndDashMatchesEdgeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderWidthAndBorderWidthMatchesEdgeControlGroup$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderWidthAndBorderWidthMatchesEdgeControlGroup$BorderWidthListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderWidthAndBorderWidthMatchesEdgeControlGroup$BorderWidthMatchesEdgeWidthListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/BorderWidthAndBorderWidthMatchesEdgeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/ChildDistanceControlGroup$ChildDistanceChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/ChildDistanceControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/CloudColorShapeControlGroup$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/CloudColorShapeControlGroup$CloudColorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/CloudColorShapeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/ControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/ControlGroupChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeColorControlGroup$EdgeColorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeColorControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeDashControlGroup$EdgeDashChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeDashControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeStyleControlGroup$EdgeStyleChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeStyleControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeWidthControlGroup$EdgeWidthChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EdgeWidthControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/EnumToStringMapper.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontBoldControlGroup$FontBoldChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontBoldControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontItalicControlGroup$FontItalicChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontItalicControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontNameControlGroup$FontNameChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontNameControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontSizeControlGroup$FontSizeChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontSizeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontStrikeThroughControlGroup$FontStrikeThroughChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FontStrikeThroughControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FormatControlGroup$NodeFormatChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/FormatControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/GroupSeparator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/IconSizeControlGroup$IconSizeChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/IconSizeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/MaxNodeWidthControlGroup$MaxNodeWidthChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/MaxNodeWidthControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/MinNodeWidthControlGroup$MinNodeWidthChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/MinNodeWidthControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NextColumnControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NextLineControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeBackgroundColorControlGroup$BgColorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeBackgroundColorControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeColorControlGroup$NodeColorChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeColorControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeFontHyperLinkControlGroup$FontHyperlinkChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeFontHyperLinkControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeHorizontalTextAlignmentControlGroup$NodeTextAlignmentChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeHorizontalTextAlignmentControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeNumberingControlGroup$NodeNumberingChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeNumberingControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeShapeControlGroup$NodeShapeChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/NodeShapeControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup$StyleChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleControlGroup.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleEditorPanel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleEditorPanel$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleEditorPanel$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleEditorPanel$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/styles/mindmapmode/styleeditorpanel/StyleEditorPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/AbstractContentTransformer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/DetailTextModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/FormatContentTransformer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/HighlightedTransformedObject.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/IContentTransformer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/MatchCaseNodeContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/MatchCaseNoteContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeItemRelation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeMatchesRegexpCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder$TransformedXMLExtension.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextCompareCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NodeTextConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/NoteContainsCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/RichTextModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/SetShortenerStateAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/ShortenedTextModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/TextController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/TextController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/TextController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/ToggleDetailsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/TransformationException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/ConditionalContentTransformer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/DeleteDetailsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditDetailsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditLongAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditDialog$CancelAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditDialog$DialogWindowListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditDialog$SplitAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditDialog$SubmitAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$EditedComponent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase$IEditControl.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeBase.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog$LongNodeDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeWYSIWYG$HTMLDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeWYSIWYG$HTMLDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EditNodeWYSIWYG.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EventBuffer$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/EventBuffer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/FreeplaneToSHTMLPropertyChangeAdapter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/IEditBaseCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/IEditorPaneListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/JoinNodesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$13.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$14.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$15.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController$EditEventDispatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/MTextController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SHTMLEditLinkAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SHTMLSetLinkByFileChooserAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SetImageByFileChooserAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SortNodes$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SortNodes$NodeTextComparator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SortNodes.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SplitNode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SplitToWordsAction$PatternMaker.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/SplitToWordsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/text/mindmapmode/UsePlainTextAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/CreationModificationDatePresenter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/CreationModificationDatePresenter$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/CreationModificationDatePresenter$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/CreationModificationDatePresenter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeComboBoxEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeComboBoxEditor$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeComboBoxEditor$ShowCalendarAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeComboBoxEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeConditionCreatedAfter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeConditionCreatedBefore.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeConditionModifiedAfter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeConditionModifiedBefore.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/time/TimeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/CloseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/CollapseableBoxBuilder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/CollapseableBoxBuilder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/CollapseableBoxBuilder$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/CollapseableBoxBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$FrameState.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$HorizontalToolbarPanel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController$HorizontalToolbarPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/FrameController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/IMapViewChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/IMapViewManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/INodeViewLifeCycleListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/INodeViewVisitor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/ToggleFullScreenAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/ToggleMenubarAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/ToggleScrollbarsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/ToggleToolbarAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/UIComponentVisibilityDispatcher.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/ui/ViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/FreeplaneUriConverter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/IMapConverter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/IMapInputStreamConverter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/MapConversionException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/MapVersionInterpreter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/MapVersionInterpreter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/NodeAndMapReference.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/UrlManager$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/UrlManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/UrlManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/DoAutomaticSave$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/DoAutomaticSave.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/DroppedMindMapOpener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/DummyLockManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ExportBranchAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ExportBranchAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$CloseAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$EscapeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$FileWrapper.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$RevisionTable$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$RevisionTable$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$RevisionTable$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog$RevisionTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/FileRevisionsDialog.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ImportBranchAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ImportExplorerFavoritesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ImportFolderStructureAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ImportLinkedBranchAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/ImportLinkedBranchWithoutRootAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/LockManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$AlternativeFileMode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$BackupFlag.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager$MindMapFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MFileManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MapLoader$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/MapLoader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/NewMapAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/NewMapFromTemplateAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/OpenAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/OpenURLMapAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/OpenUserDirAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/RevertAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/SaveAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/SaveAll.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/features/url/mindmapmode/SaveAsAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/addons/AddOnInstaller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/addons/AddOnProperties$AddOnType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/addons/AddOnProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/addons/AddOnsController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/addons/AddOnsController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/AppletResourceController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/AppletViewController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/AppletViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/BModeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/BModeControllerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/BToolbarContributor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/BToolbarContributor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$1$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$GlassPane$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet$GlassPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/applet/FreeplaneApplet.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationLifecycleListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationResourceController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationResourceController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationResourceController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationResourceController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationViewController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationViewController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationViewController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ApplicationViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/Browser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/CommandLineParser$Options.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/CommandLineParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/ConnectedToMenuView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$3$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneGUIStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneSplashModern$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneSplashModern$RootPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneSplashModern.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/FreeplaneStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/IconColorReplacer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/LastOpenedList$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/LastOpenedList$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/LastOpenedList$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/LastOpenedList$RecentFile.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/LastOpenedList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewDockingWindows$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewDockingWindows$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewDockingWindows$3$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewDockingWindows$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewDockingWindows.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MapViewSerializer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/MenuKeyProcessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/NavigationNextMapAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/NavigationPreviousMapAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/OpenLastOpenedAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/SingleInstanceManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/SingleInstanceManager$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/SingleInstanceManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/SplitPaneLayoutManagerDecorator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/UserPropertiesUpdater.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/protocols/freeplaneresource/Handler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/protocols/freeplaneresource/WrappedConnection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/FreeplaneSurveyProperties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner$OptionButtonListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner$Options.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyRunner.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyStarter$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyStarter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyStarter$RunningPoint.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/application/survey/SurveyStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/filemode/FModeControllerFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/filemode/FModeControllerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/headlessmode/FreeplaneHeadlessStarter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/headlessmode/HeadlessMModeControllerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/headlessmode/HeadlessMapViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/headlessmode/HeadlessUIController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/headlessmode/HeadlessUIController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/HttpVersionClient.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/MModeControllerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction$ConnectionStatus.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/UpdateCheckAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/DeleteLevelStyleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/DeleteLevelStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/DeleteUserStyleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/DeleteUserStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/DialogController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/EditStylesAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/EditStylesAction$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/EditStylesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/ExtensionInstaller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/NewLevelStyleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/NewLevelStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/NewUserStyleAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/NewUserStyleAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeController$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeController$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeControllerFactory$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeControllerFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeControllerFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/mindmapmode/stylemode/SModeControllerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/Activator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/ActivatorImpl$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/ActivatorImpl$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/ActivatorImpl$OsgiExtentionInstaller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/ActivatorImpl.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/IControllerExtensionProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/IModeControllerExtensionProvider.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/main/osgi/ResourcesUrlHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/CDATAReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/CdataContentXmlWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/ContentReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/IXMLBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/IXMLEntityResolver.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/IXMLParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/IXMLReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/IXMLValidator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/NonValidator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/PIReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/StdXMLBuilder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/StdXMLParser.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/StdXMLReader$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/StdXMLReader$StackedReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/StdXMLReader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/ValidatorPlugin.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLAttribute.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLEntityResolver.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLParseException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLParserFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLUtil.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLValidationException.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/n3/nanoxml/XMLWriter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook$TimerColorChanger$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook$TimerColorChanger$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook$TimerColorChanger$2$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook$TimerColorChanger$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook$TimerColorChanger.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/BlinkingNodeHook.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/FitToPage$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/FitToPage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/AddExternalImageAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/BitmapViewerComponent$CacheType.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/BitmapViewerComponent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/BitmapViewerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ChangeExternalImageAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalImagePopupMenu$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalImagePopupMenu$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalImagePopupMenu$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalImagePopupMenu$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalImagePopupMenu.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ExternalResource.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/IViewerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImageAdder$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImageAdder$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImageAdder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImageLoadingListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImageObserverCallback.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ImagePreview.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/MExternalImageDropListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/MapBackgroundClearAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/MapBackgroundImageAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/RemoveExternalImageAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ScalableComponent.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerBorder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController$CombiFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController$FactoryFileFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController$MyMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController$PasteMode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/filepreview/ViewerLayoutManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/BackAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/ForwardAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/NodeHistory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/NodeHistory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/NodeHistory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/nodehistory/NodeHolder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ExtendedProgress10Action.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ExtendedProgress25Action.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ProgressDownAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ProgressFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ProgressIcons.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ProgressUpAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/ProgressUtilities.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/progress/mindmapmode/RemoveProgressAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ClockState.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/PeriodPanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/PeriodUnit.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderCondition.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderConditionAfter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderConditionBefore.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderConditionController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderConditionExecuted.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderConditionLater.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderExtension.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$5$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$NotificationOptions.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$ReminderHookAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$TimeListAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook$TimeManagementAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/ReminderHook.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$1DateFormatComboBoxElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement$JTimePanel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimeManagement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimerBlinkTask$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimerBlinkTask$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/TimerBlinkTask.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/AllMapsNodeListAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/CoreTextAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/DateRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/DetailTextAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/FlatNodeTableFilterModel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/FlatNodeTableFilterModel$TableModelHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/FlatNodeTableFilterModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/IconsHolder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/IconsRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$11.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$12.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$FilterTextDocumentListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$FilterTextDocumentListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$FlatNodeTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$FlatNodeTableKeyListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$FlatNodeTableMouseAdapter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$HolderAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$MapChangeListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList$MapChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeList.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NodeListAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/NoteTextAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$Arrow.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$Directive.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$MouseHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$Row.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$SortableHeaderRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter$TableModelHandler.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TableSorter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TextAccessor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TextHolder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TextRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TimeWindowColumnSetting.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/features/time/mindmapmode/nodelist/TimeWindowConfigurationStorage.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ArrowIcon.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/BubbleMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ClickableImageCreator$AreaHolder.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ClickableImageCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/CloudHeightCalculator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ContentPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ContentPaneLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ContentSizeCalculator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DetailsView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/Drawable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DrawableEllipse.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DrawableNothing.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DrawableRectangle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DrawableShape.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DrawableTriangle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/DummyElement.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/FoldingCircle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/FoldingMark.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ForkMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/GlyphPainterMetricResetter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/INodeViewLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ImmediatelyValidatingPreferredSizeCalculator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MainView$ConnectorLocation.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MainView$TextModificationState.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapScroller.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$5$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$MapSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView$Selection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewChangeObserverCompound$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewChangeObserverCompound$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewChangeObserverCompound.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewController$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewController$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewController$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewScrollPane$MapViewPort$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewScrollPane$MapViewPort.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MapViewScrollPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MindMapLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/MouseArea.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NarrowHexagonMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltip$LinkMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltip.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$ComponentMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$exitTimerAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager$insideTimerAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeTooltipManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeView$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeView$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeView$Properties.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeViewFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeViewFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeViewFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NodeViewLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/NoteViewMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/OutlineLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/OvalMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/PaintingMode.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/RectangleMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ScrollingDirective.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/SelectableLayout.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ShapedMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ShowNotesInMapAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/SummaryEdgePainter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/VariableInsetsMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/VerticalNodeViewLayoutStrategy.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ViewLayoutTypeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/WideHexagonMainView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomInAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomOutAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomableLabel$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomableLabel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomableLabelUI$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomableLabelUI$LayoutData.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/ZoomableLabelUI.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$TableCreator$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$TableCreator$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$TableCreator$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$TableCreator$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager$TableCreator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePanelManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$10.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$6.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$7$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$7.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$8.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu$9.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributePopupMenu.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeSelectionChangeListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeSelectionChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$DialogTableCellEditor$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$DialogTableCellEditor.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$HeaderMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$TableHeader.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable$TableHeaderRendererImpl.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTable.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTableCellRenderer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeTableModel.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeView$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/AttributeViewScrollPane.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/CursorUpdater.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/EditAttributesAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/ExtendedAttributeTableModelDecorator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/attribute/ReducedAttributeTableModelDecorator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/ArcCloudView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/CloudView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/CloudViewFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/ConvexHull$thetaComparator.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/ConvexHull.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/RectangleCloudView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/cloud/StarCloudView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/AutomaticEdgeStyle.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/BezierEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/EdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/EdgeViewFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/HiddenEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/HiddenOutlineEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/HorizontalEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/LinearEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/OutlineEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/SharpBezierEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/SharpEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/SharpLinearEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/edge/SummaryEdgeView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/AConnectorView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/CollisionDetector.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/ConnectorView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/EdgeLinkView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/ILinkView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/OutlineLinkView.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/PathBBox.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/link/TextPainter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeExternalApplication$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeExternalApplication.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$InputMethodInUseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$MapViewChangeListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$MyDocumentListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$MyDocumentListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$MyNavigationFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField$TextFieldListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/EditNodeTextField.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/ExtendedEditorKit$RemoveStyleAttributeAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/ExtendedEditorKit.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/map/mindmapmode/MMapViewController.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/AltCodeChecker.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultMapMouseListener$1$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultMapMouseListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultMapMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultMouseWheelListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultMouseWheelListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultNodeKeyListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultNodeMouseMotionListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultNodeMouseMotionListener$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultNodeMouseMotionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DefaultNodeMouseWheelListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/DetailsViewMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/LinkNavigatorMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/MapsMenuAction$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/MapsMenuAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/ModesMenuAction.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/MovedMouseEventFilter.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/NodePopupMenuDisplayer.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/NodeSelector$TimeDelayedSelection$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/NodeSelector$TimeDelayedSelection.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/NodeSelector.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$2.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$3$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$3.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$4.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory$5.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/UserInputListenerFactory.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/GlassPaneManager.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/GlassPaneNodeSelector.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/INodeSelector.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MMapMouseListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeDragListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeDragListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeDropListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeDropListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeMotionListener$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeMotionListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/MNodeMouseWheelListener.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/NodeSelector$1.class less more
Binary diff not shown
freeplane/out/production/classes/org/freeplane/view/swing/ui/mindmapmode/NodeSelector.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/components/html/CssRuleBuilderShould$Metrics.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/components/html/CssRuleBuilderShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/HeadlessFreeplaneRunner.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/MenuBuilderAcceptanceTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/MenuBuilderIntegrationTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/XmlEntryStructureBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/AcceleratorBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/AcceleratorDestroyerTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/ActionFinderTest$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/ActionFinderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/ActionSelectListenerTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/ComponentBuilderTest$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/ComponentBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/action/EntriesForActionTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/BuilderDestroyerPairTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/EntryAccessorTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/EntryNavigatorTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/EntryPopupListenerCollectionTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/EntryTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/PhaseProcessorTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/RecursiveMenuStructureProcessorTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/generic/SubtreeProcessorTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JComponentRemoverTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenuItemBuilderTest$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenuItemBuilderTest$2.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenuItemBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenuRadioGroupBuilderTest$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenuRadioGroupBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JMenubarBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JToolbarBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/JToolbarComponentBuilderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/MenuAcceleratorChangeListenerTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/MenuBuildProcessFactoryTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/TestMenuBarFactory$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/TestMenuBarFactory.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/ui/menubuilders/menu/ToolbarComponentProviderTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/ConstantObjectShould$Rules.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/ConstantObjectShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/QuantityShould$Metrics.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/QuantityShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/RuleReferenceShould$Rules.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/core/util/RuleReferenceShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/ExploringStepBuilderSpec$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/ExploringStepBuilderSpec.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/ExploringStepSpec.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/MapExplorerSpec$ReferenceMapExplorer.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/MapExplorerSpec$TestCommand.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/explorer/MapExplorerSpec.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/ClonesTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/MapFake.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/NodeRelativePathTest.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/SummaryLevelsShould$FindGroupBeginNode.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/SummaryLevelsShould$FindGroupBeginNodeIndex.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/SummaryLevelsShould$FindSummaryNode.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/SummaryLevelsShould$FindSummaryNodeIndex.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/SummaryLevelsShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/map/mindmapmode/SummaryGroupEdgeListAdderShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/CollectionModelShould$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/CollectionModelShould$2.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/CollectionModelShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/MainFrame$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/MainFrame$2.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/presentations/mindmapmode/MainFrame.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/features/text/mindmapmode/SplitToWordsActionShould.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/main/application/survey/SurveyStarterShould$1.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/main/application/survey/SurveyStarterShould$2.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/main/application/survey/SurveyStarterShould$3.class less more
Binary diff not shown
freeplane/out/test/classes/org/freeplane/main/application/survey/SurveyStarterShould.class less more
Binary diff not shown
2121 return false; }}
2222
2323 function show_layer(layer) {
24 eval(pre + layer + post).position = 'relative';
24 eval(pre + layer + post).position = 'relative';
2525 eval(pre + layer + post).visibility = 'visible'; }
2626
2727 function hide_layer(layer) {
2929 eval(pre + layer + post).position = 'absolute'; }
3030
3131 function hide_folder(folder) {
32 hide_folding_layer(folder)
32 hide_folding_layer(folder);
3333 show_layer('show'+folder);
3434
3535 scrollBy(0,0); // This is a work around to make it work in Browsers (Explorer, Mozilla)
201201 ColorProperty.ResetColor=Herstel kleur
202202 combined=Gekombineer
203203 condition=Voorwaarde
204 ConfigureNodeReferenceAction.text=Konfigureer nodus verwysing
205204 confirmation=Bevestiging
206205 connector=Verbinder
207206 connector_arrows=Verbinderpyle
218217 CopyIDAction.text=Kopieer nodus ID
219218 CopyMapStylesAction.text=Kopieer kaart styl vanaf...
220219 CopyNodeURIAction.text=Kopieer nodus se URI
221 copyright=Kopiereg \u00A9 2000-2018 Freeplane span en ander
220 copyright=Kopiereg \u00A9 2000-2019 Freeplane span en ander
222221 CopySingleAction.text=Kopieer nodus (enkel)
223222 CopySingleAction.tooltip=Kopieer slegs die gekose nodus
224223 CopyStyleExtensionsAction.text=Kopieer uitbreidings van stylnodus
983982 plugins/ScriptEditor.sign=Beveilig skrip...
984983 plugins/ScriptEditor/window.Result=Resultaat:
985984 plugins/ScriptEditor/window.title=Redigeer skrip
986 plugins/TimeList.xml_Created=Geskep
987 plugins/TimeList.xml_Date=Datum
988 plugins/TimeList.xml_Details=Besonderhede
989 plugins/TimeList.xml_Icons=Ikone
990 plugins/TimeList.xml_Modified=Gewysig
991 plugins/TimeList.xml_Notes=Notas
992 plugins/TimeList.xml_Text=Teks
993 plugins/TimeManagement.xml_appendButton=Voeg datum in Seleksie
994 plugins/TimeManagement.xml_Cancel=Kanselleer
995 plugins/TimeManagement.xml_cancelButton=Kanselleer
996 plugins/TimeManagement.xml_closeButton=Sluit
997 plugins/TimeManagement.xml_Export=Uitvoer van geselekteerde nodii
998 plugins/TimeManagement.xml_Find=Soek
999 plugins/TimeManagement.xml_Goto=Gaan na
1000 plugins/TimeManagement.xml_hour=Uur:
1001 plugins/TimeManagement.xml_menu_actions=Aksies
1002 plugins/TimeManagement.xml_minute=Minuut:
1003 plugins/TimeManagement.xml_WindowTitle=Bestuur tyd
1004985 QuitAction.text=Sluit Freeplane
1005986 read_only=Lees net
1006987 ReadScriptError.text=Fout met die lees van die skrip
1007988 red=Rooi
1008989 RedoAction.text=Herdoen
990 reminder.appendButton=Voeg datum in Seleksie
991 reminder.Cancel=Kanselleer
992 reminder.cancelButton=Kanselleer
993 reminder.closeButton=Sluit
994 reminder.Created=Geskep
995 reminder.Details=Besonderhede
996 reminder.Export=Uitvoer van geselekteerde nodii
997 reminder.Find=Soek
998 reminder.Goto=Gaan na
999 reminder.hour=Uur:
1000 reminder.Icons=Ikone
1001 reminder.Map=Kaart
1002 reminder.menu_actions=Aksies
1003 reminder.minute=Minuut:
1004 reminder.Modified=Gewysig
1005 reminder.Notes=Notas
1006 reminder.Reminder=Herinnering
1007 reminder.Text=Teks
1008 reminder.WindowTitle=Bestuur tyd
10091009 ReminderHookAction.text=Verwyder herinnering
10101010 ReminderHookAction.tooltip=Verwyder 'n herinnering van 'n nodus.
1011 ReminderListAction.text=Bestuur take...
10111012 reminderNotification=Herinneringskennisgewing
10121013 remove_shortcut_question=Vervang kortpad?
10131014 RemoveAllIconsAction.text=Verwyder alle ikone
12801281 TextAlignAction.LEFT.text=Links gespasi\u00EBerde teks
12811282 TextAlignAction.RIGHT.text=Regs gespasi\u00EBerde teks
12821283 textalignment=Teks spasi\u00EBring
1283 TimeListAction.text=Bestuur take...
12841284 TimeManagementAction.text=Bestuur tyd...
12851285 TimeManagementAction.tooltip=<html>Wys die kalendermodule deur Kai Toedter.</html>
12861286 TimePeriodUnits.days=dae
318318 PageAction.text=...\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0635\u0641\u062D\u0629
319319 PasteAction.text=\u0644\u0635\u0642
320320 PatternToString.FontBold=\u0639\u0631\u064A\u0636
321 plugins/TimeList.xml_Created=\u062A\u0645 \u0625\u0646\u0634\u0627\u0621\u0629
322 plugins/TimeList.xml_Date=\u0627\u0644\u062A\u0627\u0631\u064A\u062E
323 plugins/TimeList.xml_Icons=\u0627\u0644\u0631\u0645\u0648\u0632
324 plugins/TimeList.xml_Modified=\u062A\u0645 \u0627\u0644\u062A\u0639\u062F\u064A\u0644
325 plugins/TimeList.xml_Text=\u0627\u0644\u0646\u0635
326 plugins/TimeManagement.xml_appendButton=\u0625\u062F\u0631\u0627\u062C \u0627\u0644\u0648\u0642\u062A \u0625\u0644\u0649 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u062D\u062F\u062F
327 plugins/TimeManagement.xml_Cancel=\u0625\u0644\u063A\u0627\u0621
328 plugins/TimeManagement.xml_cancelButton=\u0625\u0644\u063A\u0627\u0621
329 plugins/TimeManagement.xml_hour=Hour:
330 plugins/TimeManagement.xml_minute=Minute:
331 plugins/TimeManagement.xml_reminderButton=\u0627\u0644\u062A\u0630\u0643\u064A\u0631 \u0639\u0646\u062F \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062A
332 plugins/TimeManagement.xml_reminderButton.tooltip=<html>When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.<br> If you close the map, the timers are reactivated the next time, the map is opened.</html>
333 plugins/TimeManagement.xml_reminderNode.tooltip=Reminder scheduled at {0,date} {0,time}.
334 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current remnider is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
335 plugins/TimeManagement.xml_removeReminderButton=Remove Reminder
336 plugins/TimeManagement.xml_todayButton=\u0627\u0644\u064A\u0648\u0645
337 plugins/TimeManagement.xml_WindowTitle=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0648\u0642\u062A
338321 preferences=\u062A\u0641\u0636\u064A\u0644\u0627\u062A
339322 PrintAction.text=...\u0637\u0628\u0627\u0639\u0629
340323 PrintDirectAction.text=\u0637\u0628\u0627\u0639\u0629
341324 printing_settings=\u0645\u0642\u064A\u0627\u0633 \u0627\u0644\u0637\u0628\u0627\u0639\u0629
342325 QuitAction.text=\u062E\u0631\u0648\u062C
343326 read_only=\u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637
327 reminder.appendButton=\u0625\u062F\u0631\u0627\u062C \u0627\u0644\u0648\u0642\u062A \u0625\u0644\u0649 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u062D\u062F\u062F
328 reminder.Cancel=\u0625\u0644\u063A\u0627\u0621
329 reminder.cancelButton=\u0625\u0644\u063A\u0627\u0621
330 reminder.Created=\u062A\u0645 \u0625\u0646\u0634\u0627\u0621\u0629
331 reminder.hour=Hour:
332 reminder.Icons=\u0627\u0644\u0631\u0645\u0648\u0632
333 reminder.Map=\u062E\u0631\u064A\u0637\u0629
334 reminder.minute=Minute:
335 reminder.Modified=\u062A\u0645 \u0627\u0644\u062A\u0639\u062F\u064A\u0644
336 reminder.reminderButton=\u0627\u0644\u062A\u0630\u0643\u064A\u0631 \u0639\u0646\u062F \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062A
337 reminder.reminderButton.tooltip=<html>When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.<br> If you close the map, the timers are reactivated the next time, the map is opened.</html>
338 reminder.reminderNode.tooltip=Reminder scheduled at {0,date} {0,time}.
339 reminder.reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current remnider is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
340 reminder.removeReminderButton=Remove Reminder
341 reminder.Text=\u0627\u0644\u0646\u0635
342 reminder.todayButton=\u0627\u0644\u064A\u0648\u0645
343 reminder.WindowTitle=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0648\u0642\u062A
344344 ReminderHookAction.text=Remove Reminder
345345 ReminderHookAction.tooltip=Removes a reminder from a node.
346 ReminderListAction.text=\u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u062C\u062F\u0648\u0644\u0629 \u0627\u0644\u0648\u0642\u062A
347 ReminderListAction.tooltip=\u0639\u0631\u0636 \u0627\u0644\u0623\u0648\u0642\u0627\u062A \u0627\u0644\u0645\u062C\u062F\u0648\u0644\u0629 \u0648 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062C\u062F\u0648\u0644\u0629
346348 RemoveAllIconsAction.text=\u062D\u0630\u0641 \u062C\u0645\u064A\u0639 \u0627\u0644\u0631\u0645\u0648\u0632
347349 RemoveIconAction.text=\u062D\u0630\u0641 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0627\u062E\u064A\u0631
348350 repair_link=\u0625\u0635\u0644\u0627\u062D \u0631\u0627\u0628\u0637
383385 split=&\u0641\u0635\u0644
384386 style=\u0646\u0645\u0637
385387 svg=SVG[translate me]
386 TimeListAction.text=\u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u062C\u062F\u0648\u0644\u0629 \u0627\u0644\u0648\u0642\u062A
387 TimeListAction.tooltip=\u0639\u0631\u0636 \u0627\u0644\u0623\u0648\u0642\u0627\u062A \u0627\u0644\u0645\u062C\u062F\u0648\u0644\u0629 \u0648 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0645\u062C\u062F\u0648\u0644\u0629
388388 TimeManagementAction.text=\u0639\u0631\u0636 \u0627\u0644\u062A\u0642\u0648\u064A\u0645
389389 TimeManagementAction.tooltip=<html>Shows the calendar module by Kai Toedter.</html>
390390 ToggleChildrenFoldedAction.text=\u0637\u064A \u0641\u0631\u062F \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0627\u0628\u0646
505505 PatternToString.EdgeStyle=Estil del Cantell
506506 PatternToString.EdgeWidth=Ample del Cantell
507507 PatternToString.FontBold=Negreta
508 plugins/TimeList.xml_Created=Creat
509 plugins/TimeList.xml_Date=Data
510 plugins/TimeList.xml_Icons=Icones
511 plugins/TimeList.xml_Modified=Modificat
512 plugins/TimeList.xml_Notes=Notes[translate me]
513 plugins/TimeList.xml_Text=Text
514 plugins/TimeManagement.xml_appendButton=Afegeix la data als nodes seleccionats
515 plugins/TimeManagement.xml_Cancel=Cancel\u00B7la
516 plugins/TimeManagement.xml_cancelButton=Cancel\u00B7la
517 plugins/TimeManagement.xml_hour=Hores:
518 plugins/TimeManagement.xml_minute=Minuts:
519 plugins/TimeManagement.xml_reminderButton=Recorda-m'ho aquesta data
520 plugins/TimeManagement.xml_reminderButton.tooltip=<html>En pr\u00E9mer el temporalitzador es programa a la data indicada. Llavors, les icones pampalluguen requerint la vostra atenci\u00F3.<br> Si tanqueu el mapa, els temporitzadors es reactiven la propera vegada que obriu el mapa.</html>
521 plugins/TimeManagement.xml_reminderNode.tooltip=Recordatori programat el {0,date} a les {0,time}.
522 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>En aquest moment nom\u00E9s \u00E9s possible disposar d'un recordatori per node.<br>El recordatori actual est\u00E0 programat pel {0,date} a les {0,time}, el que vas triar anteriorment era pel {1,date} a les {1,time}. <br><br>Voleu modificar el recordatori del node (S\u00CD) <br>o voleu mantenir l'antic (NO)?</html>
523 plugins/TimeManagement.xml_removeReminderButton=Elimina el recordatori
524 plugins/TimeManagement.xml_removeReminderButton.tooltip=Elimina tots els recordatoris dels nodes seleccionats.
525 plugins/TimeManagement.xml_todayButton=Avui
526 plugins/TimeManagement.xml_WindowTitle=Administraci\u00F3 del temps
527508 preferences=Prefer\u00E8ncies
528509 PrintAction.text=Imprimeix...
529510 PrintDirectAction.text=Imprimeix
532513 read_only=Nom\u00E9s de Lectura
533514 RedoAction.text=Refer
534515 RedoFilterAction.text=Refer
516 reminder.appendButton=Afegeix la data als nodes seleccionats
517 reminder.Cancel=Cancel\u00B7la
518 reminder.cancelButton=Cancel\u00B7la
519 reminder.Created=Creat
520 reminder.hour=Hores:
521 reminder.Icons=Icones
522 reminder.Map=Mapa
523 reminder.minute=Minuts:
524 reminder.Modified=Modificat
525 reminder.Notes=Notes[translate me]
526 reminder.reminderButton=Recorda-m'ho aquesta data
527 reminder.reminderButton.tooltip=<html>En pr\u00E9mer el temporalitzador es programa a la data indicada. Llavors, les icones pampalluguen requerint la vostra atenci\u00F3.<br> Si tanqueu el mapa, els temporitzadors es reactiven la propera vegada que obriu el mapa.</html>
528 reminder.reminderNode.tooltip=Recordatori programat el {0,date} a les {0,time}.
529 reminder.reminderNode_onlyOneDate=<html>En aquest moment nom\u00E9s \u00E9s possible disposar d'un recordatori per node.<br>El recordatori actual est\u00E0 programat pel {0,date} a les {0,time}, el que vas triar anteriorment era pel {1,date} a les {1,time}. <br><br>Voleu modificar el recordatori del node (S\u00CD) <br>o voleu mantenir l'antic (NO)?</html>
530 reminder.removeReminderButton=Elimina el recordatori
531 reminder.removeReminderButton.tooltip=Elimina tots els recordatoris dels nodes seleccionats.
532 reminder.Text=Text
533 reminder.todayButton=Avui
534 reminder.WindowTitle=Administraci\u00F3 del temps
535535 ReminderHookAction.text=Elimina el recordatori
536536 ReminderHookAction.tooltip=Elimina el recordatori d'un node.
537 ReminderListAction.text=Mostra la llista de tasques programades...
538 ReminderListAction.tooltip=Mostra totes les tasques programades amb els nodes corresponents.
537539 RemoveAllIconsAction.text=Elimina totes les icones
538540 RemoveIconAction.text=Elimina l'\u00FAltima icona
539541 repair_link=Repara l'enlla\u00E7
581583 SplitNode.text=Split Node[translate me]
582584 style=Estil
583585 svg=SVG[translate me]
584 TimeListAction.text=Mostra la llista de tasques programades...
585 TimeListAction.tooltip=Mostra totes les tasques programades amb els nodes corresponents.
586586 TimeManagementAction.text=Mostra el calendari...
587587 TimeManagementAction.tooltip=<html>Mostra el m\u00F2dul del calendari d'en Kai Toedter.</html>
588588 ToggleChildrenFoldedAction.text=(Des)contreu els fills
243243 CopyIDAction.text=Kop\u00EDrovat ID uzlu
244244 CopyMapStylesAction.text=Kop\u00EDrovat styl mapy z...
245245 CopyNodeURIAction.text=Kop\u00EDrovat URI uzlu
246 copyright=Copyright \u00A9 2000-2018 Freeplane t\u00FDm a dal\u0161\u00ED
246 copyright=Copyright \u00A9 2000-2019 Freeplane t\u00FDm a dal\u0161\u00ED
247247 CopySingleAction.text=Kop\u00EDrovat samostatn\u011B
248248 CopySingleAction.tooltip=Kop\u00EDrovat vybran\u00FD uzel
249249 CopyStyleExtensionsAction.text=Kop\u00EDrovat roz\u0161\u00ED\u0159en\u00ED ze stylu uzlu
506506 FormatPaste.tooltip=<html>Aplikuje form\u00E1t na uzel.</html>
507507 formats_not_loaded=Nelze na\u010D\u00EDst form\u00E1t, soubor po\u0161kozen
508508 formula.error.attributeValueIsNull=Hodnota atributu ''{0}'' je po vyhodnocen\u00ED null.
509 formula.error.circularReference=Cyklick\u00FD odkaz: vzorec v uzlu "{0}'' odkazuje s\u00E1m na sebe.
509 formula.error.circularReference=Cyklick\u00FD odkaz: vzorec v uzlu {0} ''{1}'' odkazuje s\u00E1m na sebe.
510510 formula.EvaluateAllAction.text=Vyhodnotit v\u0161e
511511 formula.EvaluateAllAction.tooltip=Vyhodnotit v\u0161echny vzorce v sou\u010Dasn\u00E9 map\u011B
512512 formula.menuname=Vzorce
15291529 plugins/ScriptEditor/window.Result=V\u00FDsledek:
15301530 plugins/ScriptEditor/window.title=Editor skriptu
15311531 plugins/ScriptingEngine.illegalAccessToInternalAPI=Nep\u0159\u00EDpustn\u00FD p\u0159\u00EDstup do vnit\u0159n\u00EDho programov\u00E9ho rozhran\u00ED (package {0}). Kontaktuje v\u00FDvojov\u00FD team Freeplanu, m\u00E1te-li dojem, \u017Ee skriptovac\u00ED API je nedostate\u010Dn\u00E9.
1532 plugins/TimeList.xml_Created=Vytvo\u0159eno
1533 plugins/TimeList.xml_Date=Datum
1534 plugins/TimeList.xml_Details=Detaily
1535 plugins/TimeList.xml_Icons=Ikony
1536 plugins/TimeList.xml_Modified=Zm\u011Bn\u011Bno
1537 plugins/TimeList.xml_Notes=Pozn\u00E1mky
1538 plugins/TimeList.xml_Text=Text
1539 plugins/TimeManagement.xml_appendButton=Vlo\u017Eit datum do v\u00FDb\u011Bru
1540 plugins/TimeManagement.xml_Cancel=Storno
1541 plugins/TimeManagement.xml_cancelButton=Storno
1542 plugins/TimeManagement.xml_closeButton=Zav\u0159\u00EDt
1543 plugins/TimeManagement.xml_Export=Exportovat vybran\u00E9 uzly
1544 plugins/TimeManagement.xml_Find=Naj\u00EDt
1545 plugins/TimeManagement.xml_Goto=J\u00EDt na
1546 plugins/TimeManagement.xml_hour=Hodina:
1547 plugins/TimeManagement.xml_menu_actions=Akce
1548 plugins/TimeManagement.xml_minute=Minuta:
1549 plugins/TimeManagement.xml_reminderButton=Upozornit ve vybran\u00E9 datum
1550 plugins/TimeManagement.xml_reminderButton.tooltip=<html>P\u0159i stisknut\u00ED se vytvo\u0159\u00ED polo\u017Eka \u010Dasova\u010De dan\u00E9 datum. Blikaj\u00EDc\u00ED ikona v\u00E1s v p\u0159\u00EDslu\u0161n\u00E9 datum upozorn\u00ED.<br>\u010Casova\u010D se p\u0159i zav\u0159en\u00ED mapy deaktivuje do jej\u00EDho dal\u0161\u00EDho otev\u0159en\u00ED.</html>
1551 plugins/TimeManagement.xml_reminderNode.tooltip=Upozorn\u011Bn\u00ED napl\u00E1nov\u00E1no na {0,date} {0,time}.
1552 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Moment\u00E1ln\u011B m\u016F\u017Ee b\u00FDt nastaven pouze jeden \u010Dasova\u010D na uzel. <br>Aktu\u00E1ln\u00ED \u010Dasova\u010D je nastaven na {0,date} {0,time}, Va\u0161e volba byla {1,date} {1,time}. <br><br>P\u0159ejete si zm\u011Bnit \u010Dasova\u010D uzlu (ANO), <br>nebo si p\u0159ejete pou\u017E\u00EDt st\u00E1vaj\u00EDc\u00ED (NE)?</html>
1553 plugins/TimeManagement.xml_remindLaterButton=Upozornit pozd\u011Bji
1554 plugins/TimeManagement.xml_remindLaterButton.tooltip=Upozornit pozd\u011Bji
1555 plugins/TimeManagement.xml_removeReminderButton=Odstranit \u010Dasova\u010D
1556 plugins/TimeManagement.xml_removeReminderButton.tooltip=Odstran\u00ED \u010Dasova\u010De p\u0159i\u0159azen\u00E9 vybran\u00FDm uzl\u016Fm.
1557 plugins/TimeManagement.xml_Replace=Nahradit
1558 plugins/TimeManagement.xml_Replace_All=Nahradit v\u0161e
1559 plugins/TimeManagement.xml_Replace_Selected=Nahradit vybran\u00E9
1560 plugins/TimeManagement.xml_Select=Vybrat
1561 plugins/TimeManagement.xml_todayButton=Dnes
1562 plugins/TimeManagement.xml_WindowTitle=Spravovat \u010Das
1563 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Naj\u00EDt a nahradit
15641532 preferences=Nastaven\u00ED
15651533 presentation=Prezentace
15661534 presentation.combineAll=Kombinovat v\u0161echny prezentace
15901558 RedoAction.text=Znovu
15911559 RedoFilterAction.text=Znovu
15921560 regular_expressions=Regul\u00E1rn\u00ED v\u00FDrazy
1561 reminder.appendButton=Vlo\u017Eit datum do v\u00FDb\u011Bru
1562 reminder.Cancel=Storno
1563 reminder.cancelButton=Storno
1564 reminder.closeButton=Zav\u0159\u00EDt
1565 reminder.Created=Vytvo\u0159eno
1566 reminder.Details=Detaily
1567 reminder.Export=Exportovat vybran\u00E9 uzly
1568 reminder.Find=Naj\u00EDt
1569 reminder.Goto=J\u00EDt na
1570 reminder.hour=Hodina:
1571 reminder.Icons=Ikony
1572 reminder.Map=Mapa
1573 reminder.menu_actions=Akce
1574 reminder.minute=Minuta:
1575 reminder.Modified=Zm\u011Bn\u011Bno
1576 reminder.Notes=Pozn\u00E1mky
1577 reminder.Reminder=\u010Casova\u010D
1578 reminder.reminderButton=Upozornit ve vybran\u00E9 datum
1579 reminder.reminderButton.tooltip=<html>P\u0159i stisknut\u00ED se vytvo\u0159\u00ED polo\u017Eka \u010Dasova\u010De dan\u00E9 datum. Blikaj\u00EDc\u00ED ikona v\u00E1s v p\u0159\u00EDslu\u0161n\u00E9 datum upozorn\u00ED.<br>\u010Casova\u010D se p\u0159i zav\u0159en\u00ED mapy deaktivuje do jej\u00EDho dal\u0161\u00EDho otev\u0159en\u00ED.</html>
1580 reminder.reminderNode.tooltip=Upozorn\u011Bn\u00ED napl\u00E1nov\u00E1no na {0,date} {0,time}.
1581 reminder.reminderNode_onlyOneDate=<html>Moment\u00E1ln\u011B m\u016F\u017Ee b\u00FDt nastaven pouze jeden \u010Dasova\u010D na uzel. <br>Aktu\u00E1ln\u00ED \u010Dasova\u010D je nastaven na {0,date} {0,time}, Va\u0161e volba byla {1,date} {1,time}. <br><br>P\u0159ejete si zm\u011Bnit \u010Dasova\u010D uzlu (ANO), <br>nebo si p\u0159ejete pou\u017E\u00EDt st\u00E1vaj\u00EDc\u00ED (NE)?</html>
1582 reminder.remindLaterButton=Upozornit pozd\u011Bji
1583 reminder.remindLaterButton.tooltip=Upozornit pozd\u011Bji
1584 reminder.removeReminderButton=Odstranit \u010Dasova\u010D
1585 reminder.removeReminderButton.tooltip=Odstran\u00ED \u010Dasova\u010De p\u0159i\u0159azen\u00E9 vybran\u00FDm uzl\u016Fm.
1586 reminder.Replace=Nahradit
1587 reminder.Replace_All=Nahradit v\u0161e
1588 reminder.Replace_Selected=Nahradit vybran\u00E9
1589 reminder.Select=Vybrat
1590 reminder.Text=Text
1591 reminder.todayButton=Dnes
1592 reminder.WindowTitle=Spravovat \u010Das
1593 reminder.WindowTitle_All_Nodes=Naj\u00EDt a nahradit
15931594 ReminderHookAction.text=Odstranit \u010Dasova\u010D
15941595 ReminderHookAction.tooltip=Odstran\u00ED p\u0159ipomenut\u00ED z uzlu.
1596 ReminderListAction.text=Spravovat \u016Fkoly ...
1597 ReminderListAction.tooltip=Uk\u00E1zat v\u0161echny napl\u00E1novan\u00E9 datumy a odpov\u00EDdaj\u00EDc\u00ED uzly.
15951598 reminderNotification=Upozorn\u011Bn\u00ED \u010Dasova\u010De
15961599 remove_file_from_list_on_error=Soubor {0} se nepoda\u0159ilo otev\u0159\u00EDt. Odebrat jej ze seznamu naposledy otev\u0159en\u00FDch soubor\u016F?
15971600 remove_shortcut_question=Nahradit kl\u00E1vesovou zkratku?
19801983 TextAlignAction.RIGHT.text=Text zarovnan\u00FD vpravo
19811984 textalignment=Zarovn\u00E1n\u00ED textu
19821985 TextChangeHotKeyAction.text=Nastav kl\u00E1vesovou zkratku zm\u011Bny textu
1983 TimeListAction.text=Spravovat \u016Fkoly ...
1984 TimeListAction.tooltip=Uk\u00E1zat v\u0161echny napl\u00E1novan\u00E9 datumy a odpov\u00EDdaj\u00EDc\u00ED uzly.
19851986 TimeManagementAction.text=Spravovat \u010Das...
19861987 TimeManagementAction.tooltip=<html>Uk\u00E1\u017Ee modul kalend\u00E1\u0159 od Kaie Toedtera.</html>
19871988 TimePeriodUnits.days=dny
240240 CopyIDAction.text=Kopiere knudepunkt ID
241241 CopyMapStylesAction.text=Kopier MindMap typografi fra\u2026
242242 CopyNodeURIAction.text=Kopiere knudepunkt URL
243 copyright=Copyright \u00A9 2000-2018 Freeplane holdet og andre
243 copyright=Copyright \u00A9 2000-2019 Freeplane holdet og andre
244244 CopySingleAction.text=Kopiere knudepunkt (enkelt)
245245 CopySingleAction.tooltip=Kopier kun det valgte knudepunkt
246246 CopyStyleExtensionsAction.text=Kopiere udvidelser fra stil knudepunkt
499499 FormatPaste.tooltip=<html>Inds\u00E6tter formatet af et knudepunkt.</html>
500500 formats_not_loaded=Formater kunne ikke indl\u00E6ses, fil beskadiget
501501 formula.error.attributeValueIsNull=Attributv\u00E6rdi "{0}" er null efter evaluering.
502 formula.error.circularReference=Cirkul\u00E6r reference: formel i knudepunkt "{0}" refererer til sig selv.
502 formula.error.circularReference=Cirkul\u00E6r reference: formel i knudepunkt {0} ''{1}'' refererer til sig selv.
503503 formula.EvaluateAllAction.text=Evaluere alle
504504 formula.EvaluateAllAction.tooltip=Evaluere alle formler i det aktuelle Mindmap
505505 formula.menuname=Formler
14961496 plugins/ScriptEditor/window.Result=Resultat:
14971497 plugins/ScriptEditor/window.title=Script Editor
14981498 plugins/ScriptingEngine.illegalAccessToInternalAPI=Ulovlig adgang til det interne API (pakke {0}). - Kontakt Freeplane holdet, hvis scripting API ikke er kraftig nok.
1499 plugins/TimeList.xml_Created=Oprettet
1500 plugins/TimeList.xml_Date=Dato
1501 plugins/TimeList.xml_Details=Detaljer
1502 plugins/TimeList.xml_Icons=Ikoner
1503 plugins/TimeList.xml_Modified=Redigeret
1504 plugins/TimeList.xml_Notes=Noter
1505 plugins/TimeList.xml_Text=Tekst
1506 plugins/TimeManagement.xml_appendButton=Tilf\u00F8j dato til valgt knudepunkt
1507 plugins/TimeManagement.xml_Cancel=Annuller
1508 plugins/TimeManagement.xml_cancelButton=Annuller
1509 plugins/TimeManagement.xml_closeButton=Luk
1510 plugins/TimeManagement.xml_Export=Eksporter valgte knudepunkter
1511 plugins/TimeManagement.xml_Find=S\u00F8g
1512 plugins/TimeManagement.xml_Goto=G\u00E5 til
1513 plugins/TimeManagement.xml_hour=Time:
1514 plugins/TimeManagement.xml_menu_actions=Handlinger
1515 plugins/TimeManagement.xml_minute=Minut:
1516 plugins/TimeManagement.xml_reminderButton=P\u00E5mind mig p\u00E5 denne dato
1517 plugins/TimeManagement.xml_reminderButton.tooltip=<html>N\u00E5r p\u00E5virket, s\u00E6ttes en timer i gang til den angivne dato. P\u00E5 datoen vil blinkende ikoner tiltr\u00E6kke din opm\u00E6rksomhed.<br> Hvis du lukker MindMappen, reaktiveres timerne n\u00E6ste gang, MindMappen \u00E5bnes.</html>
1518 plugins/TimeManagement.xml_reminderNode.tooltip=P\u00E5minder skemalagt den {0,date} {0,time}.
1519 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>For nuv\u00E6rende m\u00E5 der kun v\u00E6re en p\u00E5mindelse per knudepunkt.<br>Den nuv\u00E6rende p\u00E5mindelse er sat til {date} {0,time}, dit valg var {1,date} {1,time}. <br><br>\u00D8nsker du at \u00E6ndre knudepunktets p\u00E5mindelsestidspunkt (JA) <br>eller \u00F8nsker du at beholde den gamle (NEJ)?</html>
1520 plugins/TimeManagement.xml_remindLaterButton=P\u00E5mind senere
1521 plugins/TimeManagement.xml_remindLaterButton.tooltip=P\u00E5mind senere
1522 plugins/TimeManagement.xml_removeReminderButton=Fjern p\u00E5mindelse
1523 plugins/TimeManagement.xml_removeReminderButton.tooltip=Fjern alle p\u00E5mindelser associeret med de valgte knudepunkter.
1524 plugins/TimeManagement.xml_Replace=Erstat
1525 plugins/TimeManagement.xml_Replace_All=Erstat alle
1526 plugins/TimeManagement.xml_Replace_Selected=Ersat valgte
1527 plugins/TimeManagement.xml_Select=V\u00E6lg
1528 plugins/TimeManagement.xml_todayButton=I dag
1529 plugins/TimeManagement.xml_WindowTitle=Time Management
1530 plugins/TimeManagement.xml_WindowTitle_All_Nodes=S\u00F8g & Erstat
15311499 preferences=Indstillinger
15321500 presentation=Pr\u00E6sentation
15331501 presentation.combineAll=Kombiner alle pr\u00E6sentationer
15571525 RedoAction.text=Gendan
15581526 RedoFilterAction.text=Gendan
15591527 regular_expressions=Regul\u00E6r udtryk
1528 reminder.appendButton=Tilf\u00F8j dato til valgt knudepunkt
1529 reminder.Cancel=Annuller
1530 reminder.cancelButton=Annuller
1531 reminder.closeButton=Luk
1532 reminder.Created=Oprettet
1533 reminder.Details=Detaljer
1534 reminder.Export=Eksporter valgte knudepunkter
1535 reminder.Find=S\u00F8g
1536 reminder.Goto=G\u00E5 til
1537 reminder.hour=Time:
1538 reminder.Icons=Ikoner
1539 reminder.Map=MindMap
1540 reminder.menu_actions=Handlinger
1541 reminder.minute=Minut:
1542 reminder.Modified=Redigeret
1543 reminder.Notes=Noter
1544 reminder.Reminder=P\u00E5mindelse
1545 reminder.reminderButton=P\u00E5mind mig p\u00E5 denne dato
1546 reminder.reminderButton.tooltip=<html>N\u00E5r p\u00E5virket, s\u00E6ttes en timer i gang til den angivne dato. P\u00E5 datoen vil blinkende ikoner tiltr\u00E6kke din opm\u00E6rksomhed.<br> Hvis du lukker MindMappen, reaktiveres timerne n\u00E6ste gang, MindMappen \u00E5bnes.</html>
1547 reminder.reminderNode.tooltip=P\u00E5minder skemalagt den {0,date} {0,time}.
1548 reminder.reminderNode_onlyOneDate=<html>For nuv\u00E6rende m\u00E5 der kun v\u00E6re en p\u00E5mindelse per knudepunkt.<br>Den nuv\u00E6rende p\u00E5mindelse er sat til {date} {0,time}, dit valg var {1,date} {1,time}. <br><br>\u00D8nsker du at \u00E6ndre knudepunktets p\u00E5mindelsestidspunkt (JA) <br>eller \u00F8nsker du at beholde den gamle (NEJ)?</html>
1549 reminder.remindLaterButton=P\u00E5mind senere
1550 reminder.remindLaterButton.tooltip=P\u00E5mind senere
1551 reminder.removeReminderButton=Fjern p\u00E5mindelse
1552 reminder.removeReminderButton.tooltip=Fjern alle p\u00E5mindelser associeret med de valgte knudepunkter.
1553 reminder.Replace=Erstat
1554 reminder.Replace_All=Erstat alle
1555 reminder.Replace_Selected=Ersat valgte
1556 reminder.Select=V\u00E6lg
1557 reminder.Text=Tekst
1558 reminder.todayButton=I dag
1559 reminder.WindowTitle=Time Management
1560 reminder.WindowTitle_All_Nodes=S\u00F8g & Erstat
15601561 ReminderHookAction.text=Fjern p\u00E5mindelse
15611562 ReminderHookAction.tooltip=Fjerner en p\u00E5mindelse fra et knudepunkt.
1563 ReminderListAction.text=Vis tidsskema listen...
1564 ReminderListAction.tooltip=Vis alle skemalagte tider og de tilh\u00F8rende knudepunkter.
15621565 reminderNotification=P\u00E5mindelse meddelse
15631566 remove_file_from_list_on_error=Filen {0} blev ikke \u00E5bnet. Fjern den fra fillisten seneste \u00E5bnede?
15641567 remove_shortcut_question=Erstatte genvej?
19091912 TextAlignAction.LEFT.text=Venstrejusteret tekst
19101913 TextAlignAction.RIGHT.text=H\u00F8jrejusteret tekst
19111914 textalignment=Tekstjustering
1912 TimeListAction.text=Vis tidsskema listen...
1913 TimeListAction.tooltip=Vis alle skemalagte tider og de tilh\u00F8rende knudepunkter.
19141915 TimeManagementAction.text=Vis kalender...
19151916 TimeManagementAction.tooltip=<html>Viser kalendermodulet af Kai Toedter.</html>
19161917 TimePeriodUnits.days=dage
235235 ColorProperty.ResetColor=Farbe zur\u00FCcksetzen
236236 combined=Kombiniert
237237 condition=Bedingung
238 ConfigureNodeReferenceAction.text=Knotenreferenz konfigurieren
239238 confirmation=Sicherheitsbest\u00E4tigung
240239 connector=Verbindung
241240 connector_arrows=Verbindungspfeile
253252 CopyIDAction.text=Knoten-ID kopieren
254253 CopyMapStylesAction.text=Knotenstile importieren...
255254 CopyNodeURIAction.text=Knoten-URI kopieren
256 copyright=Copyright \u00A9 2000-2018 Freeplane Entwicklungsteam und andere
255 copyright=Copyright \u00A9 2000-2019 Freeplane Entwicklungsteam und andere
257256 CopySingleAction.text=Kopieren (einzeln)
258257 CopySingleAction.tooltip=Kopiert nur den markierten Knoten
259258 CopyStyleExtensionsAction.text=Erweiterungen aus Knoten-Stil einf\u00FCgen
301300 EdgeColorAction.text=Linienfarbe...
302301 EdgeProperties=Linieneigenschaften
303302 EdgeStyleAction.bezier.text=geschwungen (Bezier)
304 EdgeStyleAction.bezier.tooltip=<html>Stellt die Verbindung zwischen den Knoten<br>als geschwungene Linie dar.</html>
303 EdgeStyleAction.bezier.tooltip=<html>Stellt die Verbindung zwischen den Knoten als geschwungene Linie dar.</html>
305304 EdgeStyleAction.hide_edge.text=Linie verstecken
306305 EdgeStyleAction.hide_edge.tooltip=<html>Wenn der Knoten selektiert ist, wird die<br>Verbindung zum Oberknoten gepunktet dargestellt.<br>Ist er nicht selektiert, so wird die Linie ausgeblendet.</html>
307306 EdgeStyleAction.horizontal.text=horizontal
308 EdgeStyleAction.horizontal.tooltip=<html>Stellt die Verbindung zwischen den Knoten<br>als horizontale und vertikale Linien dar.</html>
307 EdgeStyleAction.horizontal.tooltip=<html>Stellt die Verbindung zwischen den Knoten als horizontale und vertikale Linien dar.</html>
309308 EdgeStyleAction.linear.text=gerade
310 EdgeStyleAction.linear.tooltip=<html>Stellt die Verbindung zwischen den Knoten<br>als gerade Linie dar.</html>
309 EdgeStyleAction.linear.tooltip=<html>Stellt die Verbindung zwischen den Knoten als gerade Linie dar.</html>
311310 EdgeStyleAction.sharp_bezier.text=spitz und geschwungen
312 EdgeStyleAction.sharp_bezier.tooltip=<html>Stellt die Verbindung zwischen den Knoten<br>als geschwungene, spitz zulaufende Linie dar.</html>
311 EdgeStyleAction.sharp_bezier.tooltip=<html>Stellt die Verbindung zwischen den Knoten als geschwungene, spitz zulaufende Linie dar.</html>
313312 EdgeStyleAction.sharp_linear.text=gerade und spitz
314 EdgeStyleAction.sharp_linear.tooltip=<html>Stellt die Verbindung zwischen den Knoten<br>als gerade, spitz zulaufende Linie dar.</html>
313 EdgeStyleAction.sharp_linear.tooltip=<html>Stellt die Verbindung zwischen den Knoten als gerade, spitz zulaufende Linie dar.</html>
315314 EdgeStyleAsParentAction.text=wie \u00FCbergeordneter Knoten
316315 EdgeStyleAsParentAction.tooltip=<html>\u00DCbernimmt die Darstellung des Linientyps von seinem Oberknoten.</html>
317316 EdgeWidthAction_width_parent.text=geerbt
529528 formatting=Formatierung
530529 formula.ClearDependenciesAction.text=Abh\u00E4ngigkeiten l\u00F6schen
531530 formula.error.attributeValueIsNull=Das Attribut "{0}" hat den Wert NULL (ist nicht definiert).
532 formula.error.circularReference=Zirkelbezug: Die Formel im Knoten "{0}" nimmt Bezug auf sich selbst.
531 formula.error.circularReference=Zirkelbezug: Die Formel im Knoten {0} ''{1}'' nimmt Bezug auf sich selbst.
533532 formula.EvaluateAllAction.text=Alle Formeln auswerten
534533 formula.EvaluateAllAction.tooltip=Wertet alle Formeln der aktuellen Mindmap aus
535534 formula.menuname=&Formeln
990989 NotificationOptions.SELECT_NODE=Zur Erinnerung gehen
991990 ok=&OK
992991 OKAction.text=OK
992 OldReminderListAction.text=Zeige vergangene Erinnerungen...
993 OldReminderListAction.tooltip=Zeigt vergangene Erinnerungszeiten und die entsprechenden Knoten auf allen ge\u00F6ffneten MindMaps an.
993994 OnlineReference.text=Online-Mindmap-Dokumentation
994995 open=\u00D6ffnen
995996 open_asMindMap=Mindmap
996997 OpenAction.text=\u00D6ffnen...
998 OpenApiDocumentationAction.text=Freeplane API...
997999 OpenFreeplaneSiteAction.text=Freeplanes Webseite \u00F6ffnen
9981000 OpenMapsAddLocation.text=Ort aus Landkarte hinzuf\u00FCgen...
9991001 OpenMapsRemoveLocation.text=Landkarteneintrag entfernen
10211023 OptionPanel.always_show_less_than_N_nodes_after_load=Manche Knoten entfalten
10221024 OptionPanel.always_unfold_all_after_load=Keine Knoten falten
10231025 OptionPanel.antialias=Darstellung
1024 OptionPanel.antialias.tooltip=<html>Bestimmt das Aussehen der Mindmap. Bitte beachten:<br>Je h\u00F6her die Kantengl\u00E4ttung ist, desto mehr Rechenzeit wird f\u00FCr die Darstellung ben\u00F6tigt.</html>
1026 OptionPanel.antialias.tooltip=<html>Bestimmt das Aussehen der Mindmap. Bitte beachten: Je h\u00F6her die Kantengl\u00E4ttung ist, desto mehr Rechenzeit wird f\u00FCr die Darstellung ben\u00F6tigt.</html>
10251027 OptionPanel.antialias_all=Kantengl\u00E4ttung auf alles anwenden
10261028 OptionPanel.antialias_edges=Kantengl\u00E4ttung nur auf die Verbindungslinien der Knoten anwenden
10271029 OptionPanel.antialias_none=Keine Kantengl\u00E4ttung anwenden
10971099 OptionPanel.default_save_dir=Standardverzeichnis f\u00FCr neue Mindmaps
10981100 OptionPanel.Defaults=Standards
10991101 OptionPanel.delete_automatic_saves_at_exit=L\u00F6schen der automatisch gespeicherten Mindmaps beim Verlassen
1100 OptionPanel.delete_automatic_saves_at_exit.tooltip=<html> Wenn diese Option ausgew\u00E4hlt ist, werden beim<br>Schlie\u00DFen von Freeplane alle automatisch erstellten Sicherungen gel\u00F6scht.</html>
1102 OptionPanel.delete_automatic_saves_at_exit.tooltip=<html> Wenn diese Option ausgew\u00E4hlt ist, werden beim Schlie\u00DFen von Freeplane alle automatisch erstellten Sicherungen gel\u00F6scht.</html>
11011103 OptionPanel.delete_nodes_without_question=Knoten ohne Best\u00E4tigung l\u00F6schen?
11021104 OptionPanel.delete_nodes_without_question.tooltip=Wenn diese Option ausgew\u00E4hlt ist, werden Knoten ohne Nachfrage gel\u00F6scht. Dies kann bei unbeabsichtigtem L\u00F6schen zu Datenverlust f\u00FChren.
11031105 OptionPanel.disable_cursor_move_paper.tooltip=<html>Kein speziellen Cursor w\u00E4hrend des Verschiebe-Vorgangs angezeigen.</html>
11401142 OptionPanel.experimental_file_locking_on=Experimentelles Sperren der ge\u00F6ffneten Dateien
11411143 OptionPanel.experimental_file_locking_on.tooltip=<html> Experimentelles Feature</html>
11421144 OptionPanel.export_icons_in_html=Icons nach HTML exportieren
1143 OptionPanel.export_icons_in_html.tooltip=<html>Gibt an, ob die Icons auch nach HTML exportiert werden sollen.<br>Allerdings m\u00FCssen die Icons dann auch immer mit dem HTML kopiert werden, damit sie gefunden werden.</html>
1145 OptionPanel.export_icons_in_html.tooltip=<html>Gibt an, ob die Icons auch nach HTML exportiert werden sollen. Allerdings m\u00FCssen die Icons dann auch immer mit dem HTML kopiert werden, damit sie gefunden werden.</html>
11441146 OptionPanel.exported_image_resolution_dpi=Bildaufl\u00F6sung (in DPI) beim Export
11451147 OptionPanel.Files=Dateien
11461148 OptionPanel.first=Am Anfang
13181320 OptionPanel.relative=relativ
13191321 OptionPanel.remind_type_of_new_nodes.tooltip=<html><ul><li>"Nachfragen" fragt nach</li><li></html>"Ja" zeigt den Richt-Text-Editor an</li><li>"Nein" verwendet den einfachen Text-Editor</li></ul></html>
13201322 OptionPanel.remind_use_rich_text_in_new_nodes=F\u00FCr eingef\u00FCgte Knoten erweiterte Formatierung verwenden
1323 OptionPanel.reminder.showPastRemindersOnStart=Zeige vergangene Erinnerungen
13211324 OptionPanel.remindersBlink=Blinkende Erinnerung
13221325 OptionPanel.remindersShowNotifications=Erinnerung erzeugt Benachrichtigungseinblendung
13231326 OptionPanel.remindersStandardDelay=Erinnerungsaufschub
13461349 OptionPanel.scrolling_speed=Geschwindigkeit beim Scrollen
13471350 OptionPanel.scrollOnUnfold=Mindmap nach dem Entfalten eines Knotens neu zentrieren
13481351 OptionPanel.selection_method=Auswahlmodus
1349 OptionPanel.selection_method.tooltip=<html>Mit dem folgenden Schalter kann die verz\u00F6gerte Auswahl eines Schemas aktiviert bzw. deaktiviert werden.<br>\u00C4ndern Sie diese Option nicht, da sie ohnehin in auto.properties gespeichert werden.</html>
1352 OptionPanel.selection_method.tooltip=<html>Mit dem folgenden Schalter kann die verz\u00F6gerte Auswahl eines Schemas aktiviert bzw. deaktiviert werden. \u00C4ndern Sie diese Option nicht, da sie ohnehin in auto.properties gespeichert werden.</html>
13501353 OptionPanel.selection_method_by_click=Durch Mausklick
13511354 OptionPanel.selection_method_delayed=Verz\u00F6gert
13521355 OptionPanel.selection_method_direct=Direkt
14821485 OptionPanel.standardcloudcolor=Standard Wolkenfarbe
14831486 OptionPanel.standardcloudcolor.tooltip=<html>Legt die Standard Wolkenfarbe fest (in HTML-Notation)</html>
14841487 OptionPanel.standardcloudestyle=Standard Wolkenstil
1485 OptionPanel.standardcloudestyle.tooltip=<html>Legt den Standard Wolkenstil fest.<br>Im Moment wird nur die geschwungene Form (Bezier)unterst\u00FCtzt.</html>
1488 OptionPanel.standardcloudestyle.tooltip=<html>Legt den Standard-Wolkenstil fest. Im Moment wird nur die geschwungene Form (Bezier) unterst\u00FCtzt.</html>
14861489 OptionPanel.standardcloudshape=Standard-Wolkenform
14871490 OptionPanel.standarddrawrectangleforselection=Selektierten Knoten durch Rechteck anzeigen
14881491 OptionPanel.standarddrawrectangleforselection.tooltip=<html>Zeigt den selektierten Knoten an, indem ein Rechteck um ihn gezeichnet wird.</html>
14911494 OptionPanel.standardlinkestyle=Standard-Verbindungs-Stil
14921495 OptionPanel.standardlinkestyle.tooltip=<html>Legt den Standardstil f\u00FCr die Verbindung fest. </html>
14931496 OptionPanel.standardselectednodecolor=Standard-Farbe f\u00FCr ausgew\u00E4hlte Knoten
1494 OptionPanel.standardselectednodecolor.tooltip=<html>Legt die Standardfarbe f\u00FCr selektierte Knoten fest (in HTML-Notation).<br>Gilt nur, wenn die Option "Selektierten Knoten durch Rechteck anzeigen"<br><b>nicht</b> selektiert ist.</html>
1497 OptionPanel.standardselectednodecolor.tooltip=<html>Legt die Standardfarbe f\u00FCr selektierte Knoten fest (in HTML-Notation). Gilt nur, wenn die Option "Selektierten Knoten durch Rechteck anzeigen" nicht selektiert ist.</html>
14951498 OptionPanel.standardselectednoderectanglecolor=Farbe f\u00FCr das Rechteck zur Anzeige des ausgew\u00E4hlten Knoten
1496 OptionPanel.standardselectednoderectanglecolor.tooltip=<html>Legt die Farbe des Rechtecks fest mit dem der selektierte Knoten angezeigt wird (in HTML-Notation).<br>Gilt nur, wenn die Option "Selektierten Knoten durch Rechteck anzeigen" selektiert ist.</html>
1499 OptionPanel.standardselectednoderectanglecolor.tooltip=<html>Legt die Farbe des Rechtecks fest mit dem der selektierte Knoten angezeigt wird (in HTML-Notation). Gilt nur, wenn die Option "Selektierten Knoten durch Rechteck anzeigen" selektiert ist.</html>
14971500 OptionPanel.STAR=Stern
14981501 OptionPanel.statesymbolwidth=Breite der Statussymbole
14991502 OptionPanel.structured_html_import=Importiere HTML als Knotenhierarchie
15041507 OptionPanel.text.use_ctrl_key=<html>Um den Programm-Funktionen ein Tastaturk\u00FCrzel zuzuweisen,<br> verwenden Sie die Men\u00FCfunktion "Extras -> Tastaturk\u00FCrzel zuweisen"</html>
15051508 OptionPanel.textalignment=Textausrichtung
15061509 OptionPanel.time_for_automatic_save=Zeitabstand f\u00FCr automatisches Speichern
1507 OptionPanel.time_for_automatic_save.tooltip=<html>Legt die Zeit zwischen zwei aufeinanderfolgenden automatischen Speicherungen in Millisekunden fest <br>Wenn Sie diese Funktion deaktivieren wollen, dann setzen Sie die Zeit auf 200.00.00.000.</html>
1510 OptionPanel.time_for_automatic_save.tooltip=<html>Legt die Zeit zwischen zwei aufeinanderfolgenden automatischen Speicherungen in Millisekunden fest. Wenn Sie diese Funktion deaktivieren wollen, dann setzen Sie die Zeit auf 200.00.00.000.</html>
15081511 OptionPanel.time_for_delayed_selection=Zeit f\u00FCr die verz\u00F6gerte Auswahl (in Millisekunden)
1509 OptionPanel.time_for_delayed_selection.tooltip=<html>Legt fest, wie lange die Maus \u00FCber dem Knoten sein muss, bevor er ausgew\u00E4hlt wird.<br>Ein Wert von 1 bedeutet direkte Auswahl mit der Maus (ohne Klick).</html>
1512 OptionPanel.time_for_delayed_selection.tooltip=<html>Legt fest, wie lange die Maus \u00FCber dem Knoten sein muss, bevor er ausgew\u00E4hlt wird. Ein Wert von 1 bedeutet direkte Auswahl mit der Maus (ohne Klick).</html>
15101513 OptionPanel.toolbar_icon_height=H\u00F6he der Symbole in der Symbolleiste
15111514 OptionPanel.toolTipManager.dismissDelay=Ausblenden des Tooltips (in Millisekunden)
15121515 OptionPanel.toolTipManager.initialDelay=Anf\u00E4ngliche Verz\u00F6gerung (in Millisekunden)
15981601 plugins/ScriptEditor/window.Result=Ergebnis:
15991602 plugins/ScriptEditor/window.title=Skript-Editor
16001603 plugins/ScriptingEngine.illegalAccessToInternalAPI=Unerlaubter Zugriff auf die interne API (Paket {0}). - Bitte kontaktieren Sie das Freeplane-Team, falls die Skript-API nicht ausreicht.
1601 plugins/TimeList.xml_Created=Erzeugt
1602 plugins/TimeList.xml_Date=Termin
1603 plugins/TimeList.xml_Details=Details
1604 plugins/TimeList.xml_Icons=Icons
1605 plugins/TimeList.xml_Modified=Ver\u00E4ndert
1606 plugins/TimeList.xml_Notes=Notizen
1607 plugins/TimeList.xml_Text=Text
1608 plugins/TimeManagement.xml_appendButton=Datum in Auswahl einf\u00FCgen
1609 plugins/TimeManagement.xml_Cancel=Abbrechen
1610 plugins/TimeManagement.xml_cancelButton=Abbrechen
1611 plugins/TimeManagement.xml_closeButton=Schlie\u00DFen
1612 plugins/TimeManagement.xml_Export=Markierte Knoten exportieren
1613 plugins/TimeManagement.xml_Find=Suchen
1614 plugins/TimeManagement.xml_Goto=Selektieren und schlie\u00DFen
1615 plugins/TimeManagement.xml_hour=Stunde:
1616 plugins/TimeManagement.xml_menu_actions=Aktionen
1617 plugins/TimeManagement.xml_minute=Minute:
1618 plugins/TimeManagement.xml_reminderButton=Wiedervorlage
1619 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Zur gegebenen Zeit werden Sie durch blinkende Icons benachrichtigt - allerdings nur, wenn Freeplane l\u00E4uft.<br>Wenn Sie Freeplane beenden, wird der Timer beim n\u00E4chsten \u00D6ffnen dieser Mindmap erneut gestartet.</html>
1620 plugins/TimeManagement.xml_reminderNode.tooltip=Wiedervorlage am {0,date} {0,time}.
1621 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Zur Zeit kann nur ein Datum pro Knoten gespeichert werden.<br><br>Das aktuell eingestellte Datum ist {0,date} {0,time},<br> Sie wollten allerdings {1,date} {1,time}. <br><br>Wollen Sie das Datum \u00E4ndern (JA), <br>oder m\u00F6chten Sie das eingestellte Datum beibehalten (NEIN)?</html>
1622 plugins/TimeManagement.xml_remindLaterButton=sp\u00E4tere Erinnerung
1623 plugins/TimeManagement.xml_remindLaterButton.tooltip=sp\u00E4tere Erinnerung
1624 plugins/TimeManagement.xml_removeReminderButton=Wiedervorlage &entfernen
1625 plugins/TimeManagement.xml_removeReminderButton.tooltip=Entfernt alle Wiedervorlagen der ausgew\u00E4hlten Knoten.
1626 plugins/TimeManagement.xml_Replace=Ersetzen
1627 plugins/TimeManagement.xml_Replace_All=Alle ersetzen
1628 plugins/TimeManagement.xml_Replace_Selected=Markierte ersetzen
1629 plugins/TimeManagement.xml_Select=Ausw\u00E4hlen
1630 plugins/TimeManagement.xml_todayButton=Heute
1631 plugins/TimeManagement.xml_WindowTitle=Zeit- und Aufgabenplanung
1632 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Suchen & Ersetzen
16331604 preferences=Einstellungen
16341605 presentation=Pr\u00E4sentation
16351606 presentation.combineAll=Alle Pr\u00E4sentationen verbinden
16601631 RedoAction.text=Wiederherstellen
16611632 RedoFilterAction.text=Wiederherstellen
16621633 regular_expressions=Regul\u00E4re Ausdr\u00FCcke
1634 reminder.appendButton=Datum in Auswahl einf\u00FCgen
1635 reminder.Cancel=Abbrechen
1636 reminder.cancelButton=Abbrechen
1637 reminder.closeButton=Schlie\u00DFen
1638 reminder.Created=Erzeugt
1639 reminder.Details=Details
1640 reminder.Export=Markierte Knoten exportieren
1641 reminder.Find=Suchen
1642 reminder.Goto=Selektieren und schlie\u00DFen
1643 reminder.hour=Stunde:
1644 reminder.Icons=Icons
1645 reminder.Map=Mindmap
1646 reminder.menu_actions=Aktionen
1647 reminder.minute=Minute:
1648 reminder.Modified=Ver\u00E4ndert
1649 reminder.Notes=Notizen
1650 reminder.Reminder=Erinnerung
1651 reminder.reminderButton=Wiedervorlage
1652 reminder.reminderButton.tooltip=<html>Zur gegebenen Zeit werden Sie durch blinkende Icons benachrichtigt - allerdings nur, wenn Freeplane l\u00E4uft.<br>Wenn Sie Freeplane beenden, wird der Timer beim n\u00E4chsten \u00D6ffnen dieser Mindmap erneut gestartet.</html>
1653 reminder.reminderNode.tooltip=Wiedervorlage am {0,date} {0,time}.
1654 reminder.reminderNode_onlyOneDate=<html>Zur Zeit kann nur ein Datum pro Knoten gespeichert werden.<br><br>Das aktuell eingestellte Datum ist {0,date} {0,time},<br> Sie wollten allerdings {1,date} {1,time}. <br><br>Wollen Sie das Datum \u00E4ndern (JA), <br>oder m\u00F6chten Sie das eingestellte Datum beibehalten (NEIN)?</html>
1655 reminder.remindLaterButton=sp\u00E4tere Erinnerung
1656 reminder.remindLaterButton.tooltip=sp\u00E4tere Erinnerung
1657 reminder.Remove_All=Alle Erinnerungen entfernen
1658 reminder.Remove_Selected=Ausgew\u00E4hlte Erinnerungen entfernen
1659 reminder.removeReminderButton=Wiedervorlage &entfernen
1660 reminder.removeReminderButton.tooltip=Entfernt alle Wiedervorlagen der ausgew\u00E4hlten Knoten.
1661 reminder.Replace=Ersetzen
1662 reminder.Replace_All=Alle ersetzen
1663 reminder.Replace_Selected=Markierte ersetzen
1664 reminder.Run_All=Alle Skripte starten
1665 reminder.Run_Selected=Ausgew\u00E4hlte Skripte starten
1666 reminder.Select=Ausw\u00E4hlen
1667 reminder.Text=Text
1668 reminder.todayButton=Heute
1669 reminder.WindowTitle=Erinnerungen verwalten
1670 reminder.WindowTitle_All_Nodes=Suchen & Ersetzen
1671 reminder.WindowTitle_pastReminders=Vergangene Erinnerungen
1672 reminder_script_error=Fehler {0} in Erinnerungs-Skript in Mindmap {1} Knoten {2}
16631673 ReminderHookAction.text=Wiedervorlage entfernen
16641674 ReminderHookAction.tooltip=Entfernt eine Wiedervorlage.
1675 ReminderListAction.text=Aufgaben und Erinnerungen verwalten...
1676 ReminderListAction.tooltip=Zeigt alle Wiedervorlagezeiten und die dazugeh\u00F6rigen Knoten.
16651677 reminderNotification=Erinnerungsbenachrichtigung
16661678 remove_file_from_list_on_error=Konnte die Datei {0} nicht \u00F6ffnen. Soll sie aus der Liste der zuletzt ge\u00F6ffneten Mindmaps entfernt werden?
16671679 remove_shortcut_question=Tastaturk\u00FCrzel ersetzen?
17581770 SetLinkAnchorAction.tooltip_anchored=<html>Setzt aktuellen Knoten als Bezugspunkt von dem aus<br/>bzw. zu dem ein lokaler bzw. datei\u00FCbergreifender<br/>Hyperlink erstellt werden kann.<br/>Aktuell: {0}</html>
17591771 SetLinkByFileChooserAction.text=Link auf Datei...
17601772 SetLinkByTextFieldAction.text=Link per Textfeldeingabe...
1773 SetNodeAliasAction.text=Knoten-Alias setzen
17611774 SetNodeLink.text=Link auf Knoten...
17621775 SetNoteWindowPosition.bottom.text=Unten
17631776 SetNoteWindowPosition.left.text=Links
20722085 TextAlignAction.RIGHT.text=Rechts ausgerichteter Text
20732086 textalignment=Textausrichtung
20742087 TextChangeHotKeyAction.text=Tastenk\u00FCrzel f\u00FCr Text\u00E4nderung setzen
2075 TimeListAction.text=Zeit- und Aufgabenplanung
2076 TimeListAction.tooltip=Zeigt alle Wiedervorlagezeiten und die dazugeh\u00F6rigen Knoten.
20772088 TimeManagementAction.text=Kalender anzeigen...
20782089 TimeManagementAction.tooltip=<html>Zeigt das Kalender-Modul von Kai Toedter.</html>
20792090 TimePeriodUnits.days=Tage
438438 filter_leaf=\u039A\u03CC\u03BC\u03B2\u03BF\u03C2 \u03C6\u03CD\u03BB\u03BB\u03BF\u03C5
439439 filter_link=\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03B9\u03C3\u03C4\u03BF\u03CD (Hyperlink)
440440 filter_match_approximately=\u03A0\u03B5\u03C1\u03AF\u03C0\u03BF\u03C5
441 filter_match_approximately.tooltip=<html>\u039D\u03B1 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B5\u03B3\u03B3\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03C3\u03BC\u03B1\u03C4\u03B1,<br>\u03C0\u03C7. \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 '\u03BC\u03CD\u03B3\u03B5\u03C2' \u03B8\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B1\u03B9 '\u03BC\u03CD\u03B5\u03C2'.</html>
441 filter_match_approximately.tooltip=<html>\u039D\u03B1 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B5\u03B3\u03B3\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03C3\u03BC\u03B1\u03C4\u03B1,<br/>\u03C0\u03C7. \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 '\u03BC\u03CD\u03B3\u03B5\u03C2' \u03B8\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B1\u03B9 '\u03BC\u03CD\u03B5\u03C2'.</html>
442442 filter_match_case=\u03A4\u03B1\u03AF\u03C1\u03B9\u03B1\u03C3\u03BC\u03B1 \u03BA\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03C9\u03BD/\u03C0\u03B5\u03B6\u03CE\u03BD
443443 filter_match_case.tooltip=\u039D\u03B1 \u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C5\u03C0'\u03CC\u03C8\u03B7 \u03C4\u03B1 \u03BA\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03B1/\u03C0\u03B5\u03B6\u03AC \u03C3\u03C4\u03B7\u03BD \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7.
444444 filter_modified_after=\u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03AE\u03B8\u03B7\u03BA\u03B5 \u03BC\u03B5\u03C4\u03AC
503503 FormatPaste.tooltip=<html>\u0395\u03C0\u03B9\u03BA\u03BF\u03BB\u03AC \u03C4\u03B7\u03BD \u03BC\u03BF\u03C1\u03C6\u03AE \u03B5\u03BD\u03CC\u03C2 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5.</html>
504504 formats_not_loaded=\u039F\u03B9 \u03BC\u03BF\u03C1\u03C6\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 \u03B4\u03B5 \u03C6\u03BF\u03C1\u03C4\u03CE\u03B8\u03B7\u03BA\u03B1\u03BD, \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03AD\u03C7\u03B5\u03B9 \u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03C1\u03B1\u03C6\u03B5\u03AF
505505 formula.error.attributeValueIsNull=\u0397 \u03C4\u03B9\u03BC\u03AE \u03C4\u03BF\u03C5 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03BF\u03CD "{0}" \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03BA\u03B5\u03BD\u03AE \u03BC\u03B5\u03C4\u03AC \u03C4\u03B7\u03BD \u03B1\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7.
506 formula.error.circularReference=\u039A\u03C5\u03BA\u03BB\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC:\u039F \u03C4\u03CD\u03C0\u03BF\u03C2 \u03C3\u03C4\u03BF\u03BD \u03BA\u03CC\u03BC\u03B2\u03BF "{0}" \u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03B5\u03B9 \u03C4\u03BF\u03BD \u03B5\u03B1\u03C5\u03C4\u03CC \u03C4\u03BF\u03C5.
506 formula.error.circularReference=\u039A\u03C5\u03BA\u03BB\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC:\u039F \u03C4\u03CD\u03C0\u03BF\u03C2 \u03C3\u03C4\u03BF\u03BD \u03BA\u03CC\u03BC\u03B2\u03BF {0} ''{1}'' \u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03B5\u03B9 \u03C4\u03BF\u03BD \u03B5\u03B1\u03C5\u03C4\u03CC \u03C4\u03BF\u03C5.
507507 formula.EvaluateAllAction.text=\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD
508508 formula.EvaluateAllAction.tooltip=\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03A4\u03CD\u03C0\u03C9\u03BD/\u0395\u03BD\u03C4\u03BF\u03BB\u03CE\u03BD \u03C3\u03C4\u03BF\u03BD \u03C4\u03C1\u03AD\u03C7\u03BF\u03BD\u03C4\u03B1 \u03C7\u03AC\u03C1\u03C4\u03B7
509509 formula.menuname=\u03A4\u03CD\u03C0\u03BF\u03B9/\u0395\u03BD\u03C4\u03BF\u03BB\u03AD\u03C2
877877 no_copy_attributes_before_paste_attributes=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03AC\u03C8\u03C4\u03B5 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03BA\u03AC\u03C4\u03B9.
878878 NO_FORMAT=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
879879 no_format_copy_before_format_paste=\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF\u03C2 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BA\u03BF\u03BB\u03AE\u03C3\u03B5\u03B9\u03C2 \u03BC\u03AF\u03B1 \u03BC\u03BF\u03C1\u03C6\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03C0\u03C1\u03B9\u03BD \u03B1\u03BD\u03C4\u03B9\u03B3\u03C1\u03AC\u03C8\u03B5\u03B9\u03C2.
880 no_found_from=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03C4\u03BF "{0}" \u03B1\u03C0\u03CC \u03C4\u03BF "{1}"
881 no_more_found_from=\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03AC\u03BB\u03BB\u03B1 "{0}" \u03B1\u03C0\u03CC \u03C4\u03BF "{1}".
880 no_found_from=<html>\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03C4\u03BF <u>"{0}"</u> \u03B1\u03C0\u03CC \u03C4\u03BF "{1}".</html>
881 no_more_found_from=<html>\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03AC\u03BB\u03BB\u03B1 <u>"{0}"</u> \u03B1\u03C0\u03CC \u03C4\u03BF "{1}".</html>
882882 no_previous_find=\u0397 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03AE\u03C4\u03B1\u03BD \u03C7\u03C9\u03C1\u03AF\u03C2 \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1.
883883 no_styles_found_in_map=\u0394\u03B5 \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03C3\u03C4\u03C5\u03BB \u03C3\u03C4\u03BF \u03C7\u03AC\u03C1\u03C4\u03B7
884884 node=\u039A\u03CC\u03BC\u03B2\u03BF\u03C2
13781378 plugins/ScriptEditor/window.Result=\u0391\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1:
13791379 plugins/ScriptEditor/window.title=\u03A3\u03C5\u03BD\u03C4\u03AC\u03BA\u03C4\u03B7\u03C2 \u03B4\u03AD\u03C3\u03BC\u03B7\u03C2 \u03B5\u03BD\u03C4\u03BF\u03BB\u03CE\u03BD
13801380 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u03A0\u03B1\u03C1\u03AC\u03BD\u03BF\u03BC\u03B7 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7 \u03C3\u03C4\u03BF \u03B5\u03C3\u03C9\u03C4\u03B5\u03C1\u03B9\u03BA\u03CC API (\u03C0\u03B1\u03BA\u03AD\u03C4\u03BF {0}). - \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03C0\u03B9\u03BA\u03BF\u03B9\u03BD\u03C9\u03BD\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03B7\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1 \u03C4\u03BF\u03C5 Freeplane \u03B3\u03B9\u03B1 \u03B4\u03B9\u03B5\u03C5\u03BA\u03C1\u03B9\u03BD\u03AE\u03C3\u03B5\u03B9\u03C2..
1381 plugins/TimeList.xml_Created=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03B8\u03B7\u03BA\u03B5
1382 plugins/TimeList.xml_Date=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
1383 plugins/TimeList.xml_Icons=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03B1
1384 plugins/TimeList.xml_Modified=\u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03AE\u03B8\u03B7\u03BA\u03B5
1385 plugins/TimeList.xml_Notes=\u03A3\u03B7\u03BC\u03B5\u03B9\u03CE\u03C3\u03B5\u03B9\u03C2
1386 plugins/TimeList.xml_Text=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
1387 plugins/TimeManagement.xml_appendButton=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1\u03C2 \u03C3\u03C4\u03BF\u03C5\u03C2 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5\u03C2
1388 plugins/TimeManagement.xml_Cancel=\u0391\u03BA\u03C5\u03C1\u03BF
1389 plugins/TimeManagement.xml_cancelButton=\u0391\u03BA\u03C5\u03C1\u03BF
1390 plugins/TimeManagement.xml_closeButton=\u039A\u03BB\u03B5\u03AF\u03C3\u03B5
1391 plugins/TimeManagement.xml_Export=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BA\u03CC\u03BC\u03B2\u03C9\u03BD
1392 plugins/TimeManagement.xml_Find=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7
1393 plugins/TimeManagement.xml_Goto=\u03A0\u03AE\u03B3\u03B1\u03B9\u03BD\u03B5
1394 plugins/TimeManagement.xml_hour=\u03A9\u03C1\u03B1:
1395 plugins/TimeManagement.xml_menu_actions=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2
1396 plugins/TimeManagement.xml_minute=\u039B\u03B5\u03C0\u03C4\u03CC:
1397 plugins/TimeManagement.xml_reminderButton=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
1398 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u039F\u03C4\u03B1\u03BD \u03C4\u03BF \u03C0\u03B1\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5, \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03AE\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03C7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5. \u0398\u03B1 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03AE\u03C4\u03B5 \u03BC\u03B5 \u03B1\u03C0\u03B1\u03C3\u03C4\u03C1\u03AC\u03C0\u03C4\u03C9\u03BD \u03B5\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF.<br>\u0395\u03AC\u03BD \u03BA\u03BB\u03B5\u03AF\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03B4\u03B9\u03AC\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1, \u03C4\u03BF \u03C7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF \u03B8\u03B1 \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03C4\u03B7\u03BD \u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03B7 \u03C6\u03BF\u03C1\u03AC \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C4\u03BF \u03B1\u03BD\u03BF\u03AF\u03BE\u03B5\u03C4\u03B5.</html>
1399 plugins/TimeManagement.xml_reminderNode.tooltip=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03B9\u03C2 {0,date} {0,time}.
1400 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u03A0\u03C1\u03BF\u03C2 \u03C4\u03BF \u03C0\u03B1\u03C1\u03CC\u03BD, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BC\u03AF\u03B1 \u03BC\u03CC\u03BD\u03BF \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03BD\u03B1 \u03BA\u03CC\u03BC\u03B2\u03BF. <br>\u0397 \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03BF\u03C1\u03AF\u03C3\u03C4\u03B7\u03BA\u03B5 \u03B3\u03B9\u03B1 {0,date} {0,time}, \u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C3\u03B1\u03C2 \u03AE\u03C4\u03B1\u03BD {1,date} {1,time}. <br><br>\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03C4\u03B5 \u03C4\u03BF \u03C7\u03C1\u03CC\u03BD\u03BF \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7\u03C2 (\u039D\u03B1\u03AF) <br>\u03AE \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03BA\u03C1\u03B1\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03C0\u03B1\u03BB\u03B9\u03CC (\u039F\u03C7\u03B9);</html>
1401 plugins/TimeManagement.xml_remindLaterButton=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1
1402 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1
1403 plugins/TimeManagement.xml_removeReminderButton=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7\u03C2
1404 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C5\u03C0\u03B5\u03BD\u03B8\u03C5\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C0\u03BF\u03C5 \u03C3\u03C7\u03B5\u03C4\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C4\u03BF\u03BD \u03BA\u03CC\u03BC\u03B2\u03BF.
1405 plugins/TimeManagement.xml_Replace=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7
1406 plugins/TimeManagement.xml_Replace_All=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD
1407 plugins/TimeManagement.xml_Replace_Selected=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD
1408 plugins/TimeManagement.xml_Select=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE
1409 plugins/TimeManagement.xml_todayButton=\u03A3\u03AE\u03BC\u03B5\u03C1\u03B1
1410 plugins/TimeManagement.xml_WindowTitle=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C5
1411 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7
14121381 preferences=\u03A0\u03C1\u03BF\u03C4\u03B9\u03BC\u03AE\u03C3\u03B5\u03B9\u03C2
14131382 print_preview_title=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03B5\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7\u03C2
14141383 PrintAction.text=\u0395\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7 \u03C7\u03AC\u03C1\u03C4\u03B7...
14351404 RedoAction.text=\u0395\u03C0\u03B1\u03BD\u03AC\u03BB\u03B7\u03C8\u03B7
14361405 RedoFilterAction.text=\u0395\u03C0\u03B1\u03BD\u03AC\u03BB\u03B7\u03C8\u03B7
14371406 regular_expressions=\u0395\u03BA\u03C6\u03C1\u03AC\u03C3\u03B5\u03B9\u03C2 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\u03C2
1407 reminder.appendButton=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1\u03C2 \u03C3\u03C4\u03BF\u03C5\u03C2 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5\u03C2
1408 reminder.Cancel=\u0391\u03BA\u03C5\u03C1\u03BF
1409 reminder.cancelButton=\u0391\u03BA\u03C5\u03C1\u03BF
1410 reminder.closeButton=\u039A\u03BB\u03B5\u03AF\u03C3\u03B5
1411 reminder.Created=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03B8\u03B7\u03BA\u03B5
1412 reminder.Export=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BA\u03CC\u03BC\u03B2\u03C9\u03BD
1413 reminder.Find=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7
1414 reminder.Goto=\u03A0\u03AE\u03B3\u03B1\u03B9\u03BD\u03B5
1415 reminder.hour=\u03A9\u03C1\u03B1:
1416 reminder.Icons=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03B1
1417 reminder.Map=\u0394\u03B9\u03AC\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1
1418 reminder.menu_actions=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2
1419 reminder.minute=\u039B\u03B5\u03C0\u03C4\u03CC:
1420 reminder.Modified=\u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03AE\u03B8\u03B7\u03BA\u03B5
1421 reminder.Notes=\u03A3\u03B7\u03BC\u03B5\u03B9\u03CE\u03C3\u03B5\u03B9\u03C2
1422 reminder.Reminder=\u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7
1423 reminder.reminderButton=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
1424 reminder.reminderButton.tooltip=<html>\u039F\u03C4\u03B1\u03BD \u03C4\u03BF \u03C0\u03B1\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5, \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03AE\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03C7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5. \u0398\u03B1 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03AE\u03C4\u03B5 \u03BC\u03B5 \u03B1\u03C0\u03B1\u03C3\u03C4\u03C1\u03AC\u03C0\u03C4\u03C9\u03BD \u03B5\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF.<br>\u0395\u03AC\u03BD \u03BA\u03BB\u03B5\u03AF\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03B4\u03B9\u03AC\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1, \u03C4\u03BF \u03C7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF \u03B8\u03B1 \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03C4\u03B7\u03BD \u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03B7 \u03C6\u03BF\u03C1\u03AC \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C4\u03BF \u03B1\u03BD\u03BF\u03AF\u03BE\u03B5\u03C4\u03B5.</html>
1425 reminder.reminderNode.tooltip=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03B9\u03C2 {0,date} {0,time}.
1426 reminder.reminderNode_onlyOneDate=<html>\u03A0\u03C1\u03BF\u03C2 \u03C4\u03BF \u03C0\u03B1\u03C1\u03CC\u03BD, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BC\u03AF\u03B1 \u03BC\u03CC\u03BD\u03BF \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03BD\u03B1 \u03BA\u03CC\u03BC\u03B2\u03BF. <br>\u0397 \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03BF\u03C1\u03AF\u03C3\u03C4\u03B7\u03BA\u03B5 \u03B3\u03B9\u03B1 {0,date} {0,time}, \u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C3\u03B1\u03C2 \u03AE\u03C4\u03B1\u03BD {1,date} {1,time}. <br><br>\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03C4\u03B5 \u03C4\u03BF \u03C7\u03C1\u03CC\u03BD\u03BF \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7\u03C2 (\u039D\u03B1\u03AF) <br>\u03AE \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03BA\u03C1\u03B1\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03C0\u03B1\u03BB\u03B9\u03CC (\u039F\u03C7\u03B9);</html>
1427 reminder.remindLaterButton=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1
1428 reminder.remindLaterButton.tooltip=\u03A5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03C1\u03B3\u03CC\u03C4\u03B5\u03C1\u03B1
1429 reminder.removeReminderButton=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7\u03C2
1430 reminder.removeReminderButton.tooltip=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C5\u03C0\u03B5\u03BD\u03B8\u03C5\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C0\u03BF\u03C5 \u03C3\u03C7\u03B5\u03C4\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C4\u03BF\u03BD \u03BA\u03CC\u03BC\u03B2\u03BF.
1431 reminder.Replace=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7
1432 reminder.Replace_All=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD
1433 reminder.Replace_Selected=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD
1434 reminder.Select=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE
1435 reminder.Text=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
1436 reminder.todayButton=\u03A3\u03AE\u03BC\u03B5\u03C1\u03B1
1437 reminder.WindowTitle=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C5
1438 reminder.WindowTitle_All_Nodes=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7
14381439 ReminderHookAction.text=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7\u03C2
14391440 ReminderHookAction.tooltip=\u0391\u03C6\u03B1\u03B9\u03C1\u03B5\u03AF \u03C4\u03B7\u03BD \u03C5\u03C0\u03B5\u03BD\u03B8\u03CD\u03BC\u03B9\u03C3\u03B7 \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1 \u03BA\u03CC\u03BC\u03B2\u03BF.
1441 ReminderListAction.text=\u0394\u03B5\u03AF\u03BE\u03B5 \u03C4\u03B7\u03BD \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C7\u03C1\u03BF\u03BD\u03BF\u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03BF\u03CD ...
1442 ReminderListAction.tooltip=\u03A0\u03C1\u03BF\u03B2\u03AC\u03BB\u03B5\u03B9 \u03C4\u03BF\u03C5\u03C2 \u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C5\u03C2 \u03BA\u03B1\u03B9 \u03C4\u03BF\u03C5\u03C2 \u03C3\u03C7\u03B5\u03C4\u03B9\u03B6\u03CC\u03BC\u03B5\u03BD\u03BF\u03C5\u03C2 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5\u03C2.
14401443 remove_file_from_list_on_error=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF {0} \u03B4\u03B5\u03BD \u03B1\u03BD\u03BF\u03AF\u03C7\u03C4\u03B7\u03BA\u03B5. \u039D\u03B1 \u03C4\u03BF \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03C9 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C4\u03C9\u03BD \u03C0\u03C1\u03CC\u03C3\u03C6\u03B1\u03C4\u03B1 \u03B1\u03BD\u03BF\u03B9\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD ?
14411444 remove_shortcut_question=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03C3\u03C5\u03BD\u03C4\u03CC\u03BC\u03B5\u03C5\u03C3\u03B7\u03C2 ?
14421445 remove_shortcut_title=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C5\u03BD\u03C4\u03CC\u03BC\u03B5\u03C5\u03C3\u03B7\u03C2;
16261629 simplyhtml.listTypeUpperRoman=I.,II.,III.,IV.
16271630 simplyhtml.marginLabel=\u0395\u03BE\u03C9\u03C4\u03B5\u03C1\u03B9\u03BA\u03CC
16281631 simplyhtml.matchApproximately=\u03A0\u03C1\u03BF\u03C3\u03B5\u03B3\u03B3\u03B9\u03C3\u03C4\u03B9\u03BA\u03AE \u03C4\u03B1\u03CD\u03C4\u03B9\u03C3\u03B7
1629 simplyhtml.matchApproximately.tooltip=<html>\u039D\u03B1 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B5\u03B3\u03B3\u03B9\u03C3\u03C4\u03B9\u03BA\u03AD\u03C2 \u03C4\u03B1\u03C5\u03C4\u03AF\u03C3\u03B5\u03B9\u03C2,<br>\u03C0\u03C7. \u03B7 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 '\u03C0\u03AC\u03B3\u03BF' \u03B8\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B1\u03B9 '\u03C0\u03AC\u03C4\u03BF'</html>
1632 simplyhtml.matchApproximately.tooltip=<html>\u039D\u03B1 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B5\u03B3\u03B3\u03B9\u03C3\u03C4\u03B9\u03BA\u03AD\u03C2 \u03C4\u03B1\u03C5\u03C4\u03AF\u03C3\u03B5\u03B9\u03C2,<br/>\u03C0\u03C7. \u03B7 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 '\u03C0\u03AC\u03B3\u03BF' \u03B8\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B1\u03B9 '\u03C0\u03AC\u03C4\u03BF'</html>
16301633 simplyhtml.matchCase=\u03A4\u03B1\u03AF\u03C1\u03B9\u03B1\u03C3\u03BC\u03B1 \u03A0\u03B5\u03B6\u03CE\u03BD/\u039A\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03C9\u03BD
16311634 simplyhtml.matchCase.tooltip=\u039D\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03AD\u03BB\u03B5\u03B3\u03C7\u03BF\u03C2 \u039A\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03C9\u03BD / \u03A0\u03B5\u03B6\u03CE\u03BD.
16321635 simplyhtml.newStyleDefaultName=\u03BD\u03AD\u03BF \u03CD\u03C6\u03BF\u03C2
17471750 summary_not_possible=\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03CE \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03C9 \u039A\u03CC\u03BC\u03B2\u03BF \u03A0\u03B5\u03C1\u03AF\u03BB\u03B7\u03C8\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03C4\u03C1\u03AD\u03C7\u03BF\u03C5\u03C3\u03B1 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE
17481751 svg=SVG
17491752 template_dir=\u0393\u03B5\u03BD\u03B9\u03BA\u03AC \u03A0\u03C1\u03CC\u03C4\u03C5\u03C0\u03B1
1750 TimeListAction.text=\u0394\u03B5\u03AF\u03BE\u03B5 \u03C4\u03B7\u03BD \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C7\u03C1\u03BF\u03BD\u03BF\u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03BF\u03CD ...
1751 TimeListAction.tooltip=\u03A0\u03C1\u03BF\u03B2\u03AC\u03BB\u03B5\u03B9 \u03C4\u03BF\u03C5\u03C2 \u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C5\u03C2 \u03BA\u03B1\u03B9 \u03C4\u03BF\u03C5\u03C2 \u03C3\u03C7\u03B5\u03C4\u03B9\u03B6\u03CC\u03BC\u03B5\u03BD\u03BF\u03C5\u03C2 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5\u03C2.
17521753 TimeManagementAction.text=\u0394\u03B5\u03AF\u03BE\u03B5 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BB\u03CC\u03B3\u03B9\u03BF ...
17531754 TimeManagementAction.tooltip=<html>\u0394\u03B5\u03AF\u03C7\u03BD\u03B5\u03B9 \u03C4\u03BF \u03AC\u03C1\u03B8\u03C1\u03C9\u03BC\u03B1 \u03B7\u03BC\u03B5\u03C1\u03BF\u03BB\u03BF\u03B3\u03AF\u03BF\u03C5 \u03C4\u03BF\u03C5 Kai Toedter.</html>
17541755 ToggleChildrenFoldedAction.text=\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03B3\u03AE \u03B4\u03B9\u03C0\u03BB\u03C9\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03C0\u03BF\u03B3\u03CC\u03BD\u03C9\u03BD
0 about_text=Freeplane - Programa libre para creaci\u00F3n de mapas conceptuales y construcci\u00F3n del conocimiento
1 AboutAction.text=Acerca de...
0 about_text=Freeplane - programa libre para creaci\u00F3n de mapas conceptuales y construcci\u00F3n de conocimiento
1 AboutAction.text=Acerca de
22 acceleratorPresets=Teclas de acceso r\u00E1pido (atajos) predefinidas
33 accelerators_loading_error=No se pueden cargar la configuraci\u00F3n de los atajos de {0}
4 accessories/plugins/ApplyFormatPlugin.dialog.title=Cambiar formato de los nodos
4 accessories/plugins/ApplyFormatPlugin.dialog.title=Cambiar el formato de los nodos
55 accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Cambiar patr\u00F3n
6 accessories/plugins/EncryptNode.properties_0=Elija contrase\u00F1a para cifrar nodo
6 accessories/plugins/EncryptNode.properties_0=Elija una contrase\u00F1a para cifrar el nodo
77 accessories/plugins/EncryptNode.properties_1=Las contrase\u00F1as no son iguales o son muy cortas.
88 accessories/plugins/EncryptNode.properties_2=Escriba la Contrase\u00F1a:
99 accessories/plugins/EncryptNode.properties_3=Vuelva a escribir la contrase\u00F1a:
1010 accessories/plugins/EncryptNode.properties_4=Escriba su contrase\u00F1a.
11 accessories/plugins/EncryptNode.properties_5=<html>Recuerde que la vulnerabilidad del cifrado<br> depende casi completamente de la calidad de su contrase\u00F1a.
11 accessories/plugins/EncryptNode.properties_5=<html>Recuerde que la resistencia del cifrado<br> depende casi completamente de la calidad de su contrase\u00F1a.
1212 accessories/plugins/EncryptNode.properties_6=Ok
1313 accessories/plugins/EncryptNode.properties_7=Cancelar
1414 accessories/plugins/EncryptNode.properties_insert_encrypted_node_first=S\u00F3lo puede (des)activar el cifrado si el nodo ha sido cifrado anteriormente. Por favor inserte un nodo cifrado utilizando el men\u00FA de herramientas.
1515 accessories/plugins/EncryptNode.properties_select_me=\u00A1Debe marcarme para seguir!
1616 accessories/plugins/EncryptNode.properties_wrong_password=La contrase\u00F1a no es correcta.
1717 accessories/plugins/Export_JavaWebStart.text=Java Web Start...
18 accessories/plugins/Export_JavaWebStart.tooltip=Exporta el mapa para java web start.
18 accessories/plugins/Export_JavaWebStart.tooltip=Exporta el mapa para crear un java web start.
1919 accessories/plugins/ExportWithTWiki.text=Como TWiki...
2020 accessories/plugins/ExportWithTWiki.tooltip=Exporta el mapa como un documento TWiki.
2121 accessories/plugins/ExportWithXSLT.tooltip=Este es un m\u00E9todo est\u00E1ndar de exportaci\u00F3n utilizando scripts XSLT.
22 accessories/plugins/ExportWithXSLT_Applet.text=Como Applet de Java ...
22 accessories/plugins/ExportWithXSLT_Applet.text=Como applet de Java...
2323 accessories/plugins/ExportWithXSLT_Applet.tooltip=Exporta el mapa como un applet java para el navegador.
24 accessories/plugins/ExportWithXSLT_HTML.text=Como XHTML (versi\u00F3n JavaScript)...
25 accessories/plugins/ExportWithXSLT_HTML3.text=Como XHTML (versi\u00F3n mapa Seleccionable)...
24 accessories/plugins/ExportWithXSLT_HTML.text=Como XHTML (usando JavaScript)...
25 accessories/plugins/ExportWithXSLT_HTML3.text=Como XHTML (versi\u00F3n de mapa din\u00E1mico)...
2626 accessories/plugins/ExportWithXSLT_RESOURCESTJI.text=Recursos del nodo RECURSOS al fichero TaskJuggler ...
2727 accessories/plugins/ExportWithXSLT_RESOURCESTJI.tooltip=<html>Exporta recursos del nodo RECURSOS al m\u00F3dulo Taskjuggler. </html>
2828 accessories/plugins/ExportWithXSLT_TASKSTJI.text=Tareas del nodo de TAREAS al fichero TaskJuggler ...
227227 ColorProperty.ResetColor=Reinicia Color
228228 combined=Combinado
229229 condition=Condici\u00F3n
230 ConfigureNodeReferenceAction.text=Configurar referencia del nodo
231230 confirmation=Confirmaci\u00F3n
232231 connector=Conector
233232 connector_arrows=Flechas del conector
244243 CopyIDAction.text=Copiar la Identidad del nodo
245244 CopyMapStylesAction.text=Copiar el estilo del mapa de...
246245 CopyNodeURIAction.text=Copiar la URL del nodo
247 copyright=Copyright \u00A9 2000-2018 Equipo de Freeplane y otros
246 copyright=Copyright \u00A9 2000-2019 Equipo de Freeplane y otros
248247 CopySingleAction.text=Copiar el nodo (sin hijos)
249248 CopySingleAction.tooltip=Copiar s\u00F3lo el nodo seleccionado
250249 CopyStyleExtensionsAction.text=Copiar contenido del estilo
275274 dialect_info.app=El mapa conceptual {0} se cre\u00F3 con {1}.
276275 dialect_info.later_version=El mapa {0} fue creado con una versi\u00F3n posterior de este programa.
277276 dialect_info.unknownApp=El mapa conceptual {0} se cre\u00F3 con un programa desconocido.
278 dialect_info.unknownURL=Este sitio web no es conocido.
279 dialect_info.url=Visite la p\u00E1gina web del programa {0} para tener m\u00E1s informaci\u00F3n.
277 dialect_info.unknownURL=Este sitio web es desconocido.
278 dialect_info.url=Para m\u00E1s informaci\u00F3n visite la p\u00E1gina web del programa {0} .
280279 dialect_info.warning=Puede que Freeplane no lo abra, muestre o guarde correctamente.
281280 DirectHtmlFlavorHandler=HTML como nodo simple
282281 DocumentationAction.text=Documentaci\u00F3n
342341 enter_keyset_name=Escribir un nombre para el conjunto de teclas de acceso r\u00E1pido
343342 enter_map_url=Escribir la URL del mapa
344343 enter_new_style_name=Escribir un nombre para el nuevo estilo
345 enter_node_id_or_reference=Poner Identificador o referencia de nodo
344 enter_node_id_or_reference=Introducir Identificador o referencia del nodo
346345 enter_zoom=Poner zoom
347 EnterPassword.text=Poner clave
346 EnterPassword.text=Introducir contrase\u00F1a
348347 error=Error
349 error_applying_template=Error usando la plantilla XSL.
348 error_applying_template=Error al aplicar la plantilla XSL.
350349 error_creating_directory=No se puede crear el directorio para exportar.
351350 error_in_template=Errores en la plantilla por defecto para mapas {0}. Pruebe a quitar este archivo.
352351 errornumber={0} errores
363362 ExecuteScriptSecurityError.text=Ocurri\u00F3 un error mientras se ejecutaba el script: {0}
364363 export_failed=Ha fallado la exportaci\u00F3n
365364 export_pdf_text=Documento portable (PDF)
366 export_svg_text=Gr\u00E1fico escalable vectorial (SVG)
365 export_svg_text=Gr\u00E1fico vectorial escalable (SVG)
367366 ExportAction.text=Exportar mapa\u2026
368367 ExportAllPresentationsAction.text=Exportar todas las presentaciones a im\u00E1genes PNG
369368 ExportBranchAction.text=Mover Rama a nuevo Mapa...
370 ExportBranchesAction.text=Exportar Ramas...
369 ExportBranchesAction.text=Exportar ramas...
371370 ExportBranchToHTMLAction.text=Rama como HTML
372371 exported_file=archivo {0}
373372 ExportPdf.text=Como PDF...
515514 formats_not_loaded=El archivo est\u00E1 da\u00F1ado, no se pudieron cargar los formatos
516515 formula.ClearDependenciesAction.text=Limpiar dependencias
517516 formula.error.attributeValueIsNull=El valor del atributo "{0}" es nulo tras evaluarlo.
518 formula.error.circularReference=Referencia circular: la f\u00F3rmula en el nodo "{0}" hace referencia a s\u00ED misma.
517 formula.error.circularReference=Referencia circular: la f\u00F3rmula en el nodo {0} ''{1}'' hace referencia a s\u00ED misma.
519518 formula.EvaluateAllAction.text=Evaluar todo
520519 formula.EvaluateAllAction.tooltip=Evaluar todas las f\u00F3rmulas en el mapa actual
521520 formula.menuname=F\u00F3rmulas
563562 hot_keys=Teclas de acceso r\u00E1pido
564563 hot_keys_table=Tabla con las teclas de acceso r\u00E1pido
565564 HotKeyInfoAction.text=Tecla de Referencia
566 html_export_based_on_headings=Exportar HTML - Basado en Encabezados
567 html_export_fold_all=Exportar HTML - Doblar Todo
568 html_export_fold_currently_folded=Exportar HTML - Doblar lo Actualmente Doblado
569 html_export_no_folding=Exportar HTML - Sin Doblar
565 html_export_based_on_headings=Exportar HTML - Basado en encabezados
566 html_export_fold_all=Exportar HTML - Doblar todo
567 html_export_fold_currently_folded=Exportar HTML - Doblar lo actualmente doblado
568 html_export_no_folding=Exportar HTML - Sin doblar
570569 html_problem=<html>No se puede procesar a html<br><br>{0}
571570 icon_0%=0%
572571 icon_100%=100%
952951 NotFoldingNextPresentationItemAction.text=Desplegar el siguiente elemento de la presentaci\u00F3n
953952 NotificationOptions.CLOSE=Cerrar
954953 NotificationOptions.REMIND_ME_LATER=Recu\u00E9rdame despu\u00E9s
955 NotificationOptions.REMOVE_REMINDER=Remover recordatorio
954 NotificationOptions.REMOVE_REMINDER=Eliminar recordatorio
956955 NotificationOptions.SELECT_NODE=Ir a recordatorio
957956 ok=De Acuerdo
958957 OKAction.text=De Acuerdo
10291028 OptionPanel.compare_as_number=Comparar como n\u00FAmeros
10301029 OptionPanel.compile_only_changed_script_files=Compilar s\u00F3lo archivos modificados
10311030 OptionPanel.compile_only_changed_script_files.tooltip=Mantener clases ya compiladas hasta que cambie archivo fuente
1031 OptionPanel.compiled_script_cache_size=Tama\u00F1o de la cach\u00E9 para para scripts y f\u00F3rmulas compiladas
10321032 OptionPanel.connector_arrows=Flechas de conexi\u00F3n
10331033 OptionPanel.connector_dash=Tipo de linea
10341034 OptionPanel.convert_to_current_version=<html>\u00BFConvertir autom\u00E1ticamente mapas de versiones anteriores <br>de Freeplane a la versi\u00F3n actual?</html>
10381038 OptionPanel.cs=Cs / Checo
10391039 OptionPanel.cut_nodes_without_question=\u00BFCortar los nodos sin confirmaci\u00F3n?
10401040 OptionPanel.cut_nodes_without_question.tooltip=Si esta casilla est\u00E1 marcada, los nodos se cortan sin pedir confirmaci\u00F3n. Puede causar perdida de informaci\u00F3n si se marca por un casual.
1041 OptionPanel.cut_out_pictures_when_pasting_html=Remover im\u00E1genes de HTML
1041 OptionPanel.cut_out_pictures_when_pasting_html=Eliminar im\u00E1genes de HTML
10421042 OptionPanel.da=Dk / Dan\u00E9s
10431043 OptionPanel.date_format=Formaro de fecha est\u00E1ndar
10441044 OptionPanel.date_format.tooltip=Cualquiera de SHORT, MEDIUM, LONG o FULL o un patr\u00F3n como "MM/dd/yyyy"
11011101 OptionPanel.execute_scripts_without_write_restriction=Permitir escribir en los archivos (NO recomendada)
11021102 OptionPanel.execute_scripts_without_write_restriction.tooltip=<html><body>Si su script necesita permisos de escritura a los archivos (escribir, \u00A1borrar!),<br>debe activar esta opci\u00F3n. <br>Se suele utilizar con permisos de lectura.<br>Pero \u00FAsela con cuidado ya que !scripts maliciosos pueden da\u00F1ar su ordenador!</body></html>
11031103 OptionPanel.experimental_file_locking_on=Bloqueo de Ficheros Experimental
1104 OptionPanel.experimental_file_locking_on.tooltip=<html> Caracter\u00EDstica Experimental </html>
1105 OptionPanel.export_icons_in_html=Exportar Iconos en Html
1104 OptionPanel.experimental_file_locking_on.tooltip=<html> Caracter\u00EDstica experimental </html>
1105 OptionPanel.export_icons_in_html=HTML
11061106 OptionPanel.export_icons_in_html.tooltip=<html> Indica si el HTML exportado de Freeplane deber\u00EDa contener iconos. El problema con iconos es que bastante amenudo los enlaces a iconos no pueden ser encontrados en el HTML exportado.</html>
11071107 OptionPanel.exported_image_resolution_dpi=Resoluci\u00F3n de imagen exportada en DPI
11081108 OptionPanel.Files=Archivos
11341134 OptionPanel.html_export_based_on_headings=Basado en las Cabeceras
11351135 OptionPanel.html_export_fold_all=Plegar Todos
11361136 OptionPanel.html_export_fold_currently_folded=Plegar los Actualmente Plegados
1137 OptionPanel.html_export_folding=Carpeta de Exportaci\u00F3n Html
1137 OptionPanel.html_export_folding=Carpeta de exportaci\u00F3n HTML
11381138 OptionPanel.html_export_no_folding=Sin Plegar
11391139 OptionPanel.hu=Hu / H\u00FAngaro
11401140 OptionPanel.ic_disable=Desactivar
13351335 OptionPanel.separator.files=Archivos
13361336 OptionPanel.separator.formula=F\u00F3rmulas
13371337 OptionPanel.separator.General=General
1338 OptionPanel.separator.html_export=Exportaci\u00F3n de Html
1339 OptionPanel.separator.html_import=Importaci\u00F3n de Html
1338 OptionPanel.separator.html_export=Exportaci\u00F3n de HTML
1339 OptionPanel.separator.html_import=Importaci\u00F3n de HTML
13401340 OptionPanel.separator.hyperlink_types=Tipos de Hiperenlaces
13411341 OptionPanel.separator.icon_properties=Iconos
13421342 OptionPanel.separator.IconControls=Iconos
15581558 plugins/ScriptEditor/window.Result=Resultado:
15591559 plugins/ScriptEditor/window.title=Editor de Scripts
15601560 plugins/ScriptingEngine.illegalAccessToInternalAPI=Acceso ilegal a la API interna (paquete {0}). - Por favor, contacte con el equipo de Freeplane si la API de scripting no es suficientemente capaz.
1561 plugins/TimeList.xml_Created=Creado
1562 plugins/TimeList.xml_Date=Fecha
1563 plugins/TimeList.xml_Details=Detalles
1564 plugins/TimeList.xml_Icons=Iconos
1565 plugins/TimeList.xml_Modified=Modificado
1566 plugins/TimeList.xml_Notes=Notas
1567 plugins/TimeList.xml_Text=Texto
1568 plugins/TimeManagement.xml_appendButton=Agregar Fecha a la seleccion
1569 plugins/TimeManagement.xml_Cancel=Cancelar
1570 plugins/TimeManagement.xml_cancelButton=Cancelar
1571 plugins/TimeManagement.xml_closeButton=Cerrar
1572 plugins/TimeManagement.xml_Export=Exportar los Nodos Seleccionados
1573 plugins/TimeManagement.xml_Find=Buscar
1574 plugins/TimeManagement.xml_Goto=Ir a
1575 plugins/TimeManagement.xml_hour=Hora:
1576 plugins/TimeManagement.xml_menu_actions=Acciones
1577 plugins/TimeManagement.xml_minute=Minuto:
1578 plugins/TimeManagement.xml_reminderButton=Recordar En Esta Fecha
1579 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Cuando se presiona, un temporizador es activado en la fecha estipulada. Despu\u00E9s, una ventana llama su atenci\u00F3n.<br> Si usted cierra el mapa, los temporizadores ser\u00E1n reactivados la pr\u00F3xima vez que el mapa sea abierto.</html>
1580 plugins/TimeManagement.xml_reminderNode.tooltip=Recordatorio especificado en {0,date} {0,time}.
1581 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Por el momento s\u00F3lo puede haber un recordatorio por nodo. <br>El recordatorio actual esta ajustado a {0,date} {0,time}, su opci\u00F3n fu\u00E9 {1,date} {1,time}. <br><br>Desea cambiar el recordatorio del nodo (SI) <br>o desea mantener el anterior (NO)?</html>
1582 plugins/TimeManagement.xml_remindLaterButton=Recordar m\u00E1s tarde
1583 plugins/TimeManagement.xml_remindLaterButton.tooltip=Recordar m\u00E1s tarde
1584 plugins/TimeManagement.xml_removeReminderButton=Eliminar Recordatorio
1585 plugins/TimeManagement.xml_removeReminderButton.tooltip=Eliminar todos los recordatorios asociados con los nodos seleccionados.
1586 plugins/TimeManagement.xml_Replace=Reemplazar
1587 plugins/TimeManagement.xml_Replace_All=Reemplazar Todos
1588 plugins/TimeManagement.xml_Replace_Selected=Reemplazar los seleccionados
1589 plugins/TimeManagement.xml_Select=Seleccionar
1590 plugins/TimeManagement.xml_todayButton=Hoy
1591 plugins/TimeManagement.xml_WindowTitle=Administrar el tiempo
1592 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Buscar y Reemplazar
15931561 preferences=Preferencias
15941562 presentation=Presentaci\u00F3n
15951563 presentation.combineAll=Combinar todas las presentaciones
16191587 RedoAction.text=Rehacer
16201588 RedoFilterAction.text=Rehacer filtro
16211589 regular_expressions=Expresiones regulares
1590 reminder.appendButton=Agregar Fecha a la seleccion
1591 reminder.Cancel=Cancelar
1592 reminder.cancelButton=Cancelar
1593 reminder.closeButton=Cerrar
1594 reminder.Created=Creado
1595 reminder.Details=Detalles
1596 reminder.Export=Exportar los Nodos Seleccionados
1597 reminder.Find=Buscar
1598 reminder.Goto=Ir a
1599 reminder.hour=Hora:
1600 reminder.Icons=Iconos
1601 reminder.Map=Mapa
1602 reminder.menu_actions=Acciones
1603 reminder.minute=Minuto:
1604 reminder.Modified=Modificado
1605 reminder.Notes=Notas
1606 reminder.Reminder=Recordatorio
1607 reminder.reminderButton=Recordar En Esta Fecha
1608 reminder.reminderButton.tooltip=<html>Cuando se presiona, un temporizador es activado en la fecha estipulada. Despu\u00E9s, una ventana llama su atenci\u00F3n.<br> Si usted cierra el mapa, los temporizadores ser\u00E1n reactivados la pr\u00F3xima vez que el mapa sea abierto.</html>
1609 reminder.reminderNode.tooltip=Recordatorio especificado en {0,date} {0,time}.
1610 reminder.reminderNode_onlyOneDate=<html>Por el momento s\u00F3lo puede haber un recordatorio por nodo. <br>El recordatorio actual esta ajustado a {0,date} {0,time}, su opci\u00F3n fu\u00E9 {1,date} {1,time}. <br><br>Desea cambiar el recordatorio del nodo (SI) <br>o desea mantener el anterior (NO)?</html>
1611 reminder.remindLaterButton=Recordar m\u00E1s tarde
1612 reminder.remindLaterButton.tooltip=Recordar m\u00E1s tarde
1613 reminder.removeReminderButton=Eliminar Recordatorio
1614 reminder.removeReminderButton.tooltip=Eliminar todos los recordatorios asociados con los nodos seleccionados.
1615 reminder.Replace=Reemplazar
1616 reminder.Replace_All=Reemplazar Todos
1617 reminder.Replace_Selected=Reemplazar los seleccionados
1618 reminder.Select=Seleccionar
1619 reminder.Text=Texto
1620 reminder.todayButton=Hoy
1621 reminder.WindowTitle=Administrar el tiempo
1622 reminder.WindowTitle_All_Nodes=Buscar y Reemplazar
16221623 ReminderHookAction.text=Eliminar Recordatorio
16231624 ReminderHookAction.tooltip=Borra un recordatorio del nodo.
1625 ReminderListAction.text=Mostrar la Lista del Planificador de Tiempo...
1626 ReminderListAction.tooltip=Muestra todos los tiempos agendados y los correspondientes nodos.
16241627 reminderNotification=Notificaci\u00F3n de recordatorio
16251628 remove_file_from_list_on_error=No se ha abierto el archivo {0}. \u00BFQuiere que se quite del listado de \u00FAltimos archivos abiertos?
16261629 remove_shortcut_question=\u00BFCambiar tecla r\u00E1pida?
17191722 ShowFilterToolbarAction.text=Barra de herramientas de Filtros
17201723 ShowFirstSlideAction.text=Primera diapositiva
17211724 ShowFirstSlideAndStartPresentationAction.text=Ejecuta presentaci\u00F3n desde el inicio
1722 ShowFormatPanel.text=P\u00E1nel de herramientas
1725 ShowFormatPanel.text=Panel de herramientas
17231726 ShowFormatPanel.tooltip=Muestra un cuadro de di\u00E1logo que permite cambiar de una vez el estilo del nodo y el borde.
17241727 ShowHideNoteAction.text=Mostrar/Esconder Ventana de Notas
17251728 ShowHideNoteAction.tooltip=Permite ocultar o mostrar la ventana de notas.
20102013 TextAlignAction.RIGHT.text=Texto alineado a la derecha
20112014 textalignment=Alineamiento del texto
20122015 TextChangeHotKeyAction.text=Configura la tecla r\u00E1pida de cambio de texto
2013 TimeListAction.text=Mostrar la Lista del Planificador de Tiempo...
2014 TimeListAction.tooltip=Muestra todos los tiempos agendados y los correspondientes nodos.
20152016 TimeManagementAction.text=Mostrar Calendario...
20162017 TimeManagementAction.tooltip=<html>Muestra el m\u00F3dulo calendario por Kai Toedter.</html>
20172018 TimePeriodUnits.days=d\u00EDas
20782079 version_up_to_date=Est\u00E1 usando la \u00FAltima versi\u00F3n del programa
20792080 view=Ver
20802081 ViewLayoutTypeAction.OUTLINE.text=Vista en esquema
2081 web_resources=Recursos de Web
2082 web_resources=Recursos web
20822083 WebDocuAction.text=Documentaci\u00F3n Web
20832084 WhatsNewAction.text=Qu\u00E9 hay de nuevo en Freeplane 1.6.x
20842085 width=Anchura
677677 plugins/ScriptEditor.sign=Allkirjasta skript...
678678 plugins/ScriptEditor/window.Result=Tulemus:
679679 plugins/ScriptEditor/window.title=Skripti redaktor
680 plugins/TimeList.xml_Created=Loodud
681 plugins/TimeList.xml_Date=Kuup\u00E4ev
682 plugins/TimeList.xml_Icons=Ikoonid
683 plugins/TimeList.xml_Modified=Muudetud
684 plugins/TimeList.xml_Notes=M\u00E4rkmed
685 plugins/TimeList.xml_Text=Tekst
686 plugins/TimeManagement.xml_appendButton=Lisa kuup\u00E4ev valitud s\u00F5lmedele
687 plugins/TimeManagement.xml_Cancel=Loobu
688 plugins/TimeManagement.xml_cancelButton=Loobu
689 plugins/TimeManagement.xml_closeButton=Sulge
690 plugins/TimeManagement.xml_Export=Ekspordi valitud s\u00F5lmed
691 plugins/TimeManagement.xml_Find=Otsi
692 plugins/TimeManagement.xml_Goto=Mine
693 plugins/TimeManagement.xml_hour=Tund:
694 plugins/TimeManagement.xml_menu_actions=Tegevused
695 plugins/TimeManagement.xml_minute=Minut:
696 plugins/TimeManagement.xml_reminderButton=J\u00E4ta mind selle kuup\u00E4evaga meelde
697 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Kui ajaarvestajale kl\u00F5psatud siis m\u00E4rgitakse k\u00E4esolev aeg \u00FCles. Vilkuvad ikoonid p\u00FC\u00FCavad siis Sinu t\u00E4helepanu.<br> Kui kaardi sulged siis \u00FClesm\u00E4rgitud ajad aktiveeruvad j\u00E4rgmine kord kui kaart avatakse.</html>
698 plugins/TimeManagement.xml_reminderNode.tooltip=Meeldetuletaja m\u00E4rgitud {0,date} {0,time}.
699 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Hetkel saab olla vaid \u00FCks meeldetuletaja s\u00F5lme kohta. <br>K\u00E4esolev meeldetuletaja on m\u00E4\u00E4ratud {0,date} {0,time}, Sinu valik oli {1,date} {1,time}. <br><br>Kas soovid s\u00F5lme meeldetuletajat muuta (JAH) <br>v\u00F5i soovid vana alles hoida (EI)?</html>
700 plugins/TimeManagement.xml_removeReminderButton=Eemalda meeldetuletaja
701 plugins/TimeManagement.xml_removeReminderButton.tooltip=Eemalda k\u00F5ik meeldetuletajad, mis on seotud valitud s\u00F5lmedega.
702 plugins/TimeManagement.xml_Replace=Asenda
703 plugins/TimeManagement.xml_Replace_All=Asenda k\u00F5ik
704 plugins/TimeManagement.xml_Replace_Selected=Asenda valitud
705 plugins/TimeManagement.xml_Select=M\u00E4rgi
706 plugins/TimeManagement.xml_todayButton=T\u00E4na
707 plugins/TimeManagement.xml_WindowTitle=Ajahaldus
708 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Otsi & Asenda
709680 preferences=Eelistused
710681 print_preview_title=Tr\u00FCkkimise eelvaatlus
711682 PrintAction.text=Tr\u00FCki...
721692 really_remove_notes=Kas t\u00F5esti eemaldada need m\u00E4rkmed?
722693 RedoAction.text=Tee uuesti
723694 RedoFilterAction.text=Tee uuesti
695 reminder.appendButton=Lisa kuup\u00E4ev valitud s\u00F5lmedele
696 reminder.Cancel=Loobu
697 reminder.cancelButton=Loobu
698 reminder.closeButton=Sulge
699 reminder.Created=Loodud
700 reminder.Export=Ekspordi valitud s\u00F5lmed
701 reminder.Find=Otsi
702 reminder.Goto=Mine
703 reminder.hour=Tund:
704 reminder.Icons=Ikoonid
705 reminder.Map=M\u00F5ttekaart
706 reminder.menu_actions=Tegevused
707 reminder.minute=Minut:
708 reminder.Modified=Muudetud
709 reminder.Notes=M\u00E4rkmed
710 reminder.reminderButton=J\u00E4ta mind selle kuup\u00E4evaga meelde
711 reminder.reminderButton.tooltip=<html>Kui ajaarvestajale kl\u00F5psatud siis m\u00E4rgitakse k\u00E4esolev aeg \u00FCles. Vilkuvad ikoonid p\u00FC\u00FCavad siis Sinu t\u00E4helepanu.<br> Kui kaardi sulged siis \u00FClesm\u00E4rgitud ajad aktiveeruvad j\u00E4rgmine kord kui kaart avatakse.</html>
712 reminder.reminderNode.tooltip=Meeldetuletaja m\u00E4rgitud {0,date} {0,time}.
713 reminder.reminderNode_onlyOneDate=<html>Hetkel saab olla vaid \u00FCks meeldetuletaja s\u00F5lme kohta. <br>K\u00E4esolev meeldetuletaja on m\u00E4\u00E4ratud {0,date} {0,time}, Sinu valik oli {1,date} {1,time}. <br><br>Kas soovid s\u00F5lme meeldetuletajat muuta (JAH) <br>v\u00F5i soovid vana alles hoida (EI)?</html>
714 reminder.removeReminderButton=Eemalda meeldetuletaja
715 reminder.removeReminderButton.tooltip=Eemalda k\u00F5ik meeldetuletajad, mis on seotud valitud s\u00F5lmedega.
716 reminder.Replace=Asenda
717 reminder.Replace_All=Asenda k\u00F5ik
718 reminder.Replace_Selected=Asenda valitud
719 reminder.Select=M\u00E4rgi
720 reminder.Text=Tekst
721 reminder.todayButton=T\u00E4na
722 reminder.WindowTitle=Ajahaldus
723 reminder.WindowTitle_All_Nodes=Otsi & Asenda
724724 ReminderHookAction.text=Eemalda meeldetuletaja
725725 ReminderHookAction.tooltip=Eemaldab s\u00F5lmelt meeldetuletuse.
726 ReminderListAction.text=N\u00E4ita ajastatud toiminguid ja &Nimekirja ...
727 ReminderListAction.tooltip=N\u00E4itab k\u00F5iki m\u00E4rgitud aegu ja seotud s\u00F5lmi.
726728 RemoveAllIconsAction.text=Eemalda k\u00F5ik ikoonid
727729 RemoveIconAction.text=Eemalda viimane ikoon
728730 RemoveNoteAction.text=Eemalda m\u00E4rkmed
937939 SplitNode.tooltip=<html>S\u00F5lm on poolitatud</html>
938940 style=Stiil
939941 svg=SVG[translate me]
940 TimeListAction.text=N\u00E4ita ajastatud toiminguid ja &Nimekirja ...
941 TimeListAction.tooltip=N\u00E4itab k\u00F5iki m\u00E4rgitud aegu ja seotud s\u00F5lmi.
942942 TimeManagementAction.text=N\u00E4ita kalendrit...
943943 TimeManagementAction.tooltip=<html>N\u00E4itab kalendrimoodulit (autor: Kai Toedter).</html>
944944 ToggleChildrenFoldedAction.text=Voldi s\u00F5lmed kokku/lahti
243243 CopyIDAction.text=Adabegiaren IDa kopiatu
244244 CopyMapStylesAction.text=Mapa estiloa ondorengo aukeratik kopiatu...
245245 CopyNodeURIAction.text=Adabegiaren URIa kopiatu
246 copyright=Copyright \u00A9 2000-2018 Freeplane taldea eta besteak
246 copyright=Copyright \u00A9 2000-2019 Freeplane taldea eta besteak
247247 CopySingleAction.text=Adabegia (soila) kopiatu
248248 CopySingleAction.tooltip=Aukeratutako adabegia soilik kopiatu
249249 CopyStyleExtensionsAction.text=Aukeratutako adabegi estilotik hedapenak kopiatu
503503 FormatPaste.tooltip=<html>Adabegiaren formatua itsasten du.</html>
504504 formats_not_loaded=Formatuak ezin izan dira kargatu, fitxategia izorratuta
505505 formula.error.attributeValueIsNull="{0}" berezitasunaren balioa ebaluaketa ondoren NULL da.
506 formula.error.circularReference=Erreferentzi zirkularra. "{0}" adabegiaren formulak bere burua erreferentziatzen du.
506 formula.error.circularReference=Erreferentzi zirkularra. {0} ''{1}'' adabegiaren formulak bere burua erreferentziatzen du.
507507 formula.EvaluateAllAction.text=Guztiak ebaluatu
508508 formula.EvaluateAllAction.tooltip=Mapa hontako formula guztiak ebaluatu
509509 formula.menuname=Formulak
15201520 plugins/ScriptEditor/window.Result=Emaitza:
15211521 plugins/ScriptEditor/window.title=Scripta editatu
15221522 plugins/ScriptingEngine.illegalAccessToInternalAPI=Barne APIra sarrera debekatua ({0} paketea). - APIa behar bezain ahaltsua ez baldinb bada, Mesedez Freeplane taldearekin jarri kontaktuan.
1523 plugins/TimeList.xml_Created=Sortua
1524 plugins/TimeList.xml_Date=Data
1525 plugins/TimeList.xml_Details=Xehetasunak
1526 plugins/TimeList.xml_Icons=Ikonoak
1527 plugins/TimeList.xml_Modified=Aldatua
1528 plugins/TimeList.xml_Notes=Oharrak
1529 plugins/TimeList.xml_Text=Testua
1530 plugins/TimeManagement.xml_appendButton=Aukeraketan data sartu
1531 plugins/TimeManagement.xml_Cancel=Ezeztatu
1532 plugins/TimeManagement.xml_cancelButton=Ezeztatu
1533 plugins/TimeManagement.xml_closeButton=Itxi
1534 plugins/TimeManagement.xml_Export=Aukeratutako adabegiak esportatu
1535 plugins/TimeManagement.xml_Find=Bilatu
1536 plugins/TimeManagement.xml_Goto=-ra joan
1537 plugins/TimeManagement.xml_hour=Ordua:
1538 plugins/TimeManagement.xml_menu_actions=Ekintzak
1539 plugins/TimeManagement.xml_minute=Minutua:
1540 plugins/TimeManagement.xml_reminderButton=Data honetan gogorarazi
1541 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Sakatuta dagoenean timer-a ezarritako datara egokitzen da. Dirdirka dauden ikonoek orduan zure arreta deituko dute.<br> Mapa isten baldin baduzu, timerrak mapa irekitzen den hurrengo aldian berriz aktibatuko dira. </html>
1542 plugins/TimeManagement.xml_reminderNode.tooltip=Oroitzailea ondorengo datan dago ezarria: {0,date} {0,time}.
1543 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Oraingoz adabegiko oroitzaile bakarra jarri liteke. <br> Oraingo oroigailua {0,date}{0,time}en dago jarria, zure aukera berriz {1,date}{1,time} izan da. <br><br>Orioitzailearen unea aldatu nahi al duzu (BAI)<br> ala nahiago duzu lehengoa gorde (EZ)?</html>
1544 plugins/TimeManagement.xml_remindLaterButton=Geroago gogorarazi
1545 plugins/TimeManagement.xml_remindLaterButton.tooltip=Geroxeago gogorarazi
1546 plugins/TimeManagement.xml_removeReminderButton=Gogorarazpena ezabatu
1547 plugins/TimeManagement.xml_removeReminderButton.tooltip=Aukeratutako adabegiei dagokien gogorarazpen guztiak ezabatu.
1548 plugins/TimeManagement.xml_Replace=Ordezkatu
1549 plugins/TimeManagement.xml_Replace_All=Guztiak Ordezkatu
1550 plugins/TimeManagement.xml_Replace_Selected=Aukeratuak ordezkatu
1551 plugins/TimeManagement.xml_Select=Aukeratu
1552 plugins/TimeManagement.xml_todayButton=Egutegia berrezarri
1553 plugins/TimeManagement.xml_WindowTitle=Denbora kudeatu
1554 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Aurkitu eta ordezkatu
15551523 preferences=Lehenespenak
15561524 presentation=Aurkezpena
15571525 presentation.combineAll=Aurkezpen guztiak bateratu
15811549 RedoAction.text=Berregin
15821550 RedoFilterAction.text=Filtroaren ekintza berregin
15831551 regular_expressions=Espresio erregularrak
1552 reminder.appendButton=Aukeraketan data sartu
1553 reminder.Cancel=Ezeztatu
1554 reminder.cancelButton=Ezeztatu
1555 reminder.closeButton=Itxi
1556 reminder.Created=Sortua
1557 reminder.Details=Xehetasunak
1558 reminder.Export=Aukeratutako adabegiak esportatu
1559 reminder.Find=Bilatu
1560 reminder.Goto=-ra joan
1561 reminder.hour=Ordua:
1562 reminder.Icons=Ikonoak
1563 reminder.Map=Mapa
1564 reminder.menu_actions=Ekintzak
1565 reminder.minute=Minutua:
1566 reminder.Modified=Aldatua
1567 reminder.Notes=Oharrak
1568 reminder.Reminder=Gogoratzeko
1569 reminder.reminderButton=Data honetan gogorarazi
1570 reminder.reminderButton.tooltip=<html>Sakatuta dagoenean timer-a ezarritako datara egokitzen da. Dirdirka dauden ikonoek orduan zure arreta deituko dute.<br> Mapa isten baldin baduzu, timerrak mapa irekitzen den hurrengo aldian berriz aktibatuko dira. </html>
1571 reminder.reminderNode.tooltip=Oroitzailea ondorengo datan dago ezarria: {0,date} {0,time}.
1572 reminder.reminderNode_onlyOneDate=<html>Oraingoz adabegiko oroitzaile bakarra jarri liteke. <br> Oraingo oroigailua {0,date}{0,time}en dago jarria, zure aukera berriz {1,date}{1,time} izan da. <br><br>Orioitzailearen unea aldatu nahi al duzu (BAI)<br> ala nahiago duzu lehengoa gorde (EZ)?</html>
1573 reminder.remindLaterButton=Geroago gogorarazi
1574 reminder.remindLaterButton.tooltip=Geroxeago gogorarazi
1575 reminder.removeReminderButton=Gogorarazpena ezabatu
1576 reminder.removeReminderButton.tooltip=Aukeratutako adabegiei dagokien gogorarazpen guztiak ezabatu.
1577 reminder.Replace=Ordezkatu
1578 reminder.Replace_All=Guztiak Ordezkatu
1579 reminder.Replace_Selected=Aukeratuak ordezkatu
1580 reminder.Select=Aukeratu
1581 reminder.Text=Testua
1582 reminder.todayButton=Egutegia berrezarri
1583 reminder.WindowTitle=Denbora kudeatu
1584 reminder.WindowTitle_All_Nodes=Aurkitu eta ordezkatu
15841585 ReminderHookAction.text=Gogorarazpena ezabatu
15851586 ReminderHookAction.tooltip=Adabegi batetatik gogorarazpena ezabatzen du.
1587 ReminderListAction.text=Atazak kudeatu ...
1588 ReminderListAction.tooltip=Plangintzan dauden denbora guztiak eta dagozkien adabegiak azaltzen ditu.
15861589 reminderNotification=Ohar gogorarazpena
15871590 remove_file_from_list_on_error=Ezin izan da {0} fitxategia ireki. Azkena irekitako fitxategien zerrendatik ezabatu?
15881591 remove_shortcut_question=Laburbidea ezabatu?
19701973 TextAlignAction.RIGHT.text=Testua eskubira lerrokatuta
19711974 textalignment=Testu lerrokatzea
19721975 TextChangeHotKeyAction.text=Ikusi testua aldaketarako tekla bero edo laburdura
1973 TimeListAction.text=Atazak kudeatu ...
1974 TimeListAction.tooltip=Plangintzan dauden denbora guztiak eta dagozkien adabegiak azaltzen ditu.
19751976 TimeManagementAction.text=Denbora kudeatu...
19761977 TimeManagementAction.tooltip=<html>Kay Toedter-en egutegi modulua azaltzen du </html>
19771978 TimePeriodUnits.days=egunak
229229 ColorProperty.ResetColor=Mise \u00E0 z\u00E9ro des couleurs
230230 combined=Mixte
231231 condition=Condition
232 ConfigureNodeReferenceAction.text=Param\u00E9trer la r\u00E9f\u00E9rence du n\u0153ud
233232 confirmation=Confirmation
234233 connector=Connecteur
235234 connector_arrows=Extr\u00E9mit\u00E9s du connecteur
246245 CopyIDAction.text=Copier l'identifiant du n\u0153ud
247246 CopyMapStylesAction.text=Importer des styles...
248247 CopyNodeURIAction.text=Copier l'identifiant du n\u0153ud et chemin de la carte
249 copyright=Copyright \u00A9 2000-2018 \u00E9quipe Freeplane et autres contributeurs
248 copyright=Copyright \u00A9 2000-2019 \u00E9quipe Freeplane et autres contributeurs
250249 CopySingleAction.text=Copier le n\u0153ud seul (sans fils)
251250 CopySingleAction.tooltip=Copie uniquement le n\u0153ud s\u00E9lectionn\u00E9
252251 CopyStyleExtensionsAction.text=Appliquer les d\u00E9tails et attributs du style
465464 filter_periodic_level=Formule de niveau
466465 filter_priority=Priorit\u00E9
467466 filter_regexp_matches=Expression r\u00E9guli\u00E8re
468 filter_reminder=Alerte
467 filter_reminder=Rappel
469468 filter_reminder_after=apr\u00E8s le
470469 filter_reminder_before=avant le
471470 filter_reminder_executed=pass\u00E9e
517516 formats_not_loaded=Impossible de charger les mises en forme.
518517 formula.ClearDependenciesAction.text=Effacer les d\u00E9pendances
519518 formula.error.attributeValueIsNull=L''attribut ''{0}'' est nul.
520 formula.error.circularReference=R\u00E9f\u00E9rence circulaire : la formule du n\u0153ud ''{0}'' se r\u00E9f\u00E9rence elle-m\u00EAme.
519 formula.error.circularReference=R\u00E9f\u00E9rence circulaire : la formule du n\u0153ud {0} ''{1}'' se r\u00E9f\u00E9rence elle-m\u00EAme.
521520 formula.EvaluateAllAction.text=Evaluer tout
522521 formula.EvaluateAllAction.tooltip=Evaluer toutes les formules de la carte courante
523522 formula.menuname=Formules
776775 ManageAddOnsDialog.cannot.activate=Impossible d''activer {0} : {0} est d\u00E9j\u00E0 actif.
777776 ManageAddOnsDialog.cannot.configure=Impossible de configurer {0}.
778777 ManageAddOnsDialog.cannot.deactivate=Impossible de d\u00E9sactiver {0} : {0} n''est pas activ\u00E9.
779 ManageAddOnsDialog.cannot.deinstall=Impossible de d\u00E9sintaller {0}.
778 ManageAddOnsDialog.cannot.deinstall=Impossible de d\u00E9sinstaller {0}.
780779 ManageAddOnsDialog.configure=Configurer
781780 ManageAddOnsDialog.deactivate=D\u00E9sactiver
782781 ManageAddOnsDialog.deactivation.success={0} sera automatiquement d\u00E9sactiv\u00E9 au prochain d\u00E9marrage.
783782 ManageAddOnsDialog.deinstall=D\u00E9sinstaller
784 ManageAddOnsDialog.deinstallation.success={0} sera automatiquement d\u00E9sinstall\u00E9 au prochain d\u00E9marrage.
783 ManageAddOnsDialog.deinstallation.success={0} sera d\u00E9sinstall\u00E9 au prochain d\u00E9marrage.
785784 ManageAddOnsDialog.error=L''installation a \u00E9chou\u00E9. Erreur : {0}.
786785 ManageAddOnsDialog.install=Installer...
787786 ManageAddOnsDialog.install.from.known.location=Installer un add-on depuis un fichier
960959 NotificationOptions.SELECT_NODE=Aller au rappel
961960 ok=Valider
962961 OKAction.text=Valider
962 OldReminderListAction.text=Afficher les rappels pass\u00E9s...
963 OldReminderListAction.tooltip=Afficher les rappels pass\u00E9s et les n\u0153uds associ\u00E9s dans toutes les cartes ouvertes.
963964 OnlineReference.text=Documentation en ligne
964965 open_asMindMap=Carte
965966 OpenAction.text=Ouvrir...
967 OpenApiDocumentationAction.text=API Freeplane\u2026
966968 OpenFreeplaneSiteAction.text=Site Web Freeplane
967969 OpenMapsAddLocation.text=Ajouter un emplacement OpenMaps...
968970 OpenMapsRemoveLocation.text=Supprimer un emplacement OpenMaps
12861288 OptionPanel.relative=Relatif
12871289 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"Demander" vous permettra de choisir.<br>"Oui" affiche l'\u00E9diteur de texte riche.<br>"Non" affiche l'\u00E9diteur de texte brut.</html>
12881290 OptionPanel.remind_use_rich_text_in_new_nodes=Coller les n\u0153uds en texte riche
1291 OptionPanel.reminder.showPastRemindersOnStart=Afficher les rappels pass\u00E9s
12891292 OptionPanel.remindersBlink=Clignotement des rappels
12901293 OptionPanel.remindersShowNotifications=Fen\u00EAtre de notification lors des rappels
1291 OptionPanel.remindersStandardDelay=D\u00E9lai d'alerte
1294 OptionPanel.remindersStandardDelay=Fr\u00E9quence de rappel
12921295 OptionPanel.remove_notes_without_question=Supprimer les notes sans confirmation
12931296 OptionPanel.remove_notes_without_question.tooltip=Supprime imm\u00E9diatement les notes, sans confirmation
12941297 OptionPanel.resources_use_default_font_for_notes_too=Utiliser cette police dans les notes
15651568 plugins/ScriptEditor/window.Result=R\u00E9sultat :
15661569 plugins/ScriptEditor/window.title=\u00C9diteur de scripts
15671570 plugins/ScriptingEngine.illegalAccessToInternalAPI=Acc\u00E8s illegale \u00E0 l''API interne (package {0}). Contactez l''\u00E9quipe Freeplane pour faire \u00E9voluer l''API.
1568 plugins/TimeList.xml_Created=Cr\u00E9\u00E9
1569 plugins/TimeList.xml_Date=Date
1570 plugins/TimeList.xml_Details=D\u00E9tails
1571 plugins/TimeList.xml_Icons=Ic\u00F4nes
1572 plugins/TimeList.xml_Modified=Modifi\u00E9
1573 plugins/TimeList.xml_Notes=Notes
1574 plugins/TimeList.xml_Text=Texte
1575 plugins/TimeManagement.xml_appendButton=Ins\u00E9rer la date
1576 plugins/TimeManagement.xml_Cancel=Annuler
1577 plugins/TimeManagement.xml_cancelButton=Annuler
1578 plugins/TimeManagement.xml_closeButton=Fermer
1579 plugins/TimeManagement.xml_Export=Exporter les n\u0153uds s\u00E9lectionn\u00E9s
1580 plugins/TimeManagement.xml_Find=Rechercher
1581 plugins/TimeManagement.xml_Goto=Aller \u00E0
1582 plugins/TimeManagement.xml_hour=Heure :
1583 plugins/TimeManagement.xml_menu_actions=Actions
1584 plugins/TimeManagement.xml_minute=Minutes :
1585 plugins/TimeManagement.xml_reminderButton=Cr\u00E9er l'alerte
1586 plugins/TimeManagement.xml_reminderButton.tooltip=<html>D\u00E9clenche un compte \u00E0 rebours pour la date et l'heure sp\u00E9cifi\u00E9es. L'alerte est indiqu\u00E9e par une ic\u00F4ne clignotante sur le n\u0153ud.<br>Les alertes sont r\u00E9activ\u00E9es \u00E0 l\u2019ouverture de la carte.</html>
1587 plugins/TimeManagement.xml_reminderNode.tooltip=Alerte planifi\u00E9e le {0,date} \u00E0 {0,time}.
1588 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Il ne peut y avoir qu''une seule alerte par n\u0153ud.<br>Une alerte est d\u00E9j\u00E0 planifi\u00E9e le {0,date} \u00E0 {0,time}.<br>Souhaitez-vous remplacer cette alerte par une nouvelle alerte le {1,date} \u00E0 {1,time} ?
1589 plugins/TimeManagement.xml_remindLaterButton=Rappeler
1590 plugins/TimeManagement.xml_remindLaterButton.tooltip=Rappeler
1591 plugins/TimeManagement.xml_removeReminderButton=Supprimer l'alerte
1592 plugins/TimeManagement.xml_removeReminderButton.tooltip=Supprime les alertes des n\u0153uds s\u00E9lectionn\u00E9s.
1593 plugins/TimeManagement.xml_Replace=Remplacer
1594 plugins/TimeManagement.xml_Replace_All=Tout remplacer
1595 plugins/TimeManagement.xml_Replace_Selected=Remplacer la s\u00E9lection
1596 plugins/TimeManagement.xml_Select=S\u00E9lectionner
1597 plugins/TimeManagement.xml_todayButton=Aujourd'hui
1598 plugins/TimeManagement.xml_WindowTitle=Gestion du temps
1599 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Rechercher et remplacer
16001571 preferences=Pr\u00E9f\u00E9rences
16011572 presentation=Pr\u00E9sentation
16021573 presentation.combineAll=Assembler toutes les pr\u00E9sentations
16261597 RedoAction.text=R\u00E9tablir
16271598 RedoFilterAction.text=Filtre suivant
16281599 regular_expressions=Expressions r\u00E9guli\u00E8res
1629 ReminderHookAction.text=Supprimer l'alerte
1630 ReminderHookAction.tooltip=Supprime l'alerte d'un n\u0153ud
1600 reminder.appendButton=Ins\u00E9rer la date
1601 reminder.Cancel=Annuler
1602 reminder.cancelButton=Annuler
1603 reminder.closeButton=Fermer
1604 reminder.Created=Cr\u00E9\u00E9
1605 reminder.Details=D\u00E9tails
1606 reminder.Export=Exporter les n\u0153uds s\u00E9lectionn\u00E9s
1607 reminder.Find=Rechercher
1608 reminder.Goto=Aller \u00E0
1609 reminder.hour=Heure :
1610 reminder.Icons=Ic\u00F4nes
1611 reminder.Map=Carte
1612 reminder.menu_actions=Actions
1613 reminder.minute=Minutes :
1614 reminder.Modified=Modifi\u00E9
1615 reminder.Notes=Notes
1616 reminder.Reminder=Rappel
1617 reminder.reminderButton=Cr\u00E9er l'alerte
1618 reminder.reminderButton.tooltip=<html>D\u00E9clenche un compte \u00E0 rebours pour la date et l'heure sp\u00E9cifi\u00E9es. L'alerte est indiqu\u00E9e par une ic\u00F4ne clignotante sur le n\u0153ud.<br>Les alertes sont r\u00E9activ\u00E9es \u00E0 l\u2019ouverture de la carte.</html>
1619 reminder.reminderNode.tooltip=Rappel planifi\u00E9 le {0,date} \u00E0 {0,time}.
1620 reminder.reminderNode_onlyOneDate=<html>Il ne peut y avoir qu''un seul rappel par n\u0153ud.<br>Un rappel est d\u00E9j\u00E0 planifi\u00E9 le {0,date} \u00E0 {0,time}.<br>Souhaitez-vous remplacer ce rappel par un nouveau rappel le {1,date} \u00E0 {1,time} ?
1621 reminder.remindLaterButton=Rappeler
1622 reminder.remindLaterButton.tooltip=Rappeler
1623 reminder.Remove_All=Supprimer tous les rappels
1624 reminder.Remove_Selected=Supprimer les rappels s\u00E9lectionn\u00E9s
1625 reminder.removeReminderButton=Supprimer le rappel
1626 reminder.removeReminderButton.tooltip=Supprime les rappels des n\u0153uds s\u00E9lectionn\u00E9s.
1627 reminder.Replace=Remplacer
1628 reminder.Replace_All=Tout remplacer
1629 reminder.Replace_Selected=Remplacer la s\u00E9lection
1630 reminder.Run_All=Ex\u00E9cuter tous les scripts
1631 reminder.Run_Selected=Ex\u00E9cuter les scripts s\u00E9lectionn\u00E9s
1632 reminder.Select=S\u00E9lectionner
1633 reminder.Text=Texte
1634 reminder.todayButton=Aujourd'hui
1635 reminder.WindowTitle=Gestion des rappels
1636 reminder.WindowTitle_All_Nodes=Rechercher et remplacer
1637 reminder.WindowTitle_pastReminders=Rappels pass\u00E9s
1638 reminder_script_error=Erreur {0} dans le script de rappel pour la carte {1} n\u0153ud {2}
1639 ReminderHookAction.text=Supprimer le rappel
1640 ReminderHookAction.tooltip=Supprime le rappel d'un n\u0153ud.
1641 ReminderListAction.text=Afficher la liste des alertes...
1642 ReminderListAction.tooltip=Montre toutes les alertes horaire ainsi que les n\u0153uds associ\u00E9s.
16311643 reminderNotification=Notification pour les rappels
16321644 remove_file_from_list_on_error=Le fichier {0} est introuvable ! Souhaitez-vous le retirer de la liste des fichiers r\u00E9cents ?
16331645 remove_shortcut_question=Remplacer le raccourci ?
17111723 SetLinkAnchorAction.tooltip_anchored=M\u00E9morise le n\u0153ud courant pour la cr\u00E9ation de lien
17121724 SetLinkByFileChooserAction.text=Lien vers un fichier...
17131725 SetLinkByTextFieldAction.text=Lien libre... / Modifier lien existant...
1726 SetNodeAliasAction.text=D\u00E9finir un alias pour le n\u0153ud
17141727 SetNodeLink.text=Lien vers un n\u0153ud...
17151728 SetNoteWindowPosition.bottom.text=Bas
17161729 SetNoteWindowPosition.left.text=Gauche
19061919 simplyhtml.thisCellRangeLabel=Cette cellule
19071920 simplyhtml.thisColRangeLabel=Cette colonne
19081921 simplyhtml.thisRowRangeLabel=Cette ligne
1909 simplyhtml.toggleBulletsLabel=Liste \u00E0 puces
1910 simplyhtml.toggleBulletsTip=Activer/D\u00E9sactiver la liste \u00E0 puces
1922 simplyhtml.toggleBulletsLabel=Activer / D\u00E9sactiver la liste \u00E0 puces
1923 simplyhtml.toggleBulletsTip=Activer / D\u00E9sactiver la liste \u00E0 puces
19111924 simplyhtml.toggleNumbersLabel=Liste num\u00E9rot\u00E9e
19121925 simplyhtml.toggleNumbersTip=Activer/D\u00E9sactiver la liste num\u00E9rot\u00E9e
19131926 simplyhtml.topLabel=En haut
19651978 split=&Diviser
19661979 SplitConditionAction.text=Dupliquer sans n\u00E9gation
19671980 SplitNode.text=Diviser le n\u0153ud
1968 SplitNode.tooltip=Divise le n\u0153ud en plusieurs n\u0153uds de m\u00EAme niveau, chaque ligne devient un n\u0153ud
1981 SplitNode.tooltip=<html>Divise le n\u0153ud en plusieurs n\u0153uds de m\u00EAme niveau</html>
19691982 SplitToWordsAction.text=Diviser en {0} mots par ligne
19701983 STANDARD_FORMAT=Standard
19711984 StartPresentationAction.text=D\u00E9buter la pr\u00E9sentation
20162029 TextAlignAction.RIGHT.text=Texte align\u00E9 \u00E0 droite
20172030 textalignment=Alignement du texte
20182031 TextChangeHotKeyAction.text=D\u00E9finir le raccourci pour modifier le texte
2019 TimeListAction.text=Afficher la liste des alertes...
2020 TimeListAction.tooltip=Montre toutes les alertes horaire ainsi que les n\u0153uds associ\u00E9s.
20212032 TimeManagementAction.text=Afficher le calendrier...
20222033 TimeManagementAction.tooltip=Affiche le calendrier
20232034 TimePeriodUnits.days=jours
342342 NewSiblingAction.text=Novo nodo irm\u00E1n
343343 no=Non
344344 no_format_copy_before_format_paste=Non pode pegar un formato sen antes copiar un.
345 no_found_from=<html>Non se atopou <b>{0}</b>&nbsp; desde <b>{1}</b>.
346 no_more_found_from=<html>Non se atopou m\u00E1is <b>{0}</b>&nbsp; desde <b>{1}</b>.
345 no_found_from=<html>Non se atopou <u>{0}</u>&nbsp; desde {1}.</html>
346 no_more_found_from=<html>Non se atopou m\u00E1is <u>{0}</u> desde "{1}".</html>
347347 no_previous_find=Non se atopou ningunha ocorrencia anterior.
348348 node=Nodo
349349 node_changed_discard_changes=Modificou o nodo. Desexa descartar os cambios?
394394 OptionPanel.default_browser_command_mac.tooltip=<html> e MAC: (grazas a Nick!)</html>
395395 OptionPanel.default_browser_command_other_os=Comando predeterminado de navegaci\u00F3n noutros sistemas operativos
396396 OptionPanel.default_browser_command_windows_9x=Comando predeterminado de navegaci\u00F3n en Windows 9x
397 OptionPanel.default_browser_command_windows_9x.tooltip=<html>No sistema operativo Windows (os signos "" son necesarios porque as ligaz\u00F3ns pos\u00FAen "=" no seu URL).</html
397 OptionPanel.default_browser_command_windows_9x.tooltip=<html>No sistema operativo Windows (os signos "" son necesarios porque as ligaz\u00F3ns pos\u00FAen "=" no seu URL).</html>
398398 OptionPanel.default_browser_command_windows_nt=Comando predeterminado de navegaci\u00F3n en Windows NT
399 OptionPanel.default_browser_command_windows_nt.tooltip=<html>No sistema operativo Windows (os signos "" son necesarios porque as ligaz\u00F3ns pos\u00FAen "=" no seu URL).</html
399 OptionPanel.default_browser_command_windows_nt.tooltip=<html>No sistema operativo Windows (os signos "" son necesarios porque as ligaz\u00F3ns pos\u00FAen "=" no seu URL).</html>
400400 OptionPanel.default_charset=Charset[translate me]
401401 OptionPanel.Defaults=Predeterminadas
402402 OptionPanel.delete_automatic_saves_at_exit=Borrar o gardado automaticamente ao sa\u00EDr
574574 plugins/ScriptEditor.run=Executar
575575 plugins/ScriptEditor/window.Result=Resultado:
576576 plugins/ScriptEditor/window.title=Editor de scripts
577 plugins/TimeList.xml_Created=Creado
578 plugins/TimeList.xml_Icons=Iconas
579 plugins/TimeList.xml_Modified=Modificado
580 plugins/TimeList.xml_Notes=Anotaci\u00F3ns
581 plugins/TimeList.xml_Text=Texto
582 plugins/TimeManagement.xml_appendButton=Anexar a data aos nodos seleccionados
583 plugins/TimeManagement.xml_Cancel=Cancelar
584 plugins/TimeManagement.xml_cancelButton=Cancelar
585 plugins/TimeManagement.xml_closeButton=Pechar
586 plugins/TimeManagement.xml_Export=Exportar os nodos seleccionados
587 plugins/TimeManagement.xml_Find=Buscar
588 plugins/TimeManagement.xml_Goto=Ir a
589 plugins/TimeManagement.xml_hour=Hora:
590 plugins/TimeManagement.xml_menu_actions=Acci\u00F3ns
591 plugins/TimeManagement.xml_minute=Minuto:
592 plugins/TimeManagement.xml_reminderButton=Av\u00EDsarme nesta data
593 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Ao presionar, as\u00EDgnase un temporizador \u00E1 data en cuesti\u00F3n. Ent\u00F3n, unhas iconas intermitentes chamar\u00E1n a s\u00FAa atenci\u00F3n.<br> Se pecha o mapa, reactivaranse os temporizadores cando volva abrir o mapa.</html>
594 plugins/TimeManagement.xml_reminderNode.tooltip=Alerta programada para {0,date} {0,time}.
595 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Actualmente, s\u00F3 se permite unha alerta por nodo. <br>A alerta actual est\u00E1 programada para {0,date} {0,time}, escolleu {1,date} {1,time}.<br><br>Desexa cambiar a hora da alerta deste nodo (SI) <br> ou prefire manter a hora antiga (NON)?</html>
596 plugins/TimeManagement.xml_removeReminderButton=Eliminar alerta
597 plugins/TimeManagement.xml_removeReminderButton.tooltip=Eliminar todas as alertas asociadas aos nodos seleccionados.
598 plugins/TimeManagement.xml_Replace=Substitu\u00EDr
599 plugins/TimeManagement.xml_Replace_All=Substitu\u00EDr todos
600 plugins/TimeManagement.xml_Replace_Selected=Substitu\u00EDr o seleccionado
601 plugins/TimeManagement.xml_Select=Seleccionar
602 plugins/TimeManagement.xml_todayButton=Hoxe
603 plugins/TimeManagement.xml_WindowTitle=Xesti\u00F3n do tempo
604 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Buscar e substitu\u00EDr
605577 preferences=Preferencias
606578 PrintAction.text=Imprimir...
607579 PrintDirectAction.text=Imprimir
611583 read_only=S\u00F3 para lectura
612584 RedoAction.text=Refacer
613585 RedoFilterAction.text=Refacer
586 reminder.appendButton=Anexar a data aos nodos seleccionados
587 reminder.Cancel=Cancelar
588 reminder.cancelButton=Cancelar
589 reminder.closeButton=Pechar
590 reminder.Created=Creado
591 reminder.Export=Exportar os nodos seleccionados
592 reminder.Find=Buscar
593 reminder.Goto=Ir a
594 reminder.hour=Hora:
595 reminder.Icons=Iconas
596 reminder.Map=Mapa
597 reminder.menu_actions=Acci\u00F3ns
598 reminder.minute=Minuto:
599 reminder.Modified=Modificado
600 reminder.Notes=Anotaci\u00F3ns
601 reminder.reminderButton=Av\u00EDsarme nesta data
602 reminder.reminderButton.tooltip=<html>Ao presionar, as\u00EDgnase un temporizador \u00E1 data en cuesti\u00F3n. Ent\u00F3n, unhas iconas intermitentes chamar\u00E1n a s\u00FAa atenci\u00F3n.<br> Se pecha o mapa, reactivaranse os temporizadores cando volva abrir o mapa.</html>
603 reminder.reminderNode.tooltip=Alerta programada para {0,date} {0,time}.
604 reminder.reminderNode_onlyOneDate=<html>Actualmente, s\u00F3 se permite unha alerta por nodo. <br>A alerta actual est\u00E1 programada para {0,date} {0,time}, escolleu {1,date} {1,time}.<br><br>Desexa cambiar a hora da alerta deste nodo (SI) <br> ou prefire manter a hora antiga (NON)?</html>
605 reminder.removeReminderButton=Eliminar alerta
606 reminder.removeReminderButton.tooltip=Eliminar todas as alertas asociadas aos nodos seleccionados.
607 reminder.Replace=Substitu\u00EDr
608 reminder.Replace_All=Substitu\u00EDr todos
609 reminder.Replace_Selected=Substitu\u00EDr o seleccionado
610 reminder.Select=Seleccionar
611 reminder.Text=Texto
612 reminder.todayButton=Hoxe
613 reminder.WindowTitle=Xesti\u00F3n do tempo
614 reminder.WindowTitle_All_Nodes=Buscar e substitu\u00EDr
614615 ReminderHookAction.text=Eliminar alerta
615616 ReminderHookAction.tooltip=Elimina unha alerta dun nodo
617 ReminderListAction.text=Amosar a lista de horas programadas ...
616618 RemoveAllIconsAction.text=Eliminar todas as iconas
617619 RemoveIconAction.text=Eliminar a \u00FAltima icona
618620 repair_link=Reparar a ligaz\u00F3n
812814 SplitNode.tooltip=<html>O nodo div\u00EDdese</html>
813815 style=Estilo
814816 svg=SVG[translate me]
815 TimeListAction.text=Amosar a lista de horas programadas ...
816817 TimeManagementAction.text=Amosar o calendario...
817818 ToggleChildrenFoldedAction.text=(Des)pregar fillos
818819 ToggleFBarAction.text=F-Bar[translate me]
154154 OptionPanel.show_icons=\u0906\u0907\u0915\u0928 \u0926\u093F\u0916\u093E\u090F\u0902
155155 PageAction.text=\u091B\u092A\u093E\u0908 \u0938\u0947\u091F\u0905\u092A...
156156 PasteAction.text=\u091A\u093F\u092A\u0915\u093E\u090F\u0901
157 plugins/TimeList.xml_Details=\u0935\u093F\u0935\u0930\u0923
158 plugins/TimeList.xml_Icons=\u0906\u0907\u0915\u0949\u0928\u0938
159 plugins/TimeManagement.xml_Find=\u0922\u0942\u0901\u0922\u093C\u0947\u0902
160 plugins/TimeManagement.xml_removeReminderButton=\u0938\u094D\u092E\u0930\u0915 \u0939\u091F\u093E\u090F\u0901
161 plugins/TimeManagement.xml_WindowTitle=\u0938\u092E\u092F \u0938\u0902\u092D\u093E\u0932
162157 preferences=\u0935\u0930\u0940\u092F\u0924\u093E
163158 print_preview_title=\u091B\u092A\u093E\u0908 \u092A\u0942\u0930\u094D\u0935\u093E\u0935\u0932\u094B\u0915\u0928
164159 PrintAction.text=\u0928\u0915\u093C\u094D\u0936\u093E \u091B\u092A\u093E\u0908...
167162 QuickFindAction.FORWARD.text=\u0905\u0917\u0932\u093E \u0922\u0942\u0901\u0922\u0947\u0902
168163 QuitAction.text=\u092B\u094D\u0930\u0940\u092A\u094D\u0932\u0947\u0928 \u0938\u0947 \u092C\u093E\u0939\u0930 \u091C\u093E\u090F\u0901
169164 RedoAction.text=\u092B\u093F\u0930 \u0915\u0930\u0947\u0902
165 reminder.Details=\u0935\u093F\u0935\u0930\u0923
166 reminder.Find=\u0922\u0942\u0901\u0922\u093C\u0947\u0902
167 reminder.Icons=\u0906\u0907\u0915\u0949\u0928\u0938
168 reminder.Map=\u0928\u0915\u094D\u0936\u093E
169 reminder.removeReminderButton=\u0938\u094D\u092E\u0930\u0915 \u0939\u091F\u093E\u090F\u0901
170 reminder.WindowTitle=\u0938\u092E\u092F \u0938\u0902\u092D\u093E\u0932
170171 ReminderHookAction.text=\u0938\u094D\u092E\u0930\u0915 \u0939\u091F\u093E\u090F\u0901
172 ReminderListAction.text=\u0915\u093E\u0930\u094D\u092F \u0938\u0902\u092D\u093E\u0932\u0928\u093E ...
171173 RemoveEncryption.text=\u092A\u093E\u0938\u0935\u0930\u094D\u0921 \u092A\u093E\u0938\u0935\u0930\u094D\u0921 \u092D\u0930\u0947\u0902
172174 RemoveNoteAction.text=\u0939\u091F\u093E\u090F\u0901 \u091F\u093F\u092A\u094D\u092A\u0923\u093F
173175 ResetNodeLocationAction.text=\u0930\u0940\u0938\u0947\u091F \u0928\u094B\u0921 \u0938\u094D\u0925\u093E\u0928
196198 slide.showancestors=\u092A\u0942\u0930\u094D\u0935\u091C\u094B\u0902 \u0926\u093F\u0916\u093E\u0928\u093E
197199 styles.note=\u091F\u093F\u092A\u094D\u092A\u0923\u093F
198200 TextAlignAction.DEFAULT.text=\u0921\u093F\u092B\u0949\u0932\u094D\u091F
199 TimeListAction.text=\u0915\u093E\u0930\u094D\u092F \u0938\u0902\u092D\u093E\u0932\u0928\u093E ...
200201 ToggleDetailsAction.text=\u0935\u093F\u0935\u0930\u0923 \u091B\u093F\u092A\u093E\u090F\u0901
201202 ToggleMenubarAction.text=\u092E\u0947\u0928\u094D\u092F\u0942\u092A\u091F\u094D\u091F\u0940
202203 ToggleScrollbarsAction.text=\u0938\u094D\u0915\u094D\u0930\u094B\u0932\u092C\u093E\u0930\u094D\u0938
228228 ColorProperty.ResetColor=Vra\u0107anje izvornih boja
229229 combined=kombinirano
230230 condition=Stanje
231 ConfigureNodeReferenceAction.text=Konfiguriranje referenci \u010Dvora
232231 confirmation=Potvrda
233232 connector=Poveznik
234233 connector_arrows=Zavr\u0161etak poveznika
245244 CopyIDAction.text=Kopiraj ID \u010Dvora
246245 CopyMapStylesAction.text=Kopiraj stil mape...
247246 CopyNodeURIAction.text=Kopiraj URL (vezu) \u010Dvora
248 copyright=Copyright \u00A9 2000-2018 Freeplane tim i ostali
247 copyright=Copyright \u00A9 2000-2019 Freeplane tim i ostali
249248 CopySingleAction.text=Kopiraj pojedina\u010Dno
250249 CopySingleAction.tooltip=Kopiraj samo odabrani \u010Dvor
251250 CopyStyleExtensionsAction.text=Umetni stil povezanog sadr\u017Eaja
516515 formats_not_loaded=Oblici nemogu biti u\u010Ditani, datoteka je o\u0161te\u0107ena
517516 formula.ClearDependenciesAction.text=O\u010Disti zavisnosti
518517 formula.error.attributeValueIsNull=Nakon izra\u010Dunavanja vrijednost obilje\u017Eja ''{0}'' jednaka je nuli.
519 formula.error.circularReference=Kru\u017Ena referenca: Formula \u010Dvora ''{0}'' sadr\u017Ei svoju vlastitu vrijednost, pa formula ne mo\u017Ee biti une\u0161ena.
518 formula.error.circularReference=Kru\u017Ena referenca: Formula \u010Dvora {0} ''{1}'' sadr\u017Ei svoju vlastitu vrijednost, pa formula ne mo\u017Ee biti une\u0161ena.
520519 formula.EvaluateAllAction.text=Izra\u010Dunaj sve
521520 formula.EvaluateAllAction.tooltip=Izra\u010Dunaj sve formule u trenutno aktivnoj mapi
522521 formula.menuname=Formule
779778 ManageAddOnsDialog.configure=Prilagoditi
780779 ManageAddOnsDialog.deactivate=Isklju\u010Diti
781780 ManageAddOnsDialog.deactivation.success={0} \u0107e biti isklju\u010Den nakon ponovnog pokretanja programa.
782 ManageAddOnsDialog.deinstall=Deinstalirati
781 ManageAddOnsDialog.deinstall=Ukloniti
783782 ManageAddOnsDialog.deinstallation.success={0} \u0107e biti uklonjen nakon ponovnog pokretanja programa.
784783 ManageAddOnsDialog.error=Gre\u0161ka prilikom instalacije {0}.
785784 ManageAddOnsDialog.install=&Instalirati
786785 ManageAddOnsDialog.install.from.known.location=Instaliraj pro\u0161irenje iz poznate lokacije
787786 ManageAddOnsDialog.install.tooltip=Ovdje umetnite URL (vezu) datoteke pro\u0161irenja koji \u017Eelite instalirati
788787 ManageAddOnsDialog.map.not.opened=Mapa {0} nije otvorena.
789 ManageAddOnsDialog.really.deinstall=Stvarno \u017Eelite deinstalirati {0}?
788 ManageAddOnsDialog.really.deinstall=Stvarno \u017Eelite ukloniti {0}?
790789 ManageAddOnsDialog.search=Tra\u017Ei pro\u0161irenja
791790 ManageAddOnsDialog.search.file=Tra\u017Ei
792791 ManageAddOnsDialog.select.tooltip=Odaberi datoteku
959958 NotificationOptions.SELECT_NODE=Idi na podsjetnik
960959 ok=&U redu
961960 OKAction.text=Uredu
961 OldReminderListAction.text=Prika\u017Ei pro\u0161le podsjetnike...
962 OldReminderListAction.tooltip=Prika\u017Ei vremena pro\u0161lih podsjetnika i sve korespondiraju\u0107e \u010Dvorove na svim otvorenim mapama.
962963 OnlineReference.text=Dokumentacija - WEB
963964 open_asMindMap=Mentalna mapa
964965 OpenAction.text=Otvori spremljenu mapu...
966 OpenApiDocumentationAction.text=Freeplane API...
965967 OpenFreeplaneSiteAction.text=Web stranica Freeplane
966968 OpenMapsAddLocation.text=Dodaj OpenMaps lokaciju...
967969 OpenMapsRemoveLocation.text=Ukloni OpenMaps lokaciju
981983 OptionPanel.addons=Pro\u0161irenja
982984 OptionPanel.af=Afri\u010Dki
983985 OptionPanel.always_fold_all_after_load=Sklopi sve
984 OptionPanel.always_load_last_maps=U\u010Ditaj posljednje i nove mape
985 OptionPanel.always_load_last_maps.tooltip=Otvara posljednje datoteke prema gore odabranim postavkama, \u010Dak i pokretanjem FP odabirom druge datoteke.
986 OptionPanel.always_load_last_maps=U\u010Ditaj posljednje uz nove mape
987 OptionPanel.always_load_last_maps.tooltip=Otvara posljednje datoteke prema gore odabranim postavkama, \u010Dak ako je pokrenut FP sa mapom koja ima druga\u010Dije postavke.
986988 OptionPanel.always_save_folding=Uvijek spremi
987989 OptionPanel.always_save_folding_state=Uvijek spremi promjene polo\u017Eaja sklopljenih i rasklopljenih \u010Dvorova
988990 OptionPanel.always_save_folding_state.tooltip=Ova opcija \u0107e prilikom zatvaranja programa upozoriti na promijene izgleda stabla mape.
12851287 OptionPanel.relative=Relativne
12861288 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"Pitaj" (use in doubt).<br>"Da" prika\u017Ei ure\u0111iva\u010D za bolje oblikovanje teksta .<br>"Ne" prika\u017Ei jednostavni tekstualni ure\u0111iva\u010D.</html>
12871289 OptionPanel.remind_use_rich_text_in_new_nodes=Koristi bolje oblikovani tekst za zaljepljene \u010Dvorove
1290 OptionPanel.reminder.showPastRemindersOnStart=Prika\u017Ei prethodne podsjetnike
12881291 OptionPanel.remindersBlink=Treptaju\u0107i podsjetnik
12891292 OptionPanel.remindersShowNotifications=Podsjetnici prikazuju sko\u010Dne prozore s obavijestima
12901293 OptionPanel.remindersStandardDelay=Ka\u0161njenje podsjetnika
15641567 plugins/ScriptEditor/window.Result=Rezultat:
15651568 plugins/ScriptEditor/window.title=Ure\u0111iva\u010D skripta
15661569 plugins/ScriptingEngine.illegalAccessToInternalAPI=Nedozvoljeni pristup internim API ( paket {0}). - Molim kontaktirajte Freeplane tim ako API skripte nisu dovoljno podr\u017Eane.
1567 plugins/TimeList.xml_Created=Kreirano
1568 plugins/TimeList.xml_Date=Datum
1569 plugins/TimeList.xml_Details=Detalji
1570 plugins/TimeList.xml_Icons=Ikone
1571 plugins/TimeList.xml_Modified=Izmijenjeno
1572 plugins/TimeList.xml_Notes=Bilje\u0161ke
1573 plugins/TimeList.xml_Text=Tekst
1574 plugins/TimeManagement.xml_appendButton=Umetni datum
1575 plugins/TimeManagement.xml_Cancel=Odustani
1576 plugins/TimeManagement.xml_cancelButton=Odustani
1577 plugins/TimeManagement.xml_closeButton=Zatvori
1578 plugins/TimeManagement.xml_Export=Izvoz odabranih \u010Dvorova
1579 plugins/TimeManagement.xml_Find=Tra\u017Ei
1580 plugins/TimeManagement.xml_Goto=Idi na
1581 plugins/TimeManagement.xml_hour=Sat:
1582 plugins/TimeManagement.xml_menu_actions=Akcije
1583 plugins/TimeManagement.xml_minute=Minuta:
1584 plugins/TimeManagement.xml_reminderButton=Sjeti me na taj dan
1585 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Nakon klika zapo\u010Dinje vremensko odbrojavanje prema dodijeljenom datumu. Nakon isteka vremena trepere\u0107a ikona daje znak o isteku.<br> Ako zatvorite Mentalnu mapu, odbrojavanje se ponovno aktivira kod otvaranja Mentalne mape.</html>
1586 plugins/TimeManagement.xml_reminderNode.tooltip=Podsjetnik zadatka pode\u0161en na {0,date} {0,time}.
1587 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Trenutno je mogu\u0107 jedan podsjetnik po \u010Dvoru. <br>Trenutni podsjetnik je pode\u0161en je na {0,date} {0,time}, va\u0161 izbor je bio {1,date} {1,time}. <br><br>\u017Delite li promijeniti vrijeme aktiviranja podsjetnika (Da) <br>ili \u017Eelite zadr\u017Eati staro vrijeme (Ne)?</html>
1588 plugins/TimeManagement.xml_remindLaterButton=Podsjeti kasnije
1589 plugins/TimeManagement.xml_remindLaterButton.tooltip=Podsjeti kasnije
1590 plugins/TimeManagement.xml_removeReminderButton=Ukloni podsjetnik
1591 plugins/TimeManagement.xml_removeReminderButton.tooltip=Ukloni sve podsjetnike koji su povezani s odabranim \u010Dvorovima.
1592 plugins/TimeManagement.xml_Replace=Zamijeni
1593 plugins/TimeManagement.xml_Replace_All=Zamijeni sve
1594 plugins/TimeManagement.xml_Replace_Selected=Zamijeni odabrano
1595 plugins/TimeManagement.xml_Select=Odaberi
1596 plugins/TimeManagement.xml_todayButton=Osvje\u017Ei kalendar
1597 plugins/TimeManagement.xml_WindowTitle=Upravljanje kalendarom
1598 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Pretra\u017Ei i zamijeni
15991570 preferences=Postavke
16001571 presentation=Prezentacija
16011572 presentation.combineAll=Kombiniraj sve prezentacije
16251596 RedoAction.text=Ponovi
16261597 RedoFilterAction.text=Ponovi
16271598 regular_expressions=Regularni izraz
1599 reminder.appendButton=Umetni datum
1600 reminder.Cancel=Odustani
1601 reminder.cancelButton=Odustani
1602 reminder.closeButton=Zatvori
1603 reminder.Created=Kreirano
1604 reminder.Details=Detalji
1605 reminder.Export=Izvoz odabranih \u010Dvorova
1606 reminder.Find=Tra\u017Ei
1607 reminder.Goto=Idi na
1608 reminder.hour=Sat:
1609 reminder.Icons=Ikone
1610 reminder.Map=Mapa
1611 reminder.menu_actions=Akcije
1612 reminder.minute=Minuta:
1613 reminder.Modified=Izmijenjeno
1614 reminder.Notes=Bilje\u0161ke
1615 reminder.Reminder=Podsjetnik
1616 reminder.reminderButton=Sjeti me na taj dan
1617 reminder.reminderButton.tooltip=<html>Nakon klika zapo\u010Dinje vremensko odbrojavanje prema dodijeljenom datumu. Nakon isteka vremena trepere\u0107a ikona daje znak o isteku.<br> Ako zatvorite Mentalnu mapu, odbrojavanje se ponovno aktivira kod otvaranja Mentalne mape.</html>
1618 reminder.reminderNode.tooltip=Podsjetnik zadatka pode\u0161en na {0,date} {0,time}.
1619 reminder.reminderNode_onlyOneDate=<html>Trenutno je mogu\u0107 jedan podsjetnik po \u010Dvoru. <br>Trenutni podsjetnik je pode\u0161en je na {0,date} {0,time}, va\u0161 izbor je bio {1,date} {1,time}. <br><br>\u017Delite li promijeniti vrijeme aktiviranja podsjetnika (Da) <br>ili \u017Eelite zadr\u017Eati staro vrijeme (Ne)?</html>
1620 reminder.remindLaterButton=Podsjeti kasnije
1621 reminder.remindLaterButton.tooltip=Podsjeti kasnije
1622 reminder.Remove_All=Ukloni sve podsjetnike
1623 reminder.Remove_Selected=Ukloni odabrane podsjetnike
1624 reminder.removeReminderButton=Ukloni podsjetnik
1625 reminder.removeReminderButton.tooltip=Ukloni sve podsjetnike koji su povezani s odabranim \u010Dvorovima.
1626 reminder.Replace=Zamijeni
1627 reminder.Replace_All=Zamijeni sve
1628 reminder.Replace_Selected=Zamijeni odabrano
1629 reminder.Run_All=Pokreni sve skripte
1630 reminder.Run_Selected=Pokreni odabrane skripte
1631 reminder.Select=Odaberi
1632 reminder.Text=Tekst
1633 reminder.todayButton=Osvje\u017Ei kalendar
1634 reminder.WindowTitle=Upravljanje podsjetnicima
1635 reminder.WindowTitle_All_Nodes=Pretra\u017Ei i zamijeni
1636 reminder.WindowTitle_pastReminders=Pro\u0161li podsjetnici
1637 reminder_script_error=Gre\u0161ka {0} u skripti podsjetnika u mapi {1} \u010Dvor {2}
16281638 ReminderHookAction.text=Ukloni podsjetnik
16291639 ReminderHookAction.tooltip=Ukloni podsjetnik s \u010Dvora.
1640 ReminderListAction.text=Prika\u017Ei popis vremenskih podsjetnika ...
1641 ReminderListAction.tooltip=Prikazuje sve vremenske podsjetnike i pripadaju\u0107e \u010Dvorove.
16301642 reminderNotification=Obavijest podsjetnika
16311643 remove_file_from_list_on_error=Datoteka {0} nije otvorena. \u017Delite li je maknuti s liste nedavno otvaranih datoteka?
16321644 remove_shortcut_question={0} trenutno je dodijeljeno {1}.\n\u017Delite li dodijeliti ovu tipkovni\u010Dku kraticu {2}?
17111723 SetLinkAnchorAction.tooltip_anchored=<html>postavi ozna\u010Deni \u010Dvor kao sidro za budu\u0107e <br/>stvaranje lokalnih ili globalnih veza (linkova). Aktualno sidro:{0}
17121724 SetLinkByFileChooserAction.text=Hiperveze (Pretra\u017Eiva\u010D datoteka)...
17131725 SetLinkByTextFieldAction.text=Dodaj ili promijeni hipervezu (Polje s tekstom)...
1726 SetNodeAliasAction.text=Postavi alias \u010Dvora
17141727 SetNodeLink.text=Postavi vezu \u010Dvora...
17151728 SetNoteWindowPosition.bottom.text=Dolje
17161729 SetNoteWindowPosition.left.text=Lijevo
20162029 TextAlignAction.RIGHT.text=Poravnaj tekst desno
20172030 textalignment=Poravnavanje teksta
20182031 TextChangeHotKeyAction.text=Postavi tipkovni\u010Dku kraticu za promjenu teksta
2019 TimeListAction.text=Prika\u017Ei popis vremenskih podsjetnika ...
2020 TimeListAction.tooltip=Prikazuje sve vremenske podsjetnike i pripadaju\u0107e \u010Dvorove.
20212032 TimeManagementAction.text=Prika\u017Ei kalendar...
20222033 TimeManagementAction.tooltip=<html> Prika\u017Ei kalendarski modul (autora je Kai Toedter).</html>
20232034 TimePeriodUnits.days=dani
228228 ColorProperty.ResetColor=Sz\u00EDn alaphelyzetbe
229229 combined=Kombin\u00E1lt
230230 condition=Felt\u00E9tel
231 ConfigureNodeReferenceAction.text=Pont hivatkoz\u00E1s be\u00E1ll\u00EDt\u00E1sa
232231 confirmation=Meger\u0151s\u00EDt\u00E9s
233232 connector=\u00D6sszek\u00F6t\u0151
234233 connector_arrows=Ny\u00EDl
245244 CopyIDAction.text=Pont azonos\u00EDt\u00F3 m\u00E1sol\u00E1sa
246245 CopyMapStylesAction.text=T\u00E9rk\u00E9pst\u00EDlus m\u00E1sol\u00E1sa...
247246 CopyNodeURIAction.text=Pont URI m\u00E1sol\u00E1sa
248 copyright=Copyright \u00A9 2000-2018 A Freeplane csapata \u00E9s m\u00E1sok
247 copyright=Copyright \u00A9 2000-2019 A Freeplane csapata \u00E9s m\u00E1sok
249248 CopySingleAction.text=Pont m\u00E1sol\u00E1sa
250249 CopySingleAction.tooltip=Csak a kiv\u00E1lasztott pont m\u00E1sol\u00E1sa
251250 CopyStyleExtensionsAction.text=St\u00EDluspont kiterjeszt\u00E9seinek m\u00E1sol\u00E1sa
515514 FormatPaste.tooltip=<html>Beilleszti a kim\u00E1solt form\u00E1tumot.</html>
516515 formats_not_loaded=A form\u00E1tumok nem t\u00F6lthet\u0151k be, a f\u00E1jl s\u00E9r\u00FClt
517516 formula.error.attributeValueIsNull=A ''{0}'' tulajdons\u00E1g ki\u00E9rt\u00E9kel\u00E9s ut\u00E1ni \u00E9rt\u00E9ke: null.
518 formula.error.circularReference=K\u00F6rhivatkoz\u00E1s: A formula mag\u00E1ra hivatkozik ebben a pontban: "{0}".
517 formula.error.circularReference=K\u00F6rhivatkoz\u00E1s: A formula mag\u00E1ra hivatkozik ebben a pontban: {0} ''{1}''.
519518 formula.EvaluateAllAction.text=Minden \u00FAjrasz\u00E1mol\u00E1sa
520519 formula.EvaluateAllAction.tooltip=Minden k\u00E9plet \u00FAjrasz\u00E1mol\u00E1sa az aktu\u00E1lis t\u00E9rk\u00E9pen
521520 formula.menuname=K\u00E9pletek
15601559 plugins/ScriptEditor/window.Result=Eredm\u00E9ny:
15611560 plugins/ScriptEditor/window.title=Szkriptszerkeszt\u0151
15621561 plugins/ScriptingEngine.illegalAccessToInternalAPI=Tiltott hozz\u00E1f\u00E9r\u00E9s a bels\u0151 API-hoz (csomag: {0}). - L\u00E9pjen kapcsolatba a Freeplane csapattal, ha a szkriptel\u00E9si API nem megfelel\u0151.
1563 plugins/TimeList.xml_Created=L\u00E9trehozva
1564 plugins/TimeList.xml_Date=D\u00E1tum
1565 plugins/TimeList.xml_Details=R\u00E9szletek
1566 plugins/TimeList.xml_Icons=Ikonok
1567 plugins/TimeList.xml_Modified=M\u00F3dos\u00EDtva
1568 plugins/TimeList.xml_Notes=Megjegyz\u00E9sek
1569 plugins/TimeList.xml_Text=Sz\u00F6veg
1570 plugins/TimeManagement.xml_appendButton=D\u00E1tum besz\u00FAr\u00E1sa a kijel\u00F6l\u00E9sbe
1571 plugins/TimeManagement.xml_Cancel=M\u00E9gsem
1572 plugins/TimeManagement.xml_cancelButton=M\u00E9gsem
1573 plugins/TimeManagement.xml_closeButton=Bez\u00E1r
1574 plugins/TimeManagement.xml_Export=Kiv\u00E1lasztott pontok export\u00E1l\u00E1sa
1575 plugins/TimeManagement.xml_Find=Keres\u00E9s
1576 plugins/TimeManagement.xml_Goto=Ugr\u00E1s
1577 plugins/TimeManagement.xml_hour=\u00D3ra:
1578 plugins/TimeManagement.xml_menu_actions=Akci\u00F3k
1579 plugins/TimeManagement.xml_minute=Perc:
1580 plugins/TimeManagement.xml_reminderButton=Eml\u00E9keztessen ekkor
1581 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Megnyom\u00E1skor egy id\u0151z\u00EDt\u0151 aktiv\u00E1l\u00F3dik a megadott d\u00E1tumra. A megfelel\u0151 id\u0151 el\u00E9rkezt\u00E9t egy villog\u00F3 ikon fogja jelezni.<br> A t\u00E9rk\u00E9p bez\u00E1r\u00E1sa eset\u00E9n az id\u0151z\u00EDt\u0151k akkor ker\u00FClnek \u00FAjra aktiv\u00E1l\u00E1sra, amikor a t\u00E9rk\u00E9pet \u00FAjra megnyitj\u00E1k.</html>
1582 plugins/TimeManagement.xml_reminderNode.tooltip=Eml\u00E9keztet\u0151 \u00FCtemezve ekkorra: {0,date} {0,time}.
1583 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Jelenleg pontonk\u00E9nt egy eml\u00E9keztet\u0151 enged\u00E9lyezett. <br>Jelenleg ekkorra van be\u00E1ll\u00EDtva az eml\u00E9keztet\u0151: {0,date} {0,time}, erre k\u00EDv\u00E1nja m\u00F3dos\u00EDtani: {1,date} {1,time}. <br><br>Be\u00E1ll\u00EDtja az \u00FAj eml\u00E9keztet\u0151t (IGEN) <br>vagy megtartja a r\u00E9git (NEM)?</html>
1584 plugins/TimeManagement.xml_remindLaterButton=Eml\u00E9keztessen k\u00E9s\u0151bb
1585 plugins/TimeManagement.xml_remindLaterButton.tooltip=Eml\u00E9keztessen k\u00E9s\u0151bb
1586 plugins/TimeManagement.xml_removeReminderButton=Eml\u00E9keztet\u0151 elt\u00E1vol\u00EDt\u00E1sa
1587 plugins/TimeManagement.xml_removeReminderButton.tooltip=A kijel\u00F6lt ponthoz tartoz\u00F3 \u00F6sszes eml\u00E9keztet\u0151 elt\u00E1vol\u00EDt\u00E1sa.
1588 plugins/TimeManagement.xml_Replace=Lecser\u00E9l
1589 plugins/TimeManagement.xml_Replace_All=Mindent lecser\u00E9l
1590 plugins/TimeManagement.xml_Replace_Selected=Kijel\u00F6lteket lecser\u00E9l
1591 plugins/TimeManagement.xml_Select=Kijel\u00F6l
1592 plugins/TimeManagement.xml_todayButton=Napt\u00E1r a mai napra
1593 plugins/TimeManagement.xml_WindowTitle=Id\u0151 kezel\u00E9se
1594 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Keres\u00E9s \u00E9s csere
15951562 preferences=Be\u00E1ll\u00EDt\u00E1sok
15961563 presentation=Bemutat\u00F3
15971564 presentation.combineAll=\u00D6sszes prezent\u00E1ci\u00F3 kombin\u00E1l\u00E1sa
16211588 RedoAction.text=\u00DAjra
16221589 RedoFilterAction.text=Sz\u0171r\u00E9s \u00FAjra
16231590 regular_expressions=Regul\u00E1ris kifejez\u00E9sek
1591 reminder.appendButton=D\u00E1tum besz\u00FAr\u00E1sa a kijel\u00F6l\u00E9sbe
1592 reminder.Cancel=M\u00E9gsem
1593 reminder.cancelButton=M\u00E9gsem
1594 reminder.closeButton=Bez\u00E1r
1595 reminder.Created=L\u00E9trehozva
1596 reminder.Details=R\u00E9szletek
1597 reminder.Export=Kiv\u00E1lasztott pontok export\u00E1l\u00E1sa
1598 reminder.Find=Keres\u00E9s
1599 reminder.Goto=Ugr\u00E1s
1600 reminder.hour=\u00D3ra:
1601 reminder.Icons=Ikonok
1602 reminder.Map=T\u00E9rk\u00E9p
1603 reminder.menu_actions=Akci\u00F3k
1604 reminder.minute=Perc:
1605 reminder.Modified=M\u00F3dos\u00EDtva
1606 reminder.Notes=Megjegyz\u00E9sek
1607 reminder.Reminder=Eml\u00E9keztet\u0151
1608 reminder.reminderButton=Eml\u00E9keztessen ekkor
1609 reminder.reminderButton.tooltip=<html>Megnyom\u00E1skor egy id\u0151z\u00EDt\u0151 aktiv\u00E1l\u00F3dik a megadott d\u00E1tumra. A megfelel\u0151 id\u0151 el\u00E9rkezt\u00E9t egy villog\u00F3 ikon fogja jelezni.<br> A t\u00E9rk\u00E9p bez\u00E1r\u00E1sa eset\u00E9n az id\u0151z\u00EDt\u0151k akkor ker\u00FClnek \u00FAjra aktiv\u00E1l\u00E1sra, amikor a t\u00E9rk\u00E9pet \u00FAjra megnyitj\u00E1k.</html>
1610 reminder.reminderNode.tooltip=Eml\u00E9keztet\u0151 \u00FCtemezve ekkorra: {0,date} {0,time}.
1611 reminder.reminderNode_onlyOneDate=<html>Jelenleg pontonk\u00E9nt egy eml\u00E9keztet\u0151 enged\u00E9lyezett. <br>Jelenleg ekkorra van be\u00E1ll\u00EDtva az eml\u00E9keztet\u0151: {0,date} {0,time}, erre k\u00EDv\u00E1nja m\u00F3dos\u00EDtani: {1,date} {1,time}. <br><br>Be\u00E1ll\u00EDtja az \u00FAj eml\u00E9keztet\u0151t (IGEN) <br>vagy megtartja a r\u00E9git (NEM)?</html>
1612 reminder.remindLaterButton=Eml\u00E9keztessen k\u00E9s\u0151bb
1613 reminder.remindLaterButton.tooltip=Eml\u00E9keztessen k\u00E9s\u0151bb
1614 reminder.removeReminderButton=Eml\u00E9keztet\u0151 elt\u00E1vol\u00EDt\u00E1sa
1615 reminder.removeReminderButton.tooltip=A kijel\u00F6lt ponthoz tartoz\u00F3 \u00F6sszes eml\u00E9keztet\u0151 elt\u00E1vol\u00EDt\u00E1sa.
1616 reminder.Replace=Lecser\u00E9l
1617 reminder.Replace_All=Mindent lecser\u00E9l
1618 reminder.Replace_Selected=Kijel\u00F6lteket lecser\u00E9l
1619 reminder.Select=Kijel\u00F6l
1620 reminder.Text=Sz\u00F6veg
1621 reminder.todayButton=Napt\u00E1r a mai napra
1622 reminder.WindowTitle=Id\u0151 kezel\u00E9se
1623 reminder.WindowTitle_All_Nodes=Keres\u00E9s \u00E9s csere
16241624 ReminderHookAction.text=Eml\u00E9keztet\u0151 elt\u00E1vol\u00EDt\u00E1sa
16251625 ReminderHookAction.tooltip=Elt\u00E1vol\u00EDt egy eml\u00E9keztet\u0151t egy pontr\u00F3l.
1626 ReminderListAction.text=Feladatok kezel\u00E9se...
1627 ReminderListAction.tooltip=Minden \u00FCtemezett id\u0151 \u00E9s a hozz\u00E1juk tartoz\u00F3 pontok megjelen\u00EDt\u00E9se.
16261628 reminderNotification=Eml\u00E9keztet\u0151 \u00E9rtes\u00EDt\u00E9s
16271629 remove_file_from_list_on_error=Ezt a f\u00E1jlt nem siker\u00FClt megnyitni: "{0}". Leker\u00FClj\u00F6n a legut\u00F3bbi f\u00E1jlok list\u00E1j\u00E1b\u00F3l?
16281630 remove_shortcut_question=Lecser\u00E9li a gyorsbillenty\u0171t?
20112013 TextAlignAction.RIGHT.text=Jobbra igaz\u00EDtott sz\u00F6veg
20122014 textalignment=Sz\u00F6veg igaz\u00EDt\u00E1sa
20132015 TextChangeHotKeyAction.text=Sz\u00F6veg cser\u00E9j\u00E9hez gyorsbillenty\u0171 be\u00E1ll\u00EDt\u00E1sa
2014 TimeListAction.text=Feladatok kezel\u00E9se...
2015 TimeListAction.tooltip=Minden \u00FCtemezett id\u0151 \u00E9s a hozz\u00E1juk tartoz\u00F3 pontok megjelen\u00EDt\u00E9se.
20162016 TimeManagementAction.text=Id\u0151 kezel\u00E9se...
20172017 TimeManagementAction.tooltip=<html>Kai Toedter napt\u00E1rmodulj\u00E1nak megjelen\u00EDt\u00E9se.</html>
20182018 TimePeriodUnits.days=nap
373373 no=Tidak
374374 no_format_copy_before_format_paste=Format tidak dapat ditempelkan sebelum disalin dari node yang lain.
375375 no_found_from=<html><b>{0}</b>&nbsp;tidak ditemukan dalam <b>{1}</b>.</html>
376 no_more_found_from=<html><b>{0}</b>&nbsp;tidak ditemukan lagi dalam <b>{1}</b>.
376 no_more_found_from=<html><u>{0}</u>&nbsp;tidak ditemukan lagi dalam {1}.</html>
377377 no_previous_find=Tidak ada pencarian sebelumnya.
378378 node=Node
379379 node_changed_discard_changes=Node telah diubah. Anda ingin membatalkan perintah ini?
667667 plugins/ScriptEditor.run=Jalankan
668668 plugins/ScriptEditor/window.Result=Hasil:
669669 plugins/ScriptEditor/window.title=Editor Skrip
670 plugins/TimeList.xml_Created=Dibuat
671 plugins/TimeList.xml_Date=Tanggal
672 plugins/TimeList.xml_Icons=Ikon
673 plugins/TimeList.xml_Modified=Diubah
674 plugins/TimeList.xml_Notes=Catatan
675 plugins/TimeList.xml_Text=Teks
676 plugins/TimeManagement.xml_appendButton=Bubuhkan Tanggal Pada Node Terpilih
677 plugins/TimeManagement.xml_Cancel=Batal
678 plugins/TimeManagement.xml_cancelButton=Batal
679 plugins/TimeManagement.xml_closeButton=Tutup
680 plugins/TimeManagement.xml_Export=Ekspor Node Terpilih
681 plugins/TimeManagement.xml_Find=Cari
682 plugins/TimeManagement.xml_Goto=Pergi Ke
683 plugins/TimeManagement.xml_hour=Jam:
684 plugins/TimeManagement.xml_menu_actions=Aksi
685 plugins/TimeManagement.xml_minute=Menit:
686 plugins/TimeManagement.xml_reminderButton=Ingatkan Saya Pada Tanggal Ini
687 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Bila ditekan, pencatat waktu akan menjadualkan waktu yang diberikan. Lalu, ikon akan berkedip pada saat itu.<br>Bila peta ditutup, catatan waktu akan diaktifkan ulang ketika peta dibuka kembali.</html>
688 plugins/TimeManagement.xml_reminderNode.tooltip=Pengingat dijadualkan pada {0,date} {0,time}.
689 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Untuk saat ini, satu node hanya bisa punya satu pengingat. <br>Pengingat saat ini terjadual untuk {0,date} {0,time}, Anda memilih {1,date} {1,time}. <br><br>Apakah Anda hendak mengganti waktu pengingat node ini (YES) <br>atau tetap memakai yang lama (NO)?</html>
690 plugins/TimeManagement.xml_removeReminderButton=Copot Pengingat
691 plugins/TimeManagement.xml_removeReminderButton.tooltip=Copot semua pengingat yang diasosiasikan dengan node terpilih.
692 plugins/TimeManagement.xml_Replace=Ganti
693 plugins/TimeManagement.xml_Replace_All=Ganti Semua
694 plugins/TimeManagement.xml_Replace_Selected=Ganti Terpilih
695 plugins/TimeManagement.xml_Select=Pilih
696 plugins/TimeManagement.xml_todayButton=Hari Ini
697 plugins/TimeManagement.xml_WindowTitle=Manajemen Waktu
698 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Cari dan Ganti
699670 preferences=Preferensi
700671 print_preview_title=Tampakan Awal
701672 PrintAction.text=Cetak...
710681 really_remove_node=Benar hapus node?
711682 RedoAction.text=Ulangi
712683 RedoFilterAction.text=Ulangi
684 reminder.appendButton=Bubuhkan Tanggal Pada Node Terpilih
685 reminder.Cancel=Batal
686 reminder.cancelButton=Batal
687 reminder.closeButton=Tutup
688 reminder.Created=Dibuat
689 reminder.Export=Ekspor Node Terpilih
690 reminder.Find=Cari
691 reminder.Goto=Pergi Ke
692 reminder.hour=Jam:
693 reminder.Icons=Ikon
694 reminder.Map=Peta
695 reminder.menu_actions=Aksi
696 reminder.minute=Menit:
697 reminder.Modified=Diubah
698 reminder.Notes=Catatan
699 reminder.reminderButton=Ingatkan Saya Pada Tanggal Ini
700 reminder.reminderButton.tooltip=<html>Bila ditekan, pencatat waktu akan menjadualkan waktu yang diberikan. Lalu, ikon akan berkedip pada saat itu.<br>Bila peta ditutup, catatan waktu akan diaktifkan ulang ketika peta dibuka kembali.</html>
701 reminder.reminderNode.tooltip=Pengingat dijadualkan pada {0,date} {0,time}.
702 reminder.reminderNode_onlyOneDate=<html>Untuk saat ini, satu node hanya bisa punya satu pengingat. <br>Pengingat saat ini terjadual untuk {0,date} {0,time}, Anda memilih {1,date} {1,time}. <br><br>Apakah Anda hendak mengganti waktu pengingat node ini (YES) <br>atau tetap memakai yang lama (NO)?</html>
703 reminder.removeReminderButton=Copot Pengingat
704 reminder.removeReminderButton.tooltip=Copot semua pengingat yang diasosiasikan dengan node terpilih.
705 reminder.Replace=Ganti
706 reminder.Replace_All=Ganti Semua
707 reminder.Replace_Selected=Ganti Terpilih
708 reminder.Select=Pilih
709 reminder.Text=Teks
710 reminder.todayButton=Hari Ini
711 reminder.WindowTitle=Manajemen Waktu
712 reminder.WindowTitle_All_Nodes=Cari dan Ganti
713713 ReminderHookAction.text=Copot Pengingat
714714 ReminderHookAction.tooltip=Menghapus pengingat dari sebuah simpul.
715 ReminderListAction.text=Kelola tugas ...
716 ReminderListAction.tooltip=Tampilkan semua waktu terjadual dan node yang bersangkutan.
715717 RemoveAllIconsAction.text=Copot Semua Ikon
716718 RemoveIconAction.text=Copot Ikon Terakhir
717719 RemoveNoteAction.text=Copot Catatan
928930 SplitNode.tooltip=<html>Node dipisahkan</html>
929931 style=Gaya
930932 svg=SVG[translate me]
931 TimeListAction.text=Kelola tugas ...
932 TimeListAction.tooltip=Tampilkan semua waktu terjadual dan node yang bersangkutan.
933933 TimeManagementAction.text=Tunjukkan Kalender...
934934 TimeManagementAction.tooltip=<html>Tunjukkan modul Kalender buatan Kai Toedter.</html>
935935 ToggleChildrenFoldedAction.text=Buka/Tutup Lipatan Anak
227227 ColorProperty.ResetColor=Ripristina colore
228228 combined=Combinato
229229 condition=Condizione
230 ConfigureNodeReferenceAction.text=Configurare riferimento nodo
231230 confirmation=Conferma
232231 connector=Collegamento grafico
233232 connector_arrows=Frecce del Collegamento grafico
244243 CopyIDAction.text=Copia l'ID del nodo
245244 CopyMapStylesAction.text=Copia lo stile della mappa...
246245 CopyNodeURIAction.text=Copiare URI del Nodo
247 copyright=Copyright \u00A9 2000-2018 Freeplane team ed altri
246 copyright=Copyright \u00A9 2000-2019 Freeplane team ed altri
248247 CopySingleAction.text=Copia Nodo (singolo)
249248 CopySingleAction.tooltip=Copia solo il nodo selezionato
250249 CopyStyleExtensionsAction.text=Copiare le estensioni dallo stile del nodo
515514 formats_not_loaded=La formattazione non pu\u00F2 essere caricata, file corrotto
516515 formula.ClearDependenciesAction.text=Cancella dipendenze
517516 formula.error.attributeValueIsNull=Valore Attributo ''{0}'' \u00E8 nullo dopo la valutazione.
518 formula.error.circularReference=Riferimento Circolare: La formula nel nodo ''{0}'' \u00E8 riferita a se stessa.
517 formula.error.circularReference=Riferimento Circolare: La formula nel nodo {0} ''{1}'' \u00E8 riferita a se stessa.
519518 formula.EvaluateAllAction.text=Valuta tutto
520519 formula.EvaluateAllAction.tooltip=Valuta tutte le formule della mappa attuale
521520 formula.menuname=Formule
15591558 plugins/ScriptEditor/window.Result=Risultati:
15601559 plugins/ScriptEditor/window.title=Editor Script
15611560 plugins/ScriptingEngine.illegalAccessToInternalAPI=Accesso illegale alla API interna (pacchetto {0}). - Per favore contattare il team di Freeplane se lo script API non \u00E8 sufficentemente potente.
1562 plugins/TimeList.xml_Created=Creato
1563 plugins/TimeList.xml_Date=Data
1564 plugins/TimeList.xml_Details=Dettagli
1565 plugins/TimeList.xml_Icons=Icone
1566 plugins/TimeList.xml_Modified=Modificato
1567 plugins/TimeList.xml_Notes=Note
1568 plugins/TimeList.xml_Text=Testo
1569 plugins/TimeManagement.xml_appendButton=Aggiungi la data ai nodi selezionati
1570 plugins/TimeManagement.xml_Cancel=Cancella
1571 plugins/TimeManagement.xml_cancelButton=Cancella
1572 plugins/TimeManagement.xml_closeButton=Chiudi
1573 plugins/TimeManagement.xml_Export=Esporta nodi selezionati
1574 plugins/TimeManagement.xml_Find=Trova
1575 plugins/TimeManagement.xml_Goto=Vai a
1576 plugins/TimeManagement.xml_hour=Ora:
1577 plugins/TimeManagement.xml_menu_actions=Azioni
1578 plugins/TimeManagement.xml_minute=Minuto:
1579 plugins/TimeManagement.xml_reminderButton=Promemoria in questa data
1580 plugins/TimeManagement.xml_reminderButton.tooltip=<html> Imposta un Promemoria alla data indicata. L'icona lampeggiante richiamer\u00E0 l' attenzione.<br> Chiudendo la mappa, i Promemoria vengono riattivati quando la mappa viene riaperta.</html>
1581 plugins/TimeManagement.xml_reminderNode.tooltip=Promemoria il {0,date} {0,time}.
1582 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Ci pu\u00F2 essere solo un promemoria per nodo. <br>Il promemoria attaule \u00E8 previsto il {0,date} {0,time}<br>il nuovo \u00E8 il {1,date} {1,time}. <br><br>Cambiare il promemoria del nodo (SI) <br> o conservare il vecchio (NO)?</html>
1583 plugins/TimeManagement.xml_remindLaterButton=Posticipa
1584 plugins/TimeManagement.xml_remindLaterButton.tooltip=Ricorda dopo
1585 plugins/TimeManagement.xml_removeReminderButton=Togli Promemoria
1586 plugins/TimeManagement.xml_removeReminderButton.tooltip=Togli tutti i Promemoria associati a questi nodi.
1587 plugins/TimeManagement.xml_Replace=Sostituisci
1588 plugins/TimeManagement.xml_Replace_All=Sostituisci tutti
1589 plugins/TimeManagement.xml_Replace_Selected=Sostituisci selezionati
1590 plugins/TimeManagement.xml_Select=Seleziona
1591 plugins/TimeManagement.xml_todayButton=Oggi
1592 plugins/TimeManagement.xml_WindowTitle=Gestione della data
1593 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Trova e sostituisci
15941561 preferences=Preferenze
15951562 presentation=Presentazione
15961563 presentation.combineAll=Associare tutte le presentazioni
16201587 RedoAction.text=Ripristina
16211588 RedoFilterAction.text=Ripristina
16221589 regular_expressions=Espressione Regolare
1590 reminder.appendButton=Aggiungi la data ai nodi selezionati
1591 reminder.Cancel=Cancella
1592 reminder.cancelButton=Cancella
1593 reminder.closeButton=Chiudi
1594 reminder.Created=Creato
1595 reminder.Details=Dettagli
1596 reminder.Export=Esporta nodi selezionati
1597 reminder.Find=Trova
1598 reminder.Goto=Vai a
1599 reminder.hour=Ora:
1600 reminder.Icons=Icone
1601 reminder.Map=Mappa
1602 reminder.menu_actions=Azioni
1603 reminder.minute=Minuto:
1604 reminder.Modified=Modificato
1605 reminder.Notes=Note
1606 reminder.Reminder=Promemoria
1607 reminder.reminderButton=Promemoria in questa data
1608 reminder.reminderButton.tooltip=<html> Imposta un Promemoria alla data indicata. L'icona lampeggiante richiamer\u00E0 l' attenzione.<br> Chiudendo la mappa, i Promemoria vengono riattivati quando la mappa viene riaperta.</html>
1609 reminder.reminderNode.tooltip=Promemoria il {0,date} {0,time}.
1610 reminder.reminderNode_onlyOneDate=<html>Ci pu\u00F2 essere solo un promemoria per nodo. <br>Il promemoria attaule \u00E8 previsto il {0,date} {0,time}<br>il nuovo \u00E8 il {1,date} {1,time}. <br><br>Cambiare il promemoria del nodo (SI) <br> o conservare il vecchio (NO)?</html>
1611 reminder.remindLaterButton=Posticipa
1612 reminder.remindLaterButton.tooltip=Ricorda dopo
1613 reminder.removeReminderButton=Togli Promemoria
1614 reminder.removeReminderButton.tooltip=Togli tutti i Promemoria associati a questi nodi.
1615 reminder.Replace=Sostituisci
1616 reminder.Replace_All=Sostituisci tutti
1617 reminder.Replace_Selected=Sostituisci selezionati
1618 reminder.Select=Seleziona
1619 reminder.Text=Testo
1620 reminder.todayButton=Oggi
1621 reminder.WindowTitle=Gestione della data
1622 reminder.WindowTitle_All_Nodes=Trova e sostituisci
16231623 ReminderHookAction.text=Togli Promemoria
16241624 ReminderHookAction.tooltip=Rimuovi un promemoria da un nodo.
1625 ReminderListAction.text=Visualizza lista avvisi ...
1626 ReminderListAction.tooltip=Visualizza tutti gli avvisi ed i corrispondenti nodi.
16251627 reminderNotification=Notifica promemoria
16261628 remove_file_from_list_on_error=File {0} non trovato. Rimuoverlo dall''elenco dei file recenti ?
16271629 remove_shortcut_question=Sostituire il tasto?
20102012 TextAlignAction.RIGHT.text=Testo allineato a destra
20112013 textalignment=Allineamento testo
20122014 TextChangeHotKeyAction.text=Impostare il testo del tasto di scelta rapida
2013 TimeListAction.text=Visualizza lista avvisi ...
2014 TimeListAction.tooltip=Visualizza tutti gli avvisi ed i corrispondenti nodi.
20152015 TimeManagementAction.text=Gestione Calendario...
20162016 TimeManagementAction.tooltip=<html>Gestione Calendario.</html>
20172017 TimePeriodUnits.days=giorni
158158 bitmaps=\u30D3\u30C3\u30C8\u30DE\u30C3\u30D7
159159 black=\u9ED2
160160 BlinkingNodeHookAction.text=\u30CE\u30FC\u30C9\u3092\u70B9\u6EC5
161 BlinkingNodeHookAction.tooltip=<html>\u30CE\u30FC\u30C9\u3092\u70B9\u6EC5\u3055\u305B\u307E\u3059\u3002\u3053\u306E\u30CE\u30FC\u30C9\u3092\u591A\u6570\u306E\u30CE\u30FC\u30C9\u3068\u95A2\u9023\u3065\u3051\u305F\u308A\u3001<br><strong>\u4ED6\u306E\u81EA\u52D5\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u9069\u7528\u3057\u305F\u308A\u3057\u306A\u3044\u3088\u3046\u306B</strong>\u6CE8\u610F\u3057\u3066\u4E0B\u3055\u3044</html>
161 BlinkingNodeHookAction.tooltip=<html>\u30CE\u30FC\u30C9\u3092\u70B9\u6EC5\u3055\u305B\u307E\u3059\u3002\u3053\u306E\u30CE\u30FC\u30C9\u3092\u591A\u6570\u306E\u30CE\u30FC\u30C9\u3068\u95A2\u9023\u3065\u3051\u305F\u308A\u3001<strong>\u4ED6\u306E\u81EA\u52D5\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u9069\u7528\u3057\u305F\u308A\u3057\u306A\u3044\u3088\u3046\u306B</strong>\u6CE8\u610F\u3057\u3066\u4E0B\u3055\u3044</html>
162162 blue=\u9752
163163 BoldAction.text=\u592A\u5B57
164164 boldify_branch=\u592A\u5B57\u5316
226226 ColorProperty.ResetColor=\u30EA\u30BB\u30C3\u30C8\u6642\u306E\u8272
227227 combined=\u8907\u5408
228228 condition=\u6761\u4EF6
229 ConfigureNodeReferenceAction.text=\u30CE\u30FC\u30C9\u53C2\u7167\u306E\u8A2D\u5B9A
230229 confirmation=\u78BA\u8A8D
231230 connector=\u30B3\u30CD\u30AF\u30BF
232231 connector_arrows=\u77E2\u3000 \u5370
243242 CopyIDAction.text=\u30CE\u30FC\u30C9 ID \u3092\u30B3\u30D4\u30FC
244243 CopyMapStylesAction.text=\u30DE\u30C3\u30D7\u306E\u30B9\u30BF\u30A4\u30EB\u3092\u30B3\u30D4\u30FC...
245244 CopyNodeURIAction.text=\u30CE\u30FC\u30C9\u306E URI \u3092\u30B3\u30D4\u30FC
246 copyright=Copyright \u00A9 2000-2018 Freeplane team and others
245 copyright=Copyright \u00A9 2000-2019 Freeplane team and others
247246 CopySingleAction.text=\u9078\u629E\u30CE\u30FC\u30C9\u306E\u307F\u30B3\u30D4\u30FC
248247 CopySingleAction.tooltip=\u9078\u629E\u4E2D\u306E\u30CE\u30FC\u30C9\u3060\u3051\u30B3\u30D4\u30FC\u3057\u307E\u3059\u3002
249248 CopyStyleExtensionsAction.text=\u30B9\u30BF\u30A4\u30EB\u30CE\u30FC\u30C9\u304B\u3089\u62E1\u5F35\u60C5\u5831\u3092\u30B3\u30D4\u30FC
350349 error_in_template=\u6A19\u6E96\u30DE\u30C3\u30D7\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8 {0} \u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\u3002\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u3066\u304F\u3060\u3055\u3044\u3002
351350 errornumber={0} \u500B\u306E\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\u3002
352351 ExecuteScript.script=\u30B9\u30AF\u30EA\u30D7\u30C8
353 ExecuteScriptError.text=\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002
352 ExecuteScriptError.text=\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\u3002:\n{0}
354353 ExecuteScriptForAllNodes.text=\u3059\u3079\u3066\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C
355354 ExecuteScriptForSelectionAction.text=\u9078\u629E\u30CE\u30FC\u30C9\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C
356355 ExecuteScriptOnSelectedNode.text={0} \u3092\u9078\u629E\u30CE\u30FC\u30C9\uFF08\u3059\u3079\u3066\uFF09\u3067\u5B9F\u884C
513512 formats_not_loaded=\u66F8\u5F0F\u3092\u8AAD\u307F\u8FBC\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30D5\u30A1\u30A4\u30EB\u304C\u58CA\u308C\u3066\u3044\u307E\u3059\u3002
514513 formula.ClearDependenciesAction.text=\u53C2\u7167\u3092\u89E3\u9664
515514 formula.error.attributeValueIsNull=\u8A08\u7B97\u5F0F\u5B9F\u884C\u5F8C\u306E\u5C5E\u6027\u5024 ''{0}'' \u306F\u7A7A\u5024\u3067\u3059\u3002
516 formula.error.circularReference=\u5FAA\u74B0\u53C2\u7167\uFF1A\u30CE\u30FC\u30C9 ''{0}'' \u306E\u8A08\u7B97\u5F0F\u306F\u3001\u81EA\u5DF1\u306E\u5024\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002
515 formula.error.circularReference=\u5FAA\u74B0\u53C2\u7167\uFF1A\u30CE\u30FC\u30C9 {0} ''{1}'' \u306E\u8A08\u7B97\u5F0F\u306F\u3001\u81EA\u5DF1\u306E\u5024\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002
517516 formula.EvaluateAllAction.text=\u3059\u3079\u3066\u306E\u8A08\u7B97\u5F0F\u3092\u5B9F\u884C
518517 formula.EvaluateAllAction.tooltip=\u7DE8\u96C6\u4E2D\u306E\u30DE\u30C3\u30D7\u306E\u3059\u3079\u3066\u306E\u8A08\u7B97\u5F0F\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002
519518 formula.menuname=\u8A08\u7B97\u5F0F
911910 no_copy_attributes_before_paste_attributes=\u5C5E\u6027\u306F\u3001\u4E8B\u524D\u306B\u30B3\u30D4\u30FC\u3057\u3066\u304A\u304B\u306A\u3051\u308C\u3070\u3001\u8CBC\u308A\u4ED8\u3051\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002
912911 NO_FORMAT=\u30C6\u30AD\u30B9\u30C8\u306E\u307F
913912 no_format_copy_before_format_paste=\u66F8\u5F0F\u3092\u3042\u3089\u304B\u3058\u3081\u30B3\u30D4\u30FC\u3057\u3066\u304F\u3060\u3055\u3044\u3002
914 no_found_from=<html>"{1}" \u306E\u679D\u306B&nbsp<u>{0}</u> \u306F\u3042\u308A\u307E\u305B\u3093\u3002</html>
915 no_more_found_from=<html>"{1}" \u306E\u679D\u306B&nbsp\u3053\u308C\u4EE5\u4E0A <u>{0}</u> \u306F\u3042\u308A\u307E\u305B\u3093\u3002</html>
913 no_found_from=<html>"{1}" \u306E\u679D\u306B<u>{0}</u> \u306F\u3042\u308A\u307E\u305B\u3093\u3002</html>
914 no_more_found_from=<html>"{1}" \u306E\u679D\u306B \u3053\u308C\u4EE5\u4E0A <u>{0}</u> \u306F\u3042\u308A\u307E\u305B\u3093\u3002</html>
916915 no_previous_find=\u524D\u56DE\u306E\u691C\u7D22\u6761\u4EF6\u304C\u3042\u308A\u307E\u305B\u3093\u3002
917916 no_styles_found_in_map=\u30DE\u30C3\u30D7\u306B\u30B9\u30BF\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093\u3002
918917 no_translation_strings_found=\u7FFB\u8A33\u3067\u304D\u308B\u6587\u5B57\u5217\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
955954 NotificationOptions.SELECT_NODE=\u30EA\u30DE\u30A4\u30F3\u30C0\u3078\u79FB\u52D5
956955 ok=OK(&O)
957956 OKAction.text=OK(O)
957 OldReminderListAction.text=\u904E\u53BB\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u8868\u793A...
958 OldReminderListAction.tooltip=\u958B\u3044\u3066\u3044\u308B\u3059\u3079\u3066\u306E\u30DE\u30C3\u30D7\u4E0A\u306E\u904E\u53BB\u306E\u30EA\u30DE\u30A4\u30F3\u30C9\u6642\u9593\u3068\u5BFE\u5FDC\u3059\u308B\u30CE\u30FC\u30C9\u3092\u8868\u793A\u3059\u308B\u3002
958959 OnlineReference.text=\u30DE\u30CB\u30E5\u30A2\u30EB\u30DE\u30C3\u30D7\uFF08\u30AA\u30F3\u30E9\u30A4\u30F3\uFF09
959960 open_asMindMap=\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7
960961 OpenAction.text=\u4FDD\u5B58\u30DE\u30C3\u30D7\u3092\u958B\u304F...
962 OpenApiDocumentationAction.text=Freeplane API...
961963 OpenFreeplaneSiteAction.text=Freeplane \u30DB\u30FC\u30E0\u30DA\u30FC\u30B8
962964 OpenMapsAddLocation.text=OpenMaps \u306E\u4F4D\u7F6E\u3092\u8FFD\u52A0...
963965 OpenMapsRemoveLocation.text=OpenMaps \u306E\u4F4D\u7F6E\u3092\u524A\u9664
985987 OptionPanel.always_show_less_than_N_nodes_after_load=\u30CE\u30FC\u30C9\u306E\u6700\u5927\u8868\u793A\u6570\u3092\u5143\u306B\u30CE\u30FC\u30C9\u3092\u5C55\u958B\u3059\u308B
986988 OptionPanel.always_unfold_all_after_load=\u3059\u3079\u3066\u5C55\u958B\u3059\u308B
987989 OptionPanel.antialias=\u753B\u9762\u8868\u793A\u306E\u54C1\u8CEA
988 OptionPanel.antialias.tooltip=<html>\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7528\u3044\u308B\u3068\u30DE\u30C3\u30D7\u306E\u8868\u793A\u54C1\u8CEA\u304C\u5411\u4E0A\u3057\u307E\u3059\u304C\u3001\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u591A\u304F<br>\u306A\u308B\u3068\u8868\u793A\u306B\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002</html>
990 OptionPanel.antialias.tooltip=<html>\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7528\u3044\u308B\u3068\u30DE\u30C3\u30D7\u306E\u8868\u793A\u54C1\u8CEA\u304C\u5411\u4E0A\u3057\u307E\u3059\u304C\u3001\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u591A\u304F\u306A\u308B\u3068\u8868\u793A\u306B\u6642\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002</html>
989991 OptionPanel.antialias_all=\u3059\u3079\u3066\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9
990992 OptionPanel.antialias_edges=\u7DDA\u3060\u3051\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9
991993 OptionPanel.antialias_none=\u30A2\u30F3\u30C1\u30A8\u30A4\u30EA\u30A2\u30B9\u306A\u3057
10281030 OptionPanel.compare_as_number=\u6570\u5024\u3068\u3057\u3066\u6BD4\u8F03
10291031 OptionPanel.compile_only_changed_script_files=\u5909\u66F4\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3060\u3051\u3092\u30B3\u30F3\u30D1\u30A4\u30EB
10301032 OptionPanel.compile_only_changed_script_files.tooltip=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u304C\u5909\u66F4\u3055\u308C\u308B\u307E\u3067\u30B3\u30F3\u30D1\u30A4\u30EB\u6E08\u307F\u306E\u30AF\u30E9\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u6301\u3059\u308B
1033 OptionPanel.compiled_script_cache_size=\u30B3\u30F3\u30D1\u30A4\u30EB\u6E08\u307F\u30B9\u30AF\u30EA\u30D7\u30C8\u3068\u6570\u5F0F\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u30B5\u30A4\u30BA
10311034 OptionPanel.connector_arrows=\u77E2\u5370
10321035 OptionPanel.connector_dash=\u7DDA\u7A2E
10331036 OptionPanel.convert_to_current_version=\u65E7\u30D0\u30FC\u30B8\u30E7\u30F3\u306E Freeplane \u306E\u30DE\u30A4\u30F3\u30C9\u30DE\u30C3\u30D7\u3092\u73FE\u884C\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u3082\u306E\u306B\u81EA\u52D5\u5909\u63DB\u3057\u307E\u3059\u304B\uFF1F
10591062 OptionPanel.default_save_dir=\u65E2\u5B9A\u306E\u4FDD\u5B58\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
10601063 OptionPanel.Defaults=\u57FA\u672C\u8A2D\u5B9A
10611064 OptionPanel.delete_automatic_saves_at_exit=\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664
1062 OptionPanel.delete_automatic_saves_at_exit.tooltip=<html>\u30C1\u30A7\u30C3\u30AF\u3059\u308B\u3068\u3001Freeplane \u306E\u901A\u5E38\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u3002<br>\u8A33\u8005\u6CE8\uFF1A\u3053\u306E\u6A5F\u80FD\u306B\u3088\u308A\u524A\u9664\u3055\u308C\u308B\u306E\u306F\u300C\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u300D\u3060\u3051\u3067\u3059\u3002\u300C\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7<br>\u30D5\u30A1\u30A4\u30EB\u300D\u306F\u524A\u9664\u3055\u308C\u307E\u305B\u3093\u3002</html>
1065 OptionPanel.delete_automatic_saves_at_exit.tooltip=<html>\u30C1\u30A7\u30C3\u30AF\u3059\u308B\u3068\u3001Freeplane \u306E\u901A\u5E38\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u8A33\u8005\u6CE8\uFF1A\u3053\u306E\u6A5F\u80FD\u306B\u3088\u308A\u524A\u9664\u3055\u308C\u308B\u306E\u306F\u300C\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u300D\u3060\u3051\u3067\u3059\u3002\u300C\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A1\u30A4\u30EB\u300D\u306F\u524A\u9664\u3055\u308C\u307E\u305B\u3093\u3002</html>
10631066 OptionPanel.delete_nodes_without_question=\u30CE\u30FC\u30C9\u524A\u9664\u6642\u306B\u78BA\u8A8D\u3092\u7701\u7565
10641067 OptionPanel.delete_nodes_without_question.tooltip=\u30C1\u30A7\u30C3\u30AF\u3059\u308B\u3068\u3001\u30CE\u30FC\u30C9\u524A\u9664\u6642\u306B\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002\u8AA4\u64CD\u4F5C\u306B\u3088\u308A\u60C5\u5831\u304C\u5931\u308F\u308C\u308B\u6050\u308C\u304C\u3042\u308A\u307E\u3059\u3002
10651068 OptionPanel.disable_cursor_move_paper.tooltip=\u30DE\u30C3\u30D7\u30B9\u30AF\u30ED\u30FC\u30EB\u6642\u306B\u300C\u79FB\u52D5\u300D\u30AB\u30FC\u30BD\u30EB\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002
11001103 OptionPanel.execute_scripts_without_write_restriction=<html>\u30D5\u30A1\u30A4\u30EB\u306E\u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3092\u8A31\u53EF<br>\uFF08\u63A8\u5968\u3057\u307E\u305B\u3093\uFF09</html>
11011104 OptionPanel.execute_scripts_without_write_restriction.tooltip=<html><body>\u4F5C\u6210\u3057\u305F Groovy \u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u66F8\u8FBC\u307F\u30A2\u30AF\u30BB\u30B9\uFF08\u66F8\u8FBC\u307F\u3001\u524A\u9664(!)\uFF09\u3092\u884C\u3046\u3053\u3068\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F\u3001<br>\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3057\u3066\u304A\u304B\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002<br>\u3057\u304B\u3057\u3001\u60AA\u610F\u306E\u3042\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u3088\u3063\u3066\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF\u304C\u88AB\u5BB3\u3092\u53D7\u3051\u308B\u6050\u308C\u3082\u3042\u308A\u307E\u3059\u306E\u3067\u3001\u4F7F\u7528\u306B\u5F53\u305F\u3063\u3066\u306F\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002</body></html>
11021105 OptionPanel.experimental_file_locking_on=<html>\u4ED6\u8005\u3068\u540C\u6642\u7DE8\u96C6\u6642\u306F\u30D5\u30A1\u30A4\u30EB\u3092<br>\u8AAD\u307F\u8FBC\u307F\u5C02\u7528\u306B</html>
1103 OptionPanel.experimental_file_locking_on.tooltip=<html>\u30D5\u30A1\u30A4\u30EB\u30ED\u30C3\u30AF\u306F\u3001\u8907\u6570\u306E\u30E6\u30FC\u30B6\u304C\u8AA4\u3063\u3066\u304A\u4E92\u3044\u306E\u60C5\u5831\u3092\u91CD\u8907\u66F8\u304D\u8FBC\u307F\u3057\u306A\u3044\u3088\u3046\u306B\u3001\u540C<br>\u6642\u306B\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u3092\u7DE8\u96C6\u3067\u304D\u306A\u304F\u3059\u308B\u3082\u306E\u3067\u3059\u3002\uFF3B\u8A33\u8005\u6CE8\uFF3D</html>
1106 OptionPanel.experimental_file_locking_on.tooltip=<html>\u5B9F\u9A13\u7684\u306A\u6A5F\u80FD\u3002\u8A33\u8005\u6CE8:\u30D5\u30A1\u30A4\u30EB\u30ED\u30C3\u30AF\u306F\u3001\u8907\u6570\u306E\u30E6\u30FC\u30B6\u304C\u8AA4\u3063\u3066\u304A\u4E92\u3044\u306E\u60C5\u5831\u3092\u91CD\u8907\u66F8\u304D\u8FBC\u307F\u3057\u306A\u3044\u3088\u3046\u306B\u3001\u540C\u6642\u306B\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u3092\u7DE8\u96C6\u3067\u304D\u306A\u304F\u3059\u308B\u3082\u306E\u3067\u3059\u3002</html>
11041107 OptionPanel.export_icons_in_html=\u30A2\u30A4\u30B3\u30F3\u3082\u66F8\u304D\u51FA\u3059
1105 OptionPanel.export_icons_in_html.tooltip=<html>Freeplane \u304B\u3089\u66F8\u304D\u51FA\u3059 HTML \u30D5\u30A1\u30A4\u30EB\u306B\u3001\u30A2\u30A4\u30B3\u30F3\u3092\u542B\u3081\u308B\u3069\u3046\u304B\u6307\u5B9A\u3057\u307E\u3059\u3002\u66F8\u304D\u51FA<br>\u3055\u308C\u305F HTML \u5185\u306B\u30A2\u30A4\u30B3\u30F3\u3078\u306E\u30EA\u30F3\u30AF\u304C\u306A\u3044\u3068\u3044\u3046\u30C8\u30E9\u30D6\u30EB\u304C\u3057\u3070\u3057\u3070\u8D77\u3053\u308A\u307E\u3059\u3002</html>
1108 OptionPanel.export_icons_in_html.tooltip=<html>Freeplane \u304B\u3089\u66F8\u304D\u51FA\u3059 HTML \u30D5\u30A1\u30A4\u30EB\u306B\u3001\u30A2\u30A4\u30B3\u30F3\u3092\u542B\u3081\u308B\u3069\u3046\u304B\u6307\u5B9A\u3057\u307E\u3059\u3002\u66F8\u304D\u51FA\u3055\u308C\u305F HTML \u5185\u306B\u30A2\u30A4\u30B3\u30F3\u3078\u306E\u30EA\u30F3\u30AF\u304C\u306A\u3044\u3068\u3044\u3046\u30C8\u30E9\u30D6\u30EB\u304C\u3057\u3070\u3057\u3070\u8D77\u3053\u308A\u307E\u3059\u3002</html>
11061109 OptionPanel.exported_image_resolution_dpi=\u51FA\u529B\u753B\u50CF\u306E\u89E3\u50CF\u5EA6 (DPI)
11071110 OptionPanel.Files=\u30D5\u30A1\u30A4\u30EB
11081111 OptionPanel.first=\u5192\u982D
12261229 OptionPanel.number_format=\u6570\u5024\u306E\u6A19\u6E96\u66F8\u5F0F
12271230 OptionPanel.number_format.tooltip=<html>'#' \u3067\u6307\u5B9A\u3055\u308C\u305F\u6841\u306F\u8A72\u5F53\u6570\u5024\u306E\u6709\u7121\u306B\u5FDC\u3058\u3066\u8868\u793A\uFF0F\u975E\u8868\u793A\u3001'0' \u306E\u6841\u306F\u5F37\u5236\u8868\u793A\u3068\u306A\u308A\u307E\u3059\u3002<br>\u3000\u3000\u4E8B\u4F8B\uFF1A"0.00"\u3001"0.0%"\u3001"$#.00"\u3001"#0"</html>
12281231 OptionPanel.number_of_different_files_for_automatic_save=\u30D5\u30A1\u30A4\u30EB\u3054\u3068\u306E\u81EA\u52D5\u4FDD\u5B58\u4EF6\u6570
1229 OptionPanel.number_of_different_files_for_automatic_save.tooltip=<html>\u30DE\u30C3\u30D7\u6BCE\u306E\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u6570\uFF08n\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u6700\u521D\u306E\u81EA\u52D5\u4FDD\u5B58\u6642\u306B\u306F \u300C1\u300D\u306E\u756A\u53F7<br>\u4ED8\u304D\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u540C\u69D8\u306E\u5F62\u3067\u4FDD\u5B58\u3057\u3066\u3044\u304D\u3001\u300Cn + 1\u300D\u56DE\u76EE\u306E\u4FDD\u5B58\u3067\u306F\u3001\u518D\u3073<br>\u300C1\u300D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\uFF08\u5FAA\u74B0\u5F0F\uFF09</html>
1232 OptionPanel.number_of_different_files_for_automatic_save.tooltip=<html>\u30DE\u30C3\u30D7\u6BCE\u306E\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u6570\uFF08n\uFF09\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u6700\u521D\u306E\u81EA\u52D5\u4FDD\u5B58\u6642\u306B\u306F \u300C1\u300D\u306E\u756A\u53F7\u4ED8\u304D\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u540C\u69D8\u306E\u5F62\u3067\u4FDD\u5B58\u3057\u3066\u3044\u304D\u3001\u300Cn + 1\u300D\u56DE\u76EE\u306E\u4FDD\u5B58\u3067\u306F\u3001\u518D\u3073\u300C1\u300D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\uFF08\u5FAA\u74B0\u5F0F\uFF09</html>
12301233 OptionPanel.oc=\u30AA\u30C3\u30AF\u8A9E
12311234 OptionPanel.OK=\u4FDD\u5B58
12321235 OptionPanel.org.freeplane.plugin.bugreport=\u57FA\u672C\u7684\u306A\u5BFE\u5FDC\u65B9\u91DD
12801283 OptionPanel.relative=\u76F8\u5BFE\u7684
12811284 OptionPanel.remind_type_of_new_nodes.tooltip=<html>\u300C\u78BA\u8A8D\u300D\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u78BA\u8A8D\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8868\u793A\u3057\u307E\u3059\u3002<br>\u300C\u306F\u3044\u300D\uFF1A\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002<br>\u300C\u3044\u3044\u3048\u300D\uFF1A\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u8868\u793A\u3057\u307E\u3059\u3002</html>
12821285 OptionPanel.remind_use_rich_text_in_new_nodes=\u8CBC\u308A\u4ED8\u3051\u30CE\u30FC\u30C9\u3067\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8\u3092\u4F7F\u7528
1286 OptionPanel.reminder.showPastRemindersOnStart=\u904E\u53BB\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u8868\u793A\u3059\u308B
12831287 OptionPanel.remindersBlink=\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u70B9\u6EC5
12841288 OptionPanel.remindersShowNotifications=\u30EA\u30DE\u30A4\u30F3\u30C0\u306E\u901A\u77E5\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u8868\u793A
12851289 OptionPanel.remindersStandardDelay=\u30EA\u30DE\u30A4\u30F3\u30C0\u306E\u5EF6\u671F\u6642\u9593
13071311 OptionPanel.scrolling_speed=\u81EA\u52D5\u30DE\u30C3\u30D7\u30B9\u30AF\u30ED\u30FC\u30EB\u901F\u5EA6
13081312 OptionPanel.scrollOnUnfold=\u30CE\u30FC\u30C9\u3092\u5C55\u958B\u3057\u305F\u5F8C\u306B\u30DE\u30C3\u30D7\u3092\u30B9\u30AF\u30ED\u30FC\u30EB
13091313 OptionPanel.selection_method=\u9078\u629E\u65B9\u6CD5
1310 OptionPanel.selection_method.tooltip=<html>\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u3092\u30CE\u30FC\u30C9\u306B\u79FB\u52D5\u3057\u3066\u304B\u3089\u5C11\u3057\u9593\u3092\u7F6E\u304F\u3068\u81EA\u52D5\u9078\u629E\u3059\u308B\u7B49\u3001\u9078\u629E\u65B9\u6CD5\u3092\u6307\u5B9A<br>\u3057\u307E\u3059\u3002\u81EA\u52D5\u30AA\u30D7\u30B7\u30E7\u30F3\u3002\u3053\u308C\u3089\u306F\u5FC5\u305A auto.properties \u306B\u4FDD\u5B58\u3055\u308C\u3001\u5909\u66F4\u3059\u308B\u3053\u3068\u306F<br>\u3067\u304D\u307E\u305B\u3093\u3002</html>
1314 OptionPanel.selection_method.tooltip=<html>\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u3092\u30CE\u30FC\u30C9\u306B\u79FB\u52D5\u3057\u3066\u304B\u3089\u5C11\u3057\u9593\u3092\u7F6E\u304F\u3068\u81EA\u52D5\u9078\u629E\u3059\u308B\u7B49\u3001\u9078\u629E\u65B9\u6CD5\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u81EA\u52D5\u30AA\u30D7\u30B7\u30E7\u30F3\u3002\u3053\u308C\u3089\u306F\u5FC5\u305A auto.properties \u306B\u4FDD\u5B58\u3055\u308C\u3001\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002</html>
13111315 OptionPanel.selection_method_by_click=\u30AF\u30EA\u30C3\u30AF\u3067\u9078\u629E
13121316 OptionPanel.selection_method_delayed=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u5F8C\u3001\u9593\u3092\u7F6E\u3044\u3066\u81EA\u52D5\u9078\u629E
13131317 OptionPanel.selection_method_direct=\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC\u3067\u76F4\u3061\u306B\u9078\u629E
14121416 OptionPanel.signed_script_are_trusted.tooltip=<html>\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u4FE1\u983C\u3067\u304D\u308B\u95A2\u4FC2\u8005\uFF08\u4F8B\u3048\u3070\u3001Freeplane \u306E\u4F5C\u8005\u3084\u81EA\u5206\u81EA\u8EAB\uFF09\u306E\u7F72\u540D\u304C\u3042\u308B\u5834<br>\u5408\u3001\u5236\u9650\u306A\u304F\u5B9F\u884C\u3057\u307E\u3059\u3002</html>
14131417 OptionPanel.simplyhtml.default_paste_mode=\u6A19\u6E96\u306E\u8CBC\u308A\u4ED8\u3051\u5F62\u5F0F
14141418 OptionPanel.single_backup_directory=<html>\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A1\u30A4\u30EB\u306E\u683C\u7D0D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092<br>\u4E00\u3064\u306B</html>
1415 OptionPanel.single_backup_directory.tooltip=<html>\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A1\u30A4\u30EB\u3068\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u3001\u5F53\u8A72\u30DE\u30C3\u30D7\u306E\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306A\u304F\u3001<br>\u5358\u4E00\u683C\u7D0D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002</html>
1419 OptionPanel.single_backup_directory.tooltip=<html>\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30D5\u30A1\u30A4\u30EB\u3068\u81EA\u52D5\u4FDD\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u3001\u5F53\u8A72\u30DE\u30C3\u30D7\u306E\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306A\u304F\u3001\u5358\u4E00\u683C\u7D0D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002</html>
14161420 OptionPanel.single_backup_directory_path=<html>\u4E0A\u8A18\u30AA\u30D7\u30B7\u30E7\u30F3\u6709\u52B9\u6642\u306B\u7528\u3044\u308B<br>\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA</html>
14171421 OptionPanel.single_backup_directory_path.tooltip=<html>\u521D\u671F\u8A2D\u5B9A\u306E &lt;freeplaneuserdir&gt;/.backup \u3088\u308A\u3082\u512A\u5148\u7684\u306B\u7528\u3044\u3089\u308C\u308B\u30D5\u30A9\u30EB\u30C0\u3067\u3059\u3002</html>
14181422 OptionPanel.single_instance=\u5B9F\u884C\u4E2D\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3067\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F
14651469 OptionPanel.text.use_ctrl_key=\u300C\u30C4\u30FC\u30EB\u300D\u30E1\u30CB\u30E5\u30FC\u306E\u300C\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u30AD\u30FC\u306E\u5272\u308A\u5F53\u3066\u300D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
14661470 OptionPanel.textalignment=\u6587\u5B57\u63C3\u3048
14671471 OptionPanel.time_for_automatic_save=\u81EA\u52D5\u4FDD\u5B58\u9593\u9694(\u30DF\u30EA\u79D2)
1468 OptionPanel.time_for_automatic_save.tooltip=<html> \u81EA\u52D5\u4FDD\u5B58\u306E\u9593\u9694(\u30DF\u30EA\u79D2)\u3002<br>\u81EA\u52D5\u4FDD\u5B58\u3092\u7121\u52B9\u306B\u3059\u308B\u306B\u306F\u3001\u3053\u306E\u6570\u5024\u30922000000000\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002</html>
1472 OptionPanel.time_for_automatic_save.tooltip=<html> \u81EA\u52D5\u4FDD\u5B58\u306E\u9593\u9694(\u30DF\u30EA\u79D2)\u3002\u81EA\u52D5\u4FDD\u5B58\u3092\u7121\u52B9\u306B\u3059\u308B\u306B\u306F\u3001\u3053\u306E\u6570\u5024\u30922000000000\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002</html>
14691473 OptionPanel.time_for_delayed_selection=\u81EA\u52D5\u9078\u629E\u307E\u3067\u306E\u6642\u9593(\u30DF\u30EA\u79D2)
1470 OptionPanel.time_for_delayed_selection.tooltip=<html>\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u304C\u30CE\u30FC\u30C9\u4E0A\u306B\u79FB\u3063\u3066\u304B\u3089\u81EA\u52D5\u9078\u629E\u3059\u308B\u307E\u3067\u306E\u6642\u9593(\u30DF\u30EA\u79D2)\u3002\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD<br>\u30EB\u3092\u30CE\u30FC\u30C9\u4E0A\u306B\u79FB\u3059\u3068\u540C\u6642\u306B\u9078\u629E\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u3053\u306E\u5024\u3092\uFF11\u306B\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002</html>
1474 OptionPanel.time_for_delayed_selection.tooltip=<html>\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u304C\u30CE\u30FC\u30C9\u4E0A\u306B\u79FB\u3063\u3066\u304B\u3089\u81EA\u52D5\u9078\u629E\u3059\u308B\u307E\u3067\u306E\u6642\u9593(\u30DF\u30EA\u79D2)\u3002\u30DE\u30A6\u30B9\u30AB\u30FC\u30BD\u30EB\u3092\u30CE\u30FC\u30C9\u4E0A\u306B\u79FB\u3059\u3068\u540C\u6642\u306B\u9078\u629E\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u3053\u306E\u5024\u3092\uFF11\u306B\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002</html>
14711475 OptionPanel.toolbar_icon_height=\u30C4\u30FC\u30EB\u30D0\u30FC\u30A2\u30A4\u30B3\u30F3\u306E\u9AD8\u3055
14721476 OptionPanel.toolTipManager.dismissDelay=\u8868\u793A\u3092\u4E2D\u65AD\u3059\u308B\u307E\u3067\u306E\u6642\u9593(\u30DF\u30EA\u79D2)
14731477 OptionPanel.toolTipManager.initialDelay=\u6700\u521D\u306B\u8868\u793A\u3059\u308B\u307E\u3067\u306E\u6642\u9593(\u30DF\u30EA\u79D2)
15581562 plugins/ScriptEditor/window.Result=Result :
15591563 plugins/ScriptEditor/window.title=\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u7DE8\u96C6
15601564 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u5185\u90E8 API \uFF08\u30D1\u30C3\u30B1\u30FC\u30B8 {0}\uFF09\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u306F\u7981\u6B62\u3055\u308C\u3066\u3044\u307E\u3059\u3002/n\u30B9\u30AF\u30EA\u30D7\u30C8\u4F5C\u6210 API \u304C\u4E0D\u5341\u5206\u306A\u5834\u5408\u306F\u3001Freeplane \u4F5C\u6210\u30C1\u30FC\u30E0\u306B\u3054\u9023\u7D61\u4E0B\u3055\u3044\u3002
1561 plugins/TimeList.xml_Created=\u4F5C\u6210
1562 plugins/TimeList.xml_Date=\u65E5\u4ED8
1563 plugins/TimeList.xml_Details=\u8A73\u7D30
1564 plugins/TimeList.xml_Icons=\u30A2\u30A4\u30B3\u30F3
1565 plugins/TimeList.xml_Modified=\u5909\u66F4
1566 plugins/TimeList.xml_Notes=\u30CE\u30FC\u30C8
1567 plugins/TimeList.xml_Text=\u30C6\u30AD\u30B9\u30C8
1568 plugins/TimeManagement.xml_appendButton=\u9078\u629E\u4E2D\u306E\u65E5\u4ED8\u3092\u633F\u5165
1569 plugins/TimeManagement.xml_Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB
1570 plugins/TimeManagement.xml_cancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB
1571 plugins/TimeManagement.xml_closeButton=\u9589\u3058\u308B
1572 plugins/TimeManagement.xml_Export=\u9078\u629E\u30CE\u30FC\u30C9\u306E\u66F8\u304D\u51FA\u3057
1573 plugins/TimeManagement.xml_Find=\u691C\u7D22\u6587\u5B57\u5217
1574 plugins/TimeManagement.xml_Goto=\u79FB\u52D5
1575 plugins/TimeManagement.xml_hour=\u6642\uFF1A
1576 plugins/TimeManagement.xml_menu_actions=\u30A2\u30AF\u30B7\u30E7\u30F3
1577 plugins/TimeManagement.xml_minute=\u5206\uFF1A
1578 plugins/TimeManagement.xml_reminderButton=\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u9078\u629E\u3057\u305F\u65E5\u306B\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u8A2D\u5B9A
1579 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u30DC\u30BF\u30F3\u3092\u62BC\u3059\u3068\u3001\u6307\u5B9A\u671F\u65E5\u307E\u3067\u306E\u30BF\u30A4\u30DE\u30FC\u304C\u7D44\u307F\u8FBC\u307E\u308C\u3001\u70B9\u6EC5\u30A2\u30A4\u30B3\u30F3\u3067\u6CE8\u610F\u3092\u4FC3<br> \u3057\u307E\u3059\u3002\u30DE\u30C3\u30D7\u3092\u9589\u3058\u3066\u3082\u3001\u30BF\u30A4\u30DE\u30FC\u306F\u305D\u306E\u30DE\u30C3\u30D7\u3092\u958B\u3051\u305F\u3068\u304D\u52D5\u4F5C\u3092\u518D\u958B\u3057\u307E\u3059\u3002</html>
1580 plugins/TimeManagement.xml_reminderNode.tooltip=\u30EA\u30DE\u30A4\u30F3\u30C0\u306F {0,date} {0,time} \u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
1581 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u73FE\u5728\u3001\u30EA\u30DE\u30A4\u30F3\u30C0\u306F\uFF11\u30CE\u30FC\u30C9\u306B\u4E00\u3064\u3057\u304B\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002<br>\u73FE\u5728\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u306F {0,date} {0,time}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u65B0\u305F\u306B\u3001 {1,date} {1,time}\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F\u3002<br><br>\u3053\u306E\u30CE\u30FC\u30C9\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u5909\u66F4\u3057\u307E\u3059\u304B\uFF1F (\u306F\u3044) <br>\u305D\u308C\u3068\u3082\u3001\u5143\u306E\u307E\u307E\u306B\u3057\u307E\u3059\u304B\uFF1F (\u3044\u3044\u3048)</html>
1582 plugins/TimeManagement.xml_remindLaterButton=\u6307\u5B9A\u671F\u9593\u7D4C\u904E\u5F8C\u306B\u30EA\u30DE\u30A4\u30F3\u30C9\uFF08\u8A2D\u5B9A or \u5909\u66F4\uFF09
1583 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u4ECA\u65E5\u304B\u3089\u30EA\u30DE\u30A4\u30F3\u30C9\u307E\u3067\u306E\u65E5\u6570\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\uFF08\u660E\u65E5: 1\u3001\u660E\u5F8C\u65E5: 2\u3001\u2026\uFF09
1584 plugins/TimeManagement.xml_removeReminderButton=\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664
1585 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u9078\u629E\u4E2D\u306E\u30CE\u30FC\u30C9\u304B\u3089\u3059\u3079\u3066\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664\u3057\u307E\u3059\u3002
1586 plugins/TimeManagement.xml_Replace=\u7F6E\u63DB\u6587\u5B57\u5217
1587 plugins/TimeManagement.xml_Replace_All=\u3059\u3079\u3066\u7F6E\u63DB
1588 plugins/TimeManagement.xml_Replace_Selected=\u9078\u629E\u30CE\u30FC\u30C9\u3067\u7F6E\u63DB
1589 plugins/TimeManagement.xml_Select=\u9078\u629E
1590 plugins/TimeManagement.xml_todayButton=\u30AB\u30EC\u30F3\u30C0\u30FC\u9078\u629E\u3092\u73FE\u5728\u306B
1591 plugins/TimeManagement.xml_WindowTitle=\u6642\u9593\u7BA1\u7406
1592 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u691C\u7D22\uFF06\u7F6E\u63DB
15931565 preferences=\u8A2D\u5B9A
15941566 presentation=\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3
15951567 presentation.combineAll=\u5168\u3066\u306E\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u3092\u7D50\u5408\u3059\u308B
16191591 RedoAction.text=\u3084\u308A\u76F4\u3059(R)
16201592 RedoFilterAction.text=\u5143\u306E\u30D5\u30A3\u30EB\u30BF\u3092\u518D\u9069\u7528
16211593 regular_expressions=\u6B63\u898F\u8868\u73FE
1594 reminder.appendButton=\u9078\u629E\u4E2D\u306E\u65E5\u4ED8\u3092\u633F\u5165
1595 reminder.Cancel=\u30AD\u30E3\u30F3\u30BB\u30EB
1596 reminder.cancelButton=\u30AD\u30E3\u30F3\u30BB\u30EB
1597 reminder.closeButton=\u9589\u3058\u308B
1598 reminder.Created=\u4F5C\u6210
1599 reminder.Details=\u8A73\u7D30
1600 reminder.Export=\u9078\u629E\u30CE\u30FC\u30C9\u306E\u66F8\u304D\u51FA\u3057
1601 reminder.Find=\u691C\u7D22\u6587\u5B57\u5217
1602 reminder.Goto=\u79FB\u52D5
1603 reminder.hour=\u6642\uFF1A
1604 reminder.Icons=\u30A2\u30A4\u30B3\u30F3
1605 reminder.Map=\u30DE\u30C3\u30D7
1606 reminder.menu_actions=\u30A2\u30AF\u30B7\u30E7\u30F3
1607 reminder.minute=\u5206\uFF1A
1608 reminder.Modified=\u5909\u66F4
1609 reminder.Notes=\u30CE\u30FC\u30C8
1610 reminder.Reminder=\u30EA\u30DE\u30A4\u30F3\u30C0
1611 reminder.reminderButton=\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u9078\u629E\u3057\u305F\u65E5\u306B\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u8A2D\u5B9A
1612 reminder.reminderButton.tooltip=<html>\u30DC\u30BF\u30F3\u3092\u62BC\u3059\u3068\u3001\u6307\u5B9A\u671F\u65E5\u307E\u3067\u306E\u30BF\u30A4\u30DE\u30FC\u304C\u7D44\u307F\u8FBC\u307E\u308C\u3001\u70B9\u6EC5\u30A2\u30A4\u30B3\u30F3\u3067\u6CE8\u610F\u3092\u4FC3<br> \u3057\u307E\u3059\u3002\u30DE\u30C3\u30D7\u3092\u9589\u3058\u3066\u3082\u3001\u30BF\u30A4\u30DE\u30FC\u306F\u305D\u306E\u30DE\u30C3\u30D7\u3092\u958B\u3051\u305F\u3068\u304D\u52D5\u4F5C\u3092\u518D\u958B\u3057\u307E\u3059\u3002</html>
1613 reminder.reminderNode.tooltip=\u30EA\u30DE\u30A4\u30F3\u30C0\u306F {0,date} {0,time} \u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
1614 reminder.reminderNode_onlyOneDate=<html>\u73FE\u5728\u3001\u30EA\u30DE\u30A4\u30F3\u30C0\u306F\uFF11\u30CE\u30FC\u30C9\u306B\u4E00\u3064\u3057\u304B\u5229\u7528\u3067\u304D\u307E\u305B\u3093\u3002<br>\u73FE\u5728\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u306F {0,date} {0,time}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u65B0\u305F\u306B\u3001 {1,date} {1,time}\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F\u3002<br><br>\u3053\u306E\u30CE\u30FC\u30C9\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u5909\u66F4\u3057\u307E\u3059\u304B\uFF1F (\u306F\u3044) <br>\u305D\u308C\u3068\u3082\u3001\u5143\u306E\u307E\u307E\u306B\u3057\u307E\u3059\u304B\uFF1F (\u3044\u3044\u3048)</html>
1615 reminder.remindLaterButton=\u6307\u5B9A\u671F\u9593\u7D4C\u904E\u5F8C\u306B\u30EA\u30DE\u30A4\u30F3\u30C9\uFF08\u8A2D\u5B9A or \u5909\u66F4\uFF09
1616 reminder.remindLaterButton.tooltip=\u4ECA\u65E5\u304B\u3089\u30EA\u30DE\u30A4\u30F3\u30C9\u307E\u3067\u306E\u65E5\u6570\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\uFF08\u660E\u65E5: 1\u3001\u660E\u5F8C\u65E5: 2\u3001\u2026\uFF09
1617 reminder.Remove_All=\u3059\u3079\u3066\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664
1618 reminder.Remove_Selected=\u9078\u629E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664
1619 reminder.removeReminderButton=\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664
1620 reminder.removeReminderButton.tooltip=\u9078\u629E\u4E2D\u306E\u30CE\u30FC\u30C9\u304B\u3089\u3059\u3079\u3066\u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664\u3057\u307E\u3059\u3002
1621 reminder.Replace=\u7F6E\u63DB\u6587\u5B57\u5217
1622 reminder.Replace_All=\u3059\u3079\u3066\u7F6E\u63DB
1623 reminder.Replace_Selected=\u9078\u629E\u30CE\u30FC\u30C9\u3067\u7F6E\u63DB
1624 reminder.Run_All=\u3059\u3079\u3066\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C
1625 reminder.Run_Selected=\u9078\u629E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C
1626 reminder.Select=\u9078\u629E
1627 reminder.Text=\u30C6\u30AD\u30B9\u30C8
1628 reminder.todayButton=\u30AB\u30EC\u30F3\u30C0\u30FC\u9078\u629E\u3092\u73FE\u5728\u306B
1629 reminder.WindowTitle=\u30EA\u30DE\u30A4\u30F3\u30C0\u7BA1\u7406
1630 reminder.WindowTitle_All_Nodes=\u691C\u7D22\uFF06\u7F6E\u63DB
1631 reminder.WindowTitle_pastReminders=\u904E\u53BB\u306E\u30EA\u30DE\u30A4\u30F3\u30C0
1632 reminder_script_error=\u30DE\u30C3\u30D7 {1} \u30CE\u30FC\u30C9 {2} \u306E\u30EA\u30DE\u30A4\u30F3\u30C0\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u30A8\u30E9\u30FC {0}
16221633 ReminderHookAction.text=\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664
16231634 ReminderHookAction.tooltip=\u30CE\u30FC\u30C9\u304B\u3089\u30EA\u30DE\u30A4\u30F3\u30C0\u3092\u524A\u9664\u3057\u307E\u3059\u3002
1635 ReminderListAction.text=\u30BF\u30B9\u30AF\u3092\u7BA1\u7406...
1636 ReminderListAction.tooltip=\u3059\u3079\u3066\u306E\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3068\u95A2\u9023\u30CE\u30FC\u30C9\u3092\u8868\u793A
16241637 reminderNotification=\u30EA\u30DE\u30A4\u30F3\u30C0\u901A\u77E5
16251638 remove_file_from_list_on_error=<html>\u30D5\u30A1\u30A4\u30EB {0} \u3092\u8AAD\u307F\u8FBC\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3002<br>\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u300C\u6700\u8FD1\u4F7F\u3063\u305F\u30DE\u30C3\u30D7\u300D\u304B\u3089\u524A\u9664\u3057\u307E\u3059\u304B\u3002</html>
16261639 remove_shortcut_question=\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u7F6E\u63DB\u3057\u307E\u3059\u304B\uFF1F
17041717 SetLinkAnchorAction.tooltip_anchored=<html>\u30ED\u30FC\u30AB\u30EB\u30EA\u30F3\u30AF\u306A\u3044\u3057\u30B0\u30ED\u30FC\u30D0\u30EB\u30EA\u30F3\u30AF\u306E\u4F5C\u6210\u306B\u5099\u3048\u3066\u3001<br/>\u9078\u629E\u4E2D\u306E\u30CE\u30FC\u30C9\u306B\u30A2\u30F3\u30AB\u30FC\u3092\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002<br/>\u3000\u6700\u65B0\u306E\u30A2\u30F3\u30AB\u30FC\u3000\uFF1A\u3000{0}
17051718 SetLinkByFileChooserAction.text=\u30EA\u30F3\u30AF\u5148\u3092\u6307\u5B9A (\u30D5\u30A1\u30A4\u30EB\u9078\u629E)...
17061719 SetLinkByTextFieldAction.text=\u30EA\u30F3\u30AF\u5148\u3092\u6307\u5B9A (\u30C6\u30AD\u30B9\u30C8\u5165\u529B)...
1720 SetNodeAliasAction.text=\u30CE\u30FC\u30C9\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u8A2D\u5B9A...
17071721 SetNodeLink.text=\u30CE\u30FC\u30C9\u30EA\u30F3\u30AF\u3092\u8A2D\u5B9A...
17081722 SetNoteWindowPosition.bottom.text=\u4E0B
17091723 SetNoteWindowPosition.left.text=\u5DE6
20092023 TextAlignAction.RIGHT.text=\u53F3\u63C3\u3048
20102024 textalignment=\u6587\u5B57\u63C3\u3048
20112025 TextChangeHotKeyAction.text=\u6587\u5B57\u5217\u5909\u66F4\u306E\u30DB\u30C3\u30C8\u30AD\u30FC\u3092\u8A2D\u5B9A
2012 TimeListAction.text=\u30BF\u30B9\u30AF\u3092\u7BA1\u7406...
2013 TimeListAction.tooltip=\u3059\u3079\u3066\u306E\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3068\u95A2\u9023\u30CE\u30FC\u30C9\u3092\u8868\u793A
20142026 TimeManagementAction.text=\u6642\u9593\u3092\u7BA1\u7406...
20152027 TimeManagementAction.tooltip=\u30AB\u30EC\u30F3\u30C0\u30FC\u8868\u793A\u30E2\u30B8\u30E5\u30FC\u30EB\uFF08by Kai Toedter\uFF09\u3092\u8D77\u52D5\u3057\u307E\u3059\u3002
20162028 TimePeriodUnits.days=\u65E5
182182 PasteAction.text=\u0C85\u0C82\u0C9F\u0CBF\u0CB8\u0CC1
183183 PatternToString.FontBold=\u0CA6\u0C9F\u0CCD\u0C9F
184184 PatternToString.Icon=\u0CB2\u0CBE\u0C82\u0C9B\u0CA8
185 plugins/TimeList.xml_Text=\u0CAA\u0CA0\u0CCD\u0CAF
186 plugins/TimeManagement.xml_Cancel=\u0CB0\u0CA6\u0CCD\u0CA6\u0CC1
187 plugins/TimeManagement.xml_cancelButton=\u0CB0\u0CA6\u0CCD\u0CA6\u0CC1
188 plugins/TimeManagement.xml_closeButton=\u0CAE\u0CC1\u0C9A\u0CCD\u0C9A\u0CC1
189 plugins/TimeManagement.xml_Find=\u0CB9\u0CC1\u0CA1\u0CC1\u0C95\u0CC1
190 plugins/TimeManagement.xml_Replace=\u0CAC\u0CA6\u0CB2\u0CBF\u0CB8\u0CC1
191 plugins/TimeManagement.xml_Select=\u0C86\u0CB0\u0CBF\u0CB8\u0CC1
192185 preferences=\u0C86\u0CA6\u0CCD\u0CAF\u0CA4\u0CC6\u0C97\u0CB3\u0CC1
193186 presentation=\u0CAE\u0C82\u0CA1\u0CA8\u0CC6
194187 PrintDirectAction.text=\u0CAE\u0CC1\u0CA6\u0CCD\u0CB0\u0CBF\u0CB8\u0CC1
195188 RedoAction.text=\u0CAE\u0CA4\u0CCD\u0CA4\u0CC6 \u0CAE\u0CBE\u0CA1\u0CC1
189 reminder.Cancel=\u0CB0\u0CA6\u0CCD\u0CA6\u0CC1
190 reminder.cancelButton=\u0CB0\u0CA6\u0CCD\u0CA6\u0CC1
191 reminder.closeButton=\u0CAE\u0CC1\u0C9A\u0CCD\u0C9A\u0CC1
192 reminder.Find=\u0CB9\u0CC1\u0CA1\u0CC1\u0C95\u0CC1
193 reminder.Replace=\u0CAC\u0CA6\u0CB2\u0CBF\u0CB8\u0CC1
194 reminder.Select=\u0C86\u0CB0\u0CBF\u0CB8\u0CC1
195 reminder.Text=\u0CAA\u0CA0\u0CCD\u0CAF
196196 replace=\u0CAC\u0CA6\u0CB2\u0CBF\u0CB8\u0CC1
197197 scripting_api_generator_proxy=\u0CAA\u0CCD\u0CB0\u0CBE\u0C95\u0CCD\u0CB8\u0CBF
198198 select_menu_item_root_node=\u0CAA\u0CB0\u0CBF\u0CB5\u0CBF\u0CA1\u0CBF
243243 CopyIDAction.text=\uB178\uB4DC ID \uBCF5\uC0AC
244244 CopyMapStylesAction.text=\uC9C0\uB3C4 \uAF34 \uBCF5\uC0AC...
245245 CopyNodeURIAction.text=\uB178\uB4DC URI \uBCF5\uC0AC
246 copyright=\uC800\uC791\uAD8C \u00A9 2000-2018 \uD504\uB9AC\uD50C\uB808\uC778 \uD300\uACFC \uB3C4\uC640\uC8FC\uC2E0\uBD84\uB4E4
246 copyright=\uC800\uC791\uAD8C \u00A9 2000-2019 \uD504\uB9AC\uD50C\uB808\uC778 \uD300\uACFC \uB3C4\uC640\uC8FC\uC2E0\uBD84\uB4E4
247247 CopySingleAction.text=\uB2E8\uC77C \uB178\uB4DC \uBCF5\uC0AC(&S)
248248 CopySingleAction.tooltip=\uC120\uD0DD\uD55C \uB178\uB4DC\uB9CC \uBCF5\uC0AC
249249 CopyStyleExtensionsAction.text=\uAF34 \uB178\uB4DC \uD655\uC7A5 \uD56D\uBAA9 \uBCF5\uC0AC
505505 FormatPaste.tooltip=<html>\uB178\uB4DC\uC758 \uD615\uC2DD\uC744 \uBD99\uC5EC\uB123\uAE30 \uD569\uB2C8\uB2E4.</html>
506506 formats_not_loaded=\uD30C\uC77C\uC774 \uC190\uC0C1\uB418\uC5B4 \uD615\uC2DD\uC744 \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4
507507 formula.error.attributeValueIsNull=\uD3C9\uAC00 \uD6C4 \uD2B9\uC131 \uAC12 ''{0}'' \uC740 \uB110(null) \uC785\uB2C8\uB2E4.
508 formula.error.circularReference=\uC21C\uD658 \uCC38\uC870: \uC218\uC2DD \uB178\uB4DC ''{0}'' \uC5D0\uC11C \uC790\uC2E0\uC744 \uCC38\uC870 \uD569\uB2C8\uB2E4.
508 formula.error.circularReference=\uC21C\uD658 \uCC38\uC870: \uC218\uC2DD \uB178\uB4DC {0} ''{1}'' \uC5D0\uC11C \uC790\uC2E0\uC744 \uCC38\uC870 \uD569\uB2C8\uB2E4.
509509 formula.EvaluateAllAction.text=\uD3C9\uAC00\uD558\uAE30
510510 formula.EvaluateAllAction.tooltip=\uD604\uC7AC\uC758 \uC9C0\uB3C4\uC5D0 \uC788\uB294 \uBAA8\uB4E0 \uC218\uC2DD \uD3C9\uAC00\uD558\uAE30
511511 formula.menuname=\uC218\uC2DD
15371537 plugins/ScriptEditor/window.Result=\uACB0\uACFC:
15381538 plugins/ScriptEditor/window.title=\uC2A4\uD06C\uB9BD\uD2B8 \uD3B8\uC9D1\uAE30
15391539 plugins/ScriptingEngine.illegalAccessToInternalAPI=\uB0B4\uBD80 API\uC758 \uBD88\uBC95\uC801\uC778 \uC811\uADFC (\uD328\uD0A4\uC9C0 {0}). - \uC2A4\uD06C\uB9BD\uD305 API\uAC00 \uCDA9\uBD84\uD788 \uAC15\uB825\uD558\uC9C0 \uC54A\uC740 \uACBD\uC6B0 \uD504\uB9AC \uD50C\uB808\uC778 \uD300\uC5D0 \uBB38\uC758\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4.
1540 plugins/TimeList.xml_Created=\uC0DD\uC131\uB428
1541 plugins/TimeList.xml_Date=\uC77C
1542 plugins/TimeList.xml_Details=\uC790\uC138\uD788
1543 plugins/TimeList.xml_Icons=\uC544\uC774\uCF58
1544 plugins/TimeList.xml_Modified=\uC218\uC815\uB428
1545 plugins/TimeList.xml_Notes=\uB178\uD2B8
1546 plugins/TimeList.xml_Text=\uD14D\uC2A4\uD2B8
1547 plugins/TimeManagement.xml_appendButton=\uC120\uD0DD\uD55C \uB178\uB4DC\uC5D0 \uB0A0\uC9DC \uC0BD\uC785
1548 plugins/TimeManagement.xml_Cancel=\uCDE8\uC18C
1549 plugins/TimeManagement.xml_cancelButton=\uCDE8\uC18C
1550 plugins/TimeManagement.xml_closeButton=\uB2EB\uAE30
1551 plugins/TimeManagement.xml_Export=\uC120\uD0DD\uD55C \uB178\uB4DC \uB0B4\uBCF4\uB0B4\uAE30
1552 plugins/TimeManagement.xml_Find=\uCC3E\uAE30
1553 plugins/TimeManagement.xml_Goto=\uAC00\uAE30
1554 plugins/TimeManagement.xml_hour=\uC2DC\uAC04:
1555 plugins/TimeManagement.xml_menu_actions=\uC561\uC158
1556 plugins/TimeManagement.xml_minute=\uBD84:
1557 plugins/TimeManagement.xml_reminderButton=\uC9C0\uC815\uB41C \uB0A0\uC9DC\uC5D0 \uC54C\uB9AC\uAE30
1558 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\uD0C0\uC774\uBA38\uB97C \uB204\uB974\uBA74 \uC9C0\uC815\uB41C \uB0A0\uC9DC\uB85C \uC608\uC815\uB429\uB2C8\uB2E4. \uADF8 \uB2E4\uC74C \uAE5C\uBC15\uC784 \uC544\uC774\uCF58\uC744 \uAD00\uC2EC \uC0AC\uD56D\uC73C\uB85C \uBD80\uB985\uB2C8\uB2E4.<br> \uC9C0\uB3C4\uB97C \uB2EB\uC73C\uBA74, \uD0C0\uC774\uBA38\uB294 \uB9F5\uC774 \uB2E4\uC74C \uBC88\uC5D0 \uC5F4\uB9B4 \uB54C \uB2E4\uC2DC \uD65C\uC131\uD654\uB429\uB2C8\uB2E4.</html>
1559 plugins/TimeManagement.xml_reminderNode.tooltip={0,date} {0,time}\uC5D0 \uC54C\uB824 \uC8FC\uB3C4\uB85D \uC124\uC815\uB428.
1560 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\uB178\uB4DC\uBCC4\uB85C \uD0C0\uC774\uBA38 1\uAC1C\uAC00 \uC791\uB3D9 \uC911\uC785\uB2C8\uB2E4.<br>{0,date} {0,time}\uC5D0 \uD0C0\uC774\uBA38\uAC00 \uC2A4\uCF00\uC974\uD654\uB418\uC5B4 \uC788\uC73C\uBA70, \uB2F9\uC2E0\uC740 {1,date} {1,time}\uB97C \uC120\uD0DD\uD558\uC168\uC2B5\uB2C8\uB2E4.<br><br>\uD604\uC7AC \uB178\uB4DC\uC758 \uD0C0\uC774\uBA38\uB97C \uC7AC\uC870\uC815\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? (YES) <br>\uC544\uB2C8\uBA74 \uAE30\uC874\uC758 \uD0C0\uC774\uBA38\uB97C \uC720\uC9C0\uD560\uAE4C\uC694? (NO)</html>
1561 plugins/TimeManagement.xml_remindLaterButton=\uB098\uC911\uC5D0 \uC54C\uB9BC
1562 plugins/TimeManagement.xml_remindLaterButton.tooltip=\uB098\uC911\uC5D0 \uC54C\uB9BC
1563 plugins/TimeManagement.xml_removeReminderButton=\uC54C\uB9BC\uAE30\uB2A5 \uC81C\uAC70
1564 plugins/TimeManagement.xml_removeReminderButton.tooltip=\uC120\uD0DD\uD55C \uB178\uB4DC\uC5D0 \uC5F0\uACB0\uB41C \uBAA8\uB4E0 \uC54C\uB9BC \uAE30\uB2A5 \uC81C\uAC70.
1565 plugins/TimeManagement.xml_Replace=\uBC14\uAFB8\uAE30
1566 plugins/TimeManagement.xml_Replace_All=\uBAA8\uB450 \uBC14\uAFB8\uAE30
1567 plugins/TimeManagement.xml_Replace_Selected=\uC120\uD0DD\uD55C \uC601\uC5ED \uBC14\uAFB8\uAE30
1568 plugins/TimeManagement.xml_Select=\uC120\uD0DD
1569 plugins/TimeManagement.xml_todayButton=\uC624\uB298
1570 plugins/TimeManagement.xml_WindowTitle=\uC2DC\uAC04 \uAD00\uB9AC
1571 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\uCC3E\uAE30 \uBC0F \uBC14\uAFB8\uAE30
15721540 preferences=\uD658\uACBD \uC124\uC815
15731541 presentation=\uD504\uB808\uC820\uD14C\uC774\uC158
15741542 presentation.combineAll=\uBAA8\uB4E0 \uD504\uB9AC\uC820\uD14C\uC774\uC158 \uACB0\uD569
15981566 RedoAction.text=\uB2E4\uC2DC \uC2E4\uD589(R)
15991567 RedoFilterAction.text=\uAC70\uB984\uAE30 \uB3D9\uC791\uC744 \uB2E4\uC2DC \uC2E4\uD589
16001568 regular_expressions=\uC815\uADDC\uC2DD
1569 reminder.appendButton=\uC120\uD0DD\uD55C \uB178\uB4DC\uC5D0 \uB0A0\uC9DC \uC0BD\uC785
1570 reminder.Cancel=\uCDE8\uC18C
1571 reminder.cancelButton=\uCDE8\uC18C
1572 reminder.closeButton=\uB2EB\uAE30
1573 reminder.Created=\uC0DD\uC131\uB428
1574 reminder.Details=\uC790\uC138\uD788
1575 reminder.Export=\uC120\uD0DD\uD55C \uB178\uB4DC \uB0B4\uBCF4\uB0B4\uAE30
1576 reminder.Find=\uCC3E\uAE30
1577 reminder.Goto=\uAC00\uAE30
1578 reminder.hour=\uC2DC\uAC04:
1579 reminder.Icons=\uC544\uC774\uCF58
1580 reminder.Map=\uC9C0\uB3C4
1581 reminder.menu_actions=\uC561\uC158
1582 reminder.minute=\uBD84:
1583 reminder.Modified=\uC218\uC815\uB428
1584 reminder.Notes=\uB178\uD2B8
1585 reminder.Reminder=\uACBD\uC885
1586 reminder.reminderButton=\uC9C0\uC815\uB41C \uB0A0\uC9DC\uC5D0 \uC54C\uB9AC\uAE30
1587 reminder.reminderButton.tooltip=<html>\uD0C0\uC774\uBA38\uB97C \uB204\uB974\uBA74 \uC9C0\uC815\uB41C \uB0A0\uC9DC\uB85C \uC608\uC815\uB429\uB2C8\uB2E4. \uADF8 \uB2E4\uC74C \uAE5C\uBC15\uC784 \uC544\uC774\uCF58\uC744 \uAD00\uC2EC \uC0AC\uD56D\uC73C\uB85C \uBD80\uB985\uB2C8\uB2E4.<br> \uC9C0\uB3C4\uB97C \uB2EB\uC73C\uBA74, \uD0C0\uC774\uBA38\uB294 \uB9F5\uC774 \uB2E4\uC74C \uBC88\uC5D0 \uC5F4\uB9B4 \uB54C \uB2E4\uC2DC \uD65C\uC131\uD654\uB429\uB2C8\uB2E4.</html>
1588 reminder.reminderNode.tooltip={0,date} {0,time}\uC5D0 \uC54C\uB824 \uC8FC\uB3C4\uB85D \uC124\uC815\uB428.
1589 reminder.reminderNode_onlyOneDate=<html>\uB178\uB4DC\uBCC4\uB85C \uD0C0\uC774\uBA38 1\uAC1C\uAC00 \uC791\uB3D9 \uC911\uC785\uB2C8\uB2E4.<br>{0,date} {0,time}\uC5D0 \uD0C0\uC774\uBA38\uAC00 \uC2A4\uCF00\uC974\uD654\uB418\uC5B4 \uC788\uC73C\uBA70, \uB2F9\uC2E0\uC740 {1,date} {1,time}\uB97C \uC120\uD0DD\uD558\uC168\uC2B5\uB2C8\uB2E4.<br><br>\uD604\uC7AC \uB178\uB4DC\uC758 \uD0C0\uC774\uBA38\uB97C \uC7AC\uC870\uC815\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? (YES) <br>\uC544\uB2C8\uBA74 \uAE30\uC874\uC758 \uD0C0\uC774\uBA38\uB97C \uC720\uC9C0\uD560\uAE4C\uC694? (NO)</html>
1590 reminder.remindLaterButton=\uB098\uC911\uC5D0 \uC54C\uB9BC
1591 reminder.remindLaterButton.tooltip=\uB098\uC911\uC5D0 \uC54C\uB9BC
1592 reminder.removeReminderButton=\uC54C\uB9BC\uAE30\uB2A5 \uC81C\uAC70
1593 reminder.removeReminderButton.tooltip=\uC120\uD0DD\uD55C \uB178\uB4DC\uC5D0 \uC5F0\uACB0\uB41C \uBAA8\uB4E0 \uC54C\uB9BC \uAE30\uB2A5 \uC81C\uAC70.
1594 reminder.Replace=\uBC14\uAFB8\uAE30
1595 reminder.Replace_All=\uBAA8\uB450 \uBC14\uAFB8\uAE30
1596 reminder.Replace_Selected=\uC120\uD0DD\uD55C \uC601\uC5ED \uBC14\uAFB8\uAE30
1597 reminder.Select=\uC120\uD0DD
1598 reminder.Text=\uD14D\uC2A4\uD2B8
1599 reminder.todayButton=\uC624\uB298
1600 reminder.WindowTitle=\uC2DC\uAC04 \uAD00\uB9AC
1601 reminder.WindowTitle_All_Nodes=\uCC3E\uAE30 \uBC0F \uBC14\uAFB8\uAE30
16011602 ReminderHookAction.text=\uC54C\uB9BC \uD45C\uC2DC \uC81C\uAC70
16021603 ReminderHookAction.tooltip=\uB178\uB4DC\uC5D0\uC11C \uBBF8\uB9AC \uC54C\uB9BC\uC744 \uC81C\uAC70.
1604 ReminderListAction.text=\uC2DC\uAC04 \uAD00\uB9AC\uBAA9\uB85D\uCC3D \uC5F4\uAE30 ...
1605 ReminderListAction.tooltip=\uBAA8\uB4E0 \uC2A4\uCF00\uC904 \uD56D\uBAA9\uACFC \uC774\uC5D0 \uC5F0\uACB0\uB41C \uB178\uB4DC \uBCF4\uC774\uAE30.
16031606 reminderNotification=\uC54C\uB9BC \uC54C\uB9AC\uAE30
16041607 remove_file_from_list_on_error=\uD30C\uC77C {0} \uC740 \uC5F4\uB9AC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB9C8\uC9C0\uB9C9\uC73C\uB85C \uC5F4\uB9B0 \uD30C\uC77C \uBAA9\uB85D\uC5D0\uC11C \uC81C\uAC70 \uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?
16051608 remove_shortcut_question=\uB2E8\uCD95\uD0A4\uB97C \uBC14\uAFB8\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?
19891992 TextAlignAction.RIGHT.text=\uAE00\uC744 \uC624\uB978\uCABD \uC815\uB82C
19901993 textalignment=\uAE00\uC790 \uC815\uB82C
19911994 TextChangeHotKeyAction.text=\uAE00\uC790 \uBCC0\uACBD \uB2E8\uCD95\uD0A4 \uC124\uC815
1992 TimeListAction.text=\uC2DC\uAC04 \uAD00\uB9AC\uBAA9\uB85D\uCC3D \uC5F4\uAE30 ...
1993 TimeListAction.tooltip=\uBAA8\uB4E0 \uC2A4\uCF00\uC904 \uD56D\uBAA9\uACFC \uC774\uC5D0 \uC5F0\uACB0\uB41C \uB178\uB4DC \uBCF4\uC774\uAE30.
19941995 TimeManagementAction.text=\uB2EC\uB825 \uBCF4\uC774\uAE30...
19951996 TimeManagementAction.tooltip=<html>Kai Toedter\uB2D8\uC774 \uC81C\uACF5\uD55C \uB2EC\uB825 \uBAA8\uB4C8\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.</html>
19961997 TimePeriodUnits.days=\uC77C
452452 PatternToString.NodeFontSize=Font Size[translate me]
453453 plugins/ScriptEditor.exit=Save and Exit[translate me]
454454 plugins/ScriptEditor/window.title=Script Editor[translate me]
455 plugins/TimeList.xml_Created=Sukurtas
456 plugins/TimeList.xml_Date=Data
457 plugins/TimeList.xml_Icons=Piktogramos
458 plugins/TimeList.xml_Modified=Modifikuotas
459 plugins/TimeList.xml_Text=Tekstas
460 plugins/TimeManagement.xml_appendButton=\u012Eterpti dat\u0105 \u012F pasirinktas at\u0161akas
461 plugins/TimeManagement.xml_Cancel=At\u0161aukti
462 plugins/TimeManagement.xml_cancelButton=At\u0161aukti
463 plugins/TimeManagement.xml_closeButton=u\u017Edaryti
464 plugins/TimeManagement.xml_hour=Valandos:
465 plugins/TimeManagement.xml_minute=Minut\u0117s:
466 plugins/TimeManagement.xml_reminderButton=Priminimas nurodyt\u0105 dat\u0105
467 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Paspaudus nustatoma nurodyta data. Mirksin\u010Dios piktogramos atkreips j\u016Bs\u0173 d\u0117mes\u012F.<br> U\u017Edarius \u017Eem\u0117lap\u012F, taimeriai aktyvuojami v\u0117l j\u012F atidarius.</html>
468 plugins/TimeManagement.xml_reminderNode.tooltip=Priminimas nustatytas {0,date} {0,time}.
469 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Kol kas at\u0161akai gali b\u016Bti nustatomas tik vienas priminimas. <br>Dabartinis priminimas nustatytas {0,date} {0,time}, j\u016Bs\u0173 pasirinkimas yra {1,date} {1,time}. <br><br>Ar norite pakeisti priminimo laik\u0105 (TAIP) <br>ar nor\u0117tum\u0117te palikti sen\u0105j\u012F (NE)?</html>
470 plugins/TimeManagement.xml_removeReminderButton=Pa\u0161alinti priminim\u0105
471 plugins/TimeManagement.xml_removeReminderButton.tooltip=Pa\u0161alinti visus priminimus susietus su pasirinktomis at\u0161akomis.
472 plugins/TimeManagement.xml_todayButton=\u0160iandien
473 plugins/TimeManagement.xml_WindowTitle=Laiko valdymas
474 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Search & Replace[translate me]
475455 preferences=Pasirinkimai
476456 PrintAction.text=Spausdinti...
477457 PrintDirectAction.text=Spausdinti
480460 read_only=Read Only
481461 RedoAction.text=Gr\u0105\u017Einti
482462 RedoFilterAction.text=Gr\u0105\u017Einti
463 reminder.appendButton=\u012Eterpti dat\u0105 \u012F pasirinktas at\u0161akas
464 reminder.Cancel=At\u0161aukti
465 reminder.cancelButton=At\u0161aukti
466 reminder.closeButton=u\u017Edaryti
467 reminder.Created=Sukurtas
468 reminder.hour=Valandos:
469 reminder.Icons=Piktogramos
470 reminder.Map=\u017Dem\u0117lapis
471 reminder.minute=Minut\u0117s:
472 reminder.Modified=Modifikuotas
473 reminder.reminderButton=Priminimas nurodyt\u0105 dat\u0105
474 reminder.reminderButton.tooltip=<html>Paspaudus nustatoma nurodyta data. Mirksin\u010Dios piktogramos atkreips j\u016Bs\u0173 d\u0117mes\u012F.<br> U\u017Edarius \u017Eem\u0117lap\u012F, taimeriai aktyvuojami v\u0117l j\u012F atidarius.</html>
475 reminder.reminderNode.tooltip=Priminimas nustatytas {0,date} {0,time}.
476 reminder.reminderNode_onlyOneDate=<html>Kol kas at\u0161akai gali b\u016Bti nustatomas tik vienas priminimas. <br>Dabartinis priminimas nustatytas {0,date} {0,time}, j\u016Bs\u0173 pasirinkimas yra {1,date} {1,time}. <br><br>Ar norite pakeisti priminimo laik\u0105 (TAIP) <br>ar nor\u0117tum\u0117te palikti sen\u0105j\u012F (NE)?</html>
477 reminder.removeReminderButton=Pa\u0161alinti priminim\u0105
478 reminder.removeReminderButton.tooltip=Pa\u0161alinti visus priminimus susietus su pasirinktomis at\u0161akomis.
479 reminder.Text=Tekstas
480 reminder.todayButton=\u0160iandien
481 reminder.WindowTitle=Laiko valdymas
482 reminder.WindowTitle_All_Nodes=Search & Replace[translate me]
483483 ReminderHookAction.text=Pa\u0161alinti priminim\u0105
484484 ReminderHookAction.tooltip=Pa\u0161alina priminim\u0105 i\u0161 at\u0161akos.
485 ReminderListAction.text=Rodyti laiko tvarkara\u0161t\u012F ...
486 ReminderListAction.tooltip=Rodo visus nustatytus laikus ir atatinkamas at\u0161akas.
485487 RemoveAllIconsAction.text=Pa\u0161alinti visas piktogramas
486488 RemoveIconAction.text=Pa\u0161alinti paskutin\u0119 piktogram\u0105
487489 repair_link=Taisyti nuorod\u0105
539541 split=&Perskirti
540542 style=Stilius
541543 svg=SVG[translate me]
542 TimeListAction.text=Rodyti laiko tvarkara\u0161t\u012F ...
543 TimeListAction.tooltip=Rodo visus nustatytus laikus ir atatinkamas at\u0161akas.
544544 TimeManagementAction.text=Rodyti kalendori\u0173...
545545 TimeManagementAction.tooltip=<html>Rodo kalendoriaus modul\u012F sukurta Kai Toedter.</html>
546546 ToggleChildrenFoldedAction.text=(i\u0161/su)skleisti dukterines at\u0161akas
811811 plugins/ScriptEditor.run=Kj\u00F8r
812812 plugins/ScriptEditor/window.Result=Resultat:
813813 plugins/ScriptEditor/window.title=Skriptredigering
814 plugins/TimeList.xml_Created=Opprettet
815 plugins/TimeList.xml_Date=Dato
816 plugins/TimeList.xml_Icons=Ikoner
817 plugins/TimeList.xml_Modified=Endret
818 plugins/TimeList.xml_Notes=Notater
819 plugins/TimeList.xml_Text=Tekst
820 plugins/TimeManagement.xml_appendButton=Legg dagens dato til gjeldende node
821 plugins/TimeManagement.xml_Cancel=Avbryt
822 plugins/TimeManagement.xml_cancelButton=Avbryt
823 plugins/TimeManagement.xml_closeButton=Lukk
824 plugins/TimeManagement.xml_Export=Eksporter valgte noder
825 plugins/TimeManagement.xml_Find=Finn
826 plugins/TimeManagement.xml_Goto=G\u00E5 til
827 plugins/TimeManagement.xml_hour=Time:
828 plugins/TimeManagement.xml_menu_actions=Actions
829 plugins/TimeManagement.xml_minute=Minutt:
830 plugins/TimeManagement.xml_reminderButton=P\u00E5minnelse
831 plugins/TimeManagement.xml_reminderNode.tooltip=P\u00E5minnelse satt til {0,date} {0,time}.
832 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Forel\u00F8pig finnes det bare en p\u00E5minnelse per node. <br>Den n\u00E5v\u00E6rende p\u00E5minnelsen er satt til {0,date} {0,time}, ditt valg var {1,date} {1,time}. <br><br>Vil du endre tid for p\u00E5minnelsen (JA) <br>eller beholde den gamle (NEI)?</html>
833 plugins/TimeManagement.xml_removeReminderButton=Fjern p\u00E5minnelse
834 plugins/TimeManagement.xml_removeReminderButton.tooltip=Fjerne alle p\u00E5minnelser for noden.
835 plugins/TimeManagement.xml_Replace=Bytt ut
836 plugins/TimeManagement.xml_Replace_All=Bytt ut alle
837 plugins/TimeManagement.xml_Replace_Selected=Bytt ut den valgte
838 plugins/TimeManagement.xml_Select=Velg
839 plugins/TimeManagement.xml_todayButton=Idag
840 plugins/TimeManagement.xml_WindowTitle=Tidsstyring
841 plugins/TimeManagement.xml_WindowTitle_All_Nodes=S\u00F8k & bytt ut
842814 preferences=Foretrukne
843815 PrintDirectAction.text=Skriv ut
844816 printing_settings=Utskriftsskalering
847819 read_only=Read Only
848820 RedoAction.text=Gjenta
849821 RedoFilterAction.text=Gjenta
822 reminder.appendButton=Legg dagens dato til gjeldende node
823 reminder.Cancel=Avbryt
824 reminder.cancelButton=Avbryt
825 reminder.closeButton=Lukk
826 reminder.Created=Opprettet
827 reminder.Export=Eksporter valgte noder
828 reminder.Find=Finn
829 reminder.Goto=G\u00E5 til
830 reminder.hour=Time:
831 reminder.Icons=Ikoner
832 reminder.Map=Tankekart
833 reminder.menu_actions=Actions
834 reminder.minute=Minutt:
835 reminder.Modified=Endret
836 reminder.Notes=Notater
837 reminder.Reminder=P\u00E5minnelse
838 reminder.reminderButton=P\u00E5minnelse
839 reminder.reminderNode.tooltip=P\u00E5minnelse satt til {0,date} {0,time}.
840 reminder.reminderNode_onlyOneDate=<html>Forel\u00F8pig finnes det bare en p\u00E5minnelse per node. <br>Den n\u00E5v\u00E6rende p\u00E5minnelsen er satt til {0,date} {0,time}, ditt valg var {1,date} {1,time}. <br><br>Vil du endre tid for p\u00E5minnelsen (JA) <br>eller beholde den gamle (NEI)?</html>
841 reminder.removeReminderButton=Fjern p\u00E5minnelse
842 reminder.removeReminderButton.tooltip=Fjerne alle p\u00E5minnelser for noden.
843 reminder.Replace=Bytt ut
844 reminder.Replace_All=Bytt ut alle
845 reminder.Replace_Selected=Bytt ut den valgte
846 reminder.Select=Velg
847 reminder.Text=Tekst
848 reminder.todayButton=Idag
849 reminder.WindowTitle=Tidsstyring
850 reminder.WindowTitle_All_Nodes=S\u00F8k & bytt ut
850851 ReminderHookAction.text=Fjern p\u00E5minnelse
851852 ReminderHookAction.tooltip=Fjerner en p\u00E5minnelse fra en node.
853 ReminderListAction.text=Vis p\u00E5minnelsesliste ...
854 ReminderListAction.tooltip=Vis alle p\u00E5minnelser og tilh\u00F8rende noder.
852855 RemoveAllIconsAction.text=Fjern alle ikoner
853856 RemoveIconAction.text=Fjern siste ikon
854857 repair_link=Reparer link
10601063 SplitNode.tooltip=<html>Noden er delt</html>
10611064 style=Stil
10621065 svg=SVG
1063 TimeListAction.text=Vis p\u00E5minnelsesliste ...
1064 TimeListAction.tooltip=Vis alle p\u00E5minnelser og tilh\u00F8rende noder.
10651066 TimeManagementAction.text=Vis kalender...
10661067 TimeManagementAction.tooltip=<html>Viser kalendermodulen til Kai Toedter.</html>
10671068 ToggleChildrenFoldedAction.text=Fold barn inn/ut
227227 ColorProperty.ResetColor=Kleur herstellen
228228 combined=Gecombineerd
229229 condition=Conditie
230 ConfigureNodeReferenceAction.text=Knoopreferentie configureren
231230 confirmation=Bevestiging
232231 connector=Verbindingslijn
233232 connector_arrows=Pijlvorm verbindingslijn
244243 CopyIDAction.text=Kopi\u00EBren knoop-ID
245244 CopyMapStylesAction.text=kopieer Mindmapstijl van\u2026
246245 CopyNodeURIAction.text=Kopieer URI van knoop
247 copyright=Copyright \u00A9 2000-2018 Freeplane team en anderen
246 copyright=Copyright \u00A9 2000-2019 Freeplane team en anderen
248247 CopySingleAction.text=Kopi\u00EBren zonder zijtakken
249248 CopySingleAction.tooltip=Kopieer alleen de geselecteerde knoop
250249 CopyStyleExtensionsAction.text=Toevoegen uit stijlsjabloon
515514 formats_not_loaded=Bestandsformaat kon niet worden geladen, bestand is beschadigd
516515 formula.ClearDependenciesAction.text=Afhankelijkheden verwijderen
517516 formula.error.attributeValueIsNull=Attribuutwaarde "{0}" is leeg na evaluatie.
518 formula.error.circularReference=Cirkelverwijzing: De formule in knoop "{0}"verwijst naar zichzelf.
517 formula.error.circularReference=Cirkelverwijzing: De formule in knoop {0} ''{1}''verwijst naar zichzelf.
519518 formula.EvaluateAllAction.text=Alles uitrekenen
520519 formula.EvaluateAllAction.tooltip=Alle formules in de huidige map uitrekenen
521520 formula.menuname=Formules
779778 ManageAddOnsDialog.deactivate=Deactiveren
780779 ManageAddOnsDialog.deactivation.success={0} wordt uitgeschakeld na een herstart.
781780 ManageAddOnsDialog.deinstall=Verwijderen
782 ManageAddOnsDialog.deinstallation.success={0} wordt door herstarten gedeinstalleerd.
781 ManageAddOnsDialog.deinstallation.success={0} wordt door herstarten verwijderd.
783782 ManageAddOnsDialog.error=Fout bij installeren: {0}.
784783 ManageAddOnsDialog.install=&Installeren
785784 ManageAddOnsDialog.install.from.known.location=Installeren add-on van een bekende locatie
786785 ManageAddOnsDialog.install.tooltip=Vul hier de URL van een add-on installatie in
787786 ManageAddOnsDialog.map.not.opened=Mindmap {0} lijkt niet geopend.
788 ManageAddOnsDialog.really.deinstall=Echt {0} deinstalleren?
787 ManageAddOnsDialog.really.deinstall=Echt {0} verwijderen?
789788 ManageAddOnsDialog.search=Add-ons zoeken
790789 ManageAddOnsDialog.search.file=Zoeken
791790 ManageAddOnsDialog.select.tooltip=Selecteren bestand
956955 NotificationOptions.SELECT_NODE=Ga naar herinnering
957956 ok=OK
958957 OKAction.text=OK
958 OldReminderListAction.text=Oude herinneringen tonen...
959 OldReminderListAction.tooltip=Toont herinneringen uit het verleden met bijbehorende kopen voor alle geopende mindmaps.
959960 OnlineReference.text=Online documentatiemindmaps
960961 open_asMindMap=Mindmap
961962 OpenAction.text=Openen mindmap...
963 OpenApiDocumentationAction.text=Freeplane API...
962964 OpenFreeplaneSiteAction.text=Thuispagina op Internet van Freeplane
963965 OpenMapsAddLocation.text=Toevoegen OpenMap locatie...
964966 OpenMapsRemoveLocation.text=Verwijderen OpenMap locatie
978980 OptionPanel.addons=Add-ons
979981 OptionPanel.af=Afrikaans
980982 OptionPanel.always_fold_all_after_load=Alles dichtvouwen
981 OptionPanel.always_load_last_maps=Openen laatste en nieuwe mindmapbestanden
982 OptionPanel.always_load_last_maps.tooltip=Open de laatste bestanden zoals aangegeven door bovenstaande opties en start FP met een geselecteerde mindmap.
983 OptionPanel.always_load_last_maps=Laatste naast nieuwe mindmaps laden
984 OptionPanel.always_load_last_maps.tooltip=Open de laatste bestanden zoals aangegeven door bovenstaande opties, als je FP met een andere mindmap als argument opstart, bijvoorbeeld door dubbelklikken.
983985 OptionPanel.always_save_folding=Altijd
984986 OptionPanel.always_save_folding_state=Laatste toestand van open/dichtvouwen onthouden
985987 OptionPanel.always_save_folding_state.tooltip=Bij open/dichtvouwen vragen om de mindmap op te slaan.
12821284 OptionPanel.relative=Relatief
12831285 OptionPanel.remind_type_of_new_nodes.tooltip=<html> "Vragen" vraagt om bevestiging (gebruiken als je twijfelt).<br>"Ja" toont tekstopmaakvenster. <br>"Nee" toont knoopvenster. </html>
12841286 OptionPanel.remind_use_rich_text_in_new_nodes=Gebruik uitgebreide tekstopmaak voor geplakte knopen
1287 OptionPanel.reminder.showPastRemindersOnStart=Oude herinneringen tonen
12851288 OptionPanel.remindersBlink=Herinneringen knipperen
12861289 OptionPanel.remindersShowNotifications=Herinneringen laten een pop-up bericht zien
12871290 OptionPanel.remindersStandardDelay=Uitstel van herinneringen
15611564 plugins/ScriptEditor/window.Result=Resultaat:
15621565 plugins/ScriptEditor/window.title=Scriptbewerker
15631566 plugins/ScriptingEngine.illegalAccessToInternalAPI=Onrechtmatige toegang tot de interne API (package {0}). - Neem contact op met het Freeplane team als de API voor scripts niet krachtig genoeg is.
1564 plugins/TimeList.xml_Created=Gemaakt
1565 plugins/TimeList.xml_Date=Datum
1566 plugins/TimeList.xml_Details=Details
1567 plugins/TimeList.xml_Icons=Pictogrammen
1568 plugins/TimeList.xml_Modified=Gewijzigd
1569 plugins/TimeList.xml_Notes=Knoopnotities
1570 plugins/TimeList.xml_Text=Tekst
1571 plugins/TimeManagement.xml_appendButton=Datum toevoegen aan geselecteerde knopen
1572 plugins/TimeManagement.xml_Cancel=Annuleren
1573 plugins/TimeManagement.xml_cancelButton=Annuleren
1574 plugins/TimeManagement.xml_closeButton=Sluiten
1575 plugins/TimeManagement.xml_Export=Geselcteerde knopen exporteren
1576 plugins/TimeManagement.xml_Find=Zoeken
1577 plugins/TimeManagement.xml_Goto=Naar
1578 plugins/TimeManagement.xml_hour=Uren:
1579 plugins/TimeManagement.xml_menu_actions=Functies
1580 plugins/TimeManagement.xml_minute=Minuten:
1581 plugins/TimeManagement.xml_reminderButton=Toevoegen herinnering
1582 plugins/TimeManagement.xml_reminderButton.tooltip=<html> Wanneer je hier klikt, wordt er een timer ingeschakeld op de gegeven datum. Dan zullen knipperende pictogrammen je aandacht trekken.<br> Als je deze mindmap sluit, dan zullen de timers opnieuw geactiveerd worden als je de volgende keer deze mindmap opent.</html>
1583 plugins/TimeManagement.xml_reminderNode.tooltip=Herinnering gepland op {0,date} {0,time}.
1584 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html> Nu kan er maar \u00E9\u00E9n herinnering per knoop ingesteld worden. <br>De herinnering voor deze knoop is al ingesteld op {0,date} {0,time}, jouw keuze was {1,date} {1,time}. <br><br>Wil je de herinneringstijd van de knoop wijzigen (JA) <br>of wil je de vorige instelling behouden (NEE)?</html>
1585 plugins/TimeManagement.xml_remindLaterButton=Later herinneren
1586 plugins/TimeManagement.xml_remindLaterButton.tooltip=Later herinneren
1587 plugins/TimeManagement.xml_removeReminderButton=Verwijderen herinnering
1588 plugins/TimeManagement.xml_removeReminderButton.tooltip=Wis alle herinneringen die gekoppeld zijn aan de geselecteerde knopen.
1589 plugins/TimeManagement.xml_Replace=Vervangen
1590 plugins/TimeManagement.xml_Replace_All=Alles vervangen
1591 plugins/TimeManagement.xml_Replace_Selected=Selectie vervangen
1592 plugins/TimeManagement.xml_Select=Selecteren
1593 plugins/TimeManagement.xml_todayButton=Vandaag
1594 plugins/TimeManagement.xml_WindowTitle=Herinneringen
1595 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Zoeken en vervangen
15961567 preferences=Voorkeuren
15971568 presentation=Presentatie
15981569 presentation.combineAll=Alle presentaties samenvoegen
16221593 RedoAction.text=Filteractie opnieuw doen
16231594 RedoFilterAction.text=Herhalen laatste filteractie
16241595 regular_expressions=Reguliere expressies
1596 reminder.appendButton=Datum toevoegen aan geselecteerde knopen
1597 reminder.Cancel=Annuleren
1598 reminder.cancelButton=Annuleren
1599 reminder.closeButton=Sluiten
1600 reminder.Created=Gemaakt
1601 reminder.Details=Details
1602 reminder.Export=Geselcteerde knopen exporteren
1603 reminder.Find=Zoeken
1604 reminder.Goto=Naar
1605 reminder.hour=Uren:
1606 reminder.Icons=Pictogrammen
1607 reminder.Map=Mindmap
1608 reminder.menu_actions=Functies
1609 reminder.minute=Minuten:
1610 reminder.Modified=Gewijzigd
1611 reminder.Notes=Knoopnotities
1612 reminder.Reminder=Herinnering
1613 reminder.reminderButton=Toevoegen herinnering
1614 reminder.reminderButton.tooltip=<html> Wanneer je hier klikt, wordt er een timer ingeschakeld op de gegeven datum. Dan zullen knipperende pictogrammen je aandacht trekken.<br> Als je deze mindmap sluit, dan zullen de timers opnieuw geactiveerd worden als je de volgende keer deze mindmap opent.</html>
1615 reminder.reminderNode.tooltip=Herinnering gepland op {0,date} {0,time}.
1616 reminder.reminderNode_onlyOneDate=<html> Nu kan er maar \u00E9\u00E9n herinnering per knoop ingesteld worden. <br>De herinnering voor deze knoop is al ingesteld op {0,date} {0,time}, jouw keuze was {1,date} {1,time}. <br><br>Wil je de herinneringstijd van de knoop wijzigen (JA) <br>of wil je de vorige instelling behouden (NEE)?</html>
1617 reminder.remindLaterButton=Later herinneren
1618 reminder.remindLaterButton.tooltip=Later herinneren
1619 reminder.Remove_All=Alle herinneringen verwijderen
1620 reminder.Remove_Selected=Geselecteerde herinneringen verwijderen
1621 reminder.removeReminderButton=Verwijderen herinnering
1622 reminder.removeReminderButton.tooltip=Wis alle herinneringen die gekoppeld zijn aan de geselecteerde knopen.
1623 reminder.Replace=Vervangen
1624 reminder.Replace_All=Alles vervangen
1625 reminder.Replace_Selected=Selectie vervangen
1626 reminder.Run_All=Alle scripts uitvoeren
1627 reminder.Run_Selected=Geselecteerde script uitvoeren
1628 reminder.Select=Selecteren
1629 reminder.Text=Tekst
1630 reminder.todayButton=Vandaag
1631 reminder.WindowTitle=Herinneringen beheren
1632 reminder.WindowTitle_All_Nodes=Zoeken en vervangen
1633 reminder.WindowTitle_pastReminders=Oude herinneringen
1634 reminder_script_error=Fout {0} in herinneringsscript voor mindmap {1} knoop {2}
16251635 ReminderHookAction.text=Verwijderen herinnering
16261636 ReminderHookAction.tooltip=Verwijderen herinnering uit een knoop.
1637 ReminderListAction.text=Taakbeheer...
1638 ReminderListAction.tooltip=Toont alle geplande herinneringen en de bijhorende knopen.
16271639 reminderNotification=Herinneringsbericht
16281640 remove_file_from_list_on_error=Bestand {0} kon niet geopend worden. Verwijderen van de laatst gebruikte bestanden lijst?
16291641 remove_shortcut_question=Sneltoets verwijderen?
17071719 SetLinkAnchorAction.tooltip_anchored=<html>instellen geselekteerde knoop als anker voor later te<br/>maken snelkoppeling met andere knoop of mindmap. Huidig anker:<br/>{0}
17081720 SetLinkByFileChooserAction.text=Koppeling kiezen...
17091721 SetLinkByTextFieldAction.text=Koppeling typen of wijzigen...
1722 SetNodeAliasAction.text=Knoop alias instellen
17101723 SetNodeLink.text=Maak knoopkoppeling...
17111724 SetNoteWindowPosition.bottom.text=Onder
17121725 SetNoteWindowPosition.left.text=Links
20122025 TextAlignAction.RIGHT.text=Rechts uitgelijnde tekst
20132026 textalignment=Teksuitlijning
20142027 TextChangeHotKeyAction.text=Wijzigen sneltoets voor vertaalhulp
2015 TimeListAction.text=Taakbeheer...
2016 TimeListAction.tooltip=Toont alle geplande herinneringen en de bijhorende knopen.
20172028 TimeManagementAction.text=Agenda...
20182029 TimeManagementAction.tooltip=<html> Start de agendamodule.</html>
20192030 TimePeriodUnits.days=dagen
457457 PatternToString.FontBold=Feit
458458 PatternToString.Icon=ikon
459459 plugins/ScriptEditor/window.title=Script Editor[translate me]
460 plugins/TimeList.xml_Created=Oppretta
461 plugins/TimeList.xml_Date=Dato
462 plugins/TimeList.xml_Icons=Ikon
463 plugins/TimeList.xml_Modified=Endra
464 plugins/TimeList.xml_Text=Tekst
465 plugins/TimeManagement.xml_appendButton=Legg til dato p\u00E5 valde nodar
466 plugins/TimeManagement.xml_Cancel=Avbryt
467 plugins/TimeManagement.xml_cancelButton=Avbryt
468 plugins/TimeManagement.xml_closeButton=lukk
469 plugins/TimeManagement.xml_Goto=Goto[translate me]
470 plugins/TimeManagement.xml_hour=Time:
471 plugins/TimeManagement.xml_minute=Minutt:
472 plugins/TimeManagement.xml_reminderButton=Varsla denne datoen
473 plugins/TimeManagement.xml_reminderButton.tooltip=<html>N\u00E5r trykt ned vil nedteljinga g\u00E5 til den gjevne datoen. Blinkande ikon vil d\u00E5 varsla.<br> Lukker du kartet vil teljarane setjast i gang att neste gong du opnar det.</html>
474 plugins/TimeManagement.xml_reminderNode.tooltip=Planlagt varsel {0,date} {0,time}.
475 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>For tida kan det berre vera eitt varsel per node. <br>Noverande varsel er planlagt til {0,date} {0,time}, valet ditt var {1,date} {1,time}. <br><br>\u00D8nskjer du \u00E5 endra varseltida til noden (JA) <br>eller vil du bruka den gamle (NEI)?</html>
476 plugins/TimeManagement.xml_removeReminderButton=Fjern varsel
477 plugins/TimeManagement.xml_removeReminderButton.tooltip=Fjern alle varsel knytte til dei valde nodane.
478 plugins/TimeManagement.xml_todayButton=I dag
479 plugins/TimeManagement.xml_WindowTitle=Tidsstyring
480460 preferences=Innstillingar
481461 PrintAction.text=Skriv ut ...
482462 PrintDirectAction.text=Skriv ut
485465 read_only=Berre lesing
486466 RedoAction.text=Gjer om att
487467 RedoFilterAction.text=Gjer om att
468 reminder.appendButton=Legg til dato p\u00E5 valde nodar
469 reminder.Cancel=Avbryt
470 reminder.cancelButton=Avbryt
471 reminder.closeButton=lukk
472 reminder.Created=Oppretta
473 reminder.Goto=Goto[translate me]
474 reminder.hour=Time:
475 reminder.Icons=Ikon
476 reminder.Map=Kart
477 reminder.minute=Minutt:
478 reminder.Modified=Endra
479 reminder.reminderButton=Varsla denne datoen
480 reminder.reminderButton.tooltip=<html>N\u00E5r trykt ned vil nedteljinga g\u00E5 til den gjevne datoen. Blinkande ikon vil d\u00E5 varsla.<br> Lukker du kartet vil teljarane setjast i gang att neste gong du opnar det.</html>
481 reminder.reminderNode.tooltip=Planlagt varsel {0,date} {0,time}.
482 reminder.reminderNode_onlyOneDate=<html>For tida kan det berre vera eitt varsel per node. <br>Noverande varsel er planlagt til {0,date} {0,time}, valet ditt var {1,date} {1,time}. <br><br>\u00D8nskjer du \u00E5 endra varseltida til noden (JA) <br>eller vil du bruka den gamle (NEI)?</html>
483 reminder.removeReminderButton=Fjern varsel
484 reminder.removeReminderButton.tooltip=Fjern alle varsel knytte til dei valde nodane.
485 reminder.Text=Tekst
486 reminder.todayButton=I dag
487 reminder.WindowTitle=Tidsstyring
488488 ReminderHookAction.text=Fjern varsel
489489 ReminderHookAction.tooltip=Fjerna varsel fr\u00E5 ein node
490 ReminderListAction.text=Vis tidsplanleggarlista ...
491 ReminderListAction.tooltip=Vis alle planlagte tider og tilh\u00F8rande noder.
490492 RemoveAllIconsAction.text=Fjern alle ikon
491493 RemoveIconAction.text=Fjern siste ikon
492494 repair_link=Reparer peikar
549551 SplitNode.text=Split Node[translate me]
550552 style=Stil
551553 svg=SVG[translate me]
552 TimeListAction.text=Vis tidsplanleggarlista ...
553 TimeListAction.tooltip=Vis alle planlagte tider og tilh\u00F8rande noder.
554554 TimeManagementAction.text=Vis kalender ...
555555 TimeManagementAction.tooltip=<html>Viser kalendermodulen til Kai Toedter.</html>
556556 ToggleChildrenFoldedAction.text=Barn brett saman/brett ut
228228 ColorProperty.ResetColor=Domy\u015Blny
229229 combined=Ramka/bez ramki
230230 condition=Warunek
231 ConfigureNodeReferenceAction.text=Skonfiguruj odniesienie do w\u0119z\u0142a
232231 confirmation=Potwierdzenie
233232 connector=Po\u0142\u0105czenie
234233 connector_arrows=Strza\u0142ki po\u0142\u0105czenia
245244 CopyIDAction.text=Kopiuj ID w\u0119z\u0142a
246245 CopyMapStylesAction.text=Kopiuj style mapy z...
247246 CopyNodeURIAction.text=Kopiuj URI w\u0119z\u0142a
248 copyright=Copyright \u00A9 2000-2018 Zesp\u00F3\u0142 Freeplane i inni
247 copyright=Copyright \u00A9 2000-2019 Zesp\u00F3\u0142 Freeplane i inni
249248 CopySingleAction.text=Kopiuj w\u0119ze\u0142 (bez potomk\u00F3w)
250249 CopySingleAction.tooltip=Kopiuje tylko zaznaczony w\u0119ze\u0142 bez ga\u0142\u0119zi
251250 CopyStyleExtensionsAction.text=Kopiuj rozszerzenia ze stylu
517516 formats_not_loaded=Formatowania nie mog\u0105 by\u0107 za\u0142adowane, plik uszkodzony
518517 formula.ClearDependenciesAction.text=Wyczy\u015B\u0107 zale\u017Cno\u015Bci
519518 formula.error.attributeValueIsNull=Po wykonaniu warto\u015Bci\u0105 atrybutu ''{0}'' jest null.
520 formula.error.circularReference=Odwo\u0142anie cykliczne: Formu\u0142a w w\u0119\u017Ale ''{0}'' odwo\u0142uje si\u0119 do samej siebie.
519 formula.error.circularReference=Odwo\u0142anie cykliczne: Formu\u0142a w w\u0119\u017Ale {0} ''{1}'' odwo\u0142uje si\u0119 do samej siebie.
521520 formula.EvaluateAllAction.text=Wykonaj wszystko
522521 formula.EvaluateAllAction.tooltip=Wykonaj wszystkie formu\u0142y w bie\u017C\u0105cej mapie
523522 formula.menuname=Formu\u0142y
15621561 plugins/ScriptEditor/window.Result=Wynik:
15631562 plugins/ScriptEditor/window.title=Edytor skrypt\u00F3w
15641563 plugins/ScriptingEngine.illegalAccessToInternalAPI=Nieprawid\u0142owy dost\u0119p do wewn\u0119trznego API (package {0}). - Prosimy o kontakt z zespo\u0142em Freeplane je\u017Celi obecne API nie udost\u0119pnia wystarczaj\u0105cych mo\u017Cliwo\u015Bci.
1565 plugins/TimeList.xml_Created=Utworzony
1566 plugins/TimeList.xml_Date=Data
1567 plugins/TimeList.xml_Details=Detale
1568 plugins/TimeList.xml_Icons=Ikony
1569 plugins/TimeList.xml_Modified=Zmieniony
1570 plugins/TimeList.xml_Notes=Notatki
1571 plugins/TimeList.xml_Text=Tekst
1572 plugins/TimeManagement.xml_appendButton=Dodaj dat\u0119 do wybranych w\u0119z\u0142\u00F3w
1573 plugins/TimeManagement.xml_Cancel=Anuluj
1574 plugins/TimeManagement.xml_cancelButton=Anuluj
1575 plugins/TimeManagement.xml_closeButton=Zamknij
1576 plugins/TimeManagement.xml_Export=Eksportuj zaznaczone w\u0119z\u0142y
1577 plugins/TimeManagement.xml_Find=Znajd\u017A
1578 plugins/TimeManagement.xml_Goto=Id\u017A do
1579 plugins/TimeManagement.xml_hour=Godzina:
1580 plugins/TimeManagement.xml_menu_actions=Akcje
1581 plugins/TimeManagement.xml_minute=Minuta:
1582 plugins/TimeManagement.xml_reminderButton=Przypomnij mi tego dnia
1583 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Po naci\u015Bni\u0119ciu alarm jest ustawiany na podany czas. Migaj\u0105ca ikona oznacza alarm.<br>Je\u015Bli zamkniesz map\u0119, alarm zostanie odtworzony po jej ponownym otwarciu.</html>
1584 plugins/TimeManagement.xml_reminderNode.tooltip=Przypomnienie zaplanowane na {0,date} {0,time}.
1585 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Aktualnie mo\u017Ce by\u0107 tylko jedno przypomnienie dla w\u0119z\u0142a.<br>Aktualne przypomnienie jest zaplanowane na {0,date} {0,time}, tw\u00F3j wyb\u00F3r to {1,date} {1,time}.<br><br>Czy chcesz zmieni\u0107 przypomnienie w\u0119z\u0142a (TAK) <br>lub zachowa\u0107 poprzednie (NIE)?</html>
1586 plugins/TimeManagement.xml_remindLaterButton=Przypomnij p\u00F3\u017Aniej
1587 plugins/TimeManagement.xml_remindLaterButton.tooltip=Przypomnij p\u00F3\u017Aniej
1588 plugins/TimeManagement.xml_removeReminderButton=Usu\u0144 przypomnienie
1589 plugins/TimeManagement.xml_removeReminderButton.tooltip=Usu\u0144 wszystkie przypomnienia dla zaznaczonych w\u0119z\u0142\u00F3w.
1590 plugins/TimeManagement.xml_Replace=Zamie\u0144
1591 plugins/TimeManagement.xml_Replace_All=Zamie\u0144 wszystko
1592 plugins/TimeManagement.xml_Replace_Selected=Zamie\u0144 zaznaczone
1593 plugins/TimeManagement.xml_Select=Zaznacz
1594 plugins/TimeManagement.xml_todayButton=Dzisiaj
1595 plugins/TimeManagement.xml_WindowTitle=Zarz\u0105dzanie czasem
1596 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Znajd\u017A i zast\u0105p
15971564 preferences=Preferencje
15981565 presentation=Prezentacja
15991566 presentation.combineAll=Po\u0142\u0105cz wszystkie prezentacje
16231590 RedoAction.text=Powt\u00F3rz
16241591 RedoFilterAction.text=Powt\u00F3rz
16251592 regular_expressions=Wyra\u017Cenia regularne
1593 reminder.appendButton=Dodaj dat\u0119 do wybranych w\u0119z\u0142\u00F3w
1594 reminder.Cancel=Anuluj
1595 reminder.cancelButton=Anuluj
1596 reminder.closeButton=Zamknij
1597 reminder.Created=Utworzony
1598 reminder.Details=Detale
1599 reminder.Export=Eksportuj zaznaczone w\u0119z\u0142y
1600 reminder.Find=Znajd\u017A
1601 reminder.Goto=Id\u017A do
1602 reminder.hour=Godzina:
1603 reminder.Icons=Ikony
1604 reminder.Map=Mapa
1605 reminder.menu_actions=Akcje
1606 reminder.minute=Minuta:
1607 reminder.Modified=Zmieniony
1608 reminder.Notes=Notatki
1609 reminder.Reminder=Przypomnienie
1610 reminder.reminderButton=Przypomnij mi tego dnia
1611 reminder.reminderButton.tooltip=<html>Po naci\u015Bni\u0119ciu alarm jest ustawiany na podany czas. Migaj\u0105ca ikona oznacza alarm.<br>Je\u015Bli zamkniesz map\u0119, alarm zostanie odtworzony po jej ponownym otwarciu.</html>
1612 reminder.reminderNode.tooltip=Przypomnienie zaplanowane na {0,date} {0,time}.
1613 reminder.reminderNode_onlyOneDate=<html>Aktualnie mo\u017Ce by\u0107 tylko jedno przypomnienie dla w\u0119z\u0142a.<br>Aktualne przypomnienie jest zaplanowane na {0,date} {0,time}, tw\u00F3j wyb\u00F3r to {1,date} {1,time}.<br><br>Czy chcesz zmieni\u0107 przypomnienie w\u0119z\u0142a (TAK) <br>lub zachowa\u0107 poprzednie (NIE)?</html>
1614 reminder.remindLaterButton=Przypomnij p\u00F3\u017Aniej
1615 reminder.remindLaterButton.tooltip=Przypomnij p\u00F3\u017Aniej
1616 reminder.removeReminderButton=Usu\u0144 przypomnienie
1617 reminder.removeReminderButton.tooltip=Usu\u0144 wszystkie przypomnienia dla zaznaczonych w\u0119z\u0142\u00F3w.
1618 reminder.Replace=Zamie\u0144
1619 reminder.Replace_All=Zamie\u0144 wszystko
1620 reminder.Replace_Selected=Zamie\u0144 zaznaczone
1621 reminder.Select=Zaznacz
1622 reminder.Text=Tekst
1623 reminder.todayButton=Dzisiaj
1624 reminder.WindowTitle=Zarz\u0105dzanie czasem
1625 reminder.WindowTitle_All_Nodes=Znajd\u017A i zast\u0105p
16261626 ReminderHookAction.text=Usu\u0144 przypomnienie
16271627 ReminderHookAction.tooltip=Usuwa przypomnienie z w\u0119z\u0142a.
1628 ReminderListAction.text=Zarz\u0105dzaj zadaniami ...
1629 ReminderListAction.tooltip=Wy\u015Bwietla wszystkie zaplanowane czasy wraz z odpowiadaj\u0105cymi im w\u0119z\u0142ami.
16281630 reminderNotification=Zawiadomienie o przypomnieniu
16291631 remove_file_from_list_on_error=Plik {0} nie otwarty. Czy usun\u0105\u0107 go z listy ostatio otwieranych plik\u00F3w?
16301632 remove_shortcut_question=Zast\u0105pi\u0107 skr\u00F3t klawiaturowy?
20132015 TextAlignAction.RIGHT.text=Wyr\u00F3wnaj tekst do prawej
20142016 textalignment=Wyr\u00F3wnanie tekstu
20152017 TextChangeHotKeyAction.text=Set text change hot key (t\u0142umaczenie)
2016 TimeListAction.text=Zarz\u0105dzaj zadaniami ...
2017 TimeListAction.tooltip=Wy\u015Bwietla wszystkie zaplanowane czasy wraz z odpowiadaj\u0105cymi im w\u0119z\u0142ami.
20182018 TimeManagementAction.text=Poka\u017C kalendarz...
20192019 TimeManagementAction.tooltip=<html>Pokazuje modu\u0142 kalendarza autorstwa Kai Toedter</html>
20202020 TimePeriodUnits.days=dni
232232 CopyMapStylesAction.text=Copiar o estilo do mapa de...
233233 CopyMapStylesAction.tooltip=Com esta fun\u00E7\u00E3o voc\u00EA ir\u00E1 pegar os padr\u00F5es de configura\u00E7\u00F5es de outro mapa j\u00E1 existente e ir\u00E1 aplicar no mapa selecionado
234234 CopyNodeURIAction.text=Copiar URI do n\u00F3
235 copyright=Direitos autorais 2000-2018 Time Freeplane e outros
235 copyright=Direitos autorais 2000-2019 Time Freeplane e outros
236236 CopySingleAction.text=Copiar Apenas o N\u00F3 Selecionado
237237 CopySingleAction.tooltip=Copiar apenas o n\u00F3 selecionado
238238 CopyStyleExtensionsAction.text=Copiar extens\u00F5es do estilo de n\u00F3
487487 FormatPaste.tooltip=<html>Cola a formata\u00E7\u00E3o de um n\u00F3.</html>
488488 formats_not_loaded=Formatos n\u00E3o puderam ser carregados; arquivos corrompidos
489489 formula.error.attributeValueIsNull=Valor do atributo "{0}" \u00E9 nulo depois da avalia\u00E7\u00E3o.
490 formula.error.circularReference=Refer\u00EAncia circular: A f\u00F3rmula no n\u00F3 "{0}" referencia a si mesmo.
490 formula.error.circularReference=Refer\u00EAncia circular: A f\u00F3rmula no n\u00F3 {0} ''{1}'' referencia a si mesmo.
491491 formula.EvaluateAllAction.text=Avalia todos
492492 formula.EvaluateAllAction.tooltip=Avaliar todas as f\u00F3rmulas do mapa atual
493493 formula.menuname=F\u00F3rmulas
13841384 plugins/ScriptEditor/window.Result=Resultado:
13851385 plugins/ScriptEditor/window.title=Editor de scripts
13861386 plugins/ScriptingEngine.illegalAccessToInternalAPI=Acesso ilegal a API interna (pacote {0}). - Por favor entre em contato com a equipe Freeplane se a API de script n\u00E3o for suficiente.
1387 plugins/TimeList.xml_Created=Criado
1388 plugins/TimeList.xml_Date=Data
1389 plugins/TimeList.xml_Details=Detalhes
1390 plugins/TimeList.xml_Icons=\u00CDcones
1391 plugins/TimeList.xml_Modified=Modificado
1392 plugins/TimeList.xml_Notes=Notas
1393 plugins/TimeList.xml_Text=Texto
1394 plugins/TimeManagement.xml_appendButton=Anexa a data ao n\u00F3 selecionado
1395 plugins/TimeManagement.xml_Cancel=Cancelar
1396 plugins/TimeManagement.xml_cancelButton=Cancelar
1397 plugins/TimeManagement.xml_closeButton=Fechar
1398 plugins/TimeManagement.xml_Export=Exportar n\u00F3s selecionados
1399 plugins/TimeManagement.xml_Find=Buscar
1400 plugins/TimeManagement.xml_Goto=Ir para
1401 plugins/TimeManagement.xml_hour=Hora:
1402 plugins/TimeManagement.xml_menu_actions=A\u00E7\u00F5es
1403 plugins/TimeManagement.xml_minute=Minuto:
1404 plugins/TimeManagement.xml_reminderButton=Lembre-me nesta data
1405 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Quando clicado, um temporizador \u00E9 programado para a data estabelecida. Ent\u00E3o um cursor piscante \u00E9 ativado para chamar a sua aten\u00E7\u00E3o.<br> Se voce fechar o mapa, os temporizadores ser\u00E3o reativados a pr\u00F3xima v\u00EAz que o mapa for aberto.</html>
1406 plugins/TimeManagement.xml_reminderNode.tooltip=Alarme agendado para {0,date} {0,time}.
1407 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current remnider is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
1408 plugins/TimeManagement.xml_remindLaterButton=Lembrar mais tarde
1409 plugins/TimeManagement.xml_remindLaterButton.tooltip=Lembrar mais tarde
1410 plugins/TimeManagement.xml_removeReminderButton=Remove alarme
1411 plugins/TimeManagement.xml_removeReminderButton.tooltip=Remove todos os alarmes associados aos n\u00F3s selecionados.
1412 plugins/TimeManagement.xml_Replace=Substituir
1413 plugins/TimeManagement.xml_Replace_All=Substituir todos
1414 plugins/TimeManagement.xml_Replace_Selected=Substituir selecionados
1415 plugins/TimeManagement.xml_Select=Selecionar
1416 plugins/TimeManagement.xml_todayButton=Hoje
1417 plugins/TimeManagement.xml_WindowTitle=Gerenciamento de tempo
1418 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Busca & substitui
14191387 preferences=Prefer\u00EAncias
14201388 print_preview_title=Visualizar impress\u00E3o
14211389 PrintAction.text=Imprimir mapa...
14431411 RedoAction.text=Refazer
14441412 RedoFilterAction.text=Refazer
14451413 regular_expressions=Express\u00F5es regulares
1414 reminder.appendButton=Anexa a data ao n\u00F3 selecionado
1415 reminder.Cancel=Cancelar
1416 reminder.cancelButton=Cancelar
1417 reminder.closeButton=Fechar
1418 reminder.Created=Criado
1419 reminder.Details=Detalhes
1420 reminder.Export=Exportar n\u00F3s selecionados
1421 reminder.Find=Buscar
1422 reminder.Goto=Ir para
1423 reminder.hour=Hora:
1424 reminder.Icons=\u00CDcones
1425 reminder.Map=Mapa
1426 reminder.menu_actions=A\u00E7\u00F5es
1427 reminder.minute=Minuto:
1428 reminder.Modified=Modificado
1429 reminder.Notes=Notas
1430 reminder.Reminder=Lembrete
1431 reminder.reminderButton=Lembre-me nesta data
1432 reminder.reminderButton.tooltip=<html>Quando clicado, um temporizador \u00E9 programado para a data estabelecida. Ent\u00E3o um cursor piscante \u00E9 ativado para chamar a sua aten\u00E7\u00E3o.<br> Se voce fechar o mapa, os temporizadores ser\u00E3o reativados a pr\u00F3xima v\u00EAz que o mapa for aberto.</html>
1433 reminder.reminderNode.tooltip=Alarme agendado para {0,date} {0,time}.
1434 reminder.reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current remnider is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
1435 reminder.remindLaterButton=Lembrar mais tarde
1436 reminder.remindLaterButton.tooltip=Lembrar mais tarde
1437 reminder.removeReminderButton=Remove alarme
1438 reminder.removeReminderButton.tooltip=Remove todos os alarmes associados aos n\u00F3s selecionados.
1439 reminder.Replace=Substituir
1440 reminder.Replace_All=Substituir todos
1441 reminder.Replace_Selected=Substituir selecionados
1442 reminder.Select=Selecionar
1443 reminder.Text=Texto
1444 reminder.todayButton=Hoje
1445 reminder.WindowTitle=Gerenciamento de tempo
1446 reminder.WindowTitle_All_Nodes=Busca & substitui
14461447 ReminderHookAction.text=Remove alarme
14471448 ReminderHookAction.tooltip=Remove o alarme de um n\u00F3.
1449 ReminderListAction.text=Gerenciar tarefas...
1450 ReminderListAction.tooltip=Mostra todos os hor\u00E1rios programados e os n\u00F3s correspondentes.
14481451 remove_file_from_list_on_error=Arquivo {0} n\u00E3o abriu. Remover a \u00FAltima lista de arquivo aberto?
14491452 remove_shortcut_question=Substituir o atalho?
14501453 RemoveAllAlwaysUnfoldedNodeFlagsAction.text=Remover o Engessamento dos N\u00F3s
17691772 TextAlignAction.LEFT.text=Alinhar Texto \u00E0 Esquerda
17701773 TextAlignAction.RIGHT.text=Alinhar Texto \u00E0 Direita
17711774 TextChangeHotKeyAction.text=Defina o atalho para mudan\u00E7a de texto
1772 TimeListAction.text=Gerenciar tarefas...
1773 TimeListAction.tooltip=Mostra todos os hor\u00E1rios programados e os n\u00F3s correspondentes.
17741775 TimeManagementAction.text=Gerenciar o tempo...
17751776 TimeManagementAction.tooltip=<html>Mostra o m\u00F3dulo calend\u00E1rio feito por Kai Toedter.</html>
17761777 ToggleChildrenFoldedAction.text=Expandir ou recolher os filhos
229229 ColorProperty.ResetColor=Repor cor
230230 combined=Combinado
231231 condition=Condi\u00E7\u00E3o
232 ConfigureNodeReferenceAction.text=Configurar refer\u00EAncia do n\u00F3
233232 confirmation=Confirma\u00E7\u00E3o
234233 connector=Liga\u00E7\u00E3o
235234 connector_arrows=Setas da liga\u00E7\u00E3o
246245 CopyIDAction.text=Copiar ID do n\u00F3
247246 CopyMapStylesAction.text=Copiar estilo do mapa de...
248247 CopyNodeURIAction.text=Copiar URL do n\u00F3
249 copyright=Copyright \u00A9 2000-2018 Equipa do Freeplane e outros
248 copyright=Copyright \u00A9 2000-2019 Equipa do Freeplane e outros
250249 CopySingleAction.text=Copiar n\u00F3 (simples)
251250 CopySingleAction.tooltip=Copiar s\u00F3 o n\u00F3 seleccionado
252251 CopyStyleExtensionsAction.text=Copiar extens\u00F5es do n\u00F3 de estilo
518517 formats_not_loaded=Imposs\u00EDvel carregar formatos, ficheiro corrompido
519518 formula.ClearDependenciesAction.text=Limpar depend\u00EAncias
520519 formula.error.attributeValueIsNull=O valor do atributo {0} \u00E9 nulo ap\u00F3s a avalia\u00E7\u00E3o.
521 formula.error.circularReference=Refer\u00EAncia circular: a f\u00F3rmula no n\u00F3 {0} referencia-se a si mesma.
520 formula.error.circularReference=Refer\u00EAncia circular: a f\u00F3rmula no n\u00F3 {0} ''{1}'' referencia-se a si mesma.
522521 formula.EvaluateAllAction.text=Avaliar tudo
523522 formula.EvaluateAllAction.tooltip=Avaliar todas as f\u00F3rmulas no mapa actual
524523 formula.menuname=F\u00F3rmulas
961960 NotificationOptions.SELECT_NODE=Ir para o lembrete
962961 ok=&Aceitar
963962 OKAction.text=Aceitar
963 OldReminderListAction.text=Mostrar lembretes passados...
964 OldReminderListAction.tooltip=Mostrar horas de lembretes passados e os n\u00F3s correspondentes nos mapas abertos.
964965 OnlineReference.text=Mapas de documenta\u00E7\u00E3o online
965966 open_asMindMap=Mapa mental
966967 OpenAction.text=Abrir mapa gravado...
968 OpenApiDocumentationAction.text=API do Freeplane...
967969 OpenFreeplaneSiteAction.text=P\u00E1gina inicial do Freeplane
968970 OpenMapsAddLocation.text=Adicionar local do OpenMaps...
969971 OpenMapsRemoveLocation.text=Remover local do OpenMaps...
983985 OptionPanel.addons=Extens\u00F5es
984986 OptionPanel.af=Afrikaans
985987 OptionPanel.always_fold_all_after_load=Dobrar todos
986 OptionPanel.always_load_last_maps=Carregar \u00FAltimo e novo mapas
988 OptionPanel.always_load_last_maps=Carregar os \u00FAltimos mapas com novos mapas
987989 OptionPanel.always_load_last_maps.tooltip=Abrir os \u00FAltimos ficheiros definidos pelas op\u00E7\u00F5es acima, mesmo abrindo o Freeplane com um mapa concreto.
988990 OptionPanel.always_save_folding=Sempre
989991 OptionPanel.always_save_folding_state=Gravar sempre as altera\u00E7\u00F5es ao estado das dobras
12881290 OptionPanel.relative=Relativo
12891291 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"Perguntar" pergunta-lhe (use se tem d\u00FAvidas).<br>"Sim" mostra o editor de Rich Text.<br>"N\u00E3o" mostra o editor de texto simples.</html>
12901292 OptionPanel.remind_use_rich_text_in_new_nodes=Usar Rich Text para n\u00F3s colados
1293 OptionPanel.reminder.showPastRemindersOnStart=Mostrar lembretes passados
12911294 OptionPanel.remindersBlink=Piscar dos lembretes
12921295 OptionPanel.remindersShowNotifications=Lembretes mostram bal\u00F5es de notifica\u00E7\u00E3o
12931296 OptionPanel.remindersStandardDelay=Atraso do lembrete
15671570 plugins/ScriptEditor/window.Result=Resultado:
15681571 plugins/ScriptEditor/window.title=Editar script
15691572 plugins/ScriptingEngine.illegalAccessToInternalAPI=Acesso ilegal \u00E0 API (pacote {0}) interna - por favor contacte a equipa do Freeplane se a API de scripts n\u00E3o \u00E9 suficientemente poderosa.
1570 plugins/TimeList.xml_Created=Criado
1571 plugins/TimeList.xml_Date=Data
1572 plugins/TimeList.xml_Details=Detalhes
1573 plugins/TimeList.xml_Icons=\u00CDcones
1574 plugins/TimeList.xml_Modified=Modificado
1575 plugins/TimeList.xml_Notes=Notas
1576 plugins/TimeList.xml_Text=Texto
1577 plugins/TimeManagement.xml_appendButton=Inserir data na selec\u00E7\u00E3o
1578 plugins/TimeManagement.xml_Cancel=Cancelar
1579 plugins/TimeManagement.xml_cancelButton=Cancelar
1580 plugins/TimeManagement.xml_closeButton=Fechar
1581 plugins/TimeManagement.xml_Export=Exportar n\u00F3s seleccionados
1582 plugins/TimeManagement.xml_Find=Localizar
1583 plugins/TimeManagement.xml_Goto=Ir para
1584 plugins/TimeManagement.xml_hour=Hora:
1585 plugins/TimeManagement.xml_menu_actions=Ac\u00E7\u00F5es
1586 plugins/TimeManagement.xml_minute=Minuto:
1587 plugins/TimeManagement.xml_reminderButton=Relembrar nesta data
1588 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Quando premido \u00E9 agendado um alarme para a data. Depois, os \u00EDcones a piscar chamam-lhe a aten\u00E7\u00E3o.<br> Se fechar o mapa, os alarmes s\u00E3o reactivados da pr\u00F3xima vez que o mapa for aberto.</html>
1589 plugins/TimeManagement.xml_reminderNode.tooltip=Lembrete agendado a {0,date} {0,time}.
1590 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Actualmente, s\u00F3 pode haver um lembrete por n\u00F3. <br>O lembrete actual est\u00E1 definido para {0,date} {0,time}, a sua op\u00E7\u00E3o \u00E9 {1,date} {1,time}. <br><br>Quer alterar a hora do lembrete (SIM) <br>ou quer manter o anterior (N\u00C3O)?</html>
1591 plugins/TimeManagement.xml_remindLaterButton=Lembrar mais tarde
1592 plugins/TimeManagement.xml_remindLaterButton.tooltip=Lembrar mais tarde
1593 plugins/TimeManagement.xml_removeReminderButton=Remover lembrete
1594 plugins/TimeManagement.xml_removeReminderButton.tooltip=Remover todos os lembretes associados aos n\u00F3s seleccionados.
1595 plugins/TimeManagement.xml_Replace=Substituir
1596 plugins/TimeManagement.xml_Replace_All=Substituir tudo
1597 plugins/TimeManagement.xml_Replace_Selected=Substituir seleccionados
1598 plugins/TimeManagement.xml_Select=Seleccionar
1599 plugins/TimeManagement.xml_todayButton=Repor calend\u00E1rio
1600 plugins/TimeManagement.xml_WindowTitle=Gerir tempo
1601 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Procurar & Substituir
16021573 preferences=Prefer\u00EAncias
16031574 presentation=Apresenta\u00E7\u00E3o
16041575 presentation.combineAll=Combinar todas as apresenta\u00E7\u00F5es
16281599 RedoAction.text=Refazer
16291600 RedoFilterAction.text=Refazer ac\u00E7\u00E3o de filtragem
16301601 regular_expressions=Express\u00F5es regulares
1602 reminder.appendButton=Inserir data na selec\u00E7\u00E3o
1603 reminder.Cancel=Cancelar
1604 reminder.cancelButton=Cancelar
1605 reminder.closeButton=Fechar
1606 reminder.Created=Criado
1607 reminder.Details=Detalhes
1608 reminder.Export=Exportar n\u00F3s seleccionados
1609 reminder.Find=Localizar
1610 reminder.Goto=Ir para
1611 reminder.hour=Hora:
1612 reminder.Icons=\u00CDcones
1613 reminder.Map=Mapa
1614 reminder.menu_actions=Ac\u00E7\u00F5es
1615 reminder.minute=Minuto:
1616 reminder.Modified=Modificado
1617 reminder.Notes=Notas
1618 reminder.Reminder=Lembrete
1619 reminder.reminderButton=Relembrar nesta data
1620 reminder.reminderButton.tooltip=<html>Quando premido \u00E9 agendado um alarme para a data. Depois, os \u00EDcones a piscar chamam-lhe a aten\u00E7\u00E3o.<br> Se fechar o mapa, os alarmes s\u00E3o reactivados da pr\u00F3xima vez que o mapa for aberto.</html>
1621 reminder.reminderNode.tooltip=Lembrete agendado a {0,date} {0,time}.
1622 reminder.reminderNode_onlyOneDate=<html>Actualmente, s\u00F3 pode haver um lembrete por n\u00F3. <br>O lembrete actual est\u00E1 definido para {0,date} {0,time}, a sua op\u00E7\u00E3o \u00E9 {1,date} {1,time}. <br><br>Quer alterar a hora do lembrete (SIM) <br>ou quer manter o anterior (N\u00C3O)?</html>
1623 reminder.remindLaterButton=Lembrar mais tarde
1624 reminder.remindLaterButton.tooltip=Lembrar mais tarde
1625 reminder.Remove_All=Remover todos os lembretes
1626 reminder.Remove_Selected=Remover lembretes seleccionados
1627 reminder.removeReminderButton=Remover lembrete
1628 reminder.removeReminderButton.tooltip=Remover todos os lembretes associados aos n\u00F3s seleccionados.
1629 reminder.Replace=Substituir
1630 reminder.Replace_All=Substituir tudo
1631 reminder.Replace_Selected=Substituir seleccionados
1632 reminder.Run_All=Executar todos os scripts
1633 reminder.Run_Selected=Executar scripts seleccionados
1634 reminder.Select=Seleccionar
1635 reminder.Text=Texto
1636 reminder.todayButton=Repor calend\u00E1rio
1637 reminder.WindowTitle=Gerir lembretes
1638 reminder.WindowTitle_All_Nodes=Procurar & Substituir
1639 reminder.WindowTitle_pastReminders=Lembretes passados
1640 reminder_script_error=Erro {0} no script de lembrete {1}, n\u00F3 {2}
16311641 ReminderHookAction.text=Remover lembrete
16321642 ReminderHookAction.tooltip=Remove o lembrete de um n\u00F3.
1643 ReminderListAction.text=Gerir tarefas...
1644 ReminderListAction.tooltip=Mostra todos os agendamentos e os n\u00F3s correspondentes.
16331645 reminderNotification=Notifica\u00E7\u00E3o do lembrete
16341646 remove_file_from_list_on_error=O ficheiro {0} n\u00E3o foi aberto. Quer remov\u00EA-lo da lista de ficheiros recentes?
16351647 remove_shortcut_question=Substituir atalho?
17131725 SetLinkAnchorAction.tooltip_anchored=<html>Definir o n\u00F3 seleccionado como \u00E2ncora para cria\u00E7\u00E3o<br/>futura de liga\u00E7\u00F5es locais ou globais. \u00C2ncora actual:<br>{0}
17141726 SetLinkByFileChooserAction.text=Adicionar hiperliga\u00E7\u00E3o (escolha)...
17151727 SetLinkByTextFieldAction.text=Adicionar/Modificar hiperliga\u00E7\u00E3o (tipo)...
1728 SetNodeAliasAction.text=Definir ali\u00E1s para o n\u00F3
17161729 SetNodeLink.text=Definir liga\u00E7\u00E3o do n\u00F3...
17171730 SetNoteWindowPosition.bottom.text=Abaixo
17181731 SetNoteWindowPosition.left.text=Esquerda
20182031 TextAlignAction.RIGHT.text=Texto alinhado \u00E0 direita
20192032 textalignment=Alinhamento de texto
20202033 TextChangeHotKeyAction.text=Definir atalho de altera\u00E7\u00E3o de texto
2021 TimeListAction.text=Gerir tarefas...
2022 TimeListAction.tooltip=Mostra todos os agendamentos e os n\u00F3s correspondentes.
20232034 TimeManagementAction.text=Gerir tempo...
20242035 TimeManagementAction.tooltip=<html>Mostra o m\u00F3dulo Calend\u00E1rio de Kai Toedter.</html>
20252036 TimePeriodUnits.days=dias
229229 ColorProperty.ResetColor=\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0446\u0432\u0435\u0442
230230 combined=\u041A\u043E\u043C\u0431\u0438\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439
231231 condition=\u0423\u0441\u043B\u043E\u0432\u0438\u0435
232 ConfigureNodeReferenceAction.text=\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A\u0443 \u0443\u0437\u043B\u0430
233232 confirmation=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435
234233 connector=\u0421\u043E\u0435\u0434\u0438\u043D\u0438\u0442\u0435\u043B\u044C
235234 connector_arrows=\u0421\u0442\u0440\u0435\u043B\u043A\u0438 \u0441\u043E\u0435\u0434\u0438\u043D\u0438\u0442\u0435\u043B\u044F
246245 CopyIDAction.text=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C I&D \u0443\u0437\u043B\u0430
247246 CopyMapStylesAction.text=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0438\u043B\u044C \u043A\u0430\u0440\u0442\u044B \u0438\u0437...
248247 CopyNodeURIAction.text=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C URI \u0443\u0437\u043B\u0430
249 copyright=2000-2018 \\u00A9 \u041F\u0440\u0430\u0432\u0430 \u043F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u0430\u0442 \u043A\u043E\u043C\u0430\u043D\u0434\u0435 Freeplane team \u0438 \u0434\u0440\u0443\u0433\u0438\u043C \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0430\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430
248 copyright=2000-2019 \\u00A9 \u041F\u0440\u0430\u0432\u0430 \u043F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u0430\u0442 \u043A\u043E\u043C\u0430\u043D\u0434\u0435 Freeplane team \u0438 \u0434\u0440\u0443\u0433\u0438\u043C \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0430\u043C \u043F\u0440\u043E\u0435\u043A\u0442\u0430
250249 CopySingleAction.text=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u044D\u0442\u043E\u0442 \u0443\u0437\u0435\u043B
251250 CopySingleAction.tooltip=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0443\u0437\u0435\u043B
252251 CopyStyleExtensionsAction.text=\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0438\u0437 \u0441\u0442\u0438\u043B\u044F
517516 formats_not_loaded=\u0424\u043E\u0440\u043C\u0430\u0442\u044B \u043D\u0435 \u043C\u043E\u0433\u0443\u0442 \u0431\u044B\u0442\u044C \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u044B, \u0444\u0430\u0439\u043B \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435\u043D
518517 formula.ClearDependenciesAction.text=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438
519518 formula.error.attributeValueIsNull=\u041F\u043E\u0441\u043B\u0435 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 "{0}" - \u043D\u0443\u043B\u0435\u0432\u043E\u0435.
520 formula.error.circularReference=\u0426\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0432 \u0443\u0437\u043B\u0435 "{0}" \u0441\u0441\u044B\u043B\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0441\u0430\u043C\u0443 \u0441\u0435\u0431\u044F.
519 formula.error.circularReference=\u0426\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0432 \u0443\u0437\u043B\u0435 {0} ''{1}'' \u0441\u0441\u044B\u043B\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0441\u0430\u043C\u0443 \u0441\u0435\u0431\u044F.
521520 formula.EvaluateAllAction.text=\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0432\u0441\u0451
522521 formula.EvaluateAllAction.tooltip=\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0432\u0441\u0435 \u0444\u043E\u0440\u043C\u0443\u043B\u044B \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u043A\u0430\u0440\u0442\u044B \u043F\u0430\u043C\u044F\u0442\u0438
523522 formula.menuname=\u0424\u043E\u0440\u043C\u0443\u043B\u044B
965964 NotificationOptions.SELECT_NODE=\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044E
966965 ok=&\u041E\u041A
967966 OKAction.text=&\u041E\u041A
967 OldReminderListAction.text=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0448\u043B\u044B\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F...
968 OldReminderListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u0448\u043B\u044B\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F \u0438 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0443\u0437\u043B\u044B \u0432\u0441\u0435\u0445 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u043A\u0430\u0440\u0442 \u043F\u0430\u043C\u044F\u0442\u0438.
968969 OnlineReference.text=\u041E\u043D\u043B\u0430\u0439\u043D \u043A\u0430\u0440\u0442\u044B \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0438
969970 open_asMindMap=\u041A\u0430\u0440\u0442\u0430 \u043F\u0430\u043C\u044F\u0442\u0438
970971 OpenAction.text=&\u041E\u0442\u043A\u0440\u044B\u0442\u044C...
972 OpenApiDocumentationAction.text=Freeplane API...
971973 OpenFreeplaneSiteAction.text=\u0414\u043E\u043C\u0430\u0448\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430 Freeplane
972974 OpenMapsAddLocation.text=\u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 OpenMaps...
973975 OpenMapsRemoveLocation.text=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 OpenMaps
10151017 OptionPanel.backup_file_number=\u0427\u0438\u0441\u043B\u043E \u0445\u0440\u0430\u043D\u0438\u043C\u044B\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0445 \u043A\u043E\u043F\u0438\u0439 \u0444\u0430\u0439\u043B\u043E\u0432
10161018 OptionPanel.Behaviour=\u041F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435
10171019 OptionPanel.bezier=\u041A\u0440\u0438\u0432\u0430\u044F
1018 OptionPanel.bg=Bulgarian / \u0431\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438
1020 OptionPanel.bg=Bulgarian / \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438
10191021 OptionPanel.border_color=\u0426\u0432\u0435\u0442
10201022 OptionPanel.border_color_matches_edge_color=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0446\u0432\u0435\u0442 \u0440\u0435\u0431\u0440\u0430
10211023 OptionPanel.border_dash=\u0422\u0438\u043F \u0433\u0440\u0430\u043D\u0438\u0447\u043D\u043E\u0439 \u043B\u0438\u043D\u0438\u0438
12921294 OptionPanel.relative=\u041E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E
12931295 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"\u0421\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044C" \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u0442\u043E\u044F\u043D\u043D\u043E (\u043D\u0435 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442).<br>"\u0414\u0430" \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435.<br>"\u041D\u0435\u0442" \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043F\u0440\u043E\u0441\u0442\u043E\u0439 (\u043D\u0435\u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439) \u0442\u0435\u043A\u0441\u0442.</html>
12941296 OptionPanel.remind_use_rich_text_in_new_nodes=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0442\u0435\u043A\u0441\u0442\u0430 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0445 \u0443\u0437\u043B\u043E\u0432
1297 OptionPanel.reminder.showPastRemindersOnStart=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0448\u043B\u044B\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F
12951298 OptionPanel.remindersBlink=\u041C\u0438\u0433\u0430\u043D\u0438\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0439
12961299 OptionPanel.remindersShowNotifications=\u041D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u0432\u0441\u043F\u043B\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u043E\u043A\u043D\u043E \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0439
12971300 OptionPanel.remindersStandardDelay=\u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F
15691572 plugins/ScriptEditor/window.Result=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442:
15701573 plugins/ScriptEditor/window.title=\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432
15711574 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u041D\u0435\u043F\u0440\u0430\u0432\u043E\u043C\u0435\u0440\u043D\u044B\u0439 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u043C API (\u043F\u0430\u043A\u0435\u0442 {0}). - \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043A\u043E\u043C\u0430\u043D\u0434\u043E\u0439 Freeplane \u0435\u0441\u043B\u0438 API \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u043C\u043E\u0449\u043D\u044B\u043C.
1572 plugins/TimeList.xml_Created=\u0421\u043E\u0437\u0434\u0430\u043D
1573 plugins/TimeList.xml_Date=\u0414\u0430\u0442\u0430
1574 plugins/TimeList.xml_Details=\u0414\u0435\u0442\u0430\u043B\u0438
1575 plugins/TimeList.xml_Icons=\u041F\u0438\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B
1576 plugins/TimeList.xml_Modified=\u0418\u0437\u043C\u0435\u043D\u0435\u043D
1577 plugins/TimeList.xml_Notes=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u044F
1578 plugins/TimeList.xml_Text=\u0422\u0435\u043A\u0441\u0442
1579 plugins/TimeManagement.xml_appendButton=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u0430\u0442\u0443 \u043A \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u0443\u0437\u043B\u0430\u043C
1580 plugins/TimeManagement.xml_Cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
1581 plugins/TimeManagement.xml_cancelButton=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
1582 plugins/TimeManagement.xml_closeButton=\u0417\u0430\u043A\u0440\u044B\u0442\u044C
1583 plugins/TimeManagement.xml_Export=\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043D\u044B\u0435 \u0443\u0437\u043B\u044B
1584 plugins/TimeManagement.xml_Find=\u041D\u0430\u0439\u0442\u0438
1585 plugins/TimeManagement.xml_Goto=\u041F\u0435\u0440\u0435\u0439\u0442\u0438
1586 plugins/TimeManagement.xml_hour=\u0427\u0430\u0441:
1587 plugins/TimeManagement.xml_menu_actions=\u041A\u043E\u043C\u0430\u043D\u0434\u044B
1588 plugins/TimeManagement.xml_minute=\u041C\u0438\u043D\u0443\u0442\u0430:
1589 plugins/TimeManagement.xml_reminderButton=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C
1590 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u0412 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043C\u0438\u0433\u0430\u043D\u0438\u0435 \u0438\u043A\u043E\u043D\u043A\u0438 \u043F\u043E\u0441\u043B\u0443\u0436\u0438\u0442 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435\u043C (\u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u044D\u0442\u0430 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430).<br>\u041F\u0440\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u043C \u0441\u0442\u0430\u0440\u0442\u0435 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, \u0442\u0430\u0439\u043C\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0441\u043D\u043E\u0432\u0430.</html>
1591 plugins/TimeManagement.xml_reminderNode.tooltip=\u041D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043E \u043D\u0430 {0,date} \u0432 {0,time}.
1592 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u0432\u044F\u0437\u0430\u0442\u044C \u0441 \u0443\u0437\u043B\u043E\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u043D\u0443 \u0434\u0430\u0442\u0443.<br>\u0423\u0436\u0435 \u0437\u0430\u043F\u043E\u043C\u043D\u0435\u043D\u043E {0,date} {0,time}, \u0412\u044B \u0432\u0432\u043E\u0434\u0438\u0442\u0435 {1,date} {1,time}. <br><br>\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0430\u0442\u0443 (\u0414\u0410), <br>\u0438\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0440\u0435\u0436\u043D\u044E\u044E \u0434\u0430\u0442\u0443 (\u041D\u0415\u0422)?</html>
1593 plugins/TimeManagement.xml_remindLaterButton=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435
1594 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435
1595 plugins/TimeManagement.xml_removeReminderButton=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435
1596 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u041E\u0442\u043C\u0435\u043D\u0430 \u0432\u0441\u0435\u0445 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0443\u0437\u043B\u0430.
1597 plugins/TimeManagement.xml_Replace=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C
1598 plugins/TimeManagement.xml_Replace_All=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435
1599 plugins/TimeManagement.xml_Replace_Selected=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043D\u043E\u0435
1600 plugins/TimeManagement.xml_Select=\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C
1601 plugins/TimeManagement.xml_todayButton=\u0421\u0435\u0433\u043E\u0434\u043D\u044F
1602 plugins/TimeManagement.xml_WindowTitle=\u0412\u0440\u0435\u043C\u044F
1603 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u041F\u043E\u0438\u0441\u043A \u0438 \u0437\u0430\u043C\u0435\u043D\u0430
16041575 preferences=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
16051576 presentation=\u041F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u044F
16061577 presentation.combineAll=\u0421\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u0438
16301601 RedoAction.text=\u0412\u0435\u0440\u043D\u0443\u0442\u044C
16311602 RedoFilterAction.text=\u0412\u0435\u0440\u043D\u0443\u0442\u044C
16321603 regular_expressions=\u0420\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u044B\u0435 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u044F
1604 reminder.appendButton=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u0430\u0442\u0443 \u043A \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C \u0443\u0437\u043B\u0430\u043C
1605 reminder.Cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
1606 reminder.cancelButton=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
1607 reminder.closeButton=\u0417\u0430\u043A\u0440\u044B\u0442\u044C
1608 reminder.Created=\u0421\u043E\u0437\u0434\u0430\u043D
1609 reminder.Details=\u0414\u0435\u0442\u0430\u043B\u0438
1610 reminder.Export=\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043D\u044B\u0435 \u0443\u0437\u043B\u044B
1611 reminder.Find=\u041D\u0430\u0439\u0442\u0438
1612 reminder.Goto=\u041F\u0435\u0440\u0435\u0439\u0442\u0438
1613 reminder.hour=\u0427\u0430\u0441:
1614 reminder.Icons=\u041F\u0438\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B
1615 reminder.Map=\u0410\u0441\u0441\u043E\u0446\u0438\u0430\u0442\u0438\u0432\u043D\u0430\u044F \u043A\u0430\u0440\u0442\u0430
1616 reminder.menu_actions=\u041A\u043E\u043C\u0430\u043D\u0434\u044B
1617 reminder.minute=\u041C\u0438\u043D\u0443\u0442\u0430:
1618 reminder.Modified=\u0418\u0437\u043C\u0435\u043D\u0435\u043D
1619 reminder.Notes=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u044F
1620 reminder.Reminder=\u041D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435
1621 reminder.reminderButton=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C
1622 reminder.reminderButton.tooltip=<html>\u0412 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043C\u0438\u0433\u0430\u043D\u0438\u0435 \u0438\u043A\u043E\u043D\u043A\u0438 \u043F\u043E\u0441\u043B\u0443\u0436\u0438\u0442 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435\u043C (\u0442\u043E\u043B\u044C\u043A\u043E \u0435\u0441\u043B\u0438 \u044D\u0442\u0430 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430).<br>\u041F\u0440\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u043C \u0441\u0442\u0430\u0440\u0442\u0435 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, \u0442\u0430\u0439\u043C\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0441\u043D\u043E\u0432\u0430.</html>
1623 reminder.reminderNode.tooltip=\u041D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043E \u043D\u0430 {0,date} \u0432 {0,time}.
1624 reminder.reminderNode_onlyOneDate=<html>\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u0432\u044F\u0437\u0430\u0442\u044C \u0441 \u0443\u0437\u043B\u043E\u043C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u043D\u0443 \u0434\u0430\u0442\u0443.<br>\u0423\u0436\u0435 \u0437\u0430\u043F\u043E\u043C\u043D\u0435\u043D\u043E {0,date} {0,time}, \u0412\u044B \u0432\u0432\u043E\u0434\u0438\u0442\u0435 {1,date} {1,time}. <br><br>\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0430\u0442\u0443 (\u0414\u0410), <br>\u0438\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0440\u0435\u0436\u043D\u044E\u044E \u0434\u0430\u0442\u0443 (\u041D\u0415\u0422)?</html>
1625 reminder.remindLaterButton=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435
1626 reminder.remindLaterButton.tooltip=\u041D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435
1627 reminder.Remove_All=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0441\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F
1628 reminder.Remove_Selected=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F
1629 reminder.removeReminderButton=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435
1630 reminder.removeReminderButton.tooltip=\u041E\u0442\u043C\u0435\u043D\u0430 \u0432\u0441\u0435\u0445 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0439 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0433\u043E \u0443\u0437\u043B\u0430.
1631 reminder.Replace=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C
1632 reminder.Replace_All=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435
1633 reminder.Replace_Selected=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043D\u043E\u0435
1634 reminder.Run_All=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u044B
1635 reminder.Run_Selected=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u043A\u0440\u0438\u043F\u0442\u044B
1636 reminder.Select=\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C
1637 reminder.Text=\u0422\u0435\u043A\u0441\u0442
1638 reminder.todayButton=\u0421\u0435\u0433\u043E\u0434\u043D\u044F
1639 reminder.WindowTitle=\u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F\u043C\u0438
1640 reminder.WindowTitle_All_Nodes=\u041F\u043E\u0438\u0441\u043A \u0438 \u0437\u0430\u043C\u0435\u043D\u0430
1641 reminder.WindowTitle_pastReminders=\u041F\u0440\u043E\u0448\u043B\u044B\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F
1642 reminder_script_error=\u041E\u0448\u0438\u0431\u043A\u0430 {0} \u0432 \u0441\u043A\u0440\u0438\u043F\u0442\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F \u0432 \u043A\u0430\u0440\u0442\u0435 \u043F\u0430\u043C\u044F\u0442\u044C {1} \u0443\u0437\u043B\u0435 {2}
16331643 ReminderHookAction.text=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435
16341644 ReminderHookAction.tooltip=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435.
1645 ReminderListAction.text=&\u0420\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435...
1646 ReminderListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F \u0438 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441 \u043D\u0438\u043C\u0438 \u0443\u0437\u043B\u044B.
16351647 reminderNotification=\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0435 \u043E \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0438
16361648 remove_file_from_list_on_error=\u0424\u0430\u0439\u043B {0} \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0435\u0433\u043E \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0445 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432?
16371649 remove_shortcut_question=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u0436\u0430\u0442\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438?
17151727 SetLinkAnchorAction.tooltip_anchored=<html>\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0443\u0437\u0435\u043B \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044F\u043A\u043E\u0440\u044F \u0434\u043B\u044F \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043E<br/>\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0445 \u0438\u043B\u0438 \u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0441\u044B\u043B\u043E\u043A. \u0421\u0435\u0439\u0447\u0430\u0441 \u044F\u043A\u043E\u0440\u0435\u043C \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F:<br/>{0}
17161728 SetLinkByFileChooserAction.text=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 (\u0432\u044B\u0431\u043E\u0440)...
17171729 SetLinkByTextFieldAction.text=\u0421\u0441\u044B\u043B\u043A\u0430 (\u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0435 \u043F\u043E\u043B\u0435)...
1730 SetNodeAliasAction.text=\u041D\u0430\u0437\u043D\u0430\u0447\u0438\u0442\u044C \u0443\u0437\u043B\u0443 \u043F\u0441\u0435\u0432\u0434\u043E\u043D\u0438\u043C
17181731 SetNodeLink.text=\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0443\u0437\u043B\u0430...
17191732 SetNoteWindowPosition.bottom.text=\u0432\u043D\u0438\u0437\u0443
17201733 SetNoteWindowPosition.left.text=\u0441\u043B\u0435\u0432\u0430
19691982 split=&\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u044C
19701983 SplitConditionAction.text=\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u044C
19711984 SplitNode.text=&\u0420\u0430\u0437\u0431\u0438\u0442\u044C \u0443\u0437\u0435\u043B
1972 SplitNode.tooltip=<html>\u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0438\u0437 \u043A\u0430\u0436\u0434\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0443\u0437\u043B\u0430 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u0443\u0437\u0435\u043B</html>
1985 SplitNode.tooltip=<html>\u0423\u0437\u0435\u043B \u0440\u0430\u0437\u0434\u0435\u043B\u0451\u043D</html>
19731986 SplitToWordsAction.text=\u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u044C \u043F\u043E {0} \u0441\u043B\u043E\u0432\u0430\u043C \u0432 \u0441\u0442\u0440\u043E\u043A\u0435
19741987 STANDARD_FORMAT=\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439
19751988 StartPresentationAction.text=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u044E
20202033 TextAlignAction.RIGHT.text=\u0422\u0435\u043A\u0441\u0442 \u0432\u044B\u0440\u043E\u0432\u043D\u0435\u043D\u043D\u044B\u0439 \u0441\u043F\u0440\u0430\u0432\u0430
20212034 textalignment=\u0412\u044B\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u043D\u0438\u0435 \u0442\u0435\u043A\u0441\u0442\u0430
20222035 TextChangeHotKeyAction.text=Set text change hot key[translate me]
2023 TimeListAction.text=&\u0420\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435...
2024 TimeListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u043D\u0430\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u044F \u0438 \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0441 \u043D\u0438\u043C\u0438 \u0443\u0437\u043B\u044B.
20252036 TimeManagementAction.text=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C...
20262037 TimeManagementAction.tooltip=<html>\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C \u043E\u0442 \u041A\u0430\u044F \u0422\u043E\u0434\u0442\u0435\u0440\u0430.</html>
20272038 TimePeriodUnits.days=\u0434\u043D\u0435\u0439
243243 CopyIDAction.text=Kop\u00EDrova\u0165 ID uzla
244244 CopyMapStylesAction.text=Kop\u00EDrova\u0165 \u0161t\u00FDl mapy z...
245245 CopyNodeURIAction.text=Kop\u00EDrova\u0165 URI uzla
246 copyright=Copyright \u00A9 2000-2018 Freeplane t\u00EDm a \u010Fal\u0161\u00ED
246 copyright=Copyright \u00A9 2000-2019 Freeplane t\u00EDm a \u010Fal\u0161\u00ED
247247 CopySingleAction.text=Kop\u00EDrova\u0165 uzol (jednotliv\u00FD)
248248 CopySingleAction.tooltip=Kop\u00EDrova\u0165 len vybran\u00FD uzol
249249 CopyStyleExtensionsAction.text=Kop\u00EDrova\u0165 roz\u0161\u00EDrenia zo \u0161t\u00FDlov\u00E9ho uzlu
505505 FormatPaste.tooltip=<html>Vlo\u017E\u00ED form\u00E1tovanie uzla.</html>
506506 formats_not_loaded=Form\u00E1ty sa nedaj\u00FA na\u010D\u00EDta\u0165, s\u00FAbor je po\u0161koden\u00FD
507507 formula.error.attributeValueIsNull=Hodnota atrib\u00FAtu "{0}" je po vyhodnoten\u00ED null.
508 formula.error.circularReference=Cyklick\u00FD odkaz: Vzorec v uzle "{0}" odkazuje s\u00E1m na seba.
508 formula.error.circularReference=Cyklick\u00FD odkaz: Vzorec v uzle {0} ''{1}'' odkazuje s\u00E1m na seba.
509509 formula.EvaluateAllAction.text=Vyhodnoti\u0165 v\u0161etko
510510 formula.EvaluateAllAction.tooltip=Vyhodnoti\u0165 v\u0161etky vzorce v aktu\u00E1lnej mape
511511 formula.menuname=Vzorce
15281528 plugins/ScriptEditor/window.Result=V\u00FDsledok:
15291529 plugins/ScriptEditor/window.title=Script Editor[translate me]
15301530 plugins/ScriptingEngine.illegalAccessToInternalAPI=Neopr\u00E1vnen\u00FD pr\u00EDstup k vn\u00FAtorn\u00E9mu API (package {0}). - Kontaktujte pros\u00EDm t\u00EDm Freeplane ak sa v\u00E1m zd\u00E1 skriptovacie rozhranie nedostato\u010Dn\u00E9.
1531 plugins/TimeList.xml_Created=Vytvoren\u00E9
1532 plugins/TimeList.xml_Date=D\u00E1tum
1533 plugins/TimeList.xml_Details=Podrobnosti
1534 plugins/TimeList.xml_Icons=Ikony
1535 plugins/TimeList.xml_Modified=Zmenen\u00E9
1536 plugins/TimeList.xml_Notes=Pozn\u00E1mky
1537 plugins/TimeList.xml_Text=Text
1538 plugins/TimeManagement.xml_appendButton=Vlo\u017Ei\u0165 d\u00E1tum do v\u00FDberu
1539 plugins/TimeManagement.xml_Cancel=Zru\u0161i\u0165
1540 plugins/TimeManagement.xml_cancelButton=Zru\u0161i\u0165
1541 plugins/TimeManagement.xml_closeButton=Zavrie\u0165
1542 plugins/TimeManagement.xml_Export=Exportova\u0165 vybran\u00E9 uzly
1543 plugins/TimeManagement.xml_Find=N\u00E1js\u0165
1544 plugins/TimeManagement.xml_Goto=Prejs\u0165 na
1545 plugins/TimeManagement.xml_hour=Hodina:
1546 plugins/TimeManagement.xml_menu_actions=Akcie
1547 plugins/TimeManagement.xml_minute=Min\u00FAta:
1548 plugins/TimeManagement.xml_reminderButton=Pripomen\u00FA\u0165 mi v tento d\u00E1tum
1549 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Po stla\u010Den\u00ED sa napl\u00E1nuje \u010Dasova\u010D na dan\u00FD d\u00E1tum. Potom v\u00E1s upozorn\u00ED blikaj\u00FAca ikona.<br> Ak zavriete mapu, \u010Dasova\u010De sa znovu aktivuj\u00FA po jej op\u00E4tovnom otvoren\u00ED.</html>
1550 plugins/TimeManagement.xml_reminderNode.tooltip=Napl\u00E1novan\u00E1 pripomienka na {0,date} {0,time}.
1551 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>V s\u00FA\u010Dasnosti m\u00F4\u017Ee by\u0165 len jedno pripomenutie na jeden uzol. <br>Aktu\u00E1lne pripomenutie je napl\u00E1novan\u00E9 na {0,date} {0,time}, va\u0161a vo\u013Eba je {1,date} {1,time}. <br><br>Chcete pre tento uzol zmeni\u0165 \u010Das pripomenutia (\u00C1NO), <br>alebo chcete zachova\u0165 p\u00F4vodn\u00FD (NIE)?</html>
1552 plugins/TimeManagement.xml_remindLaterButton=Pripomen\u00FA\u0165 nesk\u00F4r
1553 plugins/TimeManagement.xml_remindLaterButton.tooltip=Pripomen\u00FA\u0165 nesk\u00F4r
1554 plugins/TimeManagement.xml_removeReminderButton=Odstr\u00E1\u0148 pripomienku
1555 plugins/TimeManagement.xml_removeReminderButton.tooltip=Odstr\u00E1\u0148 v\u0161etky pripomienky spojen\u00E9 s ozna\u010Den\u00FDmi uzlami.
1556 plugins/TimeManagement.xml_Replace=Nahradi\u0165
1557 plugins/TimeManagement.xml_Replace_All=Nahradi\u0165 v\u0161etko
1558 plugins/TimeManagement.xml_Replace_Selected=Nahradi\u0165 vybran\u00E9
1559 plugins/TimeManagement.xml_Select=Vyber
1560 plugins/TimeManagement.xml_todayButton=Dnes
1561 plugins/TimeManagement.xml_WindowTitle=Spravova\u0165 \u010Das
1562 plugins/TimeManagement.xml_WindowTitle_All_Nodes=N\u00E1js\u0165 a nahradi\u0165
15631531 preferences=Nastavenia
15641532 presentation=Prezent\u00E1cia
15651533 presentation.combineAll=Skombinova\u0165 v\u0161etky prezent\u00E1cie
15891557 RedoAction.text=Znova
15901558 RedoFilterAction.text=Znova filtrovanie
15911559 regular_expressions=Regul\u00E1rne v\u00FDrazy
1560 reminder.appendButton=Vlo\u017Ei\u0165 d\u00E1tum do v\u00FDberu
1561 reminder.Cancel=Zru\u0161i\u0165
1562 reminder.cancelButton=Zru\u0161i\u0165
1563 reminder.closeButton=Zavrie\u0165
1564 reminder.Created=Vytvoren\u00E9
1565 reminder.Details=Podrobnosti
1566 reminder.Export=Exportova\u0165 vybran\u00E9 uzly
1567 reminder.Find=N\u00E1js\u0165
1568 reminder.Goto=Prejs\u0165 na
1569 reminder.hour=Hodina:
1570 reminder.Icons=Ikony
1571 reminder.Map=Mapa
1572 reminder.menu_actions=Akcie
1573 reminder.minute=Min\u00FAta:
1574 reminder.Modified=Zmenen\u00E9
1575 reminder.Notes=Pozn\u00E1mky
1576 reminder.Reminder=Pripomienka
1577 reminder.reminderButton=Pripomen\u00FA\u0165 mi v tento d\u00E1tum
1578 reminder.reminderButton.tooltip=<html>Po stla\u010Den\u00ED sa napl\u00E1nuje \u010Dasova\u010D na dan\u00FD d\u00E1tum. Potom v\u00E1s upozorn\u00ED blikaj\u00FAca ikona.<br> Ak zavriete mapu, \u010Dasova\u010De sa znovu aktivuj\u00FA po jej op\u00E4tovnom otvoren\u00ED.</html>
1579 reminder.reminderNode.tooltip=Napl\u00E1novan\u00E1 pripomienka na {0,date} {0,time}.
1580 reminder.reminderNode_onlyOneDate=<html>V s\u00FA\u010Dasnosti m\u00F4\u017Ee by\u0165 len jedno pripomenutie na jeden uzol. <br>Aktu\u00E1lne pripomenutie je napl\u00E1novan\u00E9 na {0,date} {0,time}, va\u0161a vo\u013Eba je {1,date} {1,time}. <br><br>Chcete pre tento uzol zmeni\u0165 \u010Das pripomenutia (\u00C1NO), <br>alebo chcete zachova\u0165 p\u00F4vodn\u00FD (NIE)?</html>
1581 reminder.remindLaterButton=Pripomen\u00FA\u0165 nesk\u00F4r
1582 reminder.remindLaterButton.tooltip=Pripomen\u00FA\u0165 nesk\u00F4r
1583 reminder.removeReminderButton=Odstr\u00E1\u0148 pripomienku
1584 reminder.removeReminderButton.tooltip=Odstr\u00E1\u0148 v\u0161etky pripomienky spojen\u00E9 s ozna\u010Den\u00FDmi uzlami.
1585 reminder.Replace=Nahradi\u0165
1586 reminder.Replace_All=Nahradi\u0165 v\u0161etko
1587 reminder.Replace_Selected=Nahradi\u0165 vybran\u00E9
1588 reminder.Select=Vyber
1589 reminder.Text=Text
1590 reminder.todayButton=Dnes
1591 reminder.WindowTitle=Spravova\u0165 \u010Das
1592 reminder.WindowTitle_All_Nodes=N\u00E1js\u0165 a nahradi\u0165
15921593 ReminderHookAction.text=Odstr\u00E1ni\u0165 pripomienku
15931594 ReminderHookAction.tooltip=Odstr\u00E1ni pripomienku z uzla.
1595 ReminderListAction.text=Spravova\u0165 \u00FAlohy...
1596 ReminderListAction.tooltip=Zobraz\u00ED v\u0161etky napl\u00E1novan\u00E9 \u010Dasy a zodpovedaj\u00FAce uzly.
15941597 reminderNotification=Upozornenie pripomienky
15951598 remove_file_from_list_on_error=S\u00FAbor {0} sa nepodarilo otvori\u0165. Odstr\u00E1ni\u0165 ho zo zoznamu naposledy otvoren\u00FDch s\u00FAborov?
15961599 remove_shortcut_question=Nahradi\u0165 kl\u00E1vesov\u00FA skratku?
19791982 TextAlignAction.RIGHT.text=Text zarovnan\u00FD napravo
19801983 textalignment=Zarovnanie textu
19811984 TextChangeHotKeyAction.text=Nastavi\u0165 kl\u00E1vesov\u00FA skratku pre zmenu textu
1982 TimeListAction.text=Spravova\u0165 \u00FAlohy...
1983 TimeListAction.tooltip=Zobraz\u00ED v\u0161etky napl\u00E1novan\u00E9 \u010Dasy a zodpovedaj\u00FAce uzly.
19841985 TimeManagementAction.text=Spravova\u0165 \u010Das...
19851986 TimeManagementAction.tooltip=<html>Zobraz\u00ED modul kalend\u00E1ra od Kai Toedter.</html>
19861987 TimePeriodUnits.days=dn\u00ED
227227 ColorProperty.ResetColor=Ponastavi barvo
228228 combined=Zdru\u017Eeno
229229 condition=Stanje
230 ConfigureNodeReferenceAction.text=Konfiguriraj referenco vozli\u0161\u010Da
231230 confirmation=Potrditev
232231 connector=Spojka
233232 connector_arrows=Konektor pu\u0161\u010Dic
244243 CopyIDAction.text=Kopiraj ID vozli\u0161\u010Da
245244 CopyMapStylesAction.text=Kopiraj stil miselnega vzorca od ...
246245 CopyNodeURIAction.text=Kopiraj URL vozli\u0161\u010Da
247 copyright=Copyright \u00A9 2000-2018 Freeplane ekipa in drugi
246 copyright=Copyright \u00A9 2000-2019 Freeplane ekipa in drugi
248247 CopySingleAction.text=Kopiraj vozli\u0161\u010De (enojno)
249248 CopySingleAction.tooltip=Kopiraj samo izbrano vozli\u0161\u010De
250249 CopyStyleExtensionsAction.text=Kopiraj raz\u0161iritve iz vozli\u0161\u010Da sloga
514513 FormatPaste.tooltip=<html>Prilepi obliko vozli\u0161\u010Da.</html>
515514 formats_not_loaded=Formati ne morejo biti nalo\u017Eeni, ker je datoteka pokvarjena
516515 formula.error.attributeValueIsNull=Vrednost atributa ''{0}'' je po vrednotenju ni\u010D.
517 formula.error.circularReference=Kro\u017Ena referenca: formula v vozli\u0161\u010Du ''{0}'' se sklicuje.
516 formula.error.circularReference=Kro\u017Ena referenca: formula v vozli\u0161\u010Du {0} ''{1}'' se sklicuje.
518517 formula.EvaluateAllAction.text=Oceni vse
519518 formula.EvaluateAllAction.tooltip=Oceni vse formule na trenutnem miselnem vzorcu
520519 formula.menuname=Formule
15551554 plugins/ScriptEditor/window.Result=Rezultat:
15561555 plugins/ScriptEditor/window.title=Urejevalnik skriptov
15571556 plugins/ScriptingEngine.illegalAccessToInternalAPI=Nezakonit dostop do notranjega API-ja (paket {0}). - Obrnite se na ekipo Freeplane, \u010De skriptni API ni dovolj zmogljiv.
1558 plugins/TimeList.xml_Created=Ustvarjeno
1559 plugins/TimeList.xml_Date=Datum
1560 plugins/TimeList.xml_Details=Podrobnosti
1561 plugins/TimeList.xml_Icons=Ikone
1562 plugins/TimeList.xml_Modified=Spremenjeno
1563 plugins/TimeList.xml_Notes=Opombe
1564 plugins/TimeList.xml_Text=Besedilo
1565 plugins/TimeManagement.xml_appendButton=Dodaj datum k izbranim vozli\u0161\u010Dem
1566 plugins/TimeManagement.xml_Cancel=Prekli\u010Di
1567 plugins/TimeManagement.xml_cancelButton=Prekli\u010Di
1568 plugins/TimeManagement.xml_closeButton=Zapri
1569 plugins/TimeManagement.xml_Export=Izvozi izbrana vozli\u0161\u010Da
1570 plugins/TimeManagement.xml_Find=Najdi
1571 plugins/TimeManagement.xml_Goto=Pojdi na
1572 plugins/TimeManagement.xml_hour=Ura:
1573 plugins/TimeManagement.xml_menu_actions=Dejanja
1574 plugins/TimeManagement.xml_minute=Minuta:
1575 plugins/TimeManagement.xml_reminderButton=Spomni me na ta dan
1576 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Ob pritisku se za\u017Eene \u010Dasovno od\u0161tevanje na dani datum. Utripajo\u010De ikone opozarjajo na iztek \u010Dasa.<br>\u010Ce zaprete miselni vzorec, se od\u0161tevanje reaktivira, ko naslednji\u010D odprete miselni vzorec.</html>
1577 plugins/TimeManagement.xml_reminderNode.tooltip=Opomnik na\u010Drtovan za {0,date} {0,time}.
1578 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Trenutno je lahko le en opomnik na vozli\u0161\u010De. <br>Trenutni opomnik je na\u010Drtovan ob {0,date} {0,time}, va\u0161a izbira je bila {1,date} {1,time}. <br><br>\u017Delite spremeniti opomnilni \u010Das vozli\u0161\u010Da (DA) <br>ali \u017Eelite ohraniti starega (NE)?</html>
1579 plugins/TimeManagement.xml_remindLaterButton=Spomni kasneje
1580 plugins/TimeManagement.xml_remindLaterButton.tooltip=Spomni kasneje
1581 plugins/TimeManagement.xml_removeReminderButton=Odstrani opomnik
1582 plugins/TimeManagement.xml_removeReminderButton.tooltip=Ostrani vse opomnike, povezane z izbranimi vozli\u0161\u010Di.
1583 plugins/TimeManagement.xml_Replace=Zamenjaj
1584 plugins/TimeManagement.xml_Replace_All=Zamenjaj vse
1585 plugins/TimeManagement.xml_Replace_Selected=Zamenjaj izbrano
1586 plugins/TimeManagement.xml_Select=Izberi
1587 plugins/TimeManagement.xml_todayButton=Danes
1588 plugins/TimeManagement.xml_WindowTitle=Upravljanje \u010Dasa
1589 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Najdi & zamenjaj
15901557 preferences=Nastavitve
15911558 presentation=Predstavitev
15921559 presentation.combineAll=Zdru\u017Ei vse predstavitve
16161583 RedoAction.text=Ponovi
16171584 RedoFilterAction.text=Ponovi
16181585 regular_expressions=Redni izrazi
1586 reminder.appendButton=Dodaj datum k izbranim vozli\u0161\u010Dem
1587 reminder.Cancel=Prekli\u010Di
1588 reminder.cancelButton=Prekli\u010Di
1589 reminder.closeButton=Zapri
1590 reminder.Created=Ustvarjeno
1591 reminder.Details=Podrobnosti
1592 reminder.Export=Izvozi izbrana vozli\u0161\u010Da
1593 reminder.Find=Najdi
1594 reminder.Goto=Pojdi na
1595 reminder.hour=Ura:
1596 reminder.Icons=Ikone
1597 reminder.Map=Miselni vzorec
1598 reminder.menu_actions=Dejanja
1599 reminder.minute=Minuta:
1600 reminder.Modified=Spremenjeno
1601 reminder.Notes=Opombe
1602 reminder.Reminder=Opomnik
1603 reminder.reminderButton=Spomni me na ta dan
1604 reminder.reminderButton.tooltip=<html>Ob pritisku se za\u017Eene \u010Dasovno od\u0161tevanje na dani datum. Utripajo\u010De ikone opozarjajo na iztek \u010Dasa.<br>\u010Ce zaprete miselni vzorec, se od\u0161tevanje reaktivira, ko naslednji\u010D odprete miselni vzorec.</html>
1605 reminder.reminderNode.tooltip=Opomnik na\u010Drtovan za {0,date} {0,time}.
1606 reminder.reminderNode_onlyOneDate=<html>Trenutno je lahko le en opomnik na vozli\u0161\u010De. <br>Trenutni opomnik je na\u010Drtovan ob {0,date} {0,time}, va\u0161a izbira je bila {1,date} {1,time}. <br><br>\u017Delite spremeniti opomnilni \u010Das vozli\u0161\u010Da (DA) <br>ali \u017Eelite ohraniti starega (NE)?</html>
1607 reminder.remindLaterButton=Spomni kasneje
1608 reminder.remindLaterButton.tooltip=Spomni kasneje
1609 reminder.removeReminderButton=Odstrani opomnik
1610 reminder.removeReminderButton.tooltip=Ostrani vse opomnike, povezane z izbranimi vozli\u0161\u010Di.
1611 reminder.Replace=Zamenjaj
1612 reminder.Replace_All=Zamenjaj vse
1613 reminder.Replace_Selected=Zamenjaj izbrano
1614 reminder.Select=Izberi
1615 reminder.Text=Besedilo
1616 reminder.todayButton=Danes
1617 reminder.WindowTitle=Upravljanje \u010Dasa
1618 reminder.WindowTitle_All_Nodes=Najdi & zamenjaj
16191619 ReminderHookAction.text=Odstrani opomnik
16201620 ReminderHookAction.tooltip=Odstrani opomnik z vozli\u0161\u010Da.
1621 ReminderListAction.text=Prika\u017Ei seznam \u010Dasovnega na\u010Drtovalca ...
1622 ReminderListAction.tooltip=Prika\u017Ee vse na\u010Drtovane \u010Dase in ustrezajo\u010Da vozli\u0161\u010Da.
16211623 reminderNotification=Obvestilo opomnika
16221624 remove_file_from_list_on_error=Datoteka {0} ni odprta. Ali jo \u017Eelite odstraniti iz seznama zadnjih odprtih datotek?
16231625 remove_shortcut_question=Zamenjam bli\u017Enjico?
20062008 TextAlignAction.RIGHT.text=Desno poravnano besedilo
20072009 textalignment=Poravnava besedila
20082010 TextChangeHotKeyAction.text=Nastavi bli\u017Enji\u010Dno tipko za spreminjanje besedila
2009 TimeListAction.text=Prika\u017Ei seznam \u010Dasovnega na\u010Drtovalca ...
2010 TimeListAction.tooltip=Prika\u017Ee vse na\u010Drtovane \u010Dase in ustrezajo\u010Da vozli\u0161\u010Da.
20112011 TimeManagementAction.text=Prika\u017Ei koledar ...
20122012 TimeManagementAction.tooltip=<html>Prika\u017Ee koledarski modul, avtor Kai Toedter.</html>
20132013 TimePeriodUnits.days=dnevi
149149 bitmaps=\u0420\u0430\u0441\u0442\u0435\u0440\u0441\u043A\u0430 \u0441\u043B\u0438\u043A\u0430
150150 black=\u0426\u0440\u043D\u043E
151151 BlinkingNodeHookAction.text=\u0422\u0440\u0435\u043F\u0435\u0440\u0435\u045B\u0438 \u0447\u0432\u043E\u0440
152 BlinkingNodeHookAction.tooltip=<html>\u041E\u0432\u043E \u0447\u0438\u043D\u0438 \u0434\u0430 \u0447\u0432\u043E\u0440 \u0442\u0440\u0435\u043F\u0435\u0440\u0438. \u0411\u0443\u0434\u0438\u0442\u0435 \u043E\u043F\u0440\u0435\u0437\u043D\u0438. \u041D\u0435 \u043F\u043E\u0432\u0435\u0437\u0443\u0458\u0442\u0435 \u0433\u0430 \u0441 \u043F\u0440\u0435\u0432\u0438\u0448\u0435 \u0447\u0432\u043E\u0440\u043E\u0432\u0430 \u0438 <strong> \u043D\u0435 \u0441 \u043E\u0441\u0442\u0430\u043B\u0438\u043C \u0430\u0443\u0442\u043E\u043C\u0430\u0442\u0441\u043A\u0438\u043C \u043E\u0431\u043B\u0438\u0446\u0438\u043C\u0430 \u0443 \u0438\u0441\u0442\u043E\u043C \u0447\u0432\u043E\u0440\u0443.</html>
152 BlinkingNodeHookAction.tooltip=<html>\u041E\u0432\u043E \u0447\u0438\u043D\u0438 \u0434\u0430 \u0447\u0432\u043E\u0440 \u0442\u0440\u0435\u043F\u0435\u0440\u0438. \u0411\u0443\u0434\u0438\u0442\u0435 \u043E\u043F\u0440\u0435\u0437\u043D\u0438. \u041D\u0435 \u043F\u043E\u0432\u0435\u0437\u0443\u0458\u0442\u0435 \u0433\u0430 \u0441 \u043F\u0440\u0435\u0432\u0438\u0448\u0435 \u0447\u0432\u043E\u0440\u043E\u0432\u0430 \u0438 <strong> \u043D\u0435 \u0441 \u043E\u0441\u0442\u0430\u043B\u0438\u043C \u0430\u0443\u0442\u043E\u043C\u0430\u0442\u0441\u043A\u0438\u043C \u043E\u0431\u043B\u0438\u0446\u0438\u043C\u0430 \u0443 \u0438\u0441\u0442\u043E\u043C \u0447\u0432\u043E\u0440\u0443</strong>.</html>
153153 blue=\u041F\u043B\u0430\u0432\u0430
154154 BoldAction.text=\u041F\u043E\u0434\u0435\u0431\u0459\u0430\u043D\u043E
155155 boldify_branch=\u041F\u043E\u0434\u0435\u0431\u0459\u0430\u0458
452452 FormatPaste.tooltip=<html>\u041D\u0430\u043B\u0435\u043F\u0438 \u043E\u0431\u043B\u0438\u043A \u0447\u0432\u043E\u0440\u0430.</html>
453453 formats_not_loaded=\u041E\u0431\u043B\u0438\u0446\u0438 \u043D\u0435 \u043C\u043E\u0433\u0443 \u0431\u0438\u0442\u0438 \u0443\u0447\u0438\u0442\u0430\u043D\u0438, \u0434\u0430\u0442\u043E\u0442\u0435\u043A\u0430 \u0458\u0435 \u043E\u0448\u0442\u0435\u045B\u0435\u043D\u0430
454454 formula.error.attributeValueIsNull=\u0412\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 ''{0}'' \u0458\u0435\u0434\u043D\u0430\u043A\u0430 \u0458\u0435 \u043D\u0443\u043B\u0438 \u043D\u0430\u043A\u043E\u043D \u043F\u0440\u043E\u0446\u0435\u043D\u0435.
455 formula.error.circularReference=\u041A\u0440\u0443\u0436\u043D\u0430 \u0440\u0435\u0444\u0435\u0440\u0435\u043D\u0446\u0430: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0447\u0432\u043E\u0440\u0430 ''{0}'' \u0441\u0430\u0434\u0440\u0436\u0438 \u0441\u0432\u043E\u0458\u0443 \u0432\u043B\u0430\u0441\u0442\u0438\u0442\u0443 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442.
455 formula.error.circularReference=\u041A\u0440\u0443\u0436\u043D\u0430 \u0440\u0435\u0444\u0435\u0440\u0435\u043D\u0446\u0430: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0447\u0432\u043E\u0440\u0430 {0} ''{1}'' \u0441\u0430\u0434\u0440\u0436\u0438 \u0441\u0432\u043E\u0458\u0443 \u0432\u043B\u0430\u0441\u0442\u0438\u0442\u0443 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442.
456456 formula.EvaluateAllAction.text=\u041F\u0440\u043E\u0446\u0435\u043D\u0438 \u0441\u0432\u0435
457457 formula.EvaluateAllAction.tooltip=\u041F\u0440\u043E\u0446\u0435\u043D\u0438 \u0441\u0432\u0435 \u0444\u043E\u0440\u043C\u0443\u043B\u0435 \u0443 \u0442\u0440\u0435\u043D\u0443\u0442\u043D\u043E \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0458 \u043C\u0430\u043F\u0438
458458 formula.menuname=\u0424\u043E\u0440\u043C\u0443\u043B\u0435
814814 NO_FORMAT=\u0422\u0435\u043A\u0441\u0442
815815 no_format_copy_before_format_paste=\u041D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u043B\u0435\u043F\u0438\u0442\u0438 \u043E\u0431\u043B\u0438\u043A \u0430\u043A\u043E \u0433\u0430 \u043F\u0440\u0435\u0442\u0445\u043E\u0434\u043D\u043E \u043D\u0438\u0441\u0442\u0435 \u0443\u043C\u043D\u043E\u0436\u0438\u043B\u0438.
816816 no_found_from=<html>\u041D\u0438\u0458\u0435 <u>{0}</u> \u043F\u0440\u043E\u043D\u0430\u0452\u0435\u043D \u0443 "{1}".</html>
817 no_more_found_from=<html>\u041D\u0435\u043C\u0430 \u0432\u0438\u0448\u0435 <u>{0}</u>\u043F\u0440\u043E\u043D\u0430\u0452\u0435\u043D\u0438\u0445 \u0443 "{1}".</htm>
817 no_more_found_from=<html>\u041D\u0435\u043C\u0430 \u0432\u0438\u0448\u0435 <u>{0}</u>\u043F\u0440\u043E\u043D\u0430\u0452\u0435\u043D\u0438\u0445 \u0443 "{1}".</html>
818818 no_previous_find=\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u043A\u0430 \u0442\u0440\u0430\u0436\u0435\u045A\u0430.
819819 no_styles_found_in_map=\u041D\u0435\u043C\u0430 \u043F\u0440\u043E\u043D\u0430\u0452\u0435\u043D\u0438\u0445 \u0441\u0442\u0438\u043B\u043E\u0432\u0430 \u0443 \u043C\u0430\u043F\u0438
820820 node=\u0427\u0432\u043E\u0440
877877 OptionPanel.antialias_none=\u0411\u0435\u0437 \u0437\u0430\u0433\u043B\u0430\u0452\u0438\u0432\u0430\u045A\u0430
878878 OptionPanel.Appearance=\u0418\u0437\u0433\u043B\u0435\u0434
879879 OptionPanel.approximate_search_threshold=\u041F\u0440\u0430\u0433 \u0437\u0430 \u043F\u0440\u0438\u0431\u043B\u0438\u0436\u043D\u043E \u043F\u043E\u0434\u0443\u0434\u0430\u0440\u0430\u045A\u0435
880 OptionPanel.approximate_search_threshold.tooltip=<html>\u041F\u0440\u0430\u0433 \u0437\u0430 \u043F\u0440\u0438\u0431\u043B\u0438\u0436\u043D\u043E \u043F\u043E\u0434\u0443\u0434\u0430\u0440\u0430\u045A\u0435<br/><\u0432\u0435\u043B\u0438\u0447\u0438\u043D\u0435 \u0441\u043B\u043E\u0432\u0430="2">\u043F\u043E\u0433\u043B\u0435\u0434\u0430\u0458 http://freeplane.sf.net/wiki/index.php/Approximate_search</font><br/>(\u0432\u0435\u045B\u0430 - \u043C\u0430\u045A\u0430 \u043A\u043E\u043B\u0435\u0431\u0430\u045A\u0430<br/>\u043E\u0434 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 \u0437\u0430 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0443 \u045B\u0435 \u0441\u0435 \u043D\u0430\u045B\u0438)</html>
880 OptionPanel.approximate_search_threshold.tooltip=<html>\u041F\u0440\u0430\u0433 \u0437\u0430 \u043F\u0440\u0438\u0431\u043B\u0438\u0436\u043D\u043E \u043F\u043E\u0434\u0443\u0434\u0430\u0440\u0430\u045A\u0435<br/><font size="2">\u043F\u043E\u0433\u043B\u0435\u0434\u0430\u0458 http://freeplane.sf.net/wiki/index.php/Approximate_search</font><br/>(\u0432\u0435\u045B\u0430 - \u043C\u0430\u045A\u0430 \u043A\u043E\u043B\u0435\u0431\u0430\u045A\u0430<br/>\u043E\u0434 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 \u0437\u0430 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0443 \u045B\u0435 \u0441\u0435 \u043D\u0430\u045B\u0438)</html>
881881 OptionPanel.ar=Arabic / \u0410\u0440\u0430\u043F\u0441\u043A\u0438
882882 OptionPanel.ARC=\u041B\u0443\u043A
883883 OptionPanel.as_parent=\u041A\u0430\u043E \u043D\u0430\u0434\u0440\u0435\u0452\u0435\u043D\u0438
13201320 plugins/ScriptEditor/window.Result=\u0418\u0441\u0445\u043E\u0434:
13211321 plugins/ScriptEditor/window.title=\u0423\u0440\u0435\u0452\u0438\u0432\u0430\u0447 \u0441\u043A\u0440\u0438\u043F\u0442\u0435
13221322 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u041D\u0435\u0434\u043E\u0437\u0432\u043E\u0459\u0435\u043D\u0438 \u043F\u0440\u0438\u0441\u0442\u0443\u043F \u0438\u043D\u0442\u0435\u0440\u043D\u0438\u043C API ( \u043F\u0430\u043A\u0435\u0442 {0}). - \u041C\u043E\u043B\u0438\u043C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u0438\u0440\u0430\u0458\u0442\u0435 Freeplane \u0442\u0438\u043C \u0430\u043A\u043E API \u0441\u043A\u0440\u0438\u043F\u0442\u0435 \u043D\u0438\u0441\u0443 \u0434\u043E\u0432\u043E\u0459\u043D\u043E \u043F\u043E\u0434\u0440\u0436\u0430\u043D\u0435.
1323 plugins/TimeList.xml_Created=\u041D\u0430\u043F\u0440\u0430\u0432\u0459\u0435\u043D\u043E
1324 plugins/TimeList.xml_Date=\u0414\u0430\u0442\u0443\u043C
1325 plugins/TimeList.xml_Icons=\u0418\u043A\u043E\u043D\u0435
1326 plugins/TimeList.xml_Modified=\u0418\u0437\u043C\u0435\u045A\u0435\u043D\u043E
1327 plugins/TimeList.xml_Notes=\u0411\u0435\u043B\u0435\u0448\u043A\u0435
1328 plugins/TimeList.xml_Text=\u0422\u0435\u043A\u0441\u0442
1329 plugins/TimeManagement.xml_appendButton=\u0414\u043E\u0434\u0430\u0458 \u0434\u0430\u0442\u0443\u043C \u0443 \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u0438
1330 plugins/TimeManagement.xml_Cancel=\u041E\u0442\u043A\u0430\u0436\u0438
1331 plugins/TimeManagement.xml_cancelButton=\u041E\u0442\u043A\u0430\u0436\u0438
1332 plugins/TimeManagement.xml_closeButton=\u0417\u0430\u0442\u0432\u043E\u0440\u0438
1333 plugins/TimeManagement.xml_Export=\u0418\u0437\u0432\u043E\u0437 \u043E\u0434\u0430\u0431\u0440\u0430\u043D\u0438\u0445 \u0447\u0432\u043E\u0440\u043E\u0432\u0430
1334 plugins/TimeManagement.xml_Find=\u0422\u0440\u0430\u0436\u0438
1335 plugins/TimeManagement.xml_Goto=\u0418\u0434\u0438 \u043D\u0430
1336 plugins/TimeManagement.xml_hour=\u0421\u0430\u0442:
1337 plugins/TimeManagement.xml_menu_actions=\u0410\u043A\u0446\u0438\u0458\u0435
1338 plugins/TimeManagement.xml_minute=\u041C\u0438\u043D\u0443\u0442\u0430:
1339 plugins/TimeManagement.xml_reminderButton=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043C\u0435 \u043D\u0430 \u0442\u0430\u0458 \u0434\u0430\u043D
1340 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u041D\u0430\u043A\u043E\u043D \u043A\u043B\u0438\u043A\u0430 \u0437\u0430\u043F\u043E\u0447\u0438\u045A\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0441\u043A\u043E \u043E\u0434\u0431\u0440\u043E\u0458\u0430\u0432\u0430\u045A\u0435 \u043F\u0440\u0435\u043C\u0430 \u0434\u043E\u0434\u0435\u0459\u0435\u043D\u043E\u043C \u0434\u0430\u0442\u0443\u043C\u0443. \u041D\u0430\u043A\u043E\u043D \u0438\u0441\u0442\u0435\u043A\u0430 \u0432\u0440\u0435\u043C\u0435\u043D\u0430 \u0442\u0440\u0435\u043F\u045B\u0443\u045B\u0430 \u0438\u043A\u043E\u043D\u0430 \u0434\u0430\u0458\u0435 \u0437\u043D\u0430\u043A \u043E \u0438\u0441\u0442\u0435\u043A\u0443.<br> \u0410\u043A\u043E \u0437\u0430\u0442\u0432\u043E\u0440\u0438\u0442\u0435 \u043C\u0430\u043F\u0443, \u043E\u0434\u0431\u0440\u043E\u0458\u0430\u0432\u0430\u045A\u0435 \u0441\u0435 \u043F\u043E\u043D\u043E\u0432\u043E \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0430 \u043A\u043E\u0434 \u043E\u0442\u0432\u0430\u0440\u0430\u045A\u0430 \u043C\u0430\u043F\u0435.</html>
1341 plugins/TimeManagement.xml_reminderNode.tooltip=\u041F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u0437\u0430\u0434\u0430\u0442\u043A\u0430 \u0458\u0435 \u043F\u043E\u0434\u0435\u0448\u0435\u043D \u043D\u0430 {0,date} {0,time}.
1342 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u0422\u0440\u0435\u043D\u0443\u0442\u043D\u043E \u0458\u0435 \u043C\u043E\u0433\u0443\u045B \u0458\u0435\u0434\u0430\u043D \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u043F\u043E \u0447\u0432\u043E\u0440\u0443. <br>\u0422\u0440\u0435\u043D\u0443\u0442\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u0458\u0435 \u043F\u043E\u0434\u0435\u0459\u0435\u043D \u043D\u0430 {0,date} {0,time}, \u0432\u0430\u0448 \u0438\u0437\u0431\u043E\u0440 \u0458\u0435 \u0431\u0438\u043E {1,date} {1,time}. <br><br>\u0416\u0435\u043B\u0438\u0442\u0435 \u043B\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0438 \u0432\u0440\u0435\u043C\u0435 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0430\u045A\u0430 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0430 (\u0414\u0430) <br>\u0438\u043B\u0438 \u0436\u0435\u043B\u0438\u0442\u0435 \u0437\u0430\u0434\u0440\u0436\u0430\u0442\u0438 \u0441\u0442\u0430\u0440\u043E \u0432\u0440\u0435\u043C\u0435 (\u041D\u0435)?</html>
1343 plugins/TimeManagement.xml_remindLaterButton=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043A\u0430\u0441\u043D\u0438\u0458\u0435
1344 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043A\u0430\u0441\u043D\u0438\u0458\u0435
1345 plugins/TimeManagement.xml_removeReminderButton=\u0423\u043A\u043B\u043E\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A
1346 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u0423\u043A\u043B\u043E\u043D\u0438 \u0441\u0432\u0435 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0435 \u043A\u043E\u0458\u0438 \u0441\u0443 \u043F\u043E\u0432\u0435\u0437\u0430\u043D\u0438 \u0441 \u043E\u0434\u0430\u0431\u0440\u0430\u043D\u0438\u043C \u0447\u0432\u043E\u0440\u043E\u0432\u0438\u043C\u0430.
1347 plugins/TimeManagement.xml_Replace=\u0417\u0430\u043C\u0435\u043D\u0438
1348 plugins/TimeManagement.xml_Replace_All=\u0417\u0430\u043C\u0435\u043D\u0438 \u0441\u0432\u0435
1349 plugins/TimeManagement.xml_Replace_Selected=\u0417\u0430\u043C\u0435\u043D\u0438 \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u043E
1350 plugins/TimeManagement.xml_Select=\u0418\u0437\u0430\u0431\u0435\u0440\u0438
1351 plugins/TimeManagement.xml_todayButton=\u0423 \u043F\u043E\u0447\u0435\u0442\u043D\u043E \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440
1352 plugins/TimeManagement.xml_WindowTitle=\u0423\u043F\u0440\u0430\u0432\u0459\u0430\u045A\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u043E\u043C
1353 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u041F\u0440\u0435\u0442\u0440\u0430\u0436\u0438 \u0438 \u0437\u0430\u043C\u0435\u043D\u0438
13541323 preferences=\u041F\u043E\u0441\u0442\u0430\u0432\u043A\u0435
13551324 print_preview_title=\u041F\u0440\u0435\u0433\u043B\u0435\u0434 \u043F\u0440\u0435 \u0448\u0442\u0430\u043C\u043F\u0430\u045A\u0430
13561325 PrintAction.text=\u041E\u0434\u0448\u0442\u0430\u043C\u043F\u0430\u0458 \u043C\u0430\u043F\u0443...
13771346 RedoAction.text=\u041F\u043E\u043D\u043E\u0432\u0438
13781347 RedoFilterAction.text=\u041F\u043E\u043D\u043E\u0432\u0438 \u0430\u043A\u0446\u0438\u0458\u0443
13791348 regular_expressions=\u041F\u0440\u0430\u0432\u0438\u043B\u0430\u043D \u0438\u0437\u0440\u0430\u0437
1349 reminder.appendButton=\u0414\u043E\u0434\u0430\u0458 \u0434\u0430\u0442\u0443\u043C \u0443 \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u0438
1350 reminder.Cancel=\u041E\u0442\u043A\u0430\u0436\u0438
1351 reminder.cancelButton=\u041E\u0442\u043A\u0430\u0436\u0438
1352 reminder.closeButton=\u0417\u0430\u0442\u0432\u043E\u0440\u0438
1353 reminder.Created=\u041D\u0430\u043F\u0440\u0430\u0432\u0459\u0435\u043D\u043E
1354 reminder.Export=\u0418\u0437\u0432\u043E\u0437 \u043E\u0434\u0430\u0431\u0440\u0430\u043D\u0438\u0445 \u0447\u0432\u043E\u0440\u043E\u0432\u0430
1355 reminder.Find=\u0422\u0440\u0430\u0436\u0438
1356 reminder.Goto=\u0418\u0434\u0438 \u043D\u0430
1357 reminder.hour=\u0421\u0430\u0442:
1358 reminder.Icons=\u0418\u043A\u043E\u043D\u0435
1359 reminder.Map=\u041C\u0430\u043F\u0430
1360 reminder.menu_actions=\u0410\u043A\u0446\u0438\u0458\u0435
1361 reminder.minute=\u041C\u0438\u043D\u0443\u0442\u0430:
1362 reminder.Modified=\u0418\u0437\u043C\u0435\u045A\u0435\u043D\u043E
1363 reminder.Notes=\u0411\u0435\u043B\u0435\u0448\u043A\u0435
1364 reminder.Reminder=\u041F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A
1365 reminder.reminderButton=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043C\u0435 \u043D\u0430 \u0442\u0430\u0458 \u0434\u0430\u043D
1366 reminder.reminderButton.tooltip=<html>\u041D\u0430\u043A\u043E\u043D \u043A\u043B\u0438\u043A\u0430 \u0437\u0430\u043F\u043E\u0447\u0438\u045A\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0441\u043A\u043E \u043E\u0434\u0431\u0440\u043E\u0458\u0430\u0432\u0430\u045A\u0435 \u043F\u0440\u0435\u043C\u0430 \u0434\u043E\u0434\u0435\u0459\u0435\u043D\u043E\u043C \u0434\u0430\u0442\u0443\u043C\u0443. \u041D\u0430\u043A\u043E\u043D \u0438\u0441\u0442\u0435\u043A\u0430 \u0432\u0440\u0435\u043C\u0435\u043D\u0430 \u0442\u0440\u0435\u043F\u045B\u0443\u045B\u0430 \u0438\u043A\u043E\u043D\u0430 \u0434\u0430\u0458\u0435 \u0437\u043D\u0430\u043A \u043E \u0438\u0441\u0442\u0435\u043A\u0443.<br> \u0410\u043A\u043E \u0437\u0430\u0442\u0432\u043E\u0440\u0438\u0442\u0435 \u043C\u0430\u043F\u0443, \u043E\u0434\u0431\u0440\u043E\u0458\u0430\u0432\u0430\u045A\u0435 \u0441\u0435 \u043F\u043E\u043D\u043E\u0432\u043E \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0430 \u043A\u043E\u0434 \u043E\u0442\u0432\u0430\u0440\u0430\u045A\u0430 \u043C\u0430\u043F\u0435.</html>
1367 reminder.reminderNode.tooltip=\u041F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u0437\u0430\u0434\u0430\u0442\u043A\u0430 \u0458\u0435 \u043F\u043E\u0434\u0435\u0448\u0435\u043D \u043D\u0430 {0,date} {0,time}.
1368 reminder.reminderNode_onlyOneDate=<html>\u0422\u0440\u0435\u043D\u0443\u0442\u043D\u043E \u0458\u0435 \u043C\u043E\u0433\u0443\u045B \u0458\u0435\u0434\u0430\u043D \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u043F\u043E \u0447\u0432\u043E\u0440\u0443. <br>\u0422\u0440\u0435\u043D\u0443\u0442\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u0458\u0435 \u043F\u043E\u0434\u0435\u0459\u0435\u043D \u043D\u0430 {0,date} {0,time}, \u0432\u0430\u0448 \u0438\u0437\u0431\u043E\u0440 \u0458\u0435 \u0431\u0438\u043E {1,date} {1,time}. <br><br>\u0416\u0435\u043B\u0438\u0442\u0435 \u043B\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0438 \u0432\u0440\u0435\u043C\u0435 \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u0430\u045A\u0430 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0430 (\u0414\u0430) <br>\u0438\u043B\u0438 \u0436\u0435\u043B\u0438\u0442\u0435 \u0437\u0430\u0434\u0440\u0436\u0430\u0442\u0438 \u0441\u0442\u0430\u0440\u043E \u0432\u0440\u0435\u043C\u0435 (\u041D\u0435)?</html>
1369 reminder.remindLaterButton=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043A\u0430\u0441\u043D\u0438\u0458\u0435
1370 reminder.remindLaterButton.tooltip=\u041F\u043E\u0434\u0441\u0435\u0442\u0438 \u043A\u0430\u0441\u043D\u0438\u0458\u0435
1371 reminder.removeReminderButton=\u0423\u043A\u043B\u043E\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A
1372 reminder.removeReminderButton.tooltip=\u0423\u043A\u043B\u043E\u043D\u0438 \u0441\u0432\u0435 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0435 \u043A\u043E\u0458\u0438 \u0441\u0443 \u043F\u043E\u0432\u0435\u0437\u0430\u043D\u0438 \u0441 \u043E\u0434\u0430\u0431\u0440\u0430\u043D\u0438\u043C \u0447\u0432\u043E\u0440\u043E\u0432\u0438\u043C\u0430.
1373 reminder.Replace=\u0417\u0430\u043C\u0435\u043D\u0438
1374 reminder.Replace_All=\u0417\u0430\u043C\u0435\u043D\u0438 \u0441\u0432\u0435
1375 reminder.Replace_Selected=\u0417\u0430\u043C\u0435\u043D\u0438 \u0438\u0437\u0430\u0431\u0440\u0430\u043D\u043E
1376 reminder.Select=\u0418\u0437\u0430\u0431\u0435\u0440\u0438
1377 reminder.Text=\u0422\u0435\u043A\u0441\u0442
1378 reminder.todayButton=\u0423 \u043F\u043E\u0447\u0435\u0442\u043D\u043E \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440
1379 reminder.WindowTitle=\u0423\u043F\u0440\u0430\u0432\u0459\u0430\u045A\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u043E\u043C
1380 reminder.WindowTitle_All_Nodes=\u041F\u0440\u0435\u0442\u0440\u0430\u0436\u0438 \u0438 \u0437\u0430\u043C\u0435\u043D\u0438
13801381 ReminderHookAction.text=\u0423\u043A\u043B\u043E\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A
13811382 ReminderHookAction.tooltip=\u0423\u043A\u043B\u043E\u043D\u0438 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A \u0441 \u0447\u0432\u043E\u0440\u0430.
1383 ReminderListAction.text=\u0423\u043F\u0440\u0430\u0432\u0459\u0430\u045A\u0435 \u0437\u0430\u0434\u0430\u0446\u0438\u043C\u0430...
1384 ReminderListAction.tooltip=\u041F\u0440\u0438\u043A\u0430\u0437\u0443\u0458\u0435 \u0441\u0432\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0441\u043A\u0435 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0435 \u0438 \u043F\u0440\u0438\u043F\u0430\u0434\u0430\u0458\u0443\u045B\u0435 \u0447\u0432\u043E\u0440\u043E\u0432\u0435.
13821385 remove_file_from_list_on_error=\u0414\u0430\u0442\u043E\u0442\u0435\u043A\u0430 {0} \u043D\u0438\u0458\u0435 \u043E\u0442\u0432\u043E\u0440\u0435\u043D\u0430. \u0416\u0435\u043B\u0438\u0442\u0435 \u043B\u0438 \u0458\u0435 \u0443\u043A\u043E\u043D\u0438\u0442\u0438 \u0441\u0430 \u0441\u043F\u0438\u0441\u043A\u0430 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u043E\u0442\u0432\u0430\u0440\u0430\u043D\u0438\u0445 \u0434\u0430\u0442\u043E\u0442\u0435\u043A\u0430?
13831386 remove_shortcut_question=\u0416\u0435\u043B\u0438\u0442\u0435 \u043B\u0438 \u0437\u0430\u043C\u0435\u043D\u0438\u0442\u0438 \u0442\u0430\u0441\u0442\u0435\u0440\u0441\u043A\u0443 \u043F\u0440\u0435\u0447\u0438\u0446\u0443?
13841387 RemoveAllIconsAction.text=\u0423\u043A\u043B\u043E\u043D\u0438 \u0441\u0432\u0435 \u0438\u043A\u043E\u043D\u0435
16881691 summary_not_possible=\u041D\u0435 \u043C\u043E\u0433\u0443 \u0434\u0430 \u043D\u0430\u043F\u0440\u0430\u0432\u0438\u043C \u043F\u0440\u0435\u0433\u043B\u0435\u0434 \u0447\u0432\u043E\u0440\u0430 \u0437\u0430 \u0442\u0440\u0435\u043D\u0443\u0442\u043D\u0438 \u0438\u0437\u0431\u043E\u0440
16891692 svg=SVG
16901693 template_dir=\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0434\u043D\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0438
1691 TimeListAction.text=\u0423\u043F\u0440\u0430\u0432\u0459\u0430\u045A\u0435 \u0437\u0430\u0434\u0430\u0446\u0438\u043C\u0430...
1692 TimeListAction.tooltip=\u041F\u0440\u0438\u043A\u0430\u0437\u0443\u0458\u0435 \u0441\u0432\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0441\u043A\u0435 \u043F\u043E\u0434\u0441\u0435\u0442\u043D\u0438\u043A\u0435 \u0438 \u043F\u0440\u0438\u043F\u0430\u0434\u0430\u0458\u0443\u045B\u0435 \u0447\u0432\u043E\u0440\u043E\u0432\u0435.
16931694 TimeManagementAction.text=\u0423\u043F\u0440\u0430\u0432\u0459\u0430\u045A\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u043E\u043C...
16941695 TimeManagementAction.tooltip=<html> \u041F\u0440\u0438\u043A\u0430\u0436\u0438 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u0441\u043A\u0438 \u043C\u043E\u0434\u0443\u043B \u043E\u0434 Kai Toedter.</html>
16951696 ToggleChildrenFoldedAction.text=\u0420\u0430\u0441\u043A\u043B\u043E\u043F\u0438/\u0421\u043A\u043B\u043E\u043F\u0438 \u043F\u043E\u0434\u0440\u0435\u0452\u0435\u043D\u0438
5959 addons.installer.no.zipdata=Ingen zip data hittad
6060 addons.installer.nonstandard.permissions=Skriptet fr\u00E5gar om de f\u00F6ljande beh\u00F6righeterna som f\u00F6r n\u00E4rvarande inte \u00E4r aktiverade: {0}.\nBorde de l\u00E4ggas till i standardbeh\u00F6righeterna?
6161 addons.installer.one.child.expected=Exakt ett barn av {0} f\u00F6rv\u00E4ntades, men fick {1}.
62 addons.installer.script.name.suffix=Script {0} saknar fil\u00E4ndelse ".groovy"
63 addons.installer.script.no.menutitle=Ingen "menuTitleKey" attribut definierad f\u00F6r {0}
64 addons.installer.script.no.permissions=Inga r\u00E4ttigheter definierade f\u00F6r {0}
65 addons.installer.success=Lyckad installation.\nDen nya till\u00E4gg finns tillg\u00E4nglig efter omstart.
66 addons.installer.success.update=Uppdatering fr\u00E5n {0} till {1} lyckades.\nN\u00E5gra funktioner aktiveras efter en omstart.
67 addons.installer.title=Till\u00E4ggs installerare
68 addons.installer.too.new=Nuvarande Freeplane version {0} \u00E4r f\u00F6r ny. Detta till\u00E4gg st\u00F6djer max {1}
69 addons.installer.too.old=Nuvarande Freeplane version {0} \u00E4r f\u00F6r gammal. Detta till\u00E4gg kr\u00E4ver minst {1}
70 addons.installer.unknown.deinstallation.rules=Ok\u00E4nd avinstallationsregel(er) {0}
71 addons.installer.update=Uppdatera fr\u00E5n version {0}
72 addons.installer.warning=<html><body><strong style="color: red; font-size: 9px">Du b\u00F6r endast installera till\u00E4gg f\u00F6r k\u00E4llor du litar p\u00E5. Ok\u00E4nd mjukvara kan skada din data och p\u00E5verka din privata information.</strong></body></html>
73 addons.site=https://www.freeplane.org/addons/
74 AddStyleAttributes.text=Inst\u00E4llningar fr\u00E5n stil
75 AddStyleAttributes.tooltip=L\u00E4gg till attribut fr\u00E5n stil nod
6276 AllMapsNodeListAction.text=S\u00F6k och Ers\u00E4tt i alla kartor
77 always=Alltid
78 AlwaysUnfoldedNodeAction.text=Alltid utveckla nod (S\u00E4tt/nollst\u00E4ll)
6379 antialias_all=J\u00E4mna ut alla
6480 antialias_edges=J\u00E4mna ut kanter
6581 antialias_none=J\u00E4mna inte ut
7793 attribute_delete_value=Ta bort detta v\u00E4rde
7894 attribute_font_size.tooltip=Egenskaper teckenstorlek
7995 attribute_list_box_label_text=Befintliga v\u00E4rden
96 attribute_name=Attribut Namn
97 attribute_name_or_value=Attribut namn eller v\u00E4rde
8098 attribute_replace=Ers\u00E4tt med
8199 attribute_top=Alla egenskaper i inl?sta tankekartor
100 attribute_value=Attribut V\u00E4rde
101 attributes_AddAttributeAction.text=l\u00E4gg till attribut i dialog...
82102 attributes_adding_empty_attribute_error=En tom textstr\u00E4ng kan inte anv\u00E4ndas som egenskapsnamn
83103 attributes_all=Alla egenskaper
84104 attributes_assign_dialog=L?gg till egenskap
101121 attributes_popup_optimal_width=Optimal bredd
102122 attributes_popup_up=Upp
103123 attributes_refresh=Uppdatera
124 attributes_RemoveAllAttributesAction.text=Ta bort alla attribut
125 attributes_RemoveFirstAttributeAction.text=Ta bort f\u00F6rsta attributet
126 attributes_RemoveLastAttributeAction.text=Ta bort sista attributet
104127 attributes_restricted_attributes.tooltip=Begr\u00E4nsa egenskaper
105128 attributes_restricted_values.tooltip=Begr\u00E4nsa antal v\u00E4rden f\u00F6r aktuell egenskap
106129 attributes_restriction=Begr\u00E4nsade egenskaper
110133 attributes_skip_root=Hoppa \u00F6ver rotgren
111134 attributes_visible=Markerad synlig
112135 attributes_visible.tooltip=Markerad synlig
136 automatic_layout=Automatiskt layout
137 automatic_layout_disabled=avst\u00E4ngd
113138 automatically_save_message=Tankekartan sparades automatiskt (med filnamnet {0}) ...
114 AutomaticEdgeColorHookAction.text=Kantf?rg Auto
139 AutomaticEdgeColor.FOR_BRANCHES=f\u00F6r grenar
140 AutomaticEdgeColor.FOR_COLUMNS=f\u00F6r kolumner
141 AutomaticEdgeColor.FOR_LEVELS=f\u00F6r niv\u00E5er
142 AutomaticEdgeColorHookAction.text=Automatiskt kantf\u00E4rg
143 AutomaticLayout.level=Niv\u00E5 {0}
144 AutomaticLayout.level.root=Rot
115145 AutomaticLayoutAction.text=Format Auto
116146 AutomaticLayoutAction.tooltip=<html>Ordnar layouten p\u00E5 tankekartan. <br>Den f\u00F6rsta niv\u00E5n \u00E4r svart, den andra \u00E4r bl\u00E5, etc.</html>
147 AutomaticLayoutControllerAction.ALL.text=F\u00F6r alla noder
148 AutomaticLayoutControllerAction.COLUMNS.text=f\u00F6r alla kolumner
149 AutomaticLayoutControllerAction.HEADINGS.text=F\u00F6r noder utan l\u00F6v
150 AutomaticLayoutControllerAction.null.text=avst\u00E4ngd
117151 BackAction.text=Backa
118152 BackAction.tooltip=G\u00E5r bak\u00E5t i historiken p\u00E5 valda grenar
119153 background=Bakgrund
120154 bitmaps=Bitmap-bilder
121155 black=Svart
122156 BlinkingNodeHookAction.text=Blinkande gren
123 BlinkingNodeHookAction.tooltip=<html>Detta g\u00F6r s\u00E5 att grenen blinkar. Var f\u00F6rsiktig.<br> Anv\u00E4nd inte i f\u00F6r m\u00E5nga grenar, och <strong> inte med andra auto format p\u00E5 samma gren</strong></html>
157 BlinkingNodeHookAction.tooltip=<html>Detta g\u00F6r s\u00E5 att grenen blinkar. Var f\u00F6rsiktig. Anv\u00E4nd inte i f\u00F6r m\u00E5nga grenar, och <strong> inte med andra automatiska format p\u00E5 samma gren</strong></html>
124158 blue=Bl\u00E5
125159 BoldAction.text=Fet
126160 boldify_branch=G\u00F6r fetare
251285 ExecuteScripts.noScriptsAvailable=Inga
252286 ExecuteScripts.text=Skript
253287 export_failed=Exporten misslyckades
254 ExportAction.text=Exportera
288 ExportAction.text=Exportera karta...
255289 ExportBranchAction.text=Gren som ny karta...
256290 ExportBranchToHTMLAction.text=Gren som HTML
257291 exported_file={0} fil
326360 FoldAllAction.tooltip=<html>D\u00F6lj markerade grenar och alla undergrenar.</html>
327361 FoldOneLevelAction.text=D\u00F6lj en niv\u00E5
328362 FoldOneLevelAction.tooltip=<html>D\u00F6lj markerade grenar en niv\u00E5.</html>
329 follow_graphical_link=G\u00E5 till:
363 follow_graphical_link=G\u00E5 till ''{0}''
330364 FollowLinkAction.text=F\u00F6lj l\u00E4nk
331365 font=Teckensnitt
332366 FontFamilyAction.text=Teckensnitt
340374 FormatPaste.text=Klistra in format
341375 FormatPaste.tooltip=<html>Klistrar in grenens format.</html>
342376 formula.error.attributeValueIsNull=Egenskapsv\u00E4rde ''{0}'' \u00E4r tomt efter utv\u00E4rdering.
343 formula.error.circularReference=Circular reference: The formula in node ''{0}'' references itself.
377 formula.error.circularReference=Circular referens: formlen i noden {0} ''{1}'' h\u00E4nvisar till sig sj\u00E4lv.
344378 formula.EvaluateAllAction.text=Utv\u00E4rdera alla
345379 formula.EvaluateAllAction.tooltip=Utv\u00E4rdera all formler i kartan
346380 formula.menuname=Formler
357391 Freeplane.progress.propagateLookAndFeel=Nytt gr\u00E4nssnitt...
358392 Freeplane.progress.settingPreferences=Nya inst\u00E4llningar...
359393 Freeplane.progress.startCreateController=Starta kontroll\u00F6r...
360 Freeplane.progress.updateLookAndFeel=Uppdatera gr\u00E4nssnitt
361 freeplane_reverted=Freeplane_Reverted_
394 Freeplane.progress.updateLookAndFeel=Uppdatera gr\u00E4nssnitt...
395 freeplane_reverted=Freeplane_backad_
362396 FreeplaneHelpStarter.text=Hj\u00E4lp...
363397 FreeplaneHelpStarter.tooltip=Freeplane ut\u00F6kad hj\u00E4lp
364398 GotoLinkNodeAction.text=G\u00E5 till l\u00E4nk
519553 long_node_changed_submit=Grenen f\u00F6r\u00E4ndrad. Spara f\u00F6r\u00E4ndringen?
520554 lots_of_links_warning=Flera l?nkar till samma gren. Skapa alla l\u00E4nkarna?
521555 main_resource_directory=Katalog: {0}
522 MainView.errorUpdateText=Fel vid uppdatering av texten f\u00F6r f\u00F6ljande indata: {0}:{1}.\nFelet var: {1}
556 MainView.errorUpdateText=Fel vid uppdatering av texten f\u00F6r: {0}:{1}.
523557 ManageConditionalStylesAction.text=Villkorsstyrd mall
524558 map_already_exists=Tankekarta finns redan. Ers\u00E4tt tankekarta?
525559 map_corrupted=Tankekartan felaktig. Visa info?
565599 NewerFileRevisionsFoundDialog.file_size=Bytes
566600 NewerFileRevisionsFoundDialog.open=\u00C6ppna
567601 NewerFileRevisionsFoundDialog.open.tooltip=\u00C6ppna filen \u00E4ven om den \u00E4r inaktuell
568 NewerFileRevisionsFoundDialog.question=Found newer revisions of {0}!\nDo you want to open {0} (see first row) nevertheless?\nTo replace {0} by an auto save file from the list\nselect it and click on ''Restore''.
602 NewerFileRevisionsFoundDialog.question=Hittade nyare version av {0}!''.
569603 NewerFileRevisionsFoundDialog.restore=\u00C5terst\u00E4ll
570604 NewerFileRevisionsFoundDialog.restore.tooltip=Ersatt {0} av {1}
571605 NewerFileRevisionsFoundDialog.title=Nyare fil finns!
583617 NextNodeAction.FORWARD_N_FOLD.text=N\u00E4sta gren (d\u00F6lj)
584618 no=Nej
585619 no_format_copy_before_format_paste=Inget format kopierat f?r inklistring.
586 no_found_from=<html> Ingen <b>"{0}"</b>&nbsp; hittades fr\u00E5n <b>"{1}"</b>.
587 no_more_found_from=<html> Inga fler <b>"{0}"</b>&nbsp; hittades fr\u00E5n <b>"{1}"</b>
620 no_found_from=<html>Ingen <u>{0}</u> hittades fr\u00E5n "{1}".</html>
621 no_more_found_from=<html> Inga fler <u>{0}</u> hittades fr\u00E5n "{1}".</html>
588622 no_previous_find=Ingen f\u00F6reg\u00E5ende tr\u00E4ff.
589623 node=Gren
590624 node_changed_discard_changes=Grenen f\u00F6r\u00E4ndrad. Ta bort \u00E4ndringen?
610644 OpenAction.text=\u00D6ppna...
611645 OpenFreeplaneSiteAction.text=Freeplanes hemsida
612646 OpenPathAction.text=\u00C6ppna fil
613 option_changes_may_require_restart=Starta om Freeplane f?r att aktivera nya inst\u00E4llningarna
647 option_changes_may_require_restart=Starta om Freeplane f\u00F6r att aktivera nya inst\u00E4llningarna
614648 OptionalDontShowMeAgainDialog.cancel=&Nej
615649 OptionalDontShowMeAgainDialog.dontShowAgain=&Fr\u00E5ga inte igen.
616650 OptionalDontShowMeAgainDialog.ok=&Ja
697731 OptionPanel.Environment=Programinst?llningar
698732 OptionPanel.es=Es
699733 OptionPanel.et=Estniska
700 OptionPanel.execute_scripts_without_asking=Ska skript k\u00F6ras utan bekr\u00E4ftelse?
734 OptionPanel.execute_scripts_without_asking=Skall det vara till\u00E5tet att k\u00F6ra skript?
701735 OptionPanel.execute_scripts_without_asking.tooltip=<html>Freeplane-skrip kan i princip utf\u00F6ra vad som helst p\u00E5 datorn. <br>S\u00E5deles,<br> k\u00F6r inte skript som kan vara os?kra.</html>
702736 OptionPanel.execute_scripts_without_exec_restriction=Till\u00E5t k\u00F6rning av andra program (INTE rekommenderat)
703737 OptionPanel.execute_scripts_without_exec_restriction.tooltip=<html><body>If your Groovy Scripts need to execute special other applications (like a browser) without asking(!),<br>you have to enable this option. <br>But use it with care, as now malicious scripts can hurt your computer!</body></html>
710744 OptionPanel.experimental_file_locking_on=Experimentell fill\u00E5sning
711745 OptionPanel.experimental_file_locking_on.tooltip=<html> Experimentell f\u00F6rekomst</html>
712746 OptionPanel.export_icons_in_html=Exportera ikoner till HTML
713 OptionPanel.export_icons_in_html.tooltip=<html> Ber\u00E4ttar f\u00F6r HTML exporterad fr\u00E5n Freeplane att ikoner ska f\u00F6lja med.<br> Problemet med ikoner \u00E4r att l\u00E4nkar till ikonerna ganska ofta inte hittas i exporterade HTML-koden.</html>
747 OptionPanel.export_icons_in_html.tooltip=<html> Ber\u00E4ttar om HTML exporterad fr\u00E5n Freeplane skall inneh\u00E5lla ikoner. Problemet med ikoner \u00E4r att l\u00E4nkar till ikonerna ganska ofta inte hittas i den exporterade HTML-koden.</html>
714748 OptionPanel.Files=Arkiv
715749 OptionPanel.first=F\u00F6rst
716750 OptionPanel.foldingsymbolwidth=D\u00F6lj symbolbredd
745779 OptionPanel.label_font_family=Typsnittsfamilj
746780 OptionPanel.label_font_size=Teckensnittsstorlek
747781 OptionPanel.language=Spr\u00E5k
748 OptionPanel.language.tooltip=<html>Detta \u00E4r spr\u00E5ket som kommer att anv\u00E4ndas i programmet.<br> 'automatisk' f\u00F6rs\u00F6ker att h\u00E4mta nuvarande anv\u00E4ndares spr\u00E5k. </html>
782 OptionPanel.language.tooltip=<html>Detta \u00E4r spr\u00E5ket som kommer att anv\u00E4ndas i programmet. 'automatisk' f\u00F6rs\u00F6ker att h\u00E4mta nuvarande anv\u00E4ndares spr\u00E5k. </html>
749783 OptionPanel.last=Sist
750784 OptionPanel.last_opened_list_length=Senaste filer, visa antal
751785 OptionPanel.linear=Linj\u00E4r
771805 OptionPanel.nl=Nl
772806 OptionPanel.nn=Norska (Nynorsk)
773807 OptionPanel.nodebackgroundcolor=Grenens bakgrundsf\u00E4rg
774 OptionPanel.nodebackgroundcolor.tooltip=Grenens bakgrundsf\u00E4rg
808 OptionPanel.nodebackgroundcolor.tooltip=Grenens bakgrundsf\u00E4rg.
775809 OptionPanel.nodecolor=Grenens f\u00E4rg
776 OptionPanel.nodecolor.tooltip=Grenens f\u00E4rg
810 OptionPanel.nodecolor.tooltip=Grenens f\u00E4rg.
777811 OptionPanel.nodefontbold=Fet
812 OptionPanel.nodefonthyperlink=L\u00E4nk
778813 OptionPanel.nodefontitalic=Kursivstil
779 OptionPanel.nodefontname=Grenens teckensnitt
780 OptionPanel.nodefontsize=Grenens teckensnittsstorlek
814 OptionPanel.nodefontname=Teckensnitt
815 OptionPanel.nodefontsize=Teckenstorlek
816 OptionPanel.nodefontstrikethrough=Genomstruken
817 OptionPanel.nodeformat=Format
781818 OptionPanel.nodetext=Grentext
782 OptionPanel.nodetext.tooltip=Grentext
819 OptionPanel.nodetext.tooltip=H\u00E4r kan du ange grentexten.
783820 OptionPanel.nothing=Ingenting
784821 OptionPanel.number_of_different_files_for_automatic_save=Antal olika filer vid autospara
785 OptionPanel.number_of_different_files_for_automatic_save.tooltip=<html> antal n av olika filer att spara tankekartan i.<br> Den f\u00F6rsta filen autosparas f\u00F6rst, osv. till och med n+1-spara som \u00E5terigen sparas i f\u00F6rsta filen (cykel)</html>
822 OptionPanel.number_of_different_files_for_automatic_save.tooltip=<html> antal n av olika filer att spara tankekartan i. Den f\u00F6rsta filen autosparas f\u00F6rst, osv. till och med n+1-spara som \u00E5terigen sparas i f\u00F6rsta filen (cykliskt) </html>
786823 OptionPanel.OK=Spara
787 OptionPanel.org.freeplane.plugin.bugreport=Policy
824 OptionPanel.org.freeplane.plugin.bugreport=Regler
788825 OptionPanel.org.freeplane.plugin.bugreport.allowed=Skicka alltid
789826 OptionPanel.org.freeplane.plugin.bugreport.ask=Fr\u00E5ga
790827 OptionPanel.org.freeplane.plugin.bugreport.denied=Skicka aldrig
931968 OptionPanel.sv=Svenska
932969 OptionPanel.text.use_ctrl_key=Anv\u00E4nd 'Tilldela snabbkommando' fr\u00E5n Verktygs-menyn
933970 OptionPanel.time_for_automatic_save=Tid f\u00F6r att spara automatiskt
934 OptionPanel.time_for_automatic_save.tooltip=<html> tid mellan tv\u00E5 p\u00E5f\u00F6ljande automatiskt sparade filer (i msec):<br> F\u00F6r att ta bort autospara s\u00E4tt v\u00E4rdet till 2000000000.</html>
971 OptionPanel.time_for_automatic_save.tooltip=<html> tid mellan tv\u00E5 p\u00E5f\u00F6ljande automatiskt sparade filer (i msec):<br /> F\u00F6r att ta bort autospara s\u00E4tt v\u00E4rdet till 2000000000.</html>
935972 OptionPanel.time_for_delayed_selection=Tid f\u00F6r f\u00F6rdr?jd grenmarkering
936 OptionPanel.time_for_delayed_selection.tooltip=<html> F\u00F6rdr?jd markeringstid (i msec) av grenar n\u00E4r musen f\u00F6rs \u00F6ver . <br>\u00C4ndra detta v\u00E4rde till 1 f?r direktval n\u00E4r musen f\u00F6rs \u00F6ver.</html>
973 OptionPanel.time_for_delayed_selection.tooltip=<html> F\u00F6rdr\u00F6jd markeringstid (i msec) av grenar n\u00E4r musen f\u00F6rs \u00F6ver . <br />\u00C4ndra detta v\u00E4rde till 1 f\u00F6r direktval n\u00E4r musen f\u00F6rs \u00F6ver.</html>
937974 OptionPanel.toolTipManager.dismissDelay=Visningstid (ms)
938975 OptionPanel.toolTipManager.initialDelay=Tid innan visning (ms)
939976 OptionPanel.toolTipManager.max_tooltip_width=Inforuta bredd
10011038 plugins/ScriptEditor/window.Result=Resultat:
10021039 plugins/ScriptEditor/window.title=Skriptredigerare
10031040 plugins/ScriptingEngine.illegalAccessToInternalAPI=Illegal access to the internal API (package {0}). - Please contact the Freeplane team if the scripting API is not powerful enough.
1004 plugins/TimeList.xml_Created=Skapad
1005 plugins/TimeList.xml_Date=Datum
1006 plugins/TimeList.xml_Icons=Ikoner
1007 plugins/TimeList.xml_Modified=Modifierad
1008 plugins/TimeList.xml_Notes=Anteckningar
1009 plugins/TimeList.xml_Text=Text
1010 plugins/TimeManagement.xml_appendButton=Bifoga datum till markerade grenar
1011 plugins/TimeManagement.xml_Cancel=Avbryt
1012 plugins/TimeManagement.xml_cancelButton=Avbryt
1013 plugins/TimeManagement.xml_closeButton=St\u00E4ng
1014 plugins/TimeManagement.xml_Export=Exportera markerade grenar
1015 plugins/TimeManagement.xml_Find=S\u00F6k
1016 plugins/TimeManagement.xml_Goto=G\u00E5 till
1017 plugins/TimeManagement.xml_hour=Timme:
1018 plugins/TimeManagement.xml_menu_actions=Aktion
1019 plugins/TimeManagement.xml_minute=Minut:
1020 plugins/TimeManagement.xml_reminderButton=P\u00E5minn vid detta datum
1021 plugins/TimeManagement.xml_reminderButton.tooltip=<html>N\u00E4r en timer \u00E4r klickad p\u00E5, sker schemal\u00E4ggning till dagens datum.<br> Blinkande ikoner p\u00E5kallar din uppm\u00E4rksamhet.<br> N?r tankekartan st\u00E4ngs, \u00E5teraktiveras timern n\u00E4sta g\u00E5ng tankekartan \u00F6ppnas.</html>
1022 plugins/TimeManagement.xml_reminderNode.tooltip=P\u00E5minnelse {0,date} {0,time}.
1023 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>F\u00F6r n\u00E4rvarande finns det enbart en p\u00E5minnelse per gren. <br>Den aktuella p\u00E5minnelsen \u00E4r schemalagd till {0,date} {0,time}, Valt var {1,date} {1,time}. <br><br>\u00E4ndra grenens p\u00E5minnelstid (Ja) <br>eller beh\u00E5ll den gamla (Nej)?</html>
1024 plugins/TimeManagement.xml_removeReminderButton=Ta bort p\u00E5minnelser
1025 plugins/TimeManagement.xml_removeReminderButton.tooltip=Ta bort alla p\u00E5minnelser fr\u00E5n markerade grenar.
1026 plugins/TimeManagement.xml_Replace=Ers\u00E4tt
1027 plugins/TimeManagement.xml_Replace_All=Ers\u00E4tt alla
1028 plugins/TimeManagement.xml_Replace_Selected=Ers\u00E4tt markerade
1029 plugins/TimeManagement.xml_Select=V\u00E4lj
1030 plugins/TimeManagement.xml_todayButton=Idag
1031 plugins/TimeManagement.xml_WindowTitle=Tidsstyrning
1032 plugins/TimeManagement.xml_WindowTitle_All_Nodes=S\u00F6k och ers\u00E4tt
10331041 preferences=Inst?llningar
10341042 print_preview_title=F\u00F6rhandsgranskning
10351043 PrintAction.text=Skriv ut...
10541062 RedoAction.text=G\u00F6r om
10551063 RedoFilterAction.text=G\u00F6r om
10561064 regular_expressions=Regulj\u00E4r uttryck
1065 reminder.appendButton=Bifoga datum till markerade grenar
1066 reminder.Cancel=Avbryt
1067 reminder.cancelButton=Avbryt
1068 reminder.closeButton=St\u00E4ng
1069 reminder.Created=Skapad
1070 reminder.Export=Exportera markerade grenar
1071 reminder.Find=S\u00F6k
1072 reminder.Goto=G\u00E5 till
1073 reminder.hour=Timme:
1074 reminder.Icons=Ikoner
1075 reminder.Map=Tankekarta
1076 reminder.menu_actions=Aktion
1077 reminder.minute=Minut:
1078 reminder.Modified=Modifierad
1079 reminder.Notes=Anteckningar
1080 reminder.reminderButton=P\u00E5minn vid detta datum
1081 reminder.reminderButton.tooltip=<html>N\u00E4r en timer \u00E4r klickad p\u00E5, sker schemal\u00E4ggning till dagens datum.<br> Blinkande ikoner p\u00E5kallar din uppm\u00E4rksamhet.<br> N?r tankekartan st\u00E4ngs, \u00E5teraktiveras timern n\u00E4sta g\u00E5ng tankekartan \u00F6ppnas.</html>
1082 reminder.reminderNode.tooltip=P\u00E5minnelse {0,date} {0,time}.
1083 reminder.reminderNode_onlyOneDate=<html>F\u00F6r n\u00E4rvarande finns det enbart en p\u00E5minnelse per gren. <br>Den aktuella p\u00E5minnelsen \u00E4r schemalagd till {0,date} {0,time}, Valt var {1,date} {1,time}. <br><br>\u00E4ndra grenens p\u00E5minnelstid (Ja) <br>eller beh\u00E5ll den gamla (Nej)?</html>
1084 reminder.removeReminderButton=Ta bort p\u00E5minnelser
1085 reminder.removeReminderButton.tooltip=Ta bort alla p\u00E5minnelser fr\u00E5n markerade grenar.
1086 reminder.Replace=Ers\u00E4tt
1087 reminder.Replace_All=Ers\u00E4tt alla
1088 reminder.Replace_Selected=Ers\u00E4tt markerade
1089 reminder.Select=V\u00E4lj
1090 reminder.Text=Text
1091 reminder.todayButton=Idag
1092 reminder.WindowTitle=Tidsstyrning
1093 reminder.WindowTitle_All_Nodes=S\u00F6k och ers\u00E4tt
10571094 ReminderHookAction.text=Ta bort p\u00E5minnelser
10581095 ReminderHookAction.tooltip=Tar bort en p\u00E5minnelse fr\u00E5n en gren.
1096 ReminderListAction.text=Visa schemal\u00E4ggning ...
1097 ReminderListAction.tooltip=Visar alla schemalagda tider och ber\u00F6rda grenar.
10591098 remove_file_from_list_on_error=File {0} not opened. Remove it from the last opened file list?
10601099 remove_shortcut_question=Ers\u00E4tt snabbkommando?
10611100 RemoveAllIconsAction.text=Ta bort alla ikoner
13141353 styles.definition=Definition
13151354 styles.description=Beskrivning
13161355 styles.floating_node=Flytande gren
1317 styles.idea=Id?
1356 styles.idea=id\u00E9
13181357 styles.important=Viktig
13191358 styles.key=Nyckel
13201359 styles.list=Lista
13351374 submenu_keystroke_in_use_error=Keystroke {0} can not be used for submenu {1}. Keystroke removed.
13361375 svg=SVG
13371376 template_dir=Standard Mallar
1338 TimeListAction.text=Visa schemal\u00E4ggning ...
1339 TimeListAction.tooltip=Visar alla schemalagda tider och ber\u00F6rda grenar.
13401377 TimeManagementAction.text=Visa kalender...
13411378 TimeManagementAction.tooltip=<html>Visar kalendermodulen av Kai Toedter.</html>
13421379 ToggleChildrenFoldedAction.text=Visa/D?lj underliggande grenar
193193 ChangeConnectorShapeAction.LINE.text=\u00C7izgi
194194 ChangeConnectorShapeAction.LINEAR_PATH.text=Do\u011Frusal yol
195195 ChangeNodeLevelLeftsAction.text=d\u00FC\u011F\u00FCm\u00FC ta\u015F\u0131 (Ebeveynlerin karde\u015Fleri)
196 ChangeNodeLevelLeftsAction.tooltip=K\u00F6k sol(s) d\u00FC\u011F\u00FCm/a\u015Fa\u011F\u0131 do\u011Fru kayar. /Yukar\u0131daki karde\u015F \u00E7ocuklar\u0131 olurlar. K\u00F6k sa\u011F\u0131nda(s) d\u00FC\u011F\u00FCm yukar\u0131 do\u011Fru kaym\u0131\u015Ft\u0131r. Do\u011Frudan k\u00F6k, d\u00FC\u011F\u00FCm(ler) taraf de\u011Fi\u015Ftirmek.
196197 ChangeNodeLevelRightsAction.text=D\u00FC\u011F\u00FCm\u00FC (karde\u015Fler \u00E7ocuk) Ta\u015F\u0131
197198 ChangeNodeLevelRightsAction.tooltip=K\u00F6k sa\u011F\u0131nda(s) d\u00FC\u011F\u00FCm/a\u015Fa\u011F\u0131 do\u011Fru kayar. /Yukar\u0131daki karde\u015F \u00E7ocuklar\u0131 olurlar. K\u00F6k sol(s) d\u00FC\u011F\u00FCm yukar\u0131 do\u011Fru kaym\u0131\u015Ft\u0131r. Do\u011Frudan k\u00F6k, d\u00FC\u011F\u00FCm(ler) taraf de\u011Fi\u015Ftirmek.
198199 choose_cloud_color=Bulut Rengini De\u011Fi\u015Ftir:
242243 CopyIDAction.text=D\u00FC\u011F\u00FCm ID kopyala
243244 CopyMapStylesAction.text=Harita stilini kopyala ...
244245 CopyNodeURIAction.text=Kopya d\u00FC\u011F\u00FCm\u00FCn URI
245 copyright=Copyright \u00A9 2000-2018 Freeplane tak\u0131m\u0131 ve di\u011Ferleri
246 copyright=Copyright \u00A9 2000-2019 Freeplane tak\u0131m\u0131 ve di\u011Ferleri
246247 CopySingleAction.text=Kopya d\u00FC\u011F\u00FCm (tek)
247248 CopySingleAction.tooltip=Yaln\u0131zca se\u00E7ilen d\u00FC\u011F\u00FCm\u00FC kopyala
248249 CopyStyleExtensionsAction.text=Stil d\u00FC\u011F\u00FCm\u00FCnden uzant\u0131lar\u0131 kopyala
250 CopySuggestedReferenceAction.text=Yap\u0131land\u0131rma d\u00FC\u011F\u00FCm\u00FC ba\u015Fvurusu
249251 corrupt_map=Harita i\u00E7eri\u011Fi bozuk
250252 CreateConjunctConditionAction.text=Ve
251253 CreateDisjunctConditionAction.text=Veya
255257 decrease_branch_font_size=Yaz\u0131tipini K\u00FC\u00E7\u00FClt
256258 DecreaseNodeFontAction.text=Yaz\u0131tipini K\u00FC\u00E7\u00FClt
257259 default=Varsay\u0131lan
260 defaultAuxiliaryWordList=bir, bu, onun
258261 DefaultColorAction.text=Varsay\u0131lan renk
259262 defaultstyle.attributes=\u00D6znitelikleri
260263 defaultstyle.details=Ayr\u0131nt\u0131lar
273276 dialect_info.unknownApp=Zihin harita dosyas\u0131 {0} bilinmeyen program taraf\u0131ndan olu\u015Fturuldu.
274277 dialect_info.unknownURL=Web sitesi bilinmiyor.
275278 dialect_info.url={0} program\u0131 web sitesi daha fazla bilgi i\u00E7in ziyaret edin.
279 dialect_info.warning=Freeplane a\u00E7abilir, g\u00F6r\u00FCnt\u00FCleyebilir veya yanl\u0131\u015F kaydedin.
276280 DirectHtmlFlavorHandler=HTML olarak tek d\u00FC\u011F\u00FCm
277281 DocumentationAction.text=Belgeler
278282 down=A\u015Fa\u011F\u0131
288292 EdgeStyleAction.bezier.text=E\u011Fri
289293 EdgeStyleAction.bezier.tooltip=<html>Kenar\u0131na d\u00FCz bir e\u011Fri g\u00F6r\u00FCnt\u00FCler.</html>
290294 EdgeStyleAction.hide_edge.text=Kenar\u0131 gizle
295 EdgeStyleAction.hide_edge.tooltip=<html>\u00FCst<br>noktal\u0131 bir \u00E7izgi olarak d\u00FC\u011F\u00FCmleri ekran kenar\u0131ndan se\u00E7ilir. Aksi takdirde</kenar gizlemek.html>
291296 EdgeStyleAction.horizontal.text=Yatay
297 EdgeStyleAction.horizontal.tooltip=<html>kenarlar\u0131 dikey d\u00FCz \u00E7izgiler Kullan\u0131n.</html>
292298 EdgeStyleAction.linear.text=Do\u011Fru
299 EdgeStyleAction.linear.tooltip=<html>d\u00FCz bir \u00E7izgi gibi kenar G\u00F6r\u00FCnt\u00FC.</html>
293300 EdgeStyleAction.sharp_bezier.text=E\u011Friyi keskinle\u015Ftir
294301 EdgeStyleAction.sharp_bezier.tooltip=<html>Kenar keskin u\u00E7lar\u0131 ile d\u00FCz bir e\u011Fri olarak g\u00F6r\u00FCnt\u00FCleyin.</html>
295302 EdgeStyleAction.sharp_linear.text=Do\u011Fruyu keskinle\u015Ftir
333340 enter_keyset_name=K\u0131sayol tu\u015Fu k\u00FCmesi ad\u0131n\u0131 girin
334341 enter_map_url=Harita URL girin
335342 enter_new_style_name=Yeni stil ad\u0131 girin
343 enter_node_id_or_reference=D\u00FC\u011F\u00FCm K\u0130ML\u0130\u011E\u0130 ya da ba\u015Fvuru girin
336344 enter_zoom=B\u00FCy\u00FCtme de\u011Ferini girin
337345 EnterPassword.text=Ge\u00E7i\u015F yap \u015Eifrelenmi\u015F / \u015Eifrelenmemi\u015F
338346 error=Hata
357365 ExportAction.text=D\u0131\u015Fa Aktar
358366 ExportAllPresentationsAction.text=T\u00FCm sunular i\u00E7in PNG g\u00F6r\u00FCnt\u00FCleri d\u0131\u015Fa aktar
359367 ExportBranchAction.text=Dal\u0131 yeni haritaya ta\u015F\u0131...
368 ExportBranchesAction.text=dallar\u0131 d\u0131\u015Far\u0131 aktar...
360369 ExportBranchToHTMLAction.text=Dal\u0131 HTML Olarak Aktar
361370 exported_file={0} dosyas\u0131
362371 ExportPdf.text=PDF olarak...
385394 file_not_accessible={0} Dosya eri\u015Filebilir de\u011Fil
386395 file_not_found={0} bulunamad\u0131
387396 FileListFlavorHandler=Dosyalara ba\u011Flant\u0131lar
397 FileProperties_BranchLeafCount=(Es) se\u00E7ili dal yaprak d\u00FC\u011F\u00FCm say\u0131s\u0131:
388398 FileProperties_BranchNodeCount=(Es) se\u00E7ilen \u015Fube d\u00FC\u011F\u00FCm say\u0131s\u0131:
399 FileProperties_ChangesSinceLastSave=Son kaydetme i\u015Fleminden sonra yap\u0131lan de\u011Fi\u015Fiklikler:
400 FileProperties_FileName=Dosya ad\u0131:
401 FileProperties_FileSaved=Dosya kaydedildi:
402 FileProperties_FileSize=Dosya boyutu:
403 FileProperties_MainBranchCount=Ana \u015Fube say\u0131s\u0131:
404 FileProperties_NeverSaved=Hi\u00E7 kaydedilmedi
389405 FileProperties_NodeChildCount=Se\u00E7ili d\u00FC\u011F\u00FCm (s) \u00E7ocuk say\u0131s\u0131:
390406 FileProperties_NodeSelectionCount=Se\u00E7ili d\u00FC\u011F\u00FCm say\u0131s\u0131:
407 FileProperties_TotalFilteredCount=Filtre tatmin edici d\u00FC\u011F\u00FCm say\u0131s\u0131:
408 FileProperties_TotalLeafCount=Yaprak d\u00FC\u011F\u00FCm say\u0131s\u0131:
391409 FileProperties_TotalNodeCount=D\u00FC\u011F\u00FCm toplam say\u0131s\u0131:
392410 FilePropertiesAction.text=Harita istatistikleri...
411 FileRevisionsDialog.cancel=&\u0130ptal et
412 FileRevisionsDialog.file_last_modified=zaman damgas\u0131
413 FileRevisionsDialog.file_name=Dosya
414 FileRevisionsDialog.file_size=Bayt
415 FileRevisionsDialog.open=&A\u00E7
416 FileRevisionsDialog.open.tooltip=E\u011Fer g\u00FCncel olmasa bile, dosyay\u0131 a\u00E7
417 FileRevisionsDialog.question={0}bulunamad\u0131 d\u00FCzeltmeleri
418 FileRevisionsDialog.restore=restore
419 FileRevisionsDialog.restore.tooltip={1} {0} yerine
420 FileRevisionsDialog.title=Dosya d\u00FCzeltmeleri
393421 filter=F&iltre
394422 filter_add=&Ekle
423 filter_alias=Takma ad
424 filter_and=ve
425 filter_any_text=\u00C7ekirdek, ayr\u0131nt\u0131lar veya not
426 filter_clone_snapshot=Se\u00E7ilen klonlar kaydedildi
427 filter_clones=Se\u00E7im klonlar
395428 filter_conditions=Filtreler
396429 filter_contains=\u0130\u00E7erir
430 filter_created_after=Yaratt\u0131ktan sonra
431 filter_created_before=Olu\u015Fturulan \u00F6nce
397432 filter_delete=&Sil
433 filter_deny=&Reddet
434 filter_deny.tooltip=Se\u00E7imini Tersine \u00C7evir
435 filter_details=Detaylar
436 filter_dialog=Filtre Besteci
398437 filter_does_not_exist=Not Exist[translate me]
438 filter_edit_description=Filtreyi D\u00FCzenle Listesi
439 filter_enter_value=De\u011Fer Girin
399440 filter_even_level=Tek d\u00FCzey d\u00FC\u011F\u00FCm
441 filter_exist=Var
442 filter_global=Genel olarak eri\u015Filebilen d\u00FC\u011F\u00FCm
400443 filter_icon=Icon[translate me]
444 filter_is_equal_to=E\u015Fittir
445 filter_is_not_equal_to=E\u015Fit de\u011Fil
446 filter_leaf=Yaprak D\u00FC\u011F\u00FCm
401447 filter_link=K\u00F6pr\u00FC
448 filter_match_approximately=&Yakla\u015F\u0131k
449 filter_match_approximately.tooltip=<html>yakla\u015F\u0131k bir e\u015Fle\u015Fme izin verip,<br/>yani dosyalar i\u00E7in arama bulacak.</html>
450 filter_match_case=E\u015Fle\u015Fme \u015Eart\u0131
451 filter_modified_after=De\u011Fi\u015Ftirilmi\u015F sonra
452 filter_modified_before=De\u011Fi\u015Ftirilen \u00F6nce
453 filter_no_filtering=(Kald\u0131rmak)Filtreleme
402454 filter_node=\u00C7ekirdek metin
403455 filter_node_level=D\u00FC\u011F\u00FCm d\u00FCzeyi
456 filter_not=&Hay\u0131r
457 filter_note=Not
458 filter_odd_level=D\u00FC\u011F\u00FCm d\u00FCzeyi bile
459 filter_or=O&r
460 filter_parent=Ana metin
461 filter_periodic_level=Periyodik
462 filter_priority=\u00D6ncelik
463 filter_regexp_matches=E\u015Fle\u015Fen regexp
464 filter_reminder=Hat\u0131rlatma
465 filter_reminder_after=sonra zamanlanm\u0131\u015F
466 filter_reminder_before=zamanlanm\u0131\u015F \u00F6nce
467 filter_reminder_executed=zaten ate\u015F
468 filter_reminder_later=zamanlanm\u0131\u015F sonra
404469 filter_root=K\u00F6k D\u00FC\u011F\u00FCm
470 filter_script=Komut dosyas\u0131 filtresi
405471 filter_select=&Se\u00E7in
406472 filter_selected_node_view=Se\u00E7ili d\u00FC\u011F\u00FCmler
407473 filter_selected_node_view_snapshot=Se\u00E7ilen kaydedildi
474 filter_starts_with=Ba\u015Flar
408475 filter_style=Stil
476 filter_time=Tarih filtresi
477 FilterCondition=Filtre ko\u015Fullar\u0131
478 filterConditions=Kullan\u0131c\u0131 tan\u0131ml\u0131 filtreler
479 filterConditions.noActions=\u0130simsiz filtreler
480 filters_not_loaded=S\u00FCzge\u00E7 y\u00FCklenemedi, dosya bozuk
481 find=Bul
409482 find_what=Neyi bul
410483 FindAction.text=Bul
484 FindNextAction.text=Sonrakini bul
485 FindPreviousAction.text=\u00D6nceki bul
486 fit_background_to_page=Sayfaya uygun bir arka plan g\u00F6r\u00FCnt\u00FCs\u00FC
411487 fit_map_to_page=Bir sayfaya s\u0131\u011Fd\u0131r
488 fit_map_to_page_height=Uygun bir sayfa y\u00FCksekli\u011Fi
489 fit_map_to_page_width=Uygun bir sayfa geni\u015Fli\u011Fi
412490 FitToPage.text=Sayfaya S\u0131\u011Fd\u0131rmak i\u00E7in Yak\u0131nla\u015Ft\u0131r
413491 FitToPage.tooltip=Yak\u0131nla\u015Ft\u0131rmay\u0131 t\u00FCm haritan\u0131n \u015Fu anki pencereye s\u0131\u011Fabilece\u011Fi \u015Fekilde de\u011Fi\u015Ftirir.
414492 fold=Daralt
416494 FoldAllAction.tooltip=<html>Se\u00E7ili d\u00FC\u011F\u00FCmleri ve \u00E7ocuklar\u0131n\u0131 daralt\u0131r.</html>
417495 FoldOneLevelAction.text=Bir Seviye Daralt
418496 FoldOneLevelAction.tooltip=<html>Se\u00E7ili d\u00FC\u011F\u00FCmleri bir seviye daralt\u0131r.</html>
497 follow_clone={0} i\u00E7inde"
419498 follow_graphical_link=Go to:[translate me]
420499 FollowLinkAction.text=Ba\u011Flant\u0131y\u0131 takip edin
421500 font=Yaz\u0131tipi
422501 FontFamilyAction.text=yaz\u0131tipi ailesi
423502 FontSizeAction.text=yaz\u0131tipi boyutu
424503 format=Bi\u00E7im
504 format_invalid_pattern=Ge\u00E7ersiz bir desen
425505 format_menu_cloud_shapes=Bulut ekle veya stil de\u011Fi\u015Ftir
426506 format_menu_edge_styles=S\u0131n\u0131r Bi\u00E7emleri
427507 format_menu_edge_widths=S\u0131n\u0131r Geni\u015Flikleri
508 format_panel=Bi\u00E7im
428509 FormatCopy.text=Bi\u00E7imi Kopyala
429510 FormatCopy.tooltip=<html>Bir d\u00FC\u011F\u00FCm\u00FCn bi\u00E7imini kopyalar.</html>
430511 FormatPaste.text=Bi\u00E7imi Yap\u0131\u015Ft\u0131r
431512 FormatPaste.tooltip=<html>Bir d\u00FC\u011F\u00FCm\u00FCn bi\u00E7imini yap\u0131\u015Ft\u0131r\u0131r.</html>
432 formula.error.circularReference=D\u00F6ng\u00FCsel ba\u015Fvuru: d\u00FC\u011F\u00FCm '' {0}'' form\u00FClde kendine ba\u015Fvuruyor.
513 formats_not_loaded=Bi\u00E7imleri y\u00FCklenemedi, dosya bozuk
514 formula.ClearDependenciesAction.text=A\u00E7\u0131k ba\u011F\u0131ml\u0131l\u0131klar\u0131
515 formula.error.attributeValueIsNull={0}" \u00F6znitelik de\u011Feri "de\u011Ferlendirme sonras\u0131 bo\u015F.
516 formula.error.circularReference={1} {0} d\u00FC\u011F\u00FCm\u00FC dairesel referans: form\u00FCl "" kendisi ba\u015Fvuruyor.
517 formula.EvaluateAllAction.text=De\u011Ferlendirme t\u00FCm
433518 formula.EvaluateAllAction.tooltip=Ge\u00E7erli e\u015Flemedeki t\u00FCm form\u00FClleri de\u011Ferlendirin
519 formula.menuname=Form\u00FClleri
520 formula.TraceDependentsAction.text=Etkilenenleri
521 formula.TracePrecedentsAction.text=\u0130zleme Emsal
522 formula_editor=Form\u00FCl D\u00FCzenleme
434523 ForwardAction.text=\u0130leri
524 ForwardAction.tooltip=Se\u00E7in zincirinde ileri atlar
435525 FreeNodeAction.text=Ba\u011F\u0131ms\u0131z konumland\u0131r\u0131lm\u0131\u015F d\u00FC\u011F\u00FCm (Ayarla/S\u0131f\u0131rla)
526 Freeplane.progress.buildScreen=Ekran Yap\u0131...
527 Freeplane.progress.createController=Denetleyicisi olu\u015Fturmak...
528 Freeplane.progress.createInitialMode=\u0130lk modu olu\u015Fturun.
529 Freeplane.progress.endStartup=Ba\u015Flang\u0131\u00E7 biti\u015F.
530 Freeplane.progress.gettingPreferenceDirectories=Dizinleri tercih etmek...
531 Freeplane.progress.gettingPreferences=Tercihler al\u0131n\u0131yor...
436532 Freeplane.progress.loadMaps=Haritalar y\u00FCkle...
533 Freeplane.progress.settingPreferences=Tercihler ayar...
534 Freeplane.progress.startCreateController=Denetleyici olu\u015Fturmaya ba\u015Fla.
535 Freeplane.progress.updateLookAndFeel=G\u00F6r\u00FCn\u00FCm ve his g\u00FCncelle...
437536 freeplane_reverted=Freeplane_Eski_Hali_
537 FreeplaneHandbook.text=Freeplane El Kitab\u0131
438538 FreeplaneHelpStarter.text=Yard\u0131m...
439539 FreeplaneHelpStarter.tooltip=Freeplane Geni\u015Fletilmi\u015F Yard\u0131m
540 globally_accessible=Genel olarak eri\u015Filebilen
541 goto=Goto[translate me]
440542 goto.noActions=Hedef d\u00FC\u011F\u00FCm yok
441543 GotoLinkNodeAction.text=Ba\u011Flant\u0131ya Git
544 GotoNodeAction.text=D\u00FC\u011F\u00FCme git...
442545 GrabKeyDialog.common.cancel=\u0130ptal
443546 GrabKeyDialog.common.ok=Tamam
444547 GrabKeyDialog.grab-key.assigned-to=Atanm\u0131\u015F
447550 GrabKeyDialog.grab-key.remove=Kald\u0131r
448551 GrabKeyDialog.grab-key.remove-ask=Bu k\u0131sayolu kald\u0131rmak istedi\u011Finizden emin misiniz?
449552 GrabKeyDialog.grab-key.title=Yeni tu\u015Fu girin
553 green=Ye\u015Fil
450554 help=Yard\u0131m
555 HideableAction.tooltip=<html>her de\u011Fi\u015Fen d\u00FC\u011F\u00FCm arka plan</html>
556 HideAllAttributesAction.text=T\u00FCm \u00F6zellikleri gizle
451557 HierarchicalIconsAction.text=Simgeleri hiyerar\u015Fik g\u00F6ster
452558 HierarchicalIconsAction.tooltip=E\u011Fer \u00E7ocuk ve torunlar\u0131mdan birinin simgesi varsa, ben de bunu k\u00FC\u00E7\u00FClt\u00FClm\u00FC\u015F olarak g\u00F6steririm.
559 hot_keys=S\u0131cak tu\u015Flar
560 hot_keys_table=S\u0131cak tu\u015Flar tablosu
561 HotKeyInfoAction.text=Ba\u015Fvuru Anahtar\u0131
453562 html_export_based_on_headings=HTML Olarak D\u0131\u015Fa Aktar - Ba\u015Fl\u0131klara g\u00F6re
454563 html_export_fold_all=HTML Olarak D\u0131\u015Fa Aktar - T\u00FCm\u00FCn\u00FC daralt
455564 html_export_fold_currently_folded=HTML Olarak D\u0131\u015Fa Aktar - \u015Eu ankiler daralt\u0131lm\u0131\u015F
456565 html_export_no_folding=HTML Olarak D\u0131\u015Fa Aktar - Daraltmadan
566 html_problem=<html>html<br><br>getirebilirsiniz{0}
457567 icon_0%=0%[translate me]
458568 icon_100%=100%[translate me]
569 icon_25%=%25
570 icon_50%=50%
571 icon_75%=%75
572 icon_addition=Ek
459573 icon_attach=Buraya bak
574 icon_audio=Ses
460575 icon_back=Geri
461576 icon_bee=Freeplane[translate me]
462577 icon_bell=Hat\u0131rla
465580 icon_button_cancel=\u0130ptal
466581 icon_button_ok=Tamam
467582 icon_calendar=Tarih
583 icon_checked=Kontrol
468584 icon_clanbomber=Tehlikeli
585 icon_clock=Zaman
586 icon_clock2=Hat\u0131rlatma
469587 icon_closed=No Entry[translate me]
470588 icon_decrypted=Unlocked[translate me]
471589 icon_desktop_new=Unutma
590 icon_division=B\u00F6l\u00FCm
591 icon_down=A\u015Fa\u011F\u0131
592 icon_edit=Rafine
593 icon_encrypted=Kilitli
594 icon_executable=Y\u00FCr\u00FCt\u00FClebilir
595 icon_family=Aile
596 icon_fema=Erkek & Kad\u0131n
472597 icon_female1=Female1[translate me]
473598 icon_female2=Female2[translate me]
599 icon_females=Kad\u0131n
474600 icon_flag=Bayrak
475601 icon_flag-black=Black Flag[translate me]
602 icon_flag-blue=Mavi Bayrak
603 icon_flag-green=Ye\u015Fil Bayrak
604 icon_flag-orange=Turuncu Bayrak
476605 icon_flag-pink=Pink Flag[translate me]
606 icon_flag-yellow=Sar\u0131 Bayrak
607 icon_folder=Klas\u00F6r
477608 icon_forward=\u0130leri
478609 icon_freemind_butterfly=FreeMind[translate me]
610 icon_full-0=\u00D6ncelik 0
479611 icon_full-1=\u00D6ncelik 1
480612 icon_full-2=\u00D6ncelik 2
481613 icon_full-3=\u00D6ncelik 3
483615 icon_full-5=\u00D6ncelik 5
484616 icon_full-6=\u00D6ncelik 6
485617 icon_full-7=\u00D6ncelik 7
618 icon_full-8=\u00D6ncelik 8
619 icon_full-9=\u00D6ncelik 9
620 icon_go=Ye\u015Fil Trafik I\u015F\u0131\u011F\u0131
486621 icon_gohome=Ev
622 icon_group=Grup
487623 icon_help=Soru
624 icon_hourglass=Bekliyor
625 icon_icon_not_found=Simge bulunamad\u0131
488626 icon_idea=Fikir
627 icon_image=G\u00F6r\u00FCnt\u00FC
489628 icon_info=Info[translate me]
629 icon_internet=\u0130nternet
630 icon_internet_warning=Internet uyar\u0131
490631 icon_kaddressbook=Telefon
632 icon_kmail=E-Posta
491633 icon_knotify=Muzik
492634 icon_korn=Posta Kutusu
493635 icon_ksmiletris=Mutluyum
636 icon_launch=Ba\u015Flat
494637 icon_licq=\u0130yi
495638 icon_list=List[translate me]
496639 icon_Mail=Posta
497640 icon_male1=Male1[translate me]
498641 icon_male2=Male2[translate me]
642 icon_males=Erkek
499643 icon_menu=Simgeler
500644 icon_messagebox_warning=\u00D6nemli
501645 icon_mindmap=Zihin Haritas\u0131
646 icon_multiplication=\u00C7arpma
647 icon_narrative=Anlat\u0131
648 icon_negative=Negatif
649 icon_neutral=N\u00F6tr
502650 icon_password=Anahtar
503651 icon_pencil=D\u00FCzeltilecek
504652 icon_penguin=Linux
653 icon_positive=Olumlu
654 icon_prepare=Sar\u0131 Trafik I\u015F\u0131\u011F\u0131
655 icon_revision=Revizyon
656 icon_revision-green=Revizyon ye\u015Fil
657 icon_revision-pink=Revizyon pembe
658 icon_revision-red=Revizyon k\u0131rm\u0131z\u0131
659 icon_smiley-angry=K\u0131zg\u0131n
505660 icon_smiley-neutral=No Mind[translate me]
661 icon_smiley-oh=\u015Ea\u015F\u0131rt\u0131c\u0131
662 icon_smily_bad=Hi\u00E7 e\u011Flenmedim
506663 icon_stop=Dur
664 icon_stop-sign=Dur
665 icon_subtraction=\u00C7\u0131karma
666 icon_unchecked=Kontrols\u00FCz
667 icon_up=Yukar\u0131
668 icon_user_icon=Kullan\u0131c\u0131 simgeleri
669 icon_very_negative=\u00C7ok Olumsuz
670 icon_very_positive=\u00C7ok Olumlu
671 icon_video=Video
507672 icon_wizard=Sihir
508673 icon_xmag=Tart\u0131\u015F\u0131lacak
509674 icon_yes=\u00D6nemli
675 IconGroupPopupAction.arrows.text=Ok
676 IconGroupPopupAction.docs_folders.text=Belgeler Ve Klas\u00F6rler
677 IconGroupPopupAction.flags.text=Bayraklar
678 IconGroupPopupAction.math.text=Matematik
679 IconGroupPopupAction.media.text=Ortam
680 IconGroupPopupAction.miscellaneous.text=Muhtelif
681 IconGroupPopupAction.nature.text=Do\u011Fa
682 IconGroupPopupAction.numbers.text=Numaralar\u0131
510683 IconGroupPopupAction.office.text=Office[translate me]
684 IconGroupPopupAction.people.text=\u0130nsanlar
685 IconGroupPopupAction.rating.text=\u0130zlenme oran\u0131
686 IconGroupPopupAction.signs.text=\u0130\u015Faretler
511687 IconGroupPopupAction.smiley.text=Smiley[translate me]
688 IconGroupPopupAction.time.text=Zaman
689 IconGroupPopupAction.user.text=Kullan\u0131c\u0131 simgeleri
690 IconProgressExtended10Action.text=Geni\u015Fletilmi\u015F ilerleme %10
691 IconProgressExtended10Action.tooltip=<html><%10 \u00E7ift sol t\u0131klama \u00FCzerine artan ilerlemenin bir g\u00F6stergesi Ekler.br>Kontrol + \u00E7ift t\u0131klayarak azalt\u0131r/ kald\u0131r\u0131r</sol.html>
692 IconProgressExtended25Action.text=Geni\u015Fletilmi\u015F ilerleme %25
693 IconProgressExtended25Action.tooltip=<html><%25 \u00E7ift sol t\u0131klama \u00FCzerine artan ilerlemenin bir g\u00F6stergesi Ekler.br> Kontrol + \u00E7ift t\u0131klayarak azalt\u0131r/ kald\u0131r\u0131r</sol.html>
694 IconProgressIconDownAction.text=A\u015Fa\u011F\u0131 ilerleme
695 IconProgressIconDownAction.tooltip=Azal\u0131r/ ekler/ (100% -devam eden simgeler 0> % 25% > 75% -> 50% ---> > kald\u0131rmak kald\u0131r\u0131r.
696 IconProgressIconUpAction.text=\u0130lerleme yukar\u0131
697 IconProgressIconUpAction.tooltip=(0% -)/ ilerleme simgeler ekler art\u0131r\u0131r 100% + TAMAM> 75% > 25% -> 50% --> .
698 IconProgressRemoveAction.text=\u0130lerleme Kald\u0131r
699 IconProgressRemoveAction.tooltip=\u0130lerleme simgeleri ve geni\u015Fletilmi\u015F ilerleme simgesini kald\u0131r\u0131r.
700 icons=Simgeler
512701 IconSelectionPlugin.text=Simge Se\u00E7...
513702 IconSelectionPlugin.tooltip=<html>Burada alt pencere kullanarak simge se\u00E7ebilirsiniz.</html>
514703 image_covertLink=Ba\u011Flant\u0131y\u0131 g\u00F6r\u00FCnt\u00FCye d\u00F6n\u00FC\u015Ft\u00FCr
704 ImageFlavorHandler=(Ayr\u0131 bir dosya)resim
515705 import=\u0130\u00E7e Aktar
516706 import_linked_branch_no_link=Se\u00E7ili d\u00FC\u011F\u00FCm\u00FCn i\u00E7e aktar\u0131lacak ba\u011Flant\u0131s\u0131 yok.
517707 ImportAction.text=\u0130\u00E7e harita Aktar
521711 ImportLinkedBranchAction.text=Ba\u011Flant\u0131l\u0131 Dal\u0131 \u0130\u00E7e Aktar
522712 ImportLinkedBranchWithoutRootAction.text=K\u00F6k Olmadan \u0130\u00E7e Aktar
523713 ImportMindmanagerFiles.text=MindManager X5 Haritas\u0131...
714 ImportXmlFile.text=xml dosyas\u0131 i\u00E7eri aktar
524715 increase_branch_font_size=Yaz\u0131tipini B\u00FCy\u00FClt
525716 IncreaseNodeFontAction.text=Yaz\u0131tipini B\u00FCy\u00FClt
717 internal_error.tooltip=\u0130\u00E7 hata olu\u015Ftu. En son g\u00FCnl\u00FCk dosyas\u0131 oturum a\u00E7\u0131n.Daha fazla bilgi i\u00E7in 0.
718 invalid_export_file=Ge\u00E7ersiz dosya ad\u0131
719 invalid_file_msg=Olamaz"t {0}i\u00E7in dosya bul
720 invalid_or_ambiguous_reference={0} ge\u00E7ersiz veya belirsiz ba\u015Fvuru"
721 invalid_uri=Ge\u00E7ersiz URI {0}
722 invalid_url=Ge\u00E7erli URL olu\u015Fturulamad\u0131
723 invalid_url_msg=T {0}ge\u00E7erli bir URL olu\u015Fturulamad\u0131"
526724 ItalicAction.text=Yat\u0131k
527725 italicise_branch=Yat\u0131kla\u015Ft\u0131r
726 java_version={0}Java s\u00FCr\u00FCm\u00FC:
528727 JoinNodesAction.separator.format={0} "ile d\u00FC\u011F\u00FCmleri kat\u0131l
529728 lastOpenedMaps=En son haritalar\u0131
530729 lastOpenedMaps.noActions=Ge\u00E7mi\u015Fte hi\u00E7 harita yok
730 latex_editor=Edit LaTeX Form\u00FCl
731 LatexDeleteLatexAction.text=LaTeX form\u00FCl Kald\u0131r
732 LatexEditLatexAction.text=Edit LaTeX Form\u00FCl...
733 LatexInsertLatexAction.msg1=<html>LaTeX form\u00FCl i eski </i><eklemeye \u00E7al\u0131\u015F\u0131yoruz<html>.Lateks metin/form\u00FCller olu\u015Fturmak i\u00E7in br/>Bu sayfada tarif:</html>
734 LatexInsertLatexAction.msg2=<html>K\u0131sacas\u0131: <ul><li>d\u00FC\u011F\u00FCm metin veya</li><li><\u00C7ekirde\u011Fi metin <i>-> Ara\u00E7 paneli </i>, sonra G\u00F6r\u00FCn\u00FCm->Bi\u00E7im->Lateks" lateks " \u00F6neki kullan\u0131n</i></li></ul></html>
735 LatexInsertLatexAction.text=LaTeX form\u00FCl Ekle...
736 latexPatternFormat=LaTeX
737 LengthUnits.cm=cm
738 LengthUnits.in=i\u00E7inde
739 LengthUnits.mm=mm
740 LengthUnits.pt=nk
741 LengthUnits.px=px
531742 less_than_two_selected_nodes=Ba\u011Flant\u0131 olu\u015Fturmak i\u00E7in en az iki d\u00FC\u011F\u00FCm se\u00E7melisiniz.
743 license=License: GPL 2 or later
744 license_text=<html>Bu program \u00F6zg\u00FCr yaz\u0131l\u0131md\u0131r; \u00D6zg\u00FCr Yaz\u0131l\u0131m Vakf\u0131 taraf\u0131ndan yay\u0131nlanan ve/veya<br>GNU Genel Kamu Lisans\u0131<br>ko\u015Fullar\u0131 alt\u0131nda de\u011Fi\u015Ftirebilirsiniz, Lisans her iki s\u00FCr\u00FCm 2<br>ya da (sizin se\u00E7iminize) herhangi bir sonraki s\u00FCr\u00FCm\u00FC yeniden<.br><br>Bu program faydal\u0131 olaca\u011F\u0131 umuduyla da\u011F\u0131t\u0131lmaktad\u0131r,<br>ama HERHANG\u0130 bir GARANT\u0130 OLMADAN;<BEL\u0130RL\u0130 B\u0130R AMACA br>ticari ELVER\u0130\u015EL\u0130L\u0130K ya da UYGUNLUK z\u0131mni garanti bile olmadan. <Daha fazla bilgi i\u00E7in<br>GNU Genel Kamu Lisans\u0131.br><br>Bu programla birlikte GNU Genel Kamu Lisans\u0131<br>bir kopyas\u0131n\u0131 alm\u0131\u015F olmal\u0131s\u0131n\u0131z; e\u011Fer de\u011Filse, \u00D6zg\u00FCr Yaz\u0131l\u0131m<br>Foundation, Inc. yazmak, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
745 link_error=De\u011Fil{0} yanl\u0131\u015F ba\u011Flant\u0131 "" dolu
532746 link_not_available_any_more=Ba\u011Flant\u0131 art\u0131k ge\u00E7erli de\u011Fil. Aradaki d\u00FC\u011F\u00FCm silinmi\u015F.
533747 link_not_found={0} ba\u011Flant\u0131 bulunamad\u0131.
534748 links=Ba\u011Flant\u0131
749 load=&Y\u00FCkle
750 load_accelerator_presets=Y\u00FCkle
751 load_accelerator_presets.noActions=Haz\u0131r de\u011Fil
752 LoadAcceleratorPresetsAction.textPatterns.text=Metin Desenleri
535753 locking_failed_by_open={0} haritas\u0131n\u0131n kilitlenmesi ba\u015Far\u0131s\u0131z oldu. Salt okunur olarak a\u00E7\u0131l\u0131yor.
536754 locking_failed_by_save_as={0} haritas\u0131n\u0131n kilitlenmesi ba\u015Far\u0131s\u0131z oldu. Farkl\u0131 Kaydetme \u0130ptal Edildi.
537755 locking_old_lock_removed={0} haritas\u0131 {1} kullan\u0131c\u0131s\u0131 tarafondan kilitlenmi\u015Ftir. Eski oldu\u011Fu i\u00E7in kilit kald\u0131r\u0131lm\u0131\u015Ft\u0131r.
538756 long_node_changed_cancel=D\u00FC\u011F\u00FCm\u00FC dei\u011Fi\u015Ftirdiniz. De\u011Fi\u015Fiklikleri silmek istedi\u011Finizden emin misiniz?
539757 long_node_changed_submit=D\u00FC\u011F\u00FCm de\u011Fi\u015Fti. De\u011Fi\u015Fiklikleri kaydetmek istiyor musunuz?
540758 lots_of_links_warning=Bir d\u00FC\u011F\u00FCme bir\u00E7ok ba\u011Flant\u0131 yapacaks\u0131n\u0131z. Emin misiniz?
759 main_menu=Men\u00FC
760 main_resource_directory=y\u00FCkleme kaynaklar\u0131: {0}
761 MainView.errorUpdateText={1} {0} a\u015Fa\u011F\u0131daki giri\u015F: metin ayar hatas\u0131.
762 MakeLinkFromAnchorAction.text=\u00C7apa ba\u011Flant\u0131 yapmak
763 MakeLinkFromAnchorAction.tooltip=<html>se\u00E7ili d\u00FC\u011F\u00FCm</html><br/>\u00E7apa d\u00FC\u011F\u00FCmden yerel veya genel bir ba\u011Flant\u0131 olu\u015Fturmak
764 MakeLinkToAnchorAction.text=Ba\u011Flant\u0131 \u00E7apa yapmak
765 MakeLinkToAnchorAction.tooltip=<html>yerel ya da k\u00FCresel bir<br/>ba\u011Flant\u0131 \u00E7apa d\u00FC\u011F\u00FCm se\u00E7ili not olu\u015Ftur</html>
766 ManageAddOnsAction.text=Eklentiler
767 ManageAddOnsDialog.activate=Etkinle\u015Ftirmek
768 ManageAddOnsDialog.activation.success={0} yeniden ba\u015Flatmadan sonra aktif olacakt\u0131r.
769 ManageAddOnsDialog.authored.by=taraf\u0131ndan {0}
770 ManageAddOnsDialog.cannot.activate={0} olamaz etkinle\u015Ftirme: zaten aktif.
771 ManageAddOnsDialog.cannot.configure={0} yap\u0131land\u0131ramaz.
772 ManageAddOnsDialog.cannot.deactivate={0} olmaz devre d\u0131\u015F\u0131: etkin de\u011Fil.
773 ManageAddOnsDialog.cannot.deinstall={0} kald\u0131r\u0131lam\u0131yor.
774 ManageAddOnsDialog.configure=Yap\u0131land\u0131rma
775 ManageAddOnsDialog.deactivate=Pasifle\u015Ftir
776 ManageAddOnsDialog.deactivation.success={0} yeniden ba\u015Flatmadan sonra aktif olacakt\u0131r.
777 ManageAddOnsDialog.deinstall=Kad\u0131r
778 ManageAddOnsDialog.deinstallation.success={0} bir yeniden ba\u015Flatma sonra kald\u0131r\u0131lacak.
779 ManageAddOnsDialog.error={0} y\u00FCkleme: hata.
780 ManageAddOnsDialog.install=&Y\u00FCkle
781 ManageAddOnsDialog.install.from.known.location=Eklenti bilinen bir konumdan y\u00FCkle-
782 ManageAddOnsDialog.install.tooltip=Bir ekleme bir URL y\u00FCkleme dosyas\u0131n\u0131 buraya Ekle
541783 ManageAddOnsDialog.map.not.opened=Harita {0} a\u00E7\u0131lacak g\u00F6r\u00FCnm\u00FCyor.
784 ManageAddOnsDialog.really.deinstall={0} ger\u00E7ekten kald\u0131r?
785 ManageAddOnsDialog.search=Arama eklentileri
786 ManageAddOnsDialog.search.file=Arama
787 ManageAddOnsDialog.select.tooltip=Dosya se\u00E7
788 ManageAddOnsDialog.status.downloading=Dosya indiriliyor...
789 ManageAddOnsDialog.status.installing=Eklenti y\u00FCkleniyor...
790 ManageAddOnsDialog.status.success={0} Ba\u015Far\u0131yla kuruldu.
791 ManageAddOnsDialog.tab.install=Arama ve y\u00FCkleme
542792 ManageAddOnsDialog.tab.install.tooltip=Aramak ve kurmak i\u00E7in Yeni Eklenti
793 ManageAddOnsDialog.tab.manage=Eklentiler
794 ManageAddOnsDialog.tab.manage.themes=Temalar
795 ManageAddOnsDialog.tab.manage.themes.tooltip=Y\u00FCkl\u00FC temalar\u0131 y\u00F6net
796 ManageAddOnsDialog.tab.manage.tooltip=Y\u00FCkl\u00FC eklentileri y\u00F6net
797 ManageAddOnsDialog.visit.addon.page=Eklenti sayfas\u0131n\u0131 ziyaret et...
543798 ManageConditionalStylesAction.text=Harita i\u00E7in Ko\u015Fullu stilleri Y\u00F6net
544799 ManageNodeConditionalStylesAction.text=D\u00FC\u011F\u00FCm i\u00E7in Ko\u015Fullu stilleri Y\u00F6net
545800 map_already_exists=Harita zaten var. \u00DCzerine yazmak ister misiniz?
556811 maps=Haritalar
557812 MaxNodeWidth.text=En fazla d\u00FC\u011F\u00FCm geni\u015Fli\u011Fini ayarla
558813 menu_applyStyle=Stil uygulama
814 menu_attributes=&\u00D6zniteli\u011Fi
815 menu_clouds=Clouds[translate me]
816 menu_copy=Kopyala
559817 menu_coreFormat=\u00C7ekirdek d\u00FC\u011F\u00FCm
818 menu_details=Detaylar
560819 menu_displayAttributes=D\u00FC\u011F\u00FCm \u00F6znitelikleri
820 menu_encryption=\u015Eifre korumas\u0131
821 menu_error={0} hatas\u0131, kullan\u0131c\u0131 tan\u0131ml\u0131 men\u00FC yap\u0131s\u0131:\n{1}\n\u0130ptal
822 menu_extensions=D\u00FC\u011F\u00FCm \u00F6zellikleri
561823 menu_group=D\u00FC\u011F\u00FCm grubu
824 menu_hoverView=Ara\u00E7 ipu\u00E7lar\u0131
825 menu_iconByCategory=Kategori simgesi...
826 menu_iconView=Simgeler
827 menu_image=G\u00F6r\u00FCnt\u00FC
562828 menu_insert=Ekle
829 menu_latex_formula=LaTeX form\u00FCl
563830 menu_manageStyles=&Stilleri Y\u00F6net
564831 menu_moveNode=Ta\u015F\u0131 ve s\u0131rala
565832 menu_newNode=Yeni d\u00FC\u011F\u00FCm
569836 menu_nodeView=\u00C7ekirdek D\u00FC\u011F\u00FCm
570837 menu_noteView=Notlar
571838 menu_openmaps=Haritalar
839 menu_remove_icons=Simgeleri kald\u0131r
840 menu_removeAttribute=\u00D6znitelikleri kald\u0131r
841 menu_select=Se\u00E7in
842 menu_time=Zaman y\u00F6netimi
572843 menu_title=\u00C7ekirdek D\u00FC\u011F\u00FCm
844 menu_viewmode=G\u00F6r\u00FCn\u00FCm ayarlar\u0131
845 MenuUtils.invalid_menuitem={0} ge\u00E7erli men\u00FC \u00F6\u011Fesi bir anahtar de\u011Fildir.
573846 mindmap=Harita
574847 MindMapNodesFlavorHandler=D\u00FC\u011F\u00FCm hiyerar\u015Fisi
575848 mindmaps=&Haritalar
576849 mindmaps_desc=Haritalar (* .mm)
577850 mindmaps_filter_desc=Filtreler (*.mmfilter)
578851 MinNodeWidth.text=Minimum d\u00FC\u011F\u00FCm geni\u015Fli\u011Fi ayarla
852 mode_Browse=G\u00F6zat modu
853 mode_File=Dosya modu
579854 mode_MindMap=Zihin haritas\u0131 modu
580855 mode_na=Mod uygun de\u011Fil
581856 mode_status={0} Moduna ge\u00E7ildi
583858 mode_title=Freeplane - {0} Modu
584859 modes=Modlar
585860 ModesMenuAction.Browse.text=Harita taray\u0131c\u0131
861 ModesMenuAction.File.text=Dosya gezgini
586862 ModesMenuAction.MindMap.text=Zihin haritas\u0131 edit\u00F6r\u00FC
587863 most_recent_files=En son haritalar
864 MoveAction.text=Ta\u015F\u0131
588865 MoveSelectedNodeAction.CENTER.text=Merkezi d\u00FC\u011F\u00FCm se\u00E7ili
589866 MoveSelectedNodeAction.EAST.text=Sa\u011Fa se\u00E7ili d\u00FC\u011F\u00FCm ta\u015F\u0131y\u0131n
590867 MoveSelectedNodeAction.WEST.text=Se\u00E7ili d\u00FC\u011F\u00FCm sola ta\u015F\u0131r
591868 MoveToRootAction.text=K\u00F6ke ta\u015F\u0131
869 NameConditionAction.text=Ad\u0131 ayarlay\u0131n
592870 navigate=Git
593871 NavigationNextMapAction.text=Sonraki Harita
594872 NavigationPreviousMapAction.text=\u00D6nceki Harita
605883 NewerFileRevisionsFoundDialog.file_name=Dosya
606884 NewerFileRevisionsFoundDialog.file_size=bytes
607885 NewerFileRevisionsFoundDialog.open=&A\u00E7
886 NewerFileRevisionsFoundDialog.open.tooltip=G\u00FCncel olmasa bile, dosyay\u0131 a\u00E7
608887 NewerFileRevisionsFoundDialog.question={0} yeni d\u00FCzenlemeler bulunamad\u0131!
888 NewerFileRevisionsFoundDialog.restore=restore
609889 NewerFileRevisionsFoundDialog.restore.tooltip={1} {0} yerine
890 NewerFileRevisionsFoundDialog.title=Yeni dosya d\u00FCzeltmeleri bulunamad\u0131!
610891 NewFreeNodeAction.text=Yeni y\u00FCzen d\u00FC\u011F\u00FCm
611892 NewLevelStyleAction.text=Seviye stil ekleyin
893 newmap.install.addon.question={0} paketi bir eklenti gibi g\u00F6r\u00FCn\u00FCyor \nY\u00FCklemek istiyor musunuz?\nHay\u0131r normal a\u00E7\u0131k ("\u0131 se\u00E7in.)
612894 newmap.install.addon.title=Eklenti y\u00FCklemek?
613895 NewMapAction.text=Yeni harita
614896 NewMapViewAction.text=Yeni harita g\u00F6r\u00FCn\u00FCm\u00FC
620902 NewUserStyleAction.text=Yeni stil se\u00E7imi
621903 NextNodeAction.BACK.text=\u00D6nceki d\u00FC\u011F\u00FCme git
622904 NextNodeAction.FORWARD.text=Bir sonraki d\u00FC\u011F\u00FCme git
905 NextNodeAction.FORWARD_N_FOLD.text=Bir sonraki d\u00FC\u011F\u00FCm git (Kat)
623906 no=Hay\u0131r
907 NO_FORMAT=Metin
624908 no_format_copy_before_format_paste=\u00D6nce bir bi\u00E7im kopyalamal\u0131s\u0131n\u0131z.
625 no_found_from=<html>"{1}"''de hi\u00E7 "{0}" bulunamad\u0131.</html>
909 no_found_from=<html>de hi\u00E7 <u>{0}</u> bulunamad\u0131 "{1}"''dan.</html>
626910 no_more_found_from=<html>art\u0131k <u>{0}</u> {1} "bulundu".</html>
627911 no_previous_find=\u00D6nceki bulunamad\u0131.
628912 no_styles_found_in_map=Haritada stil bulunamad\u0131
629913 node=D\u00FC\u011F\u00FCm
914 node_alias=D\u00FC\u011F\u00FCm takma ad:
630915 node_changed_discard_changes=D\u00FC\u011F\u00FCm\u00FC dei\u011Fi\u015Ftirdiniz. De\u011Fi\u015Fiklikleri silmek istedi\u011Finizden emin misiniz?
631916 node_is_write_protected=Hedef d\u00FC\u011F\u00FCm yazmaya kar\u015F\u0131 korumas\u0131 var.
632917 node_location_help=Konumu, ctrl+s\u00FCr\u00FCkleme de\u011Fi\u015Fiklikler mesafeler, \u00E7ift t\u0131klay\u0131n ve ctrl+d\u00FC\u011F\u00FCm s\u00FCr\u00FCkleyerek de\u011Fi\u015Fiklikleri \u00E7ift t\u0131klayarak onlar\u0131 s\u0131f\u0131rlay\u0131n.
7161001 OptionPanel.display_inline_editor_for_all_new_nodes=T\u00FCm yeni d\u00FC\u011F\u00FCmler i\u00E7in sat\u0131r i\u00E7i d\u00FCzenleyici
7171002 OptionPanel.edgestyle=Kenar stili
7181003 OptionPanel.edgewidth.tooltip=\u00DCst d\u00FC\u011F\u00FCm (kenar \u00F6zelli\u011Fi de t\u00FCm alt d\u00FC\u011F\u00FCmler i\u00E7in uygulan\u0131r)
719 OptionPanel.editor_extra_width.tooltip=e\u011Fer metin, ge\u00E7erli geni\u015Flik uzan\u0131yorsa <html>bir d\u00FC\u011F\u00FCm geni\u015Fli\u011Fini art\u0131rmak i\u00E7in piksel say\u0131s\u0131</Belirler.html>
1004 OptionPanel.editor_extra_width.tooltip=<html>E\u011Fer metin, ge\u00E7erli geni\u015Flik uzan\u0131yorsa bir d\u00FC\u011F\u00FCm geni\u015Fli\u011Fini art\u0131rmak i\u00E7in piksel say\u0131s\u0131.</html>
7201005 OptionPanel.el=El[translate me]
7211006 OptionPanel.el__enter_confirms_by_default=Onaylar\u0131 Varsay\u0131lan Olarak Gir
7221007 OptionPanel.el__max_default_window_height=Mak Varsay\u0131lan Pencere Y\u00FCksekli\u011Fi
9041189 PatternToString.Icon=Icon[translate me]
9051190 plugins/ScriptEditor.exit=&Kaydet ve \u00E7\u0131k
9061191 plugins/ScriptEditor.new_script=Yeni komut
907 plugins/TimeList.xml_Created=Olu\u015Fturma
908 plugins/TimeList.xml_Date=Tarih
909 plugins/TimeList.xml_Icons=Simgeler
910 plugins/TimeList.xml_Modified=De\u011Fi\u015Ftirme
911 plugins/TimeList.xml_Notes=Notlar
912 plugins/TimeList.xml_Text=Yaz\u0131
913 plugins/TimeManagement.xml_appendButton=Se\u00E7ili D\u00FC\u011F\u00FCmlere Tarihi Ekle
914 plugins/TimeManagement.xml_Cancel=\u0130ptal
915 plugins/TimeManagement.xml_cancelButton=\u0130ptal
916 plugins/TimeManagement.xml_Goto=Goto[translate me]
917 plugins/TimeManagement.xml_hour=Saat:
918 plugins/TimeManagement.xml_minute=Dakika:
919 plugins/TimeManagement.xml_reminderButton=Bana Bu Zamanda Hat\u0131rlat
920 plugins/TimeManagement.xml_reminderButton.tooltip=<html>Bas\u0131ld\u0131\u011F\u0131nda verilen tarihe bir zamanlay\u0131c\u0131 ayarlan\u0131r. Zaman\u0131 gelince yan\u0131p s\u00F6nerek dikkatinizi \u00E7eker.<br> Haritay\u0131 kapat\u0131rsan\u0131z, tekrar a\u00E7t\u0131\u011F\u0131n\u0131zda zamanlay\u0131c\u0131lar yine aktif olacakt\u0131r.</html>
921 plugins/TimeManagement.xml_reminderNode.tooltip=Hat\u0131rlat\u0131c\u0131 {0,date} {0,time} zaman\u0131na ayarland\u0131.
922 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Her d\u00FC\u011F\u00FCm i\u00E7in yaln\u0131zca bir hat\u0131rlat\u0131c\u0131 ayarlanabilir. <br>\u015Eu anki hat\u0131rlat\u0131c\u0131 {0,date} {0,time} zaman\u0131na ayarl\u0131, sizin se\u00E7ti\u011Finiz zaman {1,date} {1,time}. <br><br>D\u00FC\u011F\u00FCm\u00FCn hat\u0131rlatma zaman\u0131n\u0131 de\u011Fi\u015Ftirmek istiyor musunuz (EVET) <br>yoksa eskisi mi kals\u0131n (Hay\u0131r)?</html>
923 plugins/TimeManagement.xml_removeReminderButton=Hat\u0131rlat\u0131c\u0131y\u0131 Kald\u0131r
924 plugins/TimeManagement.xml_removeReminderButton.tooltip=Se\u00E7ili d\u00FC\u011F\u00FCmlerle ilgili t\u00FCm hat\u0131rlat\u0131c\u0131lar\u0131 kald\u0131r.
925 plugins/TimeManagement.xml_todayButton=Bug\u00FCn
926 plugins/TimeManagement.xml_WindowTitle=Zaman Y\u00F6netimi
9271192 preferences=Se\u00E7enekler
9281193 print_preview_title=Bask\u0131 \u00D6nizlemesi
9291194 PrintAction.text=Yazd\u0131r...
9361201 RedefineStyleAction.text=Stili Yeniden Tan\u0131mla
9371202 RedoAction.text=Yinele
9381203 RedoFilterAction.text=Yinele
1204 reminder.appendButton=Se\u00E7ili D\u00FC\u011F\u00FCmlere Tarihi Ekle
1205 reminder.Cancel=\u0130ptal
1206 reminder.cancelButton=\u0130ptal
1207 reminder.Created=Olu\u015Fturma
1208 reminder.Goto=Goto[translate me]
1209 reminder.hour=Saat:
1210 reminder.Icons=Simgeler
1211 reminder.Map=Harita
1212 reminder.minute=Dakika:
1213 reminder.Modified=De\u011Fi\u015Ftirme
1214 reminder.Notes=Notlar
1215 reminder.reminderButton=Bana Bu Zamanda Hat\u0131rlat
1216 reminder.reminderButton.tooltip=<html>Bas\u0131ld\u0131\u011F\u0131nda verilen tarihe bir zamanlay\u0131c\u0131 ayarlan\u0131r. Zaman\u0131 gelince yan\u0131p s\u00F6nerek dikkatinizi \u00E7eker.<br> Haritay\u0131 kapat\u0131rsan\u0131z, tekrar a\u00E7t\u0131\u011F\u0131n\u0131zda zamanlay\u0131c\u0131lar yine aktif olacakt\u0131r.</html>
1217 reminder.reminderNode.tooltip=Hat\u0131rlat\u0131c\u0131 {0,date} {0,time} zaman\u0131na ayarland\u0131.
1218 reminder.reminderNode_onlyOneDate=<html>Her d\u00FC\u011F\u00FCm i\u00E7in yaln\u0131zca bir hat\u0131rlat\u0131c\u0131 ayarlanabilir. <br>\u015Eu anki hat\u0131rlat\u0131c\u0131 {0,date} {0,time} zaman\u0131na ayarl\u0131, sizin se\u00E7ti\u011Finiz zaman {1,date} {1,time}. <br><br>D\u00FC\u011F\u00FCm\u00FCn hat\u0131rlatma zaman\u0131n\u0131 de\u011Fi\u015Ftirmek istiyor musunuz (EVET) <br>yoksa eskisi mi kals\u0131n (Hay\u0131r)?</html>
1219 reminder.removeReminderButton=Hat\u0131rlat\u0131c\u0131y\u0131 Kald\u0131r
1220 reminder.removeReminderButton.tooltip=Se\u00E7ili d\u00FC\u011F\u00FCmlerle ilgili t\u00FCm hat\u0131rlat\u0131c\u0131lar\u0131 kald\u0131r.
1221 reminder.Text=Yaz\u0131
1222 reminder.todayButton=Bug\u00FCn
1223 reminder.WindowTitle=Zaman Y\u00F6netimi
9391224 ReminderHookAction.text=Hat\u0131rlat\u0131c\u0131y\u0131 Kald\u0131r
9401225 ReminderHookAction.tooltip=D\u00FC\u011F\u00FCmdeki hat\u0131rlat\u0131c\u0131y\u0131 kald\u0131r\u0131r.
1226 ReminderListAction.text=Zamanlay\u0131c\u0131 Listesini G\u00F6ster ...
1227 ReminderListAction.tooltip=T\u00FCm zamanlanm\u0131\u015F g\u00F6revleri ve ilgili d\u00FC\u011F\u00FCmleri g\u00F6sterir.
9411228 RemoveAllIconsAction.text=T\u00FCm Simgeleri Kald\u0131r
9421229 RemoveIconAction.text=Son Simgeyi Kald\u0131r
9431230 rename=Rename[translate me]
10181305 styles.user-defined=Kullan\u0131c\u0131 tan\u0131ml\u0131 stiller
10191306 styles_menu=Kullan\u0131labilir Stiller
10201307 svg=SVG[translate me]
1021 TimeListAction.text=Zamanlay\u0131c\u0131 Listesini G\u00F6ster ...
1022 TimeListAction.tooltip=T\u00FCm zamanlanm\u0131\u015F g\u00F6revleri ve ilgili d\u00FC\u011F\u00FCmleri g\u00F6sterir.
10231308 TimeManagementAction.text=Takvimi G\u00F6ster...
10241309 TimeManagementAction.tooltip=<html>Kai Toedter'in yapt\u0131\u011F\u0131 takvim mod\u00FCl\u00FCn\u00FC g\u00F6sterir.</html>
10251310 ToggleChildrenFoldedAction.text=\u00C7ocuklar\u0131 Geni\u015Flet/Daralt
229229 ColorProperty.ResetColor=\u0412\u0456\u0434\u043D\u043E\u0432\u0438\u0442\u0438 \u043F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u043A\u043E\u043B\u0456\u0440
230230 combined=\u041A\u043E\u043C\u0431\u0456\u043D\u043E\u0432\u0430\u043D\u043E
231231 condition=\u0423\u043C\u043E\u0432\u0430
232 ConfigureNodeReferenceAction.text=\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A\u0443 \u0432\u0443\u0437\u043B\u0430
233232 confirmation=\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043D\u044F
234233 connector=\u0417'\u0454\u0434\u043D\u0443\u0432\u0430\u0447
235234 connector_arrows=\u0421\u0442\u0440\u0456\u043B\u043A\u0438 \u0437'\u0454\u0434\u043D\u0443\u0432\u0430\u0447\u0430
246245 CopyIDAction.text=\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 ID \u0432\u0443\u0437\u043B\u0430
247246 CopyMapStylesAction.text=\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0441\u0442\u0438\u043B\u044C \u043A\u0430\u0440\u0442\u0438 \u0437...
248247 CopyNodeURIAction.text=\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 URI \u0432\u0443\u0437\u043B\u0430
249 copyright=Copyright \u00A9 2000-2018 \u041A\u043E\u043C\u0430\u043D\u0434\u0430 Freeplane \u0442\u0430 \u0456\u043D\u0448\u0456
248 copyright=Copyright \u00A9 2000-2019 \u041A\u043E\u043C\u0430\u043D\u0434\u0430 Freeplane \u0442\u0430 \u0456\u043D\u0448\u0456
250249 CopySingleAction.text=\u0421\u043A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u043E\u0434\u0438\u043D \u0432\u0443\u0437\u043E\u043B
251250 CopySingleAction.tooltip=\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0439 \u0432\u0443\u0437\u043E\u043B
252251 CopyStyleExtensionsAction.text=\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u043D\u044F \u0437\u0456 \u0441\u0442\u0438\u043B\u044C\u043E\u0432\u043E\u0433\u043E \u0432\u0443\u0437\u043B\u0430
518517 formats_not_loaded=\u0424\u043E\u0440\u043C\u0430\u0442\u0438 \u043D\u0435\u043C\u043E\u0436\u043B\u0438\u0432\u043E \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438, \u0444\u0430\u0439\u043B \u043F\u043E\u0448\u043A\u043E\u0434\u0436\u0435\u043D\u043E
519518 formula.ClearDependenciesAction.text=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u043B\u0435\u0436\u043D\u043E\u0441\u0442\u0456
520519 formula.error.attributeValueIsNull=\u041F\u0456\u0441\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 "{0}" - \u043D\u0443\u043B\u044C\u043E\u0432\u0435.
521 formula.error.circularReference=\u0426\u0438\u043A\u043B\u0456\u0447\u043D\u0435 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0443 \u0432\u0443\u0437\u043B\u0456 "{0}" \u043F\u043E\u0441\u0438\u043B\u0430\u0454\u0442\u044C\u0441\u044F \u0441\u0430\u043C\u0430 \u043D\u0430 \u0441\u0435\u0431\u0435.
520 formula.error.circularReference=\u0426\u0438\u043A\u043B\u0456\u0447\u043D\u0435 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F: \u0424\u043E\u0440\u043C\u0443\u043B\u0430 \u0443 \u0432\u0443\u0437\u043B\u0456 {0} ''{1}'' \u043F\u043E\u0441\u0438\u043B\u0430\u0454\u0442\u044C\u0441\u044F \u0441\u0430\u043C\u0430 \u043D\u0430 \u0441\u0435\u0431\u0435.
522521 formula.EvaluateAllAction.text=\u041F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u0432\u0441\u0435
523522 formula.EvaluateAllAction.tooltip=\u041F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u0432\u0441\u0456 \u0444\u043E\u0440\u043C\u0443\u043B\u0438 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0457 \u043A\u0430\u0440\u0442\u0438
524523 formula.menuname=\u0424\u043E\u0440\u043C\u0443\u043B\u0438
961960 NotificationOptions.SELECT_NODE=\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
962961 ok=\u0413\u0430\u0440\u0430\u0437\u0434
963962 OKAction.text=\u0413\u0430\u0440\u0430\u0437\u0434
963 OldReminderListAction.text=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F...
964 OldReminderListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0447\u0430\u0441 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0445 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u044C \u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0432\u0443\u0437\u043B\u0438 \u043D\u0430 \u0432\u0441\u0456\u0445 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438\u0445 \u043A\u0430\u0440\u0442\u0430\u0445.
964965 OnlineReference.text=\u041A\u0430\u0440\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u0457 \u043E\u043D\u043B\u0430\u0439\u043D
965966 open_asMindMap=\u0410\u0441\u043E\u0446\u0456\u0430\u0442\u0438\u0432\u043D\u0430 \u043A\u0430\u0440\u0442\u0430
966967 OpenAction.text=\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0443 \u043A\u0430\u0440\u0442\u0443...
968 OpenApiDocumentationAction.text=Freeplane API...
967969 OpenFreeplaneSiteAction.text=\u0421\u0430\u0439\u0442 Freeplane
968970 OpenMapsAddLocation.text=\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u043E\u0437\u0442\u0430\u0448\u0443\u0432\u0430\u043D\u043D\u044F OpenMaps...
969971 OpenMapsRemoveLocation.text=\u0412\u0438\u043B\u0443\u0447\u0438\u0442\u0438 \u0440\u043E\u0437\u0442\u0430\u0448\u0443\u0432\u0430\u043D\u043D\u044F OpenMaps
12881290 OptionPanel.relative=\u0412\u0456\u0434\u043D\u043E\u0441\u043D\u043E
12891291 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"\u0421\u043F\u0438\u0442\u0430\u0442\u0438" - \u0449\u043E\u0440\u0430\u0437\u0443 \u043F\u0438\u0442\u0430\u0442\u0438\u043C\u0435 (\u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A\u0449\u043E \u0441\u0443\u043C\u043D\u0456\u0432\u0430\u0454\u0442\u0435\u0441\u044C).<br>"\u0422\u0430\u043A" - \u0432\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u0442\u0438\u043C\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0437 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\u0432\u0430\u043D\u043D\u044F\u043C.<br>"\u041D\u0456" - \u0432\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u0442\u0438\u043C\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043F\u0440\u043E\u0441\u0442\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0443.</html>
12901292 OptionPanel.remind_use_rich_text_in_new_nodes=\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0445 \u0432\u0443\u0437\u043B\u0456\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u0432\u0430\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442
1293 OptionPanel.reminder.showPastRemindersOnStart=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
12911294 OptionPanel.remindersBlink=\u0411\u043B\u0438\u043C\u0430\u043D\u043D\u044F \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u044C
12921295 OptionPanel.remindersShowNotifications=\u041D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0438\u0432\u043E\u0434\u044F\u0442\u044C \u0432\u0456\u043A\u043D\u0430 \u0437 \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F\u043C\u0438
12931296 OptionPanel.remindersStandardDelay=\u0417\u0430\u0442\u0440\u0438\u043C\u043A\u0430 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
15671570 plugins/ScriptEditor/window.Result=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442:
15681571 plugins/ScriptEditor/window.title=\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0441\u043A\u0440\u0438\u043F\u0442
15691572 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0434\u043E\u0441\u0442\u0443\u043F \u0434\u043E \u0432\u043D\u0443\u0442\u0440\u0456\u0448\u043D\u044C\u043E\u0433\u043E API (\u043F\u0430\u043A\u0435\u0442 {0}). - \u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0437\u0432\u0435\u0440\u043D\u0456\u0442\u044C\u0441\u044F \u0434\u043E \u043A\u043E\u043C\u0430\u043D\u0434\u0438 Freeplane, \u044F\u043A\u0449\u043E API \u0441\u043A\u0440\u0438\u043F\u0442\u0456\u0432 \u0454 \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043D\u044C\u043E \u043F\u043E\u0442\u0443\u0436\u043D\u0438\u043C.
1570 plugins/TimeList.xml_Created=\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u0438\u0439
1571 plugins/TimeList.xml_Date=\u0414\u0430\u0442\u0430
1572 plugins/TimeList.xml_Details=\u041F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456
1573 plugins/TimeList.xml_Icons=\u041F\u0456\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u0438
1574 plugins/TimeList.xml_Modified=\u0417\u043C\u0456\u043D\u0435\u043D\u0438\u0439
1575 plugins/TimeList.xml_Notes=\u041F\u0440\u0438\u043C\u0456\u0442\u043A\u0438
1576 plugins/TimeList.xml_Text=\u0422\u0435\u043A\u0441\u0442
1577 plugins/TimeManagement.xml_appendButton=\u041F\u0440\u0438\u043A\u0440\u0456\u043F\u0438\u0442\u0438 \u0434\u0430\u0442\u0443 \u0434\u043E \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u0433\u043E \u0432\u0443\u0437\u043B\u0430
1578 plugins/TimeManagement.xml_Cancel=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438
1579 plugins/TimeManagement.xml_cancelButton=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438
1580 plugins/TimeManagement.xml_closeButton=\u0417\u0430\u043A\u0440\u0438\u0442\u0438
1581 plugins/TimeManagement.xml_Export=\u0415\u043A\u0441\u043F\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0432\u0443\u0437\u043B\u0438
1582 plugins/TimeManagement.xml_Find=\u0417\u043D\u0430\u0439\u0442\u0438
1583 plugins/TimeManagement.xml_Goto=\u041F\u0435\u0440\u0435\u0439\u0442\u0438
1584 plugins/TimeManagement.xml_hour=\u0413\u043E\u0434\u0438\u043D\u0430:
1585 plugins/TimeManagement.xml_menu_actions=\u0414\u0456\u0457
1586 plugins/TimeManagement.xml_minute=\u0425\u0432\u0438\u043B\u0438\u043D\u0430:
1587 plugins/TimeManagement.xml_reminderButton=\u041D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1588 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u042F\u043A\u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043D\u0443\u0442\u0438, \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0442\u0430\u0439\u043C\u0435\u0440 \u043D\u0430 \u0432\u043A\u0430\u0437\u0430\u043D\u0443 \u0434\u0430\u0442\u0443. \u0411\u043B\u0438\u043C\u0430\u043D\u043D\u044F \u043F\u0456\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u0438 \u043F\u0440\u0438\u0432\u0435\u0440\u043D\u0435 \u0432\u0430\u0448\u0443 \u0443\u0432\u0430\u0433\u0443.<br> \u042F\u043A\u0449\u043E \u0437\u0430\u043A\u0440\u0438\u0442\u0438 \u043A\u0430\u0440\u0442\u0443, \u0442\u0430\u0439\u043C\u0435\u0440 \u0431\u0443\u0434\u0435 \u0430\u043A\u0442\u0438\u0432\u043E\u0432\u0430\u043D\u043E \u043F\u0440\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443 \u0432\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u043D\u043D\u0456 \u043A\u0430\u0440\u0442\u0438.</html>
1589 plugins/TimeManagement.xml_reminderNode.tooltip=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 {0,date} \u043E {0,time}.
1590 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html> \u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u0438\u043A\u0440\u0456\u043F\u0438\u0442\u0438 \u043B\u0438\u0448\u0435 \u043E\u0434\u043D\u0443 \u0434\u0430\u0442\u0443 \u043D\u0430 \u0432\u0443\u0437\u043E\u043B <br> \u0412\u0436\u0435 \u0437\u0430\u043F\u0430\u043C'\u044F\u0442\u0430\u043B\u043E {0,date} {0,time}, \u0412\u0438 \u0432\u0432\u043E\u0434\u0438\u0442\u0435 {1,date} {1,time}. <br><br> \u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0434\u0430\u0442\u0443 (\u0422\u0410\u041A), <br> \u0430\u0431\u043E \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043A\u043E\u043B\u0438\u0448\u043D\u044E \u0434\u0430\u0442\u0443 (\u041D\u0406)? </html>
1591 plugins/TimeManagement.xml_remindLaterButton=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 \u043F\u0456\u0437\u043D\u0456\u0448\u0435
1592 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 \u043F\u0456\u0437\u043D\u0456\u0448\u0435
1593 plugins/TimeManagement.xml_removeReminderButton=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1594 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F, \u043F\u043E\u0432'\u044F\u0437\u0430\u043D\u0456 \u0437 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u043C \u0432\u0443\u0437\u043B\u043E\u043C.
1595 plugins/TimeManagement.xml_Replace=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438
1596 plugins/TimeManagement.xml_Replace_All=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0435
1597 plugins/TimeManagement.xml_Replace_Selected=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0435
1598 plugins/TimeManagement.xml_Select=\u0412\u0438\u0431\u0440\u0430\u0442\u0438
1599 plugins/TimeManagement.xml_todayButton=\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456
1600 plugins/TimeManagement.xml_WindowTitle=\u0423\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u0447\u0430\u0441\u043E\u043C
1601 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u041F\u043E\u0448\u0443\u043A \u0456 \u0437\u0430\u043C\u0456\u043D\u0430
16021573 preferences=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
16031574 presentation=\u041F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0456\u044F
16041575 presentation.combineAll=\u041E\u0431'\u0454\u0434\u043D\u0430\u0442\u0438 \u0432\u0441\u0456 \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0456\u0457
16281599 RedoAction.text=\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438
16291600 RedoFilterAction.text=\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438 \u0434\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0443
16301601 regular_expressions=\u0420\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u0456 \u0432\u0438\u0440\u0430\u0437\u0438
1602 reminder.appendButton=\u041F\u0440\u0438\u043A\u0440\u0456\u043F\u0438\u0442\u0438 \u0434\u0430\u0442\u0443 \u0434\u043E \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u0433\u043E \u0432\u0443\u0437\u043B\u0430
1603 reminder.Cancel=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438
1604 reminder.cancelButton=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438
1605 reminder.closeButton=\u0417\u0430\u043A\u0440\u0438\u0442\u0438
1606 reminder.Created=\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u0438\u0439
1607 reminder.Details=\u041F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456
1608 reminder.Export=\u0415\u043A\u0441\u043F\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0432\u0443\u0437\u043B\u0438
1609 reminder.Find=\u0417\u043D\u0430\u0439\u0442\u0438
1610 reminder.Goto=\u041F\u0435\u0440\u0435\u0439\u0442\u0438
1611 reminder.hour=\u0413\u043E\u0434\u0438\u043D\u0430:
1612 reminder.Icons=\u041F\u0456\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u0438
1613 reminder.Map=\u0410\u0441\u043E\u0446\u0456\u0430\u0442\u0438\u0432\u043D\u0430 \u043A\u0430\u0440\u0442\u0430
1614 reminder.menu_actions=\u0414\u0456\u0457
1615 reminder.minute=\u0425\u0432\u0438\u043B\u0438\u043D\u0430:
1616 reminder.Modified=\u0417\u043C\u0456\u043D\u0435\u043D\u0438\u0439
1617 reminder.Notes=\u041F\u0440\u0438\u043C\u0456\u0442\u043A\u0438
1618 reminder.Reminder=\u041D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1619 reminder.reminderButton=\u041D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1620 reminder.reminderButton.tooltip=<html>\u042F\u043A\u0449\u043E \u043D\u0430\u0442\u0438\u0441\u043D\u0443\u0442\u0438, \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0442\u0430\u0439\u043C\u0435\u0440 \u043D\u0430 \u0432\u043A\u0430\u0437\u0430\u043D\u0443 \u0434\u0430\u0442\u0443. \u0411\u043B\u0438\u043C\u0430\u043D\u043D\u044F \u043F\u0456\u043A\u0442\u043E\u0433\u0440\u0430\u043C\u0438 \u043F\u0440\u0438\u0432\u0435\u0440\u043D\u0435 \u0432\u0430\u0448\u0443 \u0443\u0432\u0430\u0433\u0443.<br> \u042F\u043A\u0449\u043E \u0437\u0430\u043A\u0440\u0438\u0442\u0438 \u043A\u0430\u0440\u0442\u0443, \u0442\u0430\u0439\u043C\u0435\u0440 \u0431\u0443\u0434\u0435 \u0430\u043A\u0442\u0438\u0432\u043E\u0432\u0430\u043D\u043E \u043F\u0440\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443 \u0432\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u043D\u043D\u0456 \u043A\u0430\u0440\u0442\u0438.</html>
1621 reminder.reminderNode.tooltip=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 {0,date} \u043E {0,time}.
1622 reminder.reminderNode_onlyOneDate=<html> \u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u0438\u043A\u0440\u0456\u043F\u0438\u0442\u0438 \u043B\u0438\u0448\u0435 \u043E\u0434\u043D\u0443 \u0434\u0430\u0442\u0443 \u043D\u0430 \u0432\u0443\u0437\u043E\u043B <br> \u0412\u0436\u0435 \u0437\u0430\u043F\u0430\u043C'\u044F\u0442\u0430\u043B\u043E {0,date} {0,time}, \u0412\u0438 \u0432\u0432\u043E\u0434\u0438\u0442\u0435 {1,date} {1,time}. <br><br> \u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0434\u0430\u0442\u0443 (\u0422\u0410\u041A), <br> \u0430\u0431\u043E \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043A\u043E\u043B\u0438\u0448\u043D\u044E \u0434\u0430\u0442\u0443 (\u041D\u0406)? </html>
1623 reminder.remindLaterButton=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 \u043F\u0456\u0437\u043D\u0456\u0448\u0435
1624 reminder.remindLaterButton.tooltip=\u041D\u0430\u0433\u0430\u0434\u0430\u0442\u0438 \u043F\u0456\u0437\u043D\u0456\u0448\u0435
1625 reminder.Remove_All=\u0412\u0438\u043B\u0443\u0447\u0438\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1626 reminder.Remove_Selected=\u0412\u0438\u043B\u0443\u0447\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1627 reminder.removeReminderButton=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1628 reminder.removeReminderButton.tooltip=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F, \u043F\u043E\u0432'\u044F\u0437\u0430\u043D\u0456 \u0437 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u043C \u0432\u0443\u0437\u043B\u043E\u043C.
1629 reminder.Replace=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438
1630 reminder.Replace_All=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0435
1631 reminder.Replace_Selected=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0435
1632 reminder.Run_All=\u0412\u0438\u043A\u043E\u043D\u0430\u0442\u0438 \u0432\u0441\u0456 \u0441\u0446\u0435\u043D\u0430\u0440\u0456\u0457
1633 reminder.Run_Selected=\u0412\u0438\u043A\u043E\u043D\u0430\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0441\u0446\u0435\u043D\u0430\u0440\u0456\u0457
1634 reminder.Select=\u0412\u0438\u0431\u0440\u0430\u0442\u0438
1635 reminder.Text=\u0422\u0435\u043A\u0441\u0442
1636 reminder.todayButton=\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456
1637 reminder.WindowTitle=\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F\u043C\u0438
1638 reminder.WindowTitle_All_Nodes=\u041F\u043E\u0448\u0443\u043A \u0456 \u0437\u0430\u043C\u0456\u043D\u0430
1639 reminder.WindowTitle_pastReminders=\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
1640 reminder_script_error=\u041F\u043E\u043C\u0438\u043B\u043A\u0430 {0} \u0443 \u0441\u0446\u0435\u043D\u0430\u0440\u0456\u0457 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430 \u043A\u0430\u0440\u0442\u0456 {1} \u0443 \u0432\u0443\u0437\u043B\u0456 {2}
16311641 ReminderHookAction.text=\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
16321642 ReminderHookAction.tooltip=\u0412\u0438\u043B\u0443\u0447\u0438\u0442\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u0437 \u0432\u0443\u0437\u043B\u0430.
1643 ReminderListAction.text=\u0420\u043E\u0437\u043A\u043B\u0430\u0434...
1644 ReminderListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0456 \u0447\u0430\u0441\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u044C \u0456 \u043F\u043E\u0432'\u044F\u0437\u0430\u043D\u0456 \u0432\u0443\u0437\u043B\u0438.
16331645 reminderNotification=\u0422\u0435\u043A\u0441\u0442 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u043D\u044F
16341646 remove_file_from_list_on_error=\u0424\u0430\u0439\u043B {0} \u043D\u0435 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u043E. \u0412\u0438\u043B\u0443\u0447\u0438\u0442\u0438 \u0439\u043E\u0433\u043E \u0437\u0456 \u0441\u043F\u0438\u0441\u043A\u0443 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438\u0445 \u0444\u0430\u0439\u043B\u0456\u0432?
16351647 remove_shortcut_question=\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0441\u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u044F?
19081920 simplyhtml.thisCellRangeLabel=\u0446\u044F \u043A\u043E\u043C\u0456\u0440\u043A\u0430
19091921 simplyhtml.thisColRangeLabel=\u0446\u0435\u0439 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A
19101922 simplyhtml.thisRowRangeLabel=\u0446\u0435\u0439 \u0440\u044F\u0434\u043E\u043A
1911 simplyhtml.toggleBulletsLabel=\u0423\u0432\u0456\u043C\u043A\u043D./\u0432\u0438\u043C\u043A\u043D.\u043C\u0430\u0440\u043A\u043E\u0432\u0430\u043D\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A
1923 simplyhtml.toggleBulletsLabel=\u0423\u0432\u0456\u043C\u043A\u043D./\u0432\u0438\u043C\u043A\u043D. \u043C\u0430\u0440\u043A\u043E\u0432\u0430\u043D\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A
19121924 simplyhtml.toggleBulletsTip=\u0443\u0432\u0456\u043C\u043A\u043D./\u0432\u0438\u043C\u043A\u043D. \u043C\u0430\u0440\u043A\u043E\u0432\u0430\u043D\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A
19131925 simplyhtml.toggleNumbersLabel=\u0423\u0432\u0456\u043C\u043A\u043D./\u0432\u0438\u043C\u043A\u043D.\u043D\u0443\u043C\u0435\u0440\u043E\u0432\u0430\u043D\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A
19141926 simplyhtml.toggleNumbersTip=\u0443\u0432\u0456\u043C\u043A\u043D./\u0432\u0438\u043C\u043A\u043D. \u043D\u0443\u043C\u0435\u0440\u043E\u0432\u0430\u043D\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A
19671979 split=(&S)\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438
19681980 SplitConditionAction.text=\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438
19691981 SplitNode.text=\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438 \u0432\u0443\u0437\u043E\u043B
1970 SplitNode.tooltip=<html>\u0412\u0443\u0437\u043E\u043B \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u043E</html>
1971 SplitToWordsAction.text=\u0420\u043E\u0437\u0431\u0438\u0442\u0438 \u043F\u043E {0} \u0441\u043B\u0456\u0432 \u0443 \u0440\u044F\u0434\u043A\u0443
1982 SplitNode.tooltip=<html>\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438 \u0432\u0443\u0437\u043E\u043B</html>
1983 SplitToWordsAction.text=\u0420\u043E\u0437\u0434\u0456\u043B\u0438\u0442\u0438 \u043F\u043E {0} \u0441\u043B\u0456\u0432 \u0443 \u0440\u044F\u0434\u043A\u0443
19721984 STANDARD_FORMAT=\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0438\u0439
19731985 StartPresentationAction.text=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0456\u044E
19741986 StartPresentationOrShowNextSlideAction.text=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0456\u044E/\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0441\u043B\u0430\u0439\u0434
20182030 TextAlignAction.RIGHT.text=\u0422\u0435\u043A\u0441\u0442, \u0432\u0438\u0440\u0456\u0432\u043D\u044F\u043D\u0438\u0439 \u0432\u043F\u0440\u0430\u0432\u043E
20192031 textalignment=\u0412\u0438\u0440\u0456\u0432\u043D\u044E\u0432\u0430\u043D\u043D\u044F \u0442\u0435\u043A\u0441\u0442\u0443
20202032 TextChangeHotKeyAction.text=\u0417\u0430\u0434\u0430\u0442\u0438 \u0433\u0430\u0440\u044F\u0447\u0443 \u043A\u043B\u0430\u0432\u0456\u0448\u0443 \u0437\u043C\u0456\u043D\u0438 \u0442\u0435\u043A\u0441\u0442\u0443
2021 TimeListAction.text=\u0420\u043E\u0437\u043A\u043B\u0430\u0434...
2022 TimeListAction.tooltip=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0456 \u0447\u0430\u0441\u0438 \u043D\u0430\u0433\u0430\u0434\u0443\u0432\u0430\u043D\u044C \u0456 \u043F\u043E\u0432'\u044F\u0437\u0430\u043D\u0456 \u0432\u0443\u0437\u043B\u0438.
20232033 TimeManagementAction.text=\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440...
20242034 TimeManagementAction.tooltip=<html> \u041F\u043E\u043A\u0430\u0437\u0443\u0454 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440 \u0432\u0456\u0434 \u041A\u0430\u044F \u0422\u043E\u0434\u0442\u0435\u0440\u0430. </html>
20252035 TimePeriodUnits.days=\u0434\u043D\u0456\u0432
227227 ColorProperty.ResetColor=\u91CD\u7F6E\u989C\u8272
228228 combined=\u7EC4\u5408
229229 condition=\u6761\u4EF6
230 ConfigureNodeReferenceAction.text=\u914D\u7F6E\u8282\u70B9\u5F15\u7528
231230 confirmation=\u786E\u8BA4
232231 connector=\u8FDE\u63A5\u5668
233232 connector_arrows=\u8FDE\u63A5\u5668 \u7BAD\u5F62
244243 CopyIDAction.text=\u590D\u5236\u8282\u70B9 ID
245244 CopyMapStylesAction.text=\u4ECE\u5BFC\u56FE\u6837\u5F0F\u590D\u5236\u2026
246245 CopyNodeURIAction.text=\u590D\u5236\u8282\u70B9 URI
247 copyright=Copyright \u00A9 2000-2018 Freeplane \u56E2\u961F\u53CA\u5176\u4ED6\u4EBA
246 copyright=Copyright \u00A9 2000-2019 Freeplane \u56E2\u961F\u53CA\u5176\u4ED6\u4EBA
248247 CopySingleAction.text=\u590D\u5236\u8282\u70B9 (\u5355\u4E00)
249248 CopySingleAction.tooltip=\u53EA\u590D\u5236\u9009\u5B9A\u8282\u70B9
250249 CopyStyleExtensionsAction.text=\u4ECE\u6837\u5F0F\u8282\u70B9\u590D\u5236\u6269\u5C55
515514 formats_not_loaded=\u683C\u5F0F\u65E0\u6CD5\u8F7D\u5165\uFF0C\u6587\u4EF6\u635F\u6BC1
516515 formula.ClearDependenciesAction.text=\u6E05\u7406\u9644\u5C5E
517516 formula.error.attributeValueIsNull=\u5C5E\u6027\u503C "{0}" \u662F\u7A7A\u7684\u3002
518 formula.error.circularReference=\u5FAA\u73AF\u53C2\u7167: \u8282\u70B9 "{0}" \u7684\u516C\u5F0F\u5F15\u7528\u5230\u81EA\u8EAB\u3002
517 formula.error.circularReference=\u5FAA\u73AF\u53C2\u7167: \u8282\u70B9 {0} ''{1}'' \u7684\u516C\u5F0F\u5F15\u7528\u5230\u81EA\u8EAB\u3002
519518 formula.EvaluateAllAction.text=\u8BA1\u7B97\u6240\u6709\u516C\u5F0F
520519 formula.EvaluateAllAction.tooltip=\u8BA1\u7B97\u5BFC\u56FE\u4E0A\u7684\u6240\u6709\u516C\u5F0F
521520 formula.menuname=\u516C\u5F0F
15601559 plugins/ScriptEditor/window.Result=\u7ED3\u679C:
15611560 plugins/ScriptEditor/window.title=\u811A\u672C\u7F16\u8F91\u5668
15621561 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u975E\u6CD5\u8BBF\u95EE\u5185\u90E8API (package {0}). \u5982\u679CAPI \u4E0D\u7ED9\u529B\u8BF7\u8054\u7EDCFreeplane \u56E2\u961F.
1563 plugins/TimeList.xml_Created=\u521B\u5EFA
1564 plugins/TimeList.xml_Date=\u65E5\u671F
1565 plugins/TimeList.xml_Details=\u660E\u7EC6
1566 plugins/TimeList.xml_Icons=\u56FE\u6807
1567 plugins/TimeList.xml_Modified=\u4FEE\u6539
1568 plugins/TimeList.xml_Notes=\u6CE8\u89E3
1569 plugins/TimeList.xml_Text=\u6587\u672C
1570 plugins/TimeManagement.xml_appendButton=\u5728\u9009\u5B9A\u8282\u70B9\u8FFD\u52A0\u65E5\u671F
1571 plugins/TimeManagement.xml_Cancel=\u53D6\u6D88
1572 plugins/TimeManagement.xml_cancelButton=\u53D6\u6D88
1573 plugins/TimeManagement.xml_closeButton=\u5173\u95ED
1574 plugins/TimeManagement.xml_Export=\u5BFC\u51FA\u9009\u5B9A\u7684\u8282\u70B9
1575 plugins/TimeManagement.xml_Find=\u67E5\u627E
1576 plugins/TimeManagement.xml_Goto=\u8F6C\u5230
1577 plugins/TimeManagement.xml_hour=\u65F6:
1578 plugins/TimeManagement.xml_menu_actions=\u52A8\u4F5C
1579 plugins/TimeManagement.xml_minute=\u5206:
1580 plugins/TimeManagement.xml_reminderButton=\u5230\u671F\u63D0\u9192
1581 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u5F53\u7ED9\u5B9A\u65F6\u95F4\u6709\u4E00\u4E2A\u5B9A\u65F6\u5668\u88AB\u8BBE\u7F6E. \u901A\u8FC7\u95EA\u70C1\u56FE\u6807\u63D0\u9192\u4F60.<br> \u5173\u95ED\u56FE\u518D\u6B21\u6253\u5F00\u56FE\u65F6\uFF0C\u5B9A\u65F6\u5668\u5C06\u6FC0\u6D3B.</html>
1582 plugins/TimeManagement.xml_reminderNode.tooltip=\u9884\u8BBE\u63D0\u9192 {0,date} {0,time}.
1583 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u5F53\u524D, \u6BCF\u4E2A\u8282\u70B9\u53EF\u80FD\u53EA\u652F\u6301\u4E00\u4E2A\u63D0\u9192. <br>\u5F53\u524D\u63D0\u9192\u4EE5 {0,date} {0,time}\u8BBE\u5B9A, \u4F60\u7684\u9009\u62E9\u662F {1,date} {1,time}. <br><br>\u786E\u8BA4\u66F4\u6539\u8282\u70B9\u63D0\u9192\u65F6\u95F4 (YES) <br>\u6216\u8005\u4FDD\u6301\u539F\u6709\u7684 (NO)?</html>
1584 plugins/TimeManagement.xml_remindLaterButton=\u7A0D\u540E\u63D0\u9192
1585 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u7A0D\u540E\u63D0\u9192
1586 plugins/TimeManagement.xml_removeReminderButton=\u5220\u9664\u63D0\u9192
1587 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u5220\u9664\u9009\u5B9A\u8282\u70B9\u7684\u6240\u6709\u76F8\u5173\u63D0\u9192.
1588 plugins/TimeManagement.xml_Replace=\u66FF\u6362
1589 plugins/TimeManagement.xml_Replace_All=\u5168\u90E8\u66FF\u6362
1590 plugins/TimeManagement.xml_Replace_Selected=\u66FF\u6362\u9009\u5B9A
1591 plugins/TimeManagement.xml_Select=\u9009\u62E9
1592 plugins/TimeManagement.xml_todayButton=\u91CD\u7F6E\u65E5\u5386
1593 plugins/TimeManagement.xml_WindowTitle=\u7BA1\u7406\u65F6\u95F4
1594 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u67E5\u627E\u5E76\u66FF\u6362
15951562 preferences=\u9996\u9009\u9879
15961563 presentation=\u6F14\u793A
15971564 presentation.combineAll=\u5408\u5E76\u6240\u6709\u6F14\u793A
16211588 RedoAction.text=\u91CD\u505A
16221589 RedoFilterAction.text=\u91CD\u505A
16231590 regular_expressions=\u6B63\u5219\u8868\u8FBE\u5F0F
1591 reminder.appendButton=\u5728\u9009\u5B9A\u8282\u70B9\u8FFD\u52A0\u65E5\u671F
1592 reminder.Cancel=\u53D6\u6D88
1593 reminder.cancelButton=\u53D6\u6D88
1594 reminder.closeButton=\u5173\u95ED
1595 reminder.Created=\u521B\u5EFA
1596 reminder.Details=\u660E\u7EC6
1597 reminder.Export=\u5BFC\u51FA\u9009\u5B9A\u7684\u8282\u70B9
1598 reminder.Find=\u67E5\u627E
1599 reminder.Goto=\u8F6C\u5230
1600 reminder.hour=\u65F6:
1601 reminder.Icons=\u56FE\u6807
1602 reminder.Map=\u601D\u7EF4\u5BFC\u56FE
1603 reminder.menu_actions=\u52A8\u4F5C
1604 reminder.minute=\u5206:
1605 reminder.Modified=\u4FEE\u6539
1606 reminder.Notes=\u6CE8\u89E3
1607 reminder.Reminder=\u63D0\u9192
1608 reminder.reminderButton=\u5230\u671F\u63D0\u9192
1609 reminder.reminderButton.tooltip=<html>\u5F53\u7ED9\u5B9A\u65F6\u95F4\u6709\u4E00\u4E2A\u5B9A\u65F6\u5668\u88AB\u8BBE\u7F6E. \u901A\u8FC7\u95EA\u70C1\u56FE\u6807\u63D0\u9192\u4F60.<br> \u5173\u95ED\u56FE\u518D\u6B21\u6253\u5F00\u56FE\u65F6\uFF0C\u5B9A\u65F6\u5668\u5C06\u6FC0\u6D3B.</html>
1610 reminder.reminderNode.tooltip=\u9884\u8BBE\u63D0\u9192 {0,date} {0,time}.
1611 reminder.reminderNode_onlyOneDate=<html>\u5F53\u524D, \u6BCF\u4E2A\u8282\u70B9\u53EF\u80FD\u53EA\u652F\u6301\u4E00\u4E2A\u63D0\u9192. <br>\u5F53\u524D\u63D0\u9192\u4EE5 {0,date} {0,time}\u8BBE\u5B9A, \u4F60\u7684\u9009\u62E9\u662F {1,date} {1,time}. <br><br>\u786E\u8BA4\u66F4\u6539\u8282\u70B9\u63D0\u9192\u65F6\u95F4 (YES) <br>\u6216\u8005\u4FDD\u6301\u539F\u6709\u7684 (NO)?</html>
1612 reminder.remindLaterButton=\u7A0D\u540E\u63D0\u9192
1613 reminder.remindLaterButton.tooltip=\u7A0D\u540E\u63D0\u9192
1614 reminder.removeReminderButton=\u5220\u9664\u63D0\u9192
1615 reminder.removeReminderButton.tooltip=\u5220\u9664\u9009\u5B9A\u8282\u70B9\u7684\u6240\u6709\u76F8\u5173\u63D0\u9192.
1616 reminder.Replace=\u66FF\u6362
1617 reminder.Replace_All=\u5168\u90E8\u66FF\u6362
1618 reminder.Replace_Selected=\u66FF\u6362\u9009\u5B9A
1619 reminder.Select=\u9009\u62E9
1620 reminder.Text=\u6587\u672C
1621 reminder.todayButton=\u91CD\u7F6E\u65E5\u5386
1622 reminder.WindowTitle=\u7BA1\u7406\u65F6\u95F4
1623 reminder.WindowTitle_All_Nodes=\u67E5\u627E\u5E76\u66FF\u6362
16241624 ReminderHookAction.text=\u5220\u9664\u63D0\u9192
16251625 ReminderHookAction.tooltip=\u5220\u9664\u8282\u70B9\u76F8\u5173\u63D0\u9192.
1626 ReminderListAction.text=\u663E\u793A\u65E5\u7A0B\u5B89\u6392...
1627 ReminderListAction.tooltip=\u663E\u793A\u6240\u6709\u65E5\u7A0B\u53CA\u76F8\u5E94\u8282\u70B9.
16261628 reminderNotification=\u63D0\u9192\u901A\u77E5
16271629 remove_file_from_list_on_error=\u65E0\u6CD5\u6253\u5F00\u6587\u4EF6{0}\u3002\u662F\u5426\u4ECE\u6700\u8FD1\u7684\u6587\u4EF6\u5217\u8868\u4E2D\u79FB\u9664\uFF1F
16281630 remove_shortcut_question=\u66FF\u6362\u6309\u952E\uFF1F
20122014 TextAlignAction.RIGHT.text=\u6587\u5B57\u53F3\u5BF9\u9F50
20132015 textalignment=\u6587\u5B57\u5BF9\u9F50
20142016 TextChangeHotKeyAction.text=\u8BBE\u5B9A\u6539\u53D8\u6587\u672C\u7684\u70ED\u952E
2015 TimeListAction.text=\u663E\u793A\u65E5\u7A0B\u5B89\u6392...
2016 TimeListAction.tooltip=\u663E\u793A\u6240\u6709\u65E5\u7A0B\u53CA\u76F8\u5E94\u8282\u70B9.
20172017 TimeManagementAction.text=\u663E\u793A\u65E5\u5386...
20182018 TimeManagementAction.tooltip=<html>\u663E\u793A\u65E5\u5386\u6A21\u5757 by Kai Toedter.</html>
20192019 TimePeriodUnits.days=\u5929
229229 ColorProperty.ResetColor=\u91CD\u8A2D\u70BA\u539F\u59CB\u984F\u8272
230230 combined=\u6574\u5408
231231 condition=\u689D\u4EF6
232 ConfigureNodeReferenceAction.text=\u7D44\u614B\u7BC0\u9EDE\u53C3\u7167
233232 confirmation=\u78BA\u8A8D
234233 connector=\u9023\u7D50\u7DDA
235234 connector_arrows=\u9023\u7D50\u7DDA\u7BAD\u982D
246245 CopyIDAction.text=\u8907\u88FD\u7BC0\u9EDE ID
247246 CopyMapStylesAction.text=\u8907\u88FD\u5FC3\u667A\u5716\u6A23\u5F0F...
248247 CopyNodeURIAction.text=\u8907\u88FD\u7BC0\u9EDE\u9023\u7D50\u7DB2\u5740 (URI)
249 copyright=\u7248\u6B0A\u6240\u6709 \u00A9 2000-2018 Freeplane \u5718\u968A\u548C\u5176\u4ED6\u4EBA
248 copyright=\u7248\u6B0A\u6240\u6709 \u00A9 2000-2019 Freeplane \u5718\u968A\u548C\u5176\u4ED6\u4EBA
250249 CopySingleAction.text=\u8907\u88FD\u55AE\u4E00\u7BC0\u9EDE
251250 CopySingleAction.tooltip=\u50C5\u8907\u88FD\u9078\u53D6\u7684\u7BC0\u9EDE
252251 CopyStyleExtensionsAction.text=\u532F\u5165\u7BC0\u9EDE\u5EF6\u4F38\u6027\u8CEA\u7684\u6A23\u5F0F
517516 formats_not_loaded=\u683C\u5F0F\u7121\u6CD5\u8F09\u5165\uFF0C\u6A94\u6848\u6BC0\u640D
518517 formula.ClearDependenciesAction.text=\u6E05\u9664\u76F8\u4F9D\u6027
519518 formula.error.attributeValueIsNull=\u5C6C\u6027\u503C "{0}" \u662F\u7A7A\u7684\u3002
520 formula.error.circularReference=\u5FAA\u74B0\u53C3\u7167\uFF1A\u7BC0\u9EDE "{0}" \u7684\u6578\u5B78\u5F0F\u53C3\u7167\u5230\u81EA\u8EAB\u3002
519 formula.error.circularReference=\u5FAA\u74B0\u53C3\u7167\uFF1A\u7BC0\u9EDE {0} ''{1}'' \u7684\u6578\u5B78\u5F0F\u53C3\u7167\u5230\u81EA\u8EAB\u3002
521520 formula.EvaluateAllAction.text=\u6C42\u6240\u6709\u7684\u6578\u503C
522521 formula.EvaluateAllAction.tooltip=\u6C42\u76EE\u524D\u5FC3\u667A\u5716\u4E0A\u6240\u6709\u6578\u5B78\u5F0F\u7684\u6578\u503C
523522 formula.menuname=\u6578\u5B78\u5F0F
960959 NotificationOptions.SELECT_NODE=\u8FD4\u56DE\u63D0\u9192
961960 ok=(&O)\u78BA\u5B9A
962961 OKAction.text=\u78BA\u5B9A
962 OldReminderListAction.text=\u986F\u793A\u904E\u5F80\u7684\u63D0\u9192\u2026
963 OldReminderListAction.tooltip=\u5728\u6240\u6709\u958B\u555F\u7684\u5FC3\u667A\u5716\u4E0A\u986F\u793A\u904E\u5F80\u7684\u63D0\u9192\u6642\u9593\u548C\u5C0D\u61C9\u7684\u7BC0\u9EDE\u3002
963964 OnlineReference.text=\u53C3\u8003\u624B\u518A
964965 open_asMindMap=\u5FC3\u667A\u5716
965966 OpenAction.text=(O)\u958B\u555F\u820A\u6A94...
967 OpenApiDocumentationAction.text=Freeplane \u61C9\u7528\u7A0B\u5F0F\u4ECB\u9762...
966968 OpenFreeplaneSiteAction.text=Freeplane \u9996\u9801
967969 OpenMapsAddLocation.text=\u589E\u52A0 OpenMaps \u4F4D\u7F6E...
968970 OpenMapsRemoveLocation.text=\u79FB\u9664 OpenMaps \u4F4D\u7F6E
10331035 OptionPanel.compare_as_number=\u6578\u5B57\u6BD4\u5C0D
10341036 OptionPanel.compile_only_changed_script_files=\u50C5\u7DE8\u8B6F\u5DF2\u8B8A\u66F4\u7684\u6A94\u6848
10351037 OptionPanel.compile_only_changed_script_files.tooltip=\u4FDD\u7559\u5DF2\u7DE8\u8B6F\u7684\u985E\u5225\u6A94\u6848\uFF0C\u76F4\u5230\u539F\u59CB\u6A94\u6848\u66F4\u6539\u70BA\u6B62
1038 OptionPanel.compiled_script_cache_size=\u5DF2\u7DE8\u8B6F script \u548C\u6578\u5B78\u5F0F\u7684\u7DE9\u885D\u5340\u5927\u5C0F
10361039 OptionPanel.connector_arrows=\u9023\u7D50\u7DDA\u7BAD\u982D
10371040 OptionPanel.connector_dash=\u7DDA\u689D\u985E\u578B
10381041 OptionPanel.convert_to_current_version=<html>\u81EA\u52D5\u5C07\u820A\u7248 freeplane \u8F49\u63DB\u6210\u65B0\u7248\u683C\u5F0F\uFF1F</html>
12851288 OptionPanel.relative=\u76F8\u5C0D
12861289 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"\u8A62\u554F"\u6703\u8A62\u554F\u60A8\uFF08\u4F7F\u7528\u4E0A\u7591\u60D1\u7684\uFF09\u3002<br>"\u662F"\u5C07\u986F\u793A RTF \u7DE8\u8F2F\u5668\u3002<br>\u201C\u5426\u201D\u5C07\u986F\u793A\u7D14\u6587\u5B57\u7DE8\u8F2F\u5668\u3002</html>
12871290 OptionPanel.remind_use_rich_text_in_new_nodes=\u4F7F\u7528\u591A\u6587\u672C\u683C\u5F0F (RTF) \u8CBC\u4E0A
1291 OptionPanel.reminder.showPastRemindersOnStart=\u986F\u793A\u904E\u5F80\u7684\u63D0\u9192
12881292 OptionPanel.remindersBlink=\u63D0\u9192\u773C\u775B\u4F11\u606F
12891293 OptionPanel.remindersShowNotifications=\u63D0\u9192\u986F\u793A\u901A\u77E5\u5F48\u51FA\u8996\u7A97
12901294 OptionPanel.remindersStandardDelay=\u63D0\u9192\u5EF6\u9072
15641568 plugins/ScriptEditor/window.Result=\u7D50\u679C\uFF1A
15651569 plugins/ScriptEditor/window.title=\u7DE8\u8F2F script
15661570 plugins/ScriptingEngine.illegalAccessToInternalAPI=\u975E\u6CD5\u5B58\u53D6\u5167\u90E8 API (package {0})\u3002- \u5982\u679C scripting \u7684 API \u4E0D\u5920\u5F37\u5927\uFF0C\u8ACB\u806F\u7D61 freeplane \u5718\u968A\u3002
1567 plugins/TimeList.xml_Created=\u5EFA\u7ACB
1568 plugins/TimeList.xml_Date=\u65E5\u671F
1569 plugins/TimeList.xml_Details=\u7D30\u7BC0
1570 plugins/TimeList.xml_Icons=\u5C0F\u5716\u793A
1571 plugins/TimeList.xml_Modified=\u4FEE\u6539
1572 plugins/TimeList.xml_Notes=\u8A3B\u89E3
1573 plugins/TimeList.xml_Text=\u6587\u5B57
1574 plugins/TimeManagement.xml_appendButton=\u52A0\u4E0A\u65E5\u671F
1575 plugins/TimeManagement.xml_Cancel=\u53D6\u6D88
1576 plugins/TimeManagement.xml_cancelButton=\u53D6\u6D88
1577 plugins/TimeManagement.xml_closeButton=\u95DC\u9589
1578 plugins/TimeManagement.xml_Export=\u532F\u51FA\u6240\u9078\u53D6\u7684\u7BC0\u9EDE
1579 plugins/TimeManagement.xml_Find=\u5C0B\u627E
1580 plugins/TimeManagement.xml_Goto=\u8F49\u5230
1581 plugins/TimeManagement.xml_hour=\u6642\uFF1A
1582 plugins/TimeManagement.xml_menu_actions=\u57F7\u884C
1583 plugins/TimeManagement.xml_minute=\u5206\uFF1A
1584 plugins/TimeManagement.xml_reminderButton=\u6B64\u65E5\u671F\u5230\u7684\u6642\u5019\u63D0\u9192\u6211
1585 plugins/TimeManagement.xml_reminderButton.tooltip=<html>\u6309\u4E0B\u5F8C\u8A08\u6642\u5668\u88AB\u8A2D\u5B9A\u5230\u6307\u5B9A\u7684\u6642\u9593\u3002\u6703\u6709\u9583\u720D\u7684\u5C0F\u5716\u793A\u4F86\u5438\u5F15\u60A8\u7684\u6CE8\u610F\u3002<br>\u5982\u95DC\u6389\u5FC3\u667A\u5716\uFF0C\u4E0B\u6B21\u958B\u555F\u5FC3\u667A\u5716\u6642\u8A08\u6642\u5668\u6703\u6062\u5FA9\u4F5C\u7528\u3002</html>
1586 plugins/TimeManagement.xml_reminderNode.tooltip=\u8A08\u756B\u5728{0,date} {0,time} \u63D0\u9192\u3002
1587 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>\u76EE\u524D\u6BCF\u500B\u7BC0\u9EDE\u53EA\u80FD\u6709\u4E00\u500B\u8A08\u6642\u5668\u3002<br>\u76EE\u524D\u7684\u63D0\u9192\u8A08\u756B\u5728 {0,date} {0,time}, \u60A8\u7684\u9078\u64C7\u662F {1,date} {1,time}\u3002<br><br>\u60A8\u60F3\u6539\u8B8A\u63D0\u9192\u6642\u9593 (YES) <br>\u6216\u60A8\u60F3\u7DAD\u6301\u820A\u7684 (NO)\uFF1F</html>
1588 plugins/TimeManagement.xml_remindLaterButton=\u7A0D\u5F8C\u63D0\u9192
1589 plugins/TimeManagement.xml_remindLaterButton.tooltip=\u7A0D\u5F8C\u63D0\u9192
1590 plugins/TimeManagement.xml_removeReminderButton=\u79FB\u9664\u63D0\u9192\u529F\u80FD
1591 plugins/TimeManagement.xml_removeReminderButton.tooltip=\u79FB\u9664\u9078\u53D6\u7BC0\u9EDE\u7684\u6240\u6709\u63D0\u9192\u529F\u80FD\u3002
1592 plugins/TimeManagement.xml_Replace=\u53D6\u4EE3
1593 plugins/TimeManagement.xml_Replace_All=\u5168\u90E8\u53D6\u4EE3
1594 plugins/TimeManagement.xml_Replace_Selected=\u53D6\u4EE3
1595 plugins/TimeManagement.xml_Select=\u9078\u64C7
1596 plugins/TimeManagement.xml_todayButton=\u4ECA\u5929
1597 plugins/TimeManagement.xml_WindowTitle=\u6642\u9593\u7BA1\u7406
1598 plugins/TimeManagement.xml_WindowTitle_All_Nodes=\u641C\u5C0B\u548C\u53D6\u4EE3
15991571 preferences=\u504F\u597D\u8A2D\u5B9A
16001572 presentation=\u5C55\u793A
16011573 presentation.combineAll=\u7D50\u5408\u6240\u6709\u5C55\u793A
16251597 RedoAction.text=(R)\u53D6\u6D88\u5FA9\u539F
16261598 RedoFilterAction.text=\u91CD\u505A\u7BE9\u9078\u52D5\u4F5C
16271599 regular_expressions=\u4E00\u822C\u8868\u793A
1600 reminder.appendButton=\u52A0\u4E0A\u65E5\u671F
1601 reminder.Cancel=\u53D6\u6D88
1602 reminder.cancelButton=\u53D6\u6D88
1603 reminder.closeButton=\u95DC\u9589
1604 reminder.Created=\u5EFA\u7ACB
1605 reminder.Details=\u7D30\u7BC0
1606 reminder.Export=\u532F\u51FA\u6240\u9078\u53D6\u7684\u7BC0\u9EDE
1607 reminder.Find=\u5C0B\u627E
1608 reminder.Goto=\u8F49\u5230
1609 reminder.hour=\u6642\uFF1A
1610 reminder.Icons=\u5C0F\u5716\u793A
1611 reminder.Map=\u5FC3\u667A\u5716
1612 reminder.menu_actions=\u57F7\u884C
1613 reminder.minute=\u5206\uFF1A
1614 reminder.Modified=\u4FEE\u6539
1615 reminder.Notes=\u8A3B\u89E3
1616 reminder.Reminder=\u63D0\u9192
1617 reminder.reminderButton=\u6B64\u65E5\u671F\u5230\u7684\u6642\u5019\u63D0\u9192\u6211
1618 reminder.reminderButton.tooltip=<html>\u6309\u4E0B\u5F8C\u8A08\u6642\u5668\u88AB\u8A2D\u5B9A\u5230\u6307\u5B9A\u7684\u6642\u9593\u3002\u6703\u6709\u9583\u720D\u7684\u5C0F\u5716\u793A\u4F86\u5438\u5F15\u60A8\u7684\u6CE8\u610F\u3002<br>\u5982\u95DC\u6389\u5FC3\u667A\u5716\uFF0C\u4E0B\u6B21\u958B\u555F\u5FC3\u667A\u5716\u6642\u8A08\u6642\u5668\u6703\u6062\u5FA9\u4F5C\u7528\u3002</html>
1619 reminder.reminderNode.tooltip=\u8A08\u756B\u5728{0,date} {0,time} \u63D0\u9192\u3002
1620 reminder.reminderNode_onlyOneDate=<html>\u76EE\u524D\u6BCF\u500B\u7BC0\u9EDE\u53EA\u80FD\u6709\u4E00\u500B\u8A08\u6642\u5668\u3002<br>\u76EE\u524D\u7684\u63D0\u9192\u8A08\u756B\u5728 {0,date} {0,time}, \u60A8\u7684\u9078\u64C7\u662F {1,date} {1,time}\u3002<br><br>\u60A8\u60F3\u6539\u8B8A\u63D0\u9192\u6642\u9593 (YES) <br>\u6216\u60A8\u60F3\u7DAD\u6301\u820A\u7684 (NO)\uFF1F</html>
1621 reminder.remindLaterButton=\u7A0D\u5F8C\u63D0\u9192
1622 reminder.remindLaterButton.tooltip=\u7A0D\u5F8C\u63D0\u9192
1623 reminder.Remove_All=\u79FB\u9664\u6240\u6709\u63D0\u9192
1624 reminder.Remove_Selected=\u79FB\u9664\u6240\u9078\u7684\u63D0\u9192
1625 reminder.removeReminderButton=\u79FB\u9664\u63D0\u9192\u529F\u80FD
1626 reminder.removeReminderButton.tooltip=\u79FB\u9664\u9078\u53D6\u7BC0\u9EDE\u7684\u6240\u6709\u63D0\u9192\u529F\u80FD\u3002
1627 reminder.Replace=\u53D6\u4EE3
1628 reminder.Replace_All=\u5168\u90E8\u53D6\u4EE3
1629 reminder.Replace_Selected=\u53D6\u4EE3
1630 reminder.Run_All=\u57F7\u884C\u6240\u6709 script
1631 reminder.Run_Selected=\u57F7\u884C\u6240\u9078\u7684 script
1632 reminder.Select=\u9078\u64C7
1633 reminder.Text=\u6587\u5B57
1634 reminder.todayButton=\u4ECA\u5929
1635 reminder.WindowTitle=\u63D0\u9192\u7BA1\u7406
1636 reminder.WindowTitle_All_Nodes=\u641C\u5C0B\u548C\u53D6\u4EE3
1637 reminder.WindowTitle_pastReminders=\u904E\u5F80\u7684\u63D0\u9192
1638 reminder_script_error=\u5FC3\u667A\u5716 {1} \u7BC0\u9EDE {2} \u4E0A\u63D0\u9192 script \u7684\u932F\u8AA4 {0}
16281639 ReminderHookAction.text=\u79FB\u9664\u63D0\u9192\u529F\u80FD
16291640 ReminderHookAction.tooltip=\u5F9E\u7BC0\u9EDE\u4E2D\u79FB\u9664\u6240\u8A2D\u7684\u63D0\u9192\u3002
1641 ReminderListAction.text=\u5217\u51FA\u6642\u9593\u6392\u7A0B ...
1642 ReminderListAction.tooltip=\u986F\u793A\u6240\u6709\u8A08\u5283\u8868\u6642\u9593\u8207\u76F8\u5C0D\u61C9\u7684\u7BC0\u9EDE\u3002
16301643 reminderNotification=\u63D0\u9192\u901A\u77E5
16311644 remove_file_from_list_on_error=\u6A94\u6848 {0} \u7121\u6CD5\u958B\u555F\u3002\u5C07\u5B83\u5F9E\u4E0A\u6B21\u958B\u555F\u7684\u6A94\u6848\u540D\u55AE\u4E2D\u79FB\u9664\uFF1F
16321645 remove_shortcut_question=\u53D6\u4EE3\u5FEB\u901F\u9375\uFF1F
17101723 SetLinkAnchorAction.tooltip_anchored=<html>\u8A2D\u5B9A\u9078\u53D6\u7684\u7BC0\u9EDE\u70BA\u4E0B\u9328\u9EDE\u4EE5\u505A\u70BA\u5C07\u4F86<br/>\u5EFA\u7ACB\u5C40\u90E8\u6216\u5168\u57DF\u9023\u7D50\u3002\u76EE\u524D\u7684\u4E0B\u9328\u9EDE\uFF1A<br/>{0}
17111724 SetLinkByFileChooserAction.text=\u65B0\u589E\u6A94\u6848\u8D85\u9023\u7D50...
17121725 SetLinkByTextFieldAction.text=\u7DE8\u8F2F\u65B0\u820A\u8D85\u9023\u7D50...
1726 SetNodeAliasAction.text=\u8A2D\u5B9A\u7BC0\u9EDE\u5225\u540D
17131727 SetNodeLink.text=\u8A2D\u5B9A\u7BC0\u9EDE\u9023\u7D50...
17141728 SetNoteWindowPosition.bottom.text=\u4E0B
17151729 SetNoteWindowPosition.left.text=\u5DE6
20152029 TextAlignAction.RIGHT.text=\u6587\u5B57\u5411\u53F3\u5C0D\u9F4A
20162030 textalignment=\u6587\u5B57\u5C0D\u9F4A
20172031 TextChangeHotKeyAction.text=\u8A2D\u5B9A\u6587\u5B57\u8B8A\u66F4\u71B1\u9375
2018 TimeListAction.text=\u5217\u51FA\u6642\u9593\u6392\u7A0B ...
2019 TimeListAction.tooltip=\u986F\u793A\u6240\u6709\u8A08\u5283\u8868\u6642\u9593\u8207\u76F8\u5C0D\u61C9\u7684\u7BC0\u9EDE\u3002
20202032 TimeManagementAction.text=\u986F\u793A\u65E5\u66C6...
20212033 TimeManagementAction.tooltip=<html>\u986F\u793A\u65E5\u66C6\u6A21\u7D44 (by Kai Toedter)\u3002</html>
20222034 TimePeriodUnits.days=\u5929
176176 <Entry name="EditAttributesAction" accelerator="alt F9" />
177177 <Entry name="attributes_AddAttributeAction" />
178178 <Entry name="AssignAttributesAction" />
179 <Entry name="CopyAttributes" />
180 <Entry name="PasteAttributes" />
181179 <Entry name="AddStyleAttributes" />
182180 <Entry name="menu_removeAttribute">
183181 <Entry name="attributes_RemoveFirstAttributeAction" />
186184 </Entry>
187185 <Entry name="ShowAttributeDialogAction" />
188186 <Entry builder="separator" />
189 <Entry name="ConfigureNodeReferenceAction" />
187 <Entry name="SetNodeAliasAction" />
190188 <Entry builder="separator" />
191189 <Entry name="LatexInsertLatexAction" plugin="org.freeplane.plugin.latex" />
192190 <Entry name="LatexEditLatexAction" plugin="org.freeplane.plugin.latex" />
460458 </Entry>
461459 <Entry name="extras">
462460 <Entry name="TimeManagementAction" accelerator="control T" />
463 <Entry name="TimeListAction" />
461 <Entry name="ReminderListAction" />
462 <Entry name="OldReminderListAction" />
464463 <Entry name="ReminderHookAction" />
465464 <Entry builder="separator" />
466465 <Entry name="EnterPassword" />
468467 <Entry builder="separator" />
469468 <Entry name="ManageAddOnsAction" plugin="org.freeplane.plugin.script" />
470469 <Entry name="scripting" plugin="org.freeplane.plugin.script" builder="userScripts" />
471 <Entry name="ExecuteScriptForSelectionAction" />
472 <Entry name="ExecuteScriptForAllNodes" />
470 <Entry name="ExecuteScriptForSelectionAction" plugin="org.freeplane.plugin.script"/>
471 <Entry name="ExecuteScriptForAllNodes" plugin="org.freeplane.plugin.script"/>
473472 <Entry name="ScriptEditor" />
474473 <Entry name="formula.EvaluateAllAction" plugin="org.freeplane.plugin.formula" />
475474 <Entry name="formula.ClearDependenciesAction" plugin="org.freeplane.plugin.formula" accelerator="alt F6"/>
517516 <Entry name="DocumentationAction" accelerator="F1" />
518517 <Entry name="FreeplaneHandbook" />
519518 <Entry name="HotKeyInfoAction" />
519 <Entry name="OpenApiDocumentationAction" plugin="org.freeplane.plugin.script"/>
520520 <Entry builder="separator" />
521521 </Entry>
522522 </Entry>
583583 <Entry name="EnterPassword" />
584584 <Entry name="node_popup_scripting" plugin="org.freeplane.plugin.script"
585585 builder="userScripts" />
586 <Entry name="ConfigureNodeReferenceAction" />
586 <Entry name="SetNodeAliasAction" />
587587 <Entry builder="separator" />
588588 <Entry name="CutAction" accelerator="control X" />
589589 <Entry name="CopyAction" accelerator="control C" />
206206 <boolean name="pasteImagesFromFiles"/>
207207 </separator>
208208 <separator name="reminderOptions">
209 <maybe_boolean name="reminder.showPastRemindersOnStart" />
209210 <boolean name="remindersBlink" />
210211 <boolean name="remindersShowNotifications" />
211212 <time_period name="remindersStandardDelay" />
249250 <number name="spelling_opt_suggestions_limit_menu" min="0" />
250251 </separator>
251252 <separator name="notifications">
252 <remind_value name="remind_use_rich_text_in_new_nodes" />
253 <maybe_boolean name="remind_use_rich_text_in_new_nodes" />
253254 <boolean name="delete_nodes_without_question" />
254255 <boolean name="cut_nodes_without_question" />
255256 <boolean name="remove_notes_without_question" />
22 import java.util.Collection;
33 import java.util.HashSet;
44 import java.util.Set;
5 import java.util.stream.Stream;
56
67 public class HighlightedElements implements IExtension {
78
3031 public Set<Object> getElements() {
3132 return elements;
3233 }
34
35 public Stream<Object> stream() {
36 return elements.stream();
37 }
3338 }
1919 package org.freeplane.core.resources;
2020
2121 import java.awt.Color;
22 import java.awt.Graphics;
23 import java.awt.Graphics2D;
24 import java.awt.image.BufferedImage;
2522 import java.io.BufferedInputStream;
2623 import java.io.IOException;
2724 import java.io.InputStream;
3936 import java.util.Vector;
4037
4138 import javax.swing.Icon;
42 import javax.swing.ImageIcon;
4339
4440 import org.freeplane.core.ui.AFreeplaneAction;
4541 import org.freeplane.core.ui.ActionAcceleratorManager;
143139 }
144140
145141 /**
146 * @param resourcesNodeTextColor
142 * @param key
147143 * @return
148144 */
149145 public String getDefaultProperty(final String key) {
227223 /** register defaults in freeplane.properties respectively defaults.properties instead! */
228224 public String getProperty(final String key, final String value) {
229225 return getProperties().getProperty(key, value);
226 }
227
228 public boolean containsProperty(String key) {
229 return getProperties().containsKey(key);
230230 }
231231
232232 public Collection<IFreeplanePropertyListener> getPropertyChangeListeners() {
4545 final JPopupMenu menu = new JPopupMenu();
4646
4747 /**
48 * @param name
4849 * @param defaultColor
49 * @param pTranslator
5050 */
5151 public ColorProperty(final String name, final String defaultColor) {
5252 super(name);
5353 this.defaultColor = defaultColor;
5454 mButton = new JButton() {
5555 /**
56 *
56 *
5757 */
5858 private static final long serialVersionUID = 1L;
5959 {
5353 final List<String> descriptions = new ArrayList<String>();
5454 for (final MindIcon icon : mIcons) {
5555 icons.add(icon);
56 descriptions.add(icon.getTranslationValueLabel());
56 descriptions.add(icon.getTranslatedDescription());
5757 }
5858 final IconSelectionPopupDialog dialog = new IconSelectionPopupDialog(JOptionPane
5959 .getFrameForComponent((Component) e.getSource()), icons);
8383
8484 private void setIcon(final MindIcon actualIcon) {
8585 mButton.setIcon(actualIcon.getIcon());
86 mButton.setToolTipText(actualIcon.getTranslationValueLabel());
86 mButton.setToolTipText(actualIcon.getTranslatedDescription());
8787 }
8888
8989 @Override
11 * Freeplane - mind map editor
22 * Copyright (C) 2001, 2002 Slava Pestov
33 * Copyright (C) 2009 Dimitry Polivaev
4 *
4 *
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
2626 /**
2727 * In conjunction with the <code>KeyEventWorkaround</code>, hides some warts in
2828 * the AWT key event API.
29 *
29 *
3030 */
3131 class KeyEventTranslator {
3232 static class Key {
7373 /**
7474 * Returns a string containing symbolic modifier names set in the specified
7575 * event.
76 *
76 *
7777 * @param evt
7878 * The event
7979 * @since jEdit 4.2pre3
9898 /**
9999 * Returns a the symbolic modifier name for the specified Java modifier
100100 * flag.
101 *
101 *
102102 * @param mod
103103 * A modifier constant from <code>InputEvent</code>
104104 * @since jEdit 4.2pre3
165165 /**
166166 * Changes the mapping between symbolic modifier key names (<code>C</code>,
167167 * <code>A</code>, <code>M</code>, <code>S</code>) and Java modifier flags.
168 * You can map more than one Java modifier to a symobolic modifier, for
168 * You can map more than one Java modifier to a symbolic modifier, for
169169 * example :
170170 * <p>
171171 * <code><pre>
177177 * <pre></code>
178178 * </p>
179179 * You cannot map a Java modifer to more than one symbolic modifier.
180 *
180 *
181181 * @param c
182182 * The modifier(s) to map the <code>C</code> modifier to
183183 * @param a
211211 /**
212212 * Pass this an event from
213213 * {@link KeyEventWorkaround#processKeyEvent(java.awt.event.KeyEvent)}.
214 *
214 *
215215 * @since jEdit 4.2pre3
216216 */
217217 public static Key translateKeyEvent(final KeyEvent evt) {
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.resources.components;
20
21 import java.awt.event.ActionEvent;
22 import java.awt.event.ActionListener;
23
24 import javax.swing.JButton;
25
26 import org.freeplane.core.util.TextUtils;
27
28 import com.jgoodies.forms.builder.DefaultFormBuilder;
29
30 /** implementation of <remind> properties. */
31 public class MaybeBooleanProperty extends PropertyBean implements IPropertyControl {
32 public static final String ASK_VALUE = "ask";
33 protected static final int ASK_VALUE_INT = 2;
34 static public final String FALSE_VALUE = "false";
35 protected static final int FALSE_VALUE_INT = 1;
36 static public final String TRUE_VALUE = "true";
37 protected static final int TRUE_VALUE_INT = 0;
38 JButton mButton = new JButton();
39 int state = 0;
40
41 /**
42 */
43 public MaybeBooleanProperty(final String name) {
44 super(name);
45 mButton.addActionListener(new ActionListener() {
46 @Override
47 public void actionPerformed(final ActionEvent e) {
48 setState((getState() + 1) % 3);
49 firePropertyChangeEvent();
50 }
51 });
52 }
53
54 private int getState() {
55 return state;
56 }
57
58 @Override
59 public String getValue() {
60 switch (state) {
61 case TRUE_VALUE_INT:
62 return TRUE_VALUE;
63 case FALSE_VALUE_INT:
64 return FALSE_VALUE;
65 case ASK_VALUE_INT:
66 return ASK_VALUE;
67 }
68 return null;
69 }
70
71 @Override
72 public void layout(final DefaultFormBuilder builder) {
73 layout(builder, mButton);
74 }
75
76 @Override
77 public void setEnabled(final boolean pEnabled) {
78 mButton.setEnabled(pEnabled);
79 }
80
81 /**
82 *
83 */
84 protected void setState(final int newState) {
85 state = newState;
86 String[] strings;
87 strings = new String[3];
88 strings[MaybeBooleanProperty.TRUE_VALUE_INT] = TextUtils.getText("OptionalDontShowMeAgainDialog.ok")
89 .replaceFirst("&", "");
90 strings[MaybeBooleanProperty.FALSE_VALUE_INT] = TextUtils.getText("OptionalDontShowMeAgainDialog.cancel")
91 .replaceFirst("&", "");
92 strings[MaybeBooleanProperty.ASK_VALUE_INT] = TextUtils.getText("OptionPanel.ask").replaceFirst("&",
93 "");
94 mButton.setText(strings[state]);
95 }
96
97 @Override
98 public void setValue(final String value) {
99 setState(transformString(value));
100 }
101
102 private int transformString(final String string) {
103 if (string.toLowerCase().equals(TRUE_VALUE)) {
104 return MaybeBooleanProperty.TRUE_VALUE_INT;
105 }
106 else if (string.toLowerCase().equals(FALSE_VALUE)) {
107 return MaybeBooleanProperty.FALSE_VALUE_INT;
108 }
109 else {
110 return MaybeBooleanProperty.ASK_VALUE_INT;
111 }
112 }
113
114 }
2525 import java.net.URL;
2626 import java.text.Collator;
2727 import java.util.Arrays;
28 import java.util.Map.Entry;
2829 import java.util.Set;
2930 import java.util.TreeMap;
3031 import java.util.TreeSet;
3132 import java.util.Vector;
32 import java.util.Map.Entry;
3333
3434 import javax.swing.ImageIcon;
3535 import javax.swing.tree.DefaultMutableTreeNode;
3939 import org.freeplane.core.io.xml.TreeXmlReader;
4040 import org.freeplane.core.resources.ResourceBundles;
4141 import org.freeplane.core.resources.ResourceController;
42 import org.freeplane.core.resources.components.OptionPanelBuilder.ComboPropertyCreator;
43 import org.freeplane.core.resources.components.OptionPanelBuilder.PropertyCreator;
4442 import org.freeplane.core.ui.IndexedTree;
4543 import org.freeplane.core.ui.LengthUnits;
4644 import org.freeplane.core.ui.TimePeriodUnits;
410408 abstract public IPropertyControlCreator getCreator(String name, XMLElement data);
411409 }
412410
413 private class RemindValueCreator extends PropertyCreator {
414 @Override
415 public IPropertyControlCreator getCreator(final String name, final XMLElement data) {
416 return createRemindValueProperty(name);
411 private class MaybeBooleanCreator extends PropertyCreator {
412 @Override
413 public IPropertyControlCreator getCreator(final String name, final XMLElement data) {
414 return createMaybeBooleanProperty(name);
417415 }
418416 }
419417
526524 addCreator(path, createNumberOptionCreator(name, min, max, step), name, position);
527525 }
528526
529 public void addRemindValueProperty(final String path, final String name, final int position) {
530 addCreator(path, createRemindValueProperty(name), name, position);
527 public void addMaybeBooleanProperty(final String path, final String name, final int position) {
528 addCreator(path, createMaybeBooleanProperty(name), name, position);
531529 }
532530
533531 public void addSeparator(final String path, final String name, final int position) {
617615 };
618616 }
619617
620 private IPropertyControlCreator createRemindValueProperty(final String name) {
621 return new IPropertyControlCreator() {
622 @Override
623 public IPropertyControl createControl() {
624 return new RemindValueProperty(name);
618 private IPropertyControlCreator createMaybeBooleanProperty(final String name) {
619 return new IPropertyControlCreator() {
620 @Override
621 public IPropertyControl createControl() {
622 return new MaybeBooleanProperty(name);
625623 }
626624 };
627625 }
705703 readManager.addElementHandler("combo", new ComboOptionCreator());
706704 readManager.addElementHandler("languages", new LanguagesComboCreator());
707705 readManager.addElementHandler("key", new KeyOptionCreator());
708 readManager.addElementHandler("remind_value", new RemindValueCreator());
706 readManager.addElementHandler("maybe_boolean", new MaybeBooleanCreator());
709707 }
710708
711709 public void load(final URL menu) {
+0
-117
freeplane/src/main/java/org/freeplane/core/resources/components/RemindValueProperty.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.resources.components;
20
21 import java.awt.event.ActionEvent;
22 import java.awt.event.ActionListener;
23
24 import javax.swing.JButton;
25
26 import org.freeplane.core.util.TextUtils;
27
28 import com.jgoodies.forms.builder.DefaultFormBuilder;
29
30 /** implementation of <remind> properties. */
31 public class RemindValueProperty extends PropertyBean implements IPropertyControl {
32 public static final String DON_T_TOUCH_VALUE = "";
33 protected static final int DON_T_TOUCH_VALUE_INT = 2;
34 static public final String FALSE_VALUE = "false";
35 protected static final int FALSE_VALUE_INT = 1;
36 static public final String TRUE_VALUE = "true";
37 protected static final int TRUE_VALUE_INT = 0;
38 JButton mButton = new JButton();
39 int state = 0;
40
41 /**
42 */
43 public RemindValueProperty(final String name) {
44 super(name);
45 mButton.addActionListener(new ActionListener() {
46 public void actionPerformed(final ActionEvent e) {
47 setState((getState() + 1) % 3);
48 firePropertyChangeEvent();
49 }
50 });
51 }
52
53 private int getState() {
54 return state;
55 }
56
57 @Override
58 public String getValue() {
59 switch (state) {
60 case TRUE_VALUE_INT:
61 return TRUE_VALUE;
62 case FALSE_VALUE_INT:
63 return FALSE_VALUE;
64 case DON_T_TOUCH_VALUE_INT:
65 return DON_T_TOUCH_VALUE;
66 }
67 return null;
68 }
69
70 public void layout(final DefaultFormBuilder builder) {
71 layout(builder, mButton);
72 }
73
74 public void setEnabled(final boolean pEnabled) {
75 mButton.setEnabled(pEnabled);
76 }
77
78 /**
79 *
80 */
81 protected void setState(final int newState) {
82 state = newState;
83 String[] strings;
84 strings = new String[3];
85 strings[RemindValueProperty.TRUE_VALUE_INT] = TextUtils.getText("OptionalDontShowMeAgainDialog.ok")
86 .replaceFirst("&", "");
87 strings[RemindValueProperty.FALSE_VALUE_INT] = TextUtils.getText("OptionalDontShowMeAgainDialog.cancel")
88 .replaceFirst("&", "");
89 strings[RemindValueProperty.DON_T_TOUCH_VALUE_INT] = TextUtils.getText("OptionPanel.ask").replaceFirst("&",
90 "");
91 mButton.setText(strings[state]);
92 }
93
94 @Override
95 public void setValue(final String value) {
96 if (value == null
97 || !(value.toLowerCase().equals(TRUE_VALUE) || value.toLowerCase().equals(FALSE_VALUE) || value
98 .toLowerCase().equals(DON_T_TOUCH_VALUE))) {
99 throw new IllegalArgumentException("Cannot set a boolean to " + value);
100 }
101 setState(transformString(value));
102 }
103
104 private int transformString(final String string) {
105 if (string == null) {
106 return RemindValueProperty.DON_T_TOUCH_VALUE_INT;
107 }
108 if (string.toLowerCase().equals(TRUE_VALUE)) {
109 return RemindValueProperty.TRUE_VALUE_INT;
110 }
111 if (string.toLowerCase().equals(FALSE_VALUE)) {
112 return RemindValueProperty.FALSE_VALUE_INT;
113 }
114 return RemindValueProperty.DON_T_TOUCH_VALUE_INT;
115 }
116 }
2525 import javax.swing.Icon;
2626
2727 import org.freeplane.core.resources.ResourceController;
28 import org.freeplane.core.ui.svgicons.FreeplaneIconFactory;
2928 import org.freeplane.core.util.TextUtils;
3029
3130 /**
134133 }
135134
136135 @Override
137 public final String getIconKey() {
136 public String getIconKey() {
138137 return key + ".icon";
139138 }
140139
2424 import org.freeplane.features.mode.Controller;
2525
2626 /**
27 * listener, that blocks the controler if the menu is active (PN) Take care!
27 * Listener, that blocks the controller if the menu is active (PN) Take care!
2828 * This listener is also used for modelpopups (as for graphical links).
2929 */
3030 public class ControllerPopupMenuListener implements HierarchyListener {
31
31
3232 public void hierarchyChanged(HierarchyEvent e) {
3333 if(e.getID() != HierarchyEvent.ANCESTOR_MOVED && e.getID() != HierarchyEvent.ANCESTOR_RESIZED)
3434 Controller.getCurrentModeController().setBlocked(e.getComponent().isShowing());
5454 * A convenience implementation of FileFilter that filters out all files except
5555 * for those type extensions that it knows about. Extensions are of the type
5656 * ".foo", which is typically found on Windows and Unix boxes, but not on
57 * Macinthosh. Case is ignored. Example - create a new filter that filerts out
57 * Macinthosh. Case is ignored. Example - create a new filter that filters out
5858 * all files but gif and jpg image files: JFileChooser chooser = new
5959 * JFileChooser(); ExampleFileFilter filter = new ExampleFileFilter( new
6060 * String{"gif", "jpg"}, "JPEG & GIF Images")
208208
209209 /**
210210 * Returns whether the extension list (.jpg, .gif, etc) should show up in
211 * the human readable description. Only relevent if a description was
211 * the human readable description. Only relevant if a description was
212212 * provided in the constructor or using setDescription();
213213 */
214214 public boolean isExtensionListInDescription() {
226226
227227 /**
228228 * Determines whether the extension list (.jpg, .gif, etc) should show up in
229 * the human readable description. Only relevent if a description was
229 * the human readable description. Only relevant if a description was
230230 * provided in the constructor or using setDescription();
231231 */
232232 public void setExtensionListInDescription(final boolean b) {
3737 import org.freeplane.core.ui.components.UITools;
3838 import org.freeplane.core.util.Compat;
3939 import org.freeplane.core.util.TextUtils;
40 import org.freeplane.features.clipboard.MindMapNodesSelection;
40 import org.freeplane.features.map.clipboard.MindMapNodesSelection;
4141
4242 public class FileOpener implements DropTargetListener {
4343
1818 */
1919 package org.freeplane.core.ui.components;
2020
21 /**
22 * @author Dimitry Polivaev
23 * 22.08.2009
24 */
2521 import java.awt.Color;
2622 import java.awt.Dimension;
2723 import java.awt.Image;
3935 import org.freeplane.core.util.LogUtils;
4036 import org.freeplane.view.swing.features.filepreview.BitmapViewerComponent;
4137
38 /**
39 * @author Dimitry Polivaev
40 * 22.08.2009
41 */
4242 public class BitmapImagePreview extends JComponent implements PropertyChangeListener {
4343 /**
44 *
44 *
4545 */
4646 private static final long serialVersionUID = 1L;
4747 protected static final int BORDER_WIDTH = 2;
5656 fc.addPropertyChangeListener(this);
5757 }
5858
59 @Override
5960 public void propertyChange(final PropertyChangeEvent e) {
6061 final String prop = e.getPropertyName();
6162 //If the directory changed, don't show an image.
5555 private StringBuilder password = null;
5656 private int result = EnterPasswordDialog.CANCEL;
5757
58 /**
59 * @deprecated do not use. This is for visual editor only.
60 */
61 @Deprecated
62 public EnterPasswordDialog() {
63 }
6458
6559 /**
6660 * This is the default constructor
6862 public EnterPasswordDialog(final Frame frame, final boolean enterTwoPasswords) {
6963 super(frame, "", true /* =modal */);
7064 this.enterTwoPasswords = enterTwoPasswords;
71 initialize();
65 this.setTitle(TextUtils.getText("accessories/plugins/EncryptNode.properties_0"));
66 this.setContentPane(getJContentPane());
67 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
68 addWindowListener(new WindowAdapter() {
69 @Override
70 public void windowClosing(final WindowEvent we) {
71 cancelPressed();
72 }
73 });
74 pack();
7275 }
7376
7477 private void cancelPressed() {
218221 */
219222 private JPasswordField getJPasswordField() {
220223 if (jPasswordField == null) {
221 jPasswordField = new JPasswordField();
224 jPasswordField = new JPasswordField(20);
222225 }
223226 return jPasswordField;
224227 }
247250 */
248251 public int getResult() {
249252 return result;
250 }
251
252 /**
253 * This method initializes this
254 *
255 * @return void
256 */
257 private void initialize() {
258 this.setTitle(TextUtils.getText("accessories/plugins/EncryptNode.properties_0"));
259 this.setSize(300, 200);
260 this.setContentPane(getJContentPane());
261 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
262 addWindowListener(new WindowAdapter() {
263 @Override
264 public void windowClosing(final WindowEvent we) {
265 cancelPressed();
266 }
267 });
268253 }
269254
270255 private void okPressed() {
342342 final IIconInformation iconInformation = icons.get(index);
343343 final String keyStroke = ResourceController.getResourceController().getProperty(iconInformation.getShortcutKey());
344344 if (keyStroke != null) {
345 descriptionLabel.setText(iconInformation.getTranslationValueLabel() + ", " + keyStroke);
345 descriptionLabel.setText(iconInformation.getTranslatedDescription() + ", " + keyStroke);
346346 }
347347 else {
348 descriptionLabel.setText(iconInformation.getTranslationValueLabel());
348 descriptionLabel.setText(iconInformation.getTranslatedDescription());
349349 }
350350 }
351351
+0
-220
freeplane/src/main/java/org/freeplane/core/ui/components/JResizer.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2011 dimitry
3 *
4 * This file author is dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version CONTROL_SIZE of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.ui.components;
20
21 import java.awt.Component;
22 import java.awt.Container;
23 import java.awt.Cursor;
24 import java.awt.Dimension;
25 import java.awt.Point;
26 import java.awt.event.ComponentListener;
27 import java.awt.event.MouseAdapter;
28 import java.awt.event.MouseEvent;
29 import java.awt.event.MouseMotionAdapter;
30 import java.util.LinkedHashSet;
31 import java.util.Set;
32
33 import javax.swing.Box;
34 import javax.swing.JComponent;
35 import javax.swing.SwingUtilities;
36
37 /**
38 * @author Dimitry Polivaev
39 * Jan 24, 2011
40 */
41 @SuppressWarnings("serial")
42 public class JResizer extends JComponent {
43 private static final int CONTROL_SIZE = 5;
44 protected boolean sliderLock = false;
45 protected Point point;
46 private int index;
47 public enum Direction {RIGHT, LEFT, UP, DOWN;
48 public Box createBox() {
49 switch (this) {
50 case RIGHT:
51 case LEFT:
52 return Box.createHorizontalBox();
53 default:
54 return Box.createVerticalBox();
55 }
56 }
57
58 public int getPreferredSize(final Component component) {
59 final Dimension preferredSize = component.getPreferredSize();
60 switch (this) {
61 case RIGHT:
62 case LEFT:
63 return preferredSize.width;
64 default:
65 return preferredSize.height;
66 }
67 }
68
69 public void setPreferredSize(Component component, int size) {
70 switch (this) {
71 case RIGHT:
72 case LEFT:
73 component.setPreferredSize(new Dimension(size, 1));
74 return;
75 default:
76 component.setPreferredSize(new Dimension(1, size));
77 }
78 }
79 }
80
81 private final Set<ResizerListener> resizeListener = new LinkedHashSet<ResizerListener>();
82
83 public JResizer(final Direction d) {
84 setOpaque(true);
85 final int w;
86 final int h;
87 if(d.equals(Direction.RIGHT)){
88 w = CONTROL_SIZE;
89 h = 0;
90 setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
91 }
92 else if(d.equals(Direction.LEFT)){
93 h = CONTROL_SIZE;
94 w = 0;
95 setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
96 }
97 else if(d.equals(Direction.UP)){
98 h = 0;
99 w = CONTROL_SIZE;
100 setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
101 }
102 else /*Direction.DOWN*/ {
103 h = 0;
104 w = CONTROL_SIZE;
105 setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
106 }
107
108 setPreferredSize(new Dimension(w, h));
109 addMouseListener(new MouseAdapter() {
110
111
112
113 @Override
114 public void mousePressed(MouseEvent e) {
115 point = null;
116 }
117
118 @Override
119 public void mouseReleased(MouseEvent e) {
120 point = null;
121 }
122
123 });
124 addMouseMotionListener(new MouseMotionAdapter() {
125
126 private int getIndex() {
127 final Container parent = getParent();
128 for(int i = 0; i < parent.getComponentCount(); i++ ){
129 if(JResizer.this.equals(parent.getComponent(i))){
130 if(d.equals(Direction.RIGHT)){
131 return i + 1;
132 }
133 else if(d.equals(Direction.LEFT)){
134 return i - 1;
135 }
136 else if(d.equals(Direction.UP)){
137 return i - 1;
138 }
139 else if(d.equals(Direction.DOWN)){
140 return i + 1;
141 }
142 }
143 }
144 return -1;
145 }
146
147
148 @Override
149 public void mouseDragged(MouseEvent e) {
150 if(sliderLock) {
151 return;
152 }
153 final Point point2 = e.getPoint();
154 SwingUtilities.convertPointToScreen(point2, e.getComponent());
155 if(point != null){
156 final JComponent parent = (JComponent) getParent();
157 final Component resizedComponent = parent.getComponent(index);
158 final Dimension size = new Dimension(resizedComponent.getPreferredSize());
159 if(d.equals(Direction.RIGHT)){
160 size.width -= (point2.x - point.x);
161 }
162 else if(d.equals(Direction.LEFT)){
163 size.width += (point2.x - point.x);
164 }
165 else if(d.equals(Direction.UP)){
166 size.height += (point2.y - point.y);
167 }
168 else if(d.equals(Direction.DOWN)){
169 size.height -= (point2.y - point.y);
170 }
171 resizedComponent.setPreferredSize(new Dimension(Math.max(size.width, 0), Math.max(size.height, 0)));
172 parent.revalidate();
173 parent.repaint();
174 fireSizeChanged(resizedComponent);
175 }
176 else{
177 index = getIndex();
178 }
179 point = point2;
180 }
181 });
182 }
183
184 public void addResizerListener(ResizerListener listener) {
185 if(listener == null) return;
186
187 synchronized (resizeListener) {
188 resizeListener.add(listener);
189 }
190
191 }
192
193 public void removeResizerListener(ComponentListener listener) {
194 if(listener == null) return;
195
196 synchronized (resizeListener) {
197 resizeListener.remove(listener);
198 }
199 }
200
201 public void setSliderLocked(boolean enabled) {
202 this.sliderLock = enabled;
203 }
204
205 public boolean isSliderLocked() {
206 return this.sliderLock;
207 }
208
209 private void fireSizeChanged(Component resizedComponent) {
210 ResizeEvent event = new ResizeEvent(this, resizedComponent);
211 synchronized (this.resizeListener) {
212 for(ResizerListener listener : resizeListener) {
213 listener.componentResized(event);
214 }
215 }
216
217 }
218
219 }
+0
-470
freeplane/src/main/java/org/freeplane/core/ui/components/OneTouchCollapseResizer.java less more
0 /**
1 * author: Marcel Genzmehr
2 * 29.11.2011
3 */
4 package org.freeplane.core.ui.components;
5
6 import java.awt.Color;
7 import java.awt.Component;
8 import java.awt.Container;
9 import java.awt.Cursor;
10 import java.awt.Dimension;
11 import java.awt.Graphics;
12 import java.awt.event.MouseEvent;
13 import java.awt.event.MouseListener;
14 import java.util.LinkedHashSet;
15 import java.util.Set;
16
17 import javax.swing.JComponent;
18 import javax.swing.JPanel;
19
20 import org.freeplane.core.util.LogUtils;
21 import org.freeplane.features.mode.Controller;
22 import org.freeplane.features.ui.IMapViewManager;
23
24 /**
25 *
26 */
27 public class OneTouchCollapseResizer extends JResizer {
28 private static final long serialVersionUID = 3836146387249880446L;
29 public static final String COLLAPSED = OneTouchCollapseResizer.class.getPackage().getName()+".collapsed";
30 private static final String ALREADY_IN_PAINT = OneTouchCollapseResizer.class.getPackage().getName()+".ALREADY_PAINTING";
31
32 protected boolean expanded = true;
33 private JPanel hotspot;
34 private final int inset = 2;
35 private final Direction direction;
36 private Integer resizeComponentIndex;
37
38 private final Set<ComponentCollapseListener> collapseListener = new LinkedHashSet<ComponentCollapseListener>();
39 private Dimension lastPreferredSize = null;
40
41
42
43 /***********************************************************************************
44 * CONSTRUCTORS
45 **********************************************************************************/
46 /**
47 * @param d
48 */
49 public OneTouchCollapseResizer(final Direction d) {
50 super(d);
51 direction = d;
52 this.setDividerSize(7);
53
54 MouseListener listener = new MouseListener() {
55 private void resetCursor() {
56 if(d.equals(Direction.RIGHT)){
57 setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
58 }
59 else if(d.equals(Direction.LEFT)){
60 setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
61 }
62 else if(d.equals(Direction.UP)){
63 setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
64 }
65 else /*Direction.DOWN*/ {
66 setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
67 }
68 }
69
70 public void mouseReleased(MouseEvent e) {
71 }
72
73 public void mousePressed(MouseEvent e) {
74 }
75
76 public void mouseExited(MouseEvent e) {
77 if(e.getComponent() == getHotSpot()) {
78 resetCursor();
79 }
80 if(isExpanded()) {
81 resetCursor();
82 }
83 }
84
85 public void mouseEntered(MouseEvent e) {
86 if(e.getComponent() == getHotSpot()) {
87 getHotSpot().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
88 }
89 if(!isExpanded() || sliderLock) {
90 e.getComponent().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
91 }
92 }
93
94 public void mouseClicked(MouseEvent e) {
95 if((e.getComponent() == getHotSpot()) || sliderLock) {
96
97 if (isExpanded()) {
98 getHotSpot().setEnabled(true);
99 setExpanded(false);
100 }
101 else {
102 setExpanded(true);
103 }
104 }
105 else {
106 if (!isExpanded()) {
107 setExpanded(true);
108 }
109 }
110 }
111 };
112 getHotSpot().addMouseListener(listener);
113 addMouseListener(listener);
114
115 add(getHotSpot());
116 }
117
118 /***********************************************************************************
119 * METHODS
120 **********************************************************************************/
121
122 public boolean isExpanded() {
123 return this.expanded;
124 }
125
126 public void setDividerSize(int size) {
127 final int w;
128 final int h;
129 if(direction.equals(Direction.RIGHT)){
130 w = size;
131 h = 0;
132 }
133 else if(direction.equals(Direction.LEFT)){
134 h = 0;
135 w = size;
136 }
137 else if(direction.equals(Direction.UP)){
138 h = size;
139 w = 0;
140 }
141 else /*Direction.DOWN*/ {
142 h = size;
143 w = 0;
144 }
145 setPreferredSize(new Dimension(w, h));
146 }
147
148 public int getDividerSize() {
149 if(direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT)){
150 return getPreferredSize().width;
151 }
152 else /*Direction.DOWN || Direction.UP*/ {
153 return getPreferredSize().height;
154 }
155 }
156
157 public void setExpanded(boolean expanded) {
158 if(this.expanded != expanded) {
159 this.expanded = expanded;
160 try {
161 Component resizedComponent = getResizedComponent();
162 if(resizedComponent instanceof JComponent) {
163 ((JComponent) resizedComponent).putClientProperty(COLLAPSED, (expanded ? null : "true"));
164 }
165 if(expanded) {
166 resizedComponent.setPreferredSize(lastPreferredSize);
167 }
168 else {
169 lastPreferredSize = resizedComponent.isPreferredSizeSet() ? resizedComponent.getPreferredSize() : null;
170 resizedComponent.setPreferredSize(new Dimension(0,0));
171 }
172 IMapViewManager mapViewManager = Controller.getCurrentController().getMapViewManager();
173 mapViewManager.moveFocusFromDescendantToSelection(resizedComponent);
174 resizedComponent.setVisible(expanded);
175
176 if (!expanded)
177 fireCollapseStateChanged(resizedComponent, expanded);
178
179 recalibrate();
180 }
181 catch (Exception e) {
182 LogUtils.warn("Exception in org.freeplane.core.ui.components.OneTouchCollapseResizer.setExpanded(enabled): "+e);
183 }
184 }
185
186 }
187
188 private Component getResizedComponent() {
189 final JComponent parent = (JComponent) getParent();
190 if(parent != null && resizeComponentIndex == null) {
191 resizeComponentIndex = getIndex();
192 }
193 return parent.getComponent(resizeComponentIndex);
194 }
195
196 @Override
197 public void paint(Graphics g) {
198 if(getClientProperty(ALREADY_IN_PAINT) != null) {
199 return;
200 }
201 putClientProperty(ALREADY_IN_PAINT, "true");
202 super.paint(g);
203 if((direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT))) {
204 int center_y = getHeight()/2;
205 int divSize = getDividerSize();
206 getHotSpot().setBounds(0, center_y-15, divSize, 30);
207 }
208 else {
209 int center_x = getWidth()/2;
210 int divSize = getDividerSize();
211 getHotSpot().setBounds(center_x-15, 0, 30, divSize);
212 }
213 Dimension size = getResizedComponent().getPreferredSize();
214 if((direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT)) && size.width <= getDividerSize()) {
215 setExpanded(false);
216
217 }
218 else if((direction.equals(Direction.UP) || direction.equals(Direction.DOWN)) && size.height <= getDividerSize()){
219 setExpanded(false);
220 }
221 else {
222 setExpanded(true);
223 }
224 if(getResizedComponent() instanceof JComponent) {
225 ((JComponent) getResizedComponent()).putClientProperty(COLLAPSED, (isExpanded() ? null : "true"));
226 }
227 getHotSpot().paint(g.create(getHotSpot().getLocation().x, getHotSpot().getLocation().y, getHotSpot().getWidth(), getHotSpot().getHeight()));
228 putClientProperty(ALREADY_IN_PAINT, null);
229 }
230
231 private Component getHotSpot() {
232 if(hotspot == null) {
233 hotspot = new JPanel() {
234 private static final long serialVersionUID = -5321517835206976034L;
235
236 @Override
237 public void paint(Graphics g) {
238 if (isExpanded()) {
239 drawCollapseLabel(g);
240 }
241 else {
242 drawExpandLabel(g);
243 }
244 }
245
246 @Override
247 public void updateUI() {
248 try {
249 super.updateUI();
250 }
251 catch (Exception e) {
252 }
253 }
254 };
255 hotspot.setBackground(Color.BLUE);
256 }
257 return hotspot;
258 }
259
260 private void drawCollapseLabel(Graphics g) {
261 Dimension size = g.getClipBounds().getSize();
262 int half_length = Math.round(size.height*0.2f);
263 int center_y = size.height / 2;
264
265 int half_width = Math.round(size.width*0.2f);
266 int center_x = size.width / 2;
267
268 g.setColor(getBackground());
269 g.fillRect(0, 0, getWidth(), getHeight());
270
271 //g.setColor();
272 if(this.direction.equals(Direction.LEFT)) {
273 arrowLeft(g, half_length, center_y);
274 }
275 else if(this.direction.equals(Direction.RIGHT)) {
276 arrowRight(g, half_length, center_y);
277 }
278 else if(this.direction.equals(Direction.UP)) {
279 arrowUp(g, half_width, center_x);
280 }
281 else if(this.direction.equals(Direction.DOWN)) {
282 arrowDown(g, half_width, center_x);
283 }
284 }
285
286
287
288 private void drawExpandLabel(Graphics g) {
289 Dimension size = g.getClipBounds().getSize();
290 int half_length = (size.height-(inset*6))/2;
291 int center_y = size.height / 2;
292
293 int half_width = (size.width-(inset*6))/2;
294 int center_x = size.width / 2;
295
296 g.setColor(getBackground());
297 g.fillRect(0, 0, getWidth(), getHeight());
298
299 if(this.direction.equals(Direction.LEFT)) {
300 arrowRight(g, half_length, center_y);
301 }
302 else if(this.direction.equals(Direction.RIGHT)) {
303 arrowLeft(g, half_length, center_y);
304 }
305 else if(this.direction.equals(Direction.UP)) {
306 arrowDown(g, half_width, center_x);
307 }
308 else if(this.direction.equals(Direction.DOWN)) {
309 arrowUp(g, half_width, center_x);
310 }
311 }
312
313
314 /**
315 * @param g
316 * @param half_length
317 * @param center_y
318 */
319 private void arrowLeft(Graphics g, int half_length, int center_y) {
320 int[] x = new int[]{inset, getSize().width - inset, getSize().width - inset};
321 int[] y = new int[]{center_y, center_y-half_length, center_y + half_length};
322 g.setColor(Color.DARK_GRAY);
323 g.fillPolygon(x, y, 3);
324 g.setColor(Color.DARK_GRAY);
325 g.drawLine(inset, center_y, getSize().width - inset, center_y - half_length);
326 g.setColor(Color.GRAY);
327 g.drawLine( getSize().width - inset, center_y + half_length, inset, center_y);
328 g.setColor(Color.GRAY);
329 g.drawLine( getSize().width - inset, center_y - half_length, getSize().width - inset, center_y + half_length);
330 }
331
332 /**
333 * @param g
334 * @param half_length
335 * @param center_y
336 */
337 private void arrowRight(Graphics g, int half_length, int center_y) {
338 int[] x = new int[]{inset, inset, getSize().width - inset};
339 int[] y = new int[]{center_y+half_length, center_y-half_length, center_y};
340
341 g.setColor( Color.DARK_GRAY);
342 g.fillPolygon(x,y,3);
343 g.setColor( Color.DARK_GRAY);
344 g.drawLine( inset, center_y + half_length, inset, center_y - half_length);
345 g.setColor(Color.GRAY);
346 g.drawLine( inset, center_y - half_length, getSize().width - inset, center_y);
347 g.setColor( Color.LIGHT_GRAY);
348 g.drawLine( getSize().width - inset, center_y, inset, center_y + half_length);
349 }
350
351 private void arrowUp(Graphics g, int half_length, int center_x) {
352 int[] y = new int[]{inset, getSize().height - inset, getSize().height - inset};
353 int[] x = new int[]{center_x, center_x-half_length, center_x + half_length};
354
355 g.setColor(Color.DARK_GRAY);
356 g.fillPolygon(x, y, 3);
357
358 g.setColor(Color.GRAY);
359 g.drawLine(center_x + half_length, getSize().height - inset, center_x, inset);
360 g.setColor(Color.DARK_GRAY);
361 g.drawLine(center_x, inset, center_x - half_length, getSize().height - inset);
362 g.setColor(Color.LIGHT_GRAY);
363 g.drawLine(center_x - half_length, getSize().height - inset, center_x + half_length, getSize().height - inset);
364
365 }
366
367 private void arrowDown(Graphics g, int half_length, int center_x) {
368 int[] y = new int[]{inset, inset, getSize().height - inset};
369 int[] x = new int[]{center_x+half_length, center_x-half_length, center_x};
370
371 g.setColor( Color.DARK_GRAY);
372 g.fillPolygon(x,y,3);
373
374 g.setColor(Color.GRAY);
375 g.drawLine( center_x - half_length, inset, center_x, getSize().height- inset);
376 g.setColor( Color.DARK_GRAY);
377 g.drawLine( center_x + half_length, inset, center_x - half_length, inset);
378 g.setColor( Color.LIGHT_GRAY);
379 g.drawLine(center_x, getSize().height - inset, center_x + half_length, inset);
380 }
381
382 private int getIndex() {
383 final Container parent = getParent();
384 for(int i = 0; i < parent.getComponentCount(); i++ ){
385 if(OneTouchCollapseResizer.this.equals(parent.getComponent(i))){
386 if(direction.equals(Direction.RIGHT)){
387 return i + 1;
388 }
389 else if(direction.equals(Direction.LEFT)){
390 return i - 1;
391 }
392 else if(direction.equals(Direction.UP)){
393 return i - 1;
394 }
395 else if(direction.equals(Direction.DOWN)){
396 return i + 1;
397 }
398 }
399 }
400 return -1;
401 }
402
403 public void addCollapseListener(ComponentCollapseListener listener) {
404 if(listener == null) return;
405
406 synchronized (collapseListener) {
407 collapseListener.add(listener);
408 }
409
410 }
411
412 public void removeCollapseListener(ComponentCollapseListener listener) {
413 if(listener == null) return;
414
415 synchronized (collapseListener) {
416 collapseListener.remove(listener);
417 }
418 }
419
420 protected void fireCollapseStateChanged(Component resizedComponent, boolean expanded) {
421 ResizeEvent event = new ResizeEvent(this, resizedComponent);
422 synchronized (this.collapseListener) {
423 for(ComponentCollapseListener listener : collapseListener) {
424 try {
425 if(expanded) {
426 listener.componentExpanded(event);
427 }
428 else {
429 listener.componentCollapsed(event);
430 }
431 }
432 catch (Exception e) {
433 LogUtils.severe(e);
434 }
435 }
436 }
437
438 }
439
440 public static OneTouchCollapseResizer findResizerFor(Component component) {
441 if(component instanceof Container) {
442 Component[] children = ((Container) component).getComponents();
443 for (Component child : children) {
444 if(child instanceof OneTouchCollapseResizer) {
445 return (OneTouchCollapseResizer) child;
446 }
447 }
448 }
449 if(component == null)
450 return null;
451 Component parent = component.getParent();
452 return findResizerFor(parent);
453 }
454
455 public interface ComponentCollapseListener {
456 public void componentCollapsed(ResizeEvent event);
457 public void componentExpanded(ResizeEvent event);
458 }
459
460 public void recalibrate() {
461 if(getClientProperty(ALREADY_IN_PAINT) == null) {
462 final JComponent parent = (JComponent) getParent();
463 if(parent != null) {
464 parent.revalidate();
465 parent.repaint();
466 }
467 }
468 }
469 }
+0
-23
freeplane/src/main/java/org/freeplane/core/ui/components/ResizeEvent.java less more
0 package org.freeplane.core.ui.components;
1
2 import java.awt.Component;
3 import java.util.EventObject;
4
5 public class ResizeEvent extends EventObject {
6
7 private static final long serialVersionUID = 3131068483469543037L;
8 private final Component component;
9
10 public ResizeEvent(JResizer source, Component component) {
11 super(source);
12 this.component = component;
13 }
14
15 public JResizer getSource() {
16 return (JResizer) super.getSource();
17 }
18
19 public Component getComponent() {
20 return component;
21 }
22 }
+0
-6
freeplane/src/main/java/org/freeplane/core/ui/components/ResizerListener.java less more
0 package org.freeplane.core.ui.components;
1
2
3 public interface ResizerListener {
4 public void componentResized(ResizeEvent event);
5 }
5656 import javax.swing.JTextArea;
5757 import javax.swing.KeyStroke;
5858 import javax.swing.SwingUtilities;
59 import javax.swing.Timer;
5960 import javax.swing.UIManager;
6061 import javax.swing.border.Border;
6162 import javax.swing.border.CompoundBorder;
326327 if (c == null || ! c.isShowing()) {
327328 return;
328329 }
329 final Point compLocation = c.getLocationOnScreen();
330 final int cw = c.getWidth();
331 final int ch = c.getHeight();
332 final Container parent = dialog.getParent();
333 final Point parentLocation = parent.getLocationOnScreen();
334 final int pw = parent.getWidth();
335 final int ph = parent.getHeight();
336 final int dw = dialog.getWidth();
337 final int dh = dialog.getHeight();
338 final Rectangle desktopBounds = getAvailableScreenBounds(c);
330 final Point location = findBestLocation(dialog, c);
331 dialog.setLocation(location);
332 }
333
334 public static Point findBestLocation(final Component placedComponent, final Component displayedComponent) {
335 final Point compLocation = displayedComponent.getLocationOnScreen();
336 final int cw = displayedComponent.getWidth();
337 final int ch = displayedComponent.getHeight();
338 final Window window = displayedComponent instanceof Window ? (Window) displayedComponent : SwingUtilities.getWindowAncestor(displayedComponent);
339 final Point parentLocation = window.getLocationOnScreen();
340 final int pw = window.getWidth();
341 final int ph = window.getHeight();
342 final Rectangle desktopBounds = getAvailableScreenBounds(displayedComponent);
339343 final int minX = Math.max(parentLocation.x, desktopBounds.x);
340344 final int minY = Math.max(parentLocation.y, desktopBounds.y);
341345 final int maxX = Math.min(parentLocation.x + pw, desktopBounds.x + desktopBounds.width);
342346 final int maxY = Math.min(parentLocation.y + ph, desktopBounds.y + desktopBounds.height);
347 final Dimension preferredSize = placedComponent.getPreferredSize();
348 final int dw = preferredSize.width;
349 int dh = preferredSize.height;
343350 int dx, dy;
344351 if (compLocation.x + cw < minX) {
345352 dx = minX;
353360 if (leftSpace > rightSpace) {
354361 if (leftSpace > dw) {
355362 dx = compLocation.x - dw;
363 dh = 0;
356364 }
357365 else {
358366 dx = minX;
361369 else {
362370 if (rightSpace > dw) {
363371 dx = compLocation.x + cw;
372 dh = 0;
364373 }
365374 else {
366375 dx = maxX - dw;
393402 }
394403 }
395404 }
396 dialog.setLocation(dx, dy);
405 final Point location = new Point(dx, dy);
406 return location;
397407 }
398408
399409 public static void setDialogLocationRelativeTo(final JDialog dialog,
741751 @Override
742752 public void focusGained(FocusEvent e) {
743753 selectedComponent.removeFocusListener(this);
744 runnable.run();
754 final Timer timer = new Timer(100, evt -> runnable.run());
755 timer.setRepeats(false);
756 timer.start();
745757 }
746758 });
747759 selectedComponent.requestFocusInWindow();
290290 * @param newMonth
291291 * the new month value
292292 * @param select
293 * true, if the month should be selcted in the combo box.
293 * true, if the month should be selected in the combo box.
294294 */
295295 private void setMonth(final int newMonth, final boolean select) {
296296 if (!initialized || localInitialize) {
319319 }
320320
321321 /**
322 * Is invoked if the state of the spnner changes.
322 * Is invoked if the state of the spinner changes.
323323 *
324324 * @param e
325325 * the change event.
8585 * Overrides to the default stylesheet. Should consider
8686 * just creating a completely fresh stylesheet.
8787 */
88 static final String styleChanges =
88 static final String styleChanges =
8989 "p { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0 }" +
9090 "body { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0 }";
9191
9494 */
9595 public static class Renderer extends View {
9696
97 Renderer(JComponent c, ViewFactory f, View v) {
98 super(null);
99 setSizeRunning = true;
100 host = c;
101 factory = f;
102 view = v;
103 view.setParent(this);
104 // initially layout to the preferred size
105 setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS));
106 }
107
108 public AttributeSet getAttributes() {
97 private static final int NOT_INITIALIZED = -1;
98
99 private int width;
100 private View view;
101 private ViewFactory factory;
102 private JComponent host;
103 private boolean setSizeRunning;
104 private float initialWidth = NOT_INITIALIZED;
105 private float initialHeight = NOT_INITIALIZED;
106
107 Renderer(JComponent c, ViewFactory f, View v) {
108 super(null);
109 setSizeRunning = true;
110 host = c;
111 factory = f;
112 view = v;
113 view.setParent(this);
114 // initially layout to the preferred size
115 }
116
117 @Override
118 public AttributeSet getAttributes() {
109119 return null;
110120 }
111121
112 public float getPreferredSpan(int axis) {
113 if (axis == X_AXIS) {
114 // width currently laid out to
115 return width;
116 }
117 return view.getPreferredSpan(axis);
118 }
119
122 @Override
123 public float getPreferredSpan(int axis) {
124 initialize();
125
126 if (axis == X_AXIS) {
127 // width currently laid out to
128 return width;
129 }
130 return view.getPreferredSpan(axis);
131 }
132
133 private void initialize() {
134 if(initialWidth == NOT_INITIALIZED) {
135 initialWidth = view.getPreferredSpan(X_AXIS);
136 initialHeight = view.getPreferredSpan(Y_AXIS);
137 setSize(initialWidth, initialHeight);
138 }
139 }
140
141 @Override
120142 public float getMinimumSpan(int axis) {
121 return view.getMinimumSpan(axis);
122 }
123
124 public float getMaximumSpan(int axis) {
143 initialize();
144 return view.getMinimumSpan(axis);
145 }
146
147 @Override
148 public float getMaximumSpan(int axis) {
125149 return Integer.MAX_VALUE;
126150 }
127151
128 public void preferenceChanged(View child, boolean width, boolean height) {
152 @Override
153 public void preferenceChanged(View child, boolean width, boolean height) {
129154 if(! setSizeRunning){
130 setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS));
131155 host.revalidate();
132156 host.repaint();
133157 }
134158 }
135159
136 public float getAlignment(int axis) {
160 @Override
161 public float getAlignment(int axis) {
137162 return view.getAlignment(axis);
138163 }
139164
140 public void paint(Graphics g, Shape allocation) {
165 @Override
166 public void paint(Graphics g, Shape allocation) {
141167 Rectangle alloc = allocation.getBounds();
142168 view.setSize(alloc.width, alloc.height);
143169 view.paint(g, allocation);
144170 }
145
146 public void setParent(View parent) {
171
172 @Override
173 public void setParent(View parent) {
147174 throw new Error("Can't set parent on root view");
148175 }
149176
150 public int getViewCount() {
177 @Override
178 public int getViewCount() {
151179 return 1;
152180 }
153 public View getView(int n) {
181 @Override
182 public View getView(int n) {
154183 return view;
155184 }
156 public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException {
185 @Override
186 public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException {
157187 return view.modelToView(pos, a, b);
158188 }
159189
160 public Shape modelToView(int p0, Position.Bias b0, int p1,
190 @Override
191 public Shape modelToView(int p0, Position.Bias b0, int p1,
161192 Position.Bias b1, Shape a) throws BadLocationException {
162193 return view.modelToView(p0, b0, p1, b1, a);
163194 }
164195
165 public int viewToModel(float x, float y, Shape a, Position.Bias[] bias) {
196 @Override
197 public int viewToModel(float x, float y, Shape a, Position.Bias[] bias) {
166198 return view.viewToModel(x, y, a, bias);
167199 }
168200
169 public Document getDocument() {
201 @Override
202 public Document getDocument() {
170203 return view.getDocument();
171204 }
172
173 public int getStartOffset() {
205
206 @Override
207 public int getStartOffset() {
174208 return view.getStartOffset();
175209 }
176210
177 public int getEndOffset() {
211 @Override
212 public int getEndOffset() {
178213 return view.getEndOffset();
179214 }
180215
181 public Element getElement() {
216 @Override
217 public Element getElement() {
182218 return view.getElement();
183219 }
184220
185 public void setSize(float width, float height) {
221 @Override
222 public void setSize(float width, float height) {
186223 setSizeRunning = true;
224 try {
187225 this.width = (int) width;
188226 view.setSize(width, height);
189 setSizeRunning = false;
190 }
191
192 public void resetSize() {
193 setSize(0, 0);
194 setSize(view.getPreferredSpan(X_AXIS), view.getPreferredSpan(Y_AXIS));
195 }
196
197 public Container getContainer() {
227 }
228 finally {
229 setSizeRunning = false;
230 }
231 }
232
233 public void resetWidth() {
234 initialize();
235 setSize(initialWidth, initialHeight);
236 }
237
238 @Override
239 public Container getContainer() {
198240 return host;
199241 }
200
201 public ViewFactory getViewFactory() {
242
243 @Override
244 public ViewFactory getViewFactory() {
202245 return factory;
203246 }
204247
205 private int width;
206 private View view;
207 private ViewFactory factory;
208 private JComponent host;
209 private boolean setSizeRunning;
210
248 public float getPreferredWidth() {
249 initialize();
250 return initialWidth;
251 }
252
253 public int getWidth() {
254 initialize();
255 return width;
256 }
257
258 public void setWidth(int width) {
259 initialize();
260 setSize(width, initialHeight);
261 }
211262 }
212263 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2014 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.ui.components.resizer;
20
21 import java.awt.Component;
22
23 import javax.swing.Box;
24
25 import org.freeplane.core.resources.ResourceController;
26 import org.freeplane.core.ui.components.resizer.JResizer.Direction;
27 import org.freeplane.core.ui.components.resizer.OneTouchCollapseResizer.ComponentCollapseListener;
28
29 /**
30 * @author Dimitry Polivaev
31 * 01.02.2014
32 */
33 public class CollapseableBoxBuilder {
34 private String propertyNameBase;
35 private boolean resizeable = true;
36 public CollapseableBoxBuilder setResizeable(boolean resizeable) {
37 this.resizeable = resizeable;
38 return this;
39 }
40 public CollapseableBoxBuilder(){
41
42 }
43 public CollapseableBoxBuilder setPropertyNameBase(String name) {
44 this.propertyNameBase = name;
45 return this;
46 }
47 public Box createBox(final Component component, final Direction direction) {
48 Box resisableComponent = direction.createBox();
49 UIComponentVisibilityDispatcher.install(resisableComponent, propertyNameBase);
50 final UIComponentVisibilityDispatcher dispatcher = UIComponentVisibilityDispatcher.of(resisableComponent);
51 final String sizePropertyName = dispatcher.getPropertyName() + ".size";
52 final boolean expanded = dispatcher.isVisible();
53
54 OneTouchCollapseResizer resizer = new OneTouchCollapseResizer(direction);
55 dispatcher.setResizer(resizer);
56 switch(direction){
57 case RIGHT:
58 case DOWN:
59 resisableComponent.add(resizer);
60 resisableComponent.add(component);
61 break;
62 default:
63 resisableComponent.add(component);
64 resisableComponent.add(resizer);
65 break;
66 }
67 if(resizeable){
68 try {
69 int size = ResourceController.getResourceController().getIntProperty(sizePropertyName, 0);
70 if(size > 10) {
71 direction.setPreferredSize(component, size);
72 }
73 }
74 catch (Exception e) {
75 // blindly accept
76 }
77 resizer.addResizerListener(new ResizerListener() {
78 @Override
79 public void componentResized(ResizeEvent event) {
80 if(event.getComponent().equals(component)) {
81 ResourceController.getResourceController().setProperty(sizePropertyName, String.valueOf(direction.getPreferredSize(component)));
82 }
83 }
84
85 });
86 }
87 else
88 resizer.setSliderLocked(true);
89 resizer.addCollapseListener(new ComponentCollapseListener() {
90 @Override
91 public void componentCollapsed(ResizeEvent event) {
92 if(event.getComponent().equals(component)) {
93 dispatcher.setProperty(false);
94 }
95 }
96
97 @Override
98 public void componentExpanded(ResizeEvent event) {
99 if(event.getComponent().equals(component)) {
100 dispatcher.setProperty(true);
101 }
102 }
103 });
104 resizer.setExpanded(expanded);
105 return resisableComponent;
106 }
107 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2011 dimitry
3 *
4 * This file author is dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version CONTROL_SIZE of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.ui.components.resizer;
20
21 import java.awt.Component;
22 import java.awt.Container;
23 import java.awt.Cursor;
24 import java.awt.Dimension;
25 import java.awt.Point;
26 import java.awt.event.ComponentListener;
27 import java.awt.event.MouseAdapter;
28 import java.awt.event.MouseEvent;
29 import java.awt.event.MouseMotionAdapter;
30 import java.util.LinkedHashSet;
31 import java.util.Set;
32
33 import javax.swing.Box;
34 import javax.swing.JComponent;
35 import javax.swing.SwingUtilities;
36
37 /**
38 * @author Dimitry Polivaev
39 * Jan 24, 2011
40 */
41 @SuppressWarnings("serial")
42 public class JResizer extends JComponent {
43 private static final int CONTROL_SIZE = 5;
44 protected boolean sliderLock = false;
45 protected Point point;
46 private int index;
47 public enum Direction {RIGHT, LEFT, UP, DOWN;
48 public Box createBox() {
49 switch (this) {
50 case RIGHT:
51 case LEFT:
52 return Box.createHorizontalBox();
53 default:
54 return Box.createVerticalBox();
55 }
56 }
57
58 public int getPreferredSize(final Component component) {
59 final Dimension preferredSize = component.getPreferredSize();
60 switch (this) {
61 case RIGHT:
62 case LEFT:
63 return preferredSize.width;
64 default:
65 return preferredSize.height;
66 }
67 }
68
69 public void setPreferredSize(Component component, int size) {
70 switch (this) {
71 case RIGHT:
72 case LEFT:
73 component.setPreferredSize(new Dimension(size, 1));
74 return;
75 default:
76 component.setPreferredSize(new Dimension(1, size));
77 }
78 }
79
80 public Box createBox(Component resizedComponent) {
81 final Box box = createBox();
82 final JResizer resizer = createResizer();
83 switch (this) {
84 case RIGHT:
85 case DOWN:
86 box.add(resizer);
87 box.add(resizedComponent);
88 break;
89 default:
90 box.add(resizedComponent);
91 box.add(resizer);
92 }
93 return box;
94
95 }
96
97 protected JResizer createResizer() {
98 return new JResizer(this);
99 }
100 }
101
102 private final Set<ResizerListener> resizeListener = new LinkedHashSet<ResizerListener>();
103
104 public JResizer(final Direction d) {
105 setOpaque(true);
106 final int w;
107 final int h;
108 if(d.equals(Direction.RIGHT)){
109 w = CONTROL_SIZE;
110 h = 0;
111 setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
112 }
113 else if(d.equals(Direction.LEFT)){
114 h = CONTROL_SIZE;
115 w = 0;
116 setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
117 }
118 else if(d.equals(Direction.UP)){
119 h = 0;
120 w = CONTROL_SIZE;
121 setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
122 }
123 else /*Direction.DOWN*/ {
124 h = 0;
125 w = CONTROL_SIZE;
126 setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
127 }
128
129 setPreferredSize(new Dimension(w, h));
130 addMouseListener(new MouseAdapter() {
131
132
133
134 @Override
135 public void mousePressed(MouseEvent e) {
136 point = null;
137 }
138
139 @Override
140 public void mouseReleased(MouseEvent e) {
141 point = null;
142 }
143
144 });
145 addMouseMotionListener(new MouseMotionAdapter() {
146
147 private int getIndex() {
148 final Container parent = getParent();
149 for(int i = 0; i < parent.getComponentCount(); i++ ){
150 if(JResizer.this.equals(parent.getComponent(i))){
151 if(d.equals(Direction.RIGHT)){
152 return i + 1;
153 }
154 else if(d.equals(Direction.LEFT)){
155 return i - 1;
156 }
157 else if(d.equals(Direction.UP)){
158 return i - 1;
159 }
160 else if(d.equals(Direction.DOWN)){
161 return i + 1;
162 }
163 }
164 }
165 return -1;
166 }
167
168
169 @Override
170 public void mouseDragged(MouseEvent e) {
171 if(sliderLock) {
172 return;
173 }
174 final Point point2 = e.getPoint();
175 SwingUtilities.convertPointToScreen(point2, e.getComponent());
176 if(point != null){
177 final JComponent parent = (JComponent) getParent();
178 final Component resizedComponent = parent.getComponent(index);
179 final Dimension size = new Dimension(resizedComponent.getPreferredSize());
180 if(d.equals(Direction.RIGHT)){
181 size.width -= (point2.x - point.x);
182 }
183 else if(d.equals(Direction.LEFT)){
184 size.width += (point2.x - point.x);
185 }
186 else if(d.equals(Direction.UP)){
187 size.height += (point2.y - point.y);
188 }
189 else if(d.equals(Direction.DOWN)){
190 size.height -= (point2.y - point.y);
191 }
192 resizedComponent.setPreferredSize(new Dimension(Math.max(size.width, 0), Math.max(size.height, 0)));
193 parent.revalidate();
194 parent.repaint();
195 fireSizeChanged(resizedComponent);
196 }
197 else{
198 index = getIndex();
199 }
200 point = point2;
201 }
202 });
203 }
204
205 public void addResizerListener(ResizerListener listener) {
206 if(listener == null) return;
207
208 synchronized (resizeListener) {
209 resizeListener.add(listener);
210 }
211
212 }
213
214 public void removeResizerListener(ComponentListener listener) {
215 if(listener == null) return;
216
217 synchronized (resizeListener) {
218 resizeListener.remove(listener);
219 }
220 }
221
222 public void setSliderLocked(boolean enabled) {
223 this.sliderLock = enabled;
224 }
225
226 public boolean isSliderLocked() {
227 return this.sliderLock;
228 }
229
230 private void fireSizeChanged(Component resizedComponent) {
231 ResizeEvent event = new ResizeEvent(this, resizedComponent);
232 synchronized (this.resizeListener) {
233 for(ResizerListener listener : resizeListener) {
234 listener.componentResized(event);
235 }
236 }
237
238 }
239
240 }
0 /**
1 * author: Marcel Genzmehr
2 * 29.11.2011
3 */
4 package org.freeplane.core.ui.components.resizer;
5
6 import java.awt.Color;
7 import java.awt.Component;
8 import java.awt.Container;
9 import java.awt.Cursor;
10 import java.awt.Dimension;
11 import java.awt.Graphics;
12 import java.awt.event.MouseEvent;
13 import java.awt.event.MouseListener;
14 import java.util.LinkedHashSet;
15 import java.util.Set;
16
17 import javax.swing.JComponent;
18 import javax.swing.JPanel;
19
20 import org.freeplane.core.util.LogUtils;
21 import org.freeplane.features.mode.Controller;
22 import org.freeplane.features.ui.IMapViewManager;
23
24 /**
25 *
26 */
27 public class OneTouchCollapseResizer extends JResizer {
28 private static final long serialVersionUID = 3836146387249880446L;
29 public static final String COLLAPSED = OneTouchCollapseResizer.class.getPackage().getName()+".collapsed";
30 private static final String ALREADY_IN_PAINT = OneTouchCollapseResizer.class.getPackage().getName()+".ALREADY_PAINTING";
31
32 protected boolean expanded = true;
33 private JPanel hotspot;
34 private final int inset = 2;
35 private final Direction direction;
36 private Integer resizeComponentIndex;
37
38 private final Set<ComponentCollapseListener> collapseListener = new LinkedHashSet<ComponentCollapseListener>();
39 private Dimension lastPreferredSize = null;
40
41
42
43 /***********************************************************************************
44 * CONSTRUCTORS
45 **********************************************************************************/
46 /**
47 * @param d
48 */
49 public OneTouchCollapseResizer(final Direction d) {
50 super(d);
51 direction = d;
52 this.setDividerSize(7);
53
54 MouseListener listener = new MouseListener() {
55 private void resetCursor() {
56 if(d.equals(Direction.RIGHT)){
57 setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
58 }
59 else if(d.equals(Direction.LEFT)){
60 setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
61 }
62 else if(d.equals(Direction.UP)){
63 setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
64 }
65 else /*Direction.DOWN*/ {
66 setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
67 }
68 }
69
70 @Override
71 public void mouseReleased(MouseEvent e) {
72 }
73
74 @Override
75 public void mousePressed(MouseEvent e) {
76 }
77
78 @Override
79 public void mouseExited(MouseEvent e) {
80 if(e.getComponent() == getHotSpot()) {
81 resetCursor();
82 }
83 if(isExpanded()) {
84 resetCursor();
85 }
86 }
87
88 @Override
89 public void mouseEntered(MouseEvent e) {
90 if(e.getComponent() == getHotSpot()) {
91 getHotSpot().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
92 }
93 if(!isExpanded() || sliderLock) {
94 e.getComponent().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
95 }
96 }
97
98 @Override
99 public void mouseClicked(MouseEvent e) {
100 if((e.getComponent() == getHotSpot()) || sliderLock) {
101
102 if (isExpanded()) {
103 getHotSpot().setEnabled(true);
104 setExpanded(false);
105 }
106 else {
107 setExpanded(true);
108 }
109 }
110 else {
111 if (!isExpanded()) {
112 setExpanded(true);
113 }
114 }
115 }
116 };
117 getHotSpot().addMouseListener(listener);
118 addMouseListener(listener);
119
120 add(getHotSpot());
121 }
122
123 /***********************************************************************************
124 * METHODS
125 **********************************************************************************/
126
127 public boolean isExpanded() {
128 return this.expanded;
129 }
130
131 public void setDividerSize(int size) {
132 final int w;
133 final int h;
134 if(direction.equals(Direction.RIGHT)){
135 w = size;
136 h = 0;
137 }
138 else if(direction.equals(Direction.LEFT)){
139 h = 0;
140 w = size;
141 }
142 else if(direction.equals(Direction.UP)){
143 h = size;
144 w = 0;
145 }
146 else /*Direction.DOWN*/ {
147 h = size;
148 w = 0;
149 }
150 setPreferredSize(new Dimension(w, h));
151 }
152
153 public int getDividerSize() {
154 if(direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT)){
155 return getPreferredSize().width;
156 }
157 else /*Direction.DOWN || Direction.UP*/ {
158 return getPreferredSize().height;
159 }
160 }
161
162 public void setExpanded(boolean expanded) {
163 if(this.expanded != expanded) {
164 this.expanded = expanded;
165 try {
166 Component resizedComponent = getResizedComponent();
167 if(resizedComponent instanceof JComponent) {
168 ((JComponent) resizedComponent).putClientProperty(COLLAPSED, (expanded ? null : "true"));
169 }
170 if(expanded) {
171 resizedComponent.setPreferredSize(lastPreferredSize);
172 }
173 else {
174 lastPreferredSize = resizedComponent.isPreferredSizeSet() ? resizedComponent.getPreferredSize() : null;
175 resizedComponent.setPreferredSize(new Dimension(0,0));
176 }
177 IMapViewManager mapViewManager = Controller.getCurrentController().getMapViewManager();
178 mapViewManager.moveFocusFromDescendantToSelection(resizedComponent);
179 resizedComponent.setVisible(expanded);
180
181 fireCollapseStateChanged(resizedComponent, expanded);
182
183 recalibrate();
184 }
185 catch (Exception e) {
186 LogUtils.warn("Exception in org.freeplane.core.ui.components.OneTouchCollapseResizer.setExpanded(enabled): "+e);
187 }
188 }
189
190 }
191
192 private Component getResizedComponent() {
193 final JComponent parent = (JComponent) getParent();
194 if(parent != null && resizeComponentIndex == null) {
195 resizeComponentIndex = getIndex();
196 }
197 return parent.getComponent(resizeComponentIndex);
198 }
199
200 @Override
201 public void paint(Graphics g) {
202 if(getClientProperty(ALREADY_IN_PAINT) != null) {
203 return;
204 }
205 putClientProperty(ALREADY_IN_PAINT, "true");
206 super.paint(g);
207 if((direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT))) {
208 int center_y = getHeight()/2;
209 int divSize = getDividerSize();
210 getHotSpot().setBounds(0, center_y-15, divSize, 30);
211 }
212 else {
213 int center_x = getWidth()/2;
214 int divSize = getDividerSize();
215 getHotSpot().setBounds(center_x-15, 0, 30, divSize);
216 }
217 Dimension size = getResizedComponent().getPreferredSize();
218 if((direction.equals(Direction.RIGHT) || direction.equals(Direction.LEFT)) && size.width <= getDividerSize()) {
219 setExpanded(false);
220
221 }
222 else if((direction.equals(Direction.UP) || direction.equals(Direction.DOWN)) && size.height <= getDividerSize()){
223 setExpanded(false);
224 }
225 else {
226 setExpanded(true);
227 }
228 if(getResizedComponent() instanceof JComponent) {
229 ((JComponent) getResizedComponent()).putClientProperty(COLLAPSED, (isExpanded() ? null : "true"));
230 }
231 getHotSpot().paint(g.create(getHotSpot().getLocation().x, getHotSpot().getLocation().y, getHotSpot().getWidth(), getHotSpot().getHeight()));
232 putClientProperty(ALREADY_IN_PAINT, null);
233 }
234
235 private Component getHotSpot() {
236 if(hotspot == null) {
237 hotspot = new JPanel() {
238 private static final long serialVersionUID = -5321517835206976034L;
239
240 @Override
241 public void paint(Graphics g) {
242 if (isExpanded()) {
243 drawCollapseLabel(g);
244 }
245 else {
246 drawExpandLabel(g);
247 }
248 }
249
250 @Override
251 public void updateUI() {
252 try {
253 super.updateUI();
254 }
255 catch (Exception e) {
256 }
257 }
258 };
259 hotspot.setBackground(Color.BLUE);
260 }
261 return hotspot;
262 }
263
264 private void drawCollapseLabel(Graphics g) {
265 Dimension size = g.getClipBounds().getSize();
266 int half_length = Math.round(size.height*0.2f);
267 int center_y = size.height / 2;
268
269 int half_width = Math.round(size.width*0.2f);
270 int center_x = size.width / 2;
271
272 g.setColor(getBackground());
273 g.fillRect(0, 0, getWidth(), getHeight());
274
275 //g.setColor();
276 if(this.direction.equals(Direction.LEFT)) {
277 arrowLeft(g, half_length, center_y);
278 }
279 else if(this.direction.equals(Direction.RIGHT)) {
280 arrowRight(g, half_length, center_y);
281 }
282 else if(this.direction.equals(Direction.UP)) {
283 arrowUp(g, half_width, center_x);
284 }
285 else if(this.direction.equals(Direction.DOWN)) {
286 arrowDown(g, half_width, center_x);
287 }
288 }
289
290
291
292 private void drawExpandLabel(Graphics g) {
293 Dimension size = g.getClipBounds().getSize();
294 int half_length = (size.height-(inset*6))/2;
295 int center_y = size.height / 2;
296
297 int half_width = (size.width-(inset*6))/2;
298 int center_x = size.width / 2;
299
300 g.setColor(getBackground());
301 g.fillRect(0, 0, getWidth(), getHeight());
302
303 if(this.direction.equals(Direction.LEFT)) {
304 arrowRight(g, half_length, center_y);
305 }
306 else if(this.direction.equals(Direction.RIGHT)) {
307 arrowLeft(g, half_length, center_y);
308 }
309 else if(this.direction.equals(Direction.UP)) {
310 arrowDown(g, half_width, center_x);
311 }
312 else if(this.direction.equals(Direction.DOWN)) {
313 arrowUp(g, half_width, center_x);
314 }
315 }
316
317
318 /**
319 * @param g
320 * @param half_length
321 * @param center_y
322 */
323 private void arrowLeft(Graphics g, int half_length, int center_y) {
324 int[] x = new int[]{inset, getSize().width - inset, getSize().width - inset};
325 int[] y = new int[]{center_y, center_y-half_length, center_y + half_length};
326 g.setColor(Color.DARK_GRAY);
327 g.fillPolygon(x, y, 3);
328 g.setColor(Color.DARK_GRAY);
329 g.drawLine(inset, center_y, getSize().width - inset, center_y - half_length);
330 g.setColor(Color.GRAY);
331 g.drawLine( getSize().width - inset, center_y + half_length, inset, center_y);
332 g.setColor(Color.GRAY);
333 g.drawLine( getSize().width - inset, center_y - half_length, getSize().width - inset, center_y + half_length);
334 }
335
336 /**
337 * @param g
338 * @param half_length
339 * @param center_y
340 */
341 private void arrowRight(Graphics g, int half_length, int center_y) {
342 int[] x = new int[]{inset, inset, getSize().width - inset};
343 int[] y = new int[]{center_y+half_length, center_y-half_length, center_y};
344
345 g.setColor( Color.DARK_GRAY);
346 g.fillPolygon(x,y,3);
347 g.setColor( Color.DARK_GRAY);
348 g.drawLine( inset, center_y + half_length, inset, center_y - half_length);
349 g.setColor(Color.GRAY);
350 g.drawLine( inset, center_y - half_length, getSize().width - inset, center_y);
351 g.setColor( Color.LIGHT_GRAY);
352 g.drawLine( getSize().width - inset, center_y, inset, center_y + half_length);
353 }
354
355 private void arrowUp(Graphics g, int half_length, int center_x) {
356 int[] y = new int[]{inset, getSize().height - inset, getSize().height - inset};
357 int[] x = new int[]{center_x, center_x-half_length, center_x + half_length};
358
359 g.setColor(Color.DARK_GRAY);
360 g.fillPolygon(x, y, 3);
361
362 g.setColor(Color.GRAY);
363 g.drawLine(center_x + half_length, getSize().height - inset, center_x, inset);
364 g.setColor(Color.DARK_GRAY);
365 g.drawLine(center_x, inset, center_x - half_length, getSize().height - inset);
366 g.setColor(Color.LIGHT_GRAY);
367 g.drawLine(center_x - half_length, getSize().height - inset, center_x + half_length, getSize().height - inset);
368
369 }
370
371 private void arrowDown(Graphics g, int half_length, int center_x) {
372 int[] y = new int[]{inset, inset, getSize().height - inset};
373 int[] x = new int[]{center_x+half_length, center_x-half_length, center_x};
374
375 g.setColor( Color.DARK_GRAY);
376 g.fillPolygon(x,y,3);
377
378 g.setColor(Color.GRAY);
379 g.drawLine( center_x - half_length, inset, center_x, getSize().height- inset);
380 g.setColor( Color.DARK_GRAY);
381 g.drawLine( center_x + half_length, inset, center_x - half_length, inset);
382 g.setColor( Color.LIGHT_GRAY);
383 g.drawLine(center_x, getSize().height - inset, center_x + half_length, inset);
384 }
385
386 private int getIndex() {
387 final Container parent = getParent();
388 for(int i = 0; i < parent.getComponentCount(); i++ ){
389 if(OneTouchCollapseResizer.this.equals(parent.getComponent(i))){
390 if(direction.equals(Direction.RIGHT)){
391 return i + 1;
392 }
393 else if(direction.equals(Direction.LEFT)){
394 return i - 1;
395 }
396 else if(direction.equals(Direction.UP)){
397 return i - 1;
398 }
399 else if(direction.equals(Direction.DOWN)){
400 return i + 1;
401 }
402 }
403 }
404 return -1;
405 }
406
407 public void addCollapseListener(ComponentCollapseListener listener) {
408 if(listener == null) return;
409
410 synchronized (collapseListener) {
411 collapseListener.add(listener);
412 }
413
414 }
415
416 public void removeCollapseListener(ComponentCollapseListener listener) {
417 if(listener == null) return;
418
419 synchronized (collapseListener) {
420 collapseListener.remove(listener);
421 }
422 }
423
424 protected void fireCollapseStateChanged(Component resizedComponent, boolean expanded) {
425 ResizeEvent event = new ResizeEvent(this, resizedComponent);
426 synchronized (this.collapseListener) {
427 for(ComponentCollapseListener listener : collapseListener) {
428 try {
429 if(expanded) {
430 listener.componentExpanded(event);
431 }
432 else {
433 listener.componentCollapsed(event);
434 }
435 }
436 catch (Exception e) {
437 LogUtils.severe(e);
438 }
439 }
440 }
441
442 }
443
444 public static OneTouchCollapseResizer findResizerFor(Component component) {
445 if(component instanceof Container) {
446 Component[] children = ((Container) component).getComponents();
447 for (Component child : children) {
448 if(child instanceof OneTouchCollapseResizer) {
449 return (OneTouchCollapseResizer) child;
450 }
451 }
452 }
453 if(component == null)
454 return null;
455 Component parent = component.getParent();
456 return findResizerFor(parent);
457 }
458
459 public interface ComponentCollapseListener {
460 public void componentCollapsed(ResizeEvent event);
461 public void componentExpanded(ResizeEvent event);
462 }
463
464 public void recalibrate() {
465 if(getClientProperty(ALREADY_IN_PAINT) == null) {
466 final JComponent parent = (JComponent) getParent();
467 if(parent != null) {
468 parent.revalidate();
469 parent.repaint();
470 }
471 }
472 }
473 }
0 package org.freeplane.core.ui.components.resizer;
1
2 import java.awt.Component;
3 import java.util.EventObject;
4
5 public class ResizeEvent extends EventObject {
6
7 private static final long serialVersionUID = 3131068483469543037L;
8 private final Component component;
9
10 public ResizeEvent(JResizer source, Component component) {
11 super(source);
12 this.component = component;
13 }
14
15 public JResizer getSource() {
16 return (JResizer) super.getSource();
17 }
18
19 public Component getComponent() {
20 return component;
21 }
22 }
0 package org.freeplane.core.ui.components.resizer;
1
2 public interface ResizerListener {
3 public void componentResized(ResizeEvent event);
4 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2014 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.core.ui.components.resizer;
20
21 import java.awt.Component;
22 import java.awt.Container;
23 import java.awt.Frame;
24
25 import javax.swing.JComponent;
26 import javax.swing.SwingUtilities;
27
28 import org.freeplane.core.resources.ResourceController;
29 import org.freeplane.features.mode.Controller;
30 import org.freeplane.features.ui.IMapViewManager;
31
32 /**
33 * @author Dimitry Polivaev
34 * 01.02.2014
35 */
36 public class UIComponentVisibilityDispatcher {
37 private static String KEY = UIComponentVisibilityDispatcher.class.getName() + ".KEY";
38 private final String key;
39 private final JComponent component;
40 private OneTouchCollapseResizer resizer;
41
42 public void setResizer(OneTouchCollapseResizer resizer) {
43 this.resizer = resizer;
44 }
45
46 public static void install(JComponent component, String key){
47 component.putClientProperty(KEY, new UIComponentVisibilityDispatcher(component, key));
48 }
49
50 static public UIComponentVisibilityDispatcher of(JComponent component) {
51 return ((UIComponentVisibilityDispatcher)component.getClientProperty(KEY));
52 }
53
54 private UIComponentVisibilityDispatcher(JComponent component, String key) {
55 this.component = component;
56 this.key = key;
57 }
58
59 public String completeVisiblePropertyKey() {
60 final String completeKeyString;
61 if (isContainedInFullWindow()) {
62 completeKeyString = key + ".fullscreen";
63 }
64 else {
65 completeKeyString = key;
66 }
67 return completeKeyString;
68 }
69
70 private boolean isContainedInFullWindow() {
71 final Component root = SwingUtilities.getRoot(component);
72 return root instanceof Frame && !((Frame) root).isResizable();
73 }
74
75 public void toggleVisibility() {
76 final ResourceController resourceController = ResourceController.getResourceController();
77 final boolean wasVisible = resourceController.getBooleanProperty(getPropertyName());
78 setVisible(!wasVisible);
79 }
80
81 public void setVisible(final boolean visible) {
82 setProperty(visible);
83 makeComponentVisible(visible);
84 final Container parent = component.getParent();
85 if(parent != null)
86 ((JComponent) parent).revalidate();
87 if (!visible) {
88 IMapViewManager mapViewManager = Controller.getCurrentController().getMapViewManager();
89 mapViewManager.moveFocusFromDescendantToSelection(component);
90 }
91
92 }
93
94 public void setProperty(final boolean visible) {
95 final ResourceController resourceController = ResourceController.getResourceController();
96 resourceController.setProperty(getPropertyName(), visible);
97 }
98
99 private void makeComponentVisible(final boolean visible) {
100 if(resizer == null)
101 component.setVisible(visible);
102 else {
103 final boolean containedInFullWindow = isContainedInFullWindow();
104 if (visible || ! containedInFullWindow || containedInFullWindow && ! visible)
105 resizer.setVisible(visible || ! containedInFullWindow);
106 resizer.setExpanded(visible);
107 }
108 }
109
110 public String getPropertyName() {
111 final String propertyName = completeVisiblePropertyKey();
112 return propertyName;
113 }
114
115 public boolean isVisible() {
116 final String completeKeyString = completeVisiblePropertyKey();
117 if (completeKeyString == null) {
118 return true;
119 }
120 return !"false".equals(ResourceController.getResourceController().getProperty(completeKeyString, "true"));
121 }
122
123 public void resetVisible() {
124 setVisible(isVisible());
125 }
126 }
1212 import javax.swing.ImageIcon;
1313
1414 import org.freeplane.core.resources.ResourceController;
15 import org.freeplane.core.util.LogUtils;
1615
16 import com.kitfox.svg.SVGCache;
1717 import com.kitfox.svg.SVGDiagram;
1818 import com.kitfox.svg.SVGUniverse;
1919 import com.kitfox.svg.app.beans.SVGIcon;
2121 /** utility methods to access Freeplane's (builtin and user) icons. */
2222 public class FreeplaneIconFactory {
2323 private static final String ANTIALIAS_SVG = "antialias_svg";
24 private static SVGUniverse svgUniverse;
2524
2625 public static Icon createIcon(final String resourcePath) {
2726 final URL resourceUrl = ResourceController.getResourceController().getResource(resourcePath);
7574 private static class SVGIconCreator {
7675 private float aspectRatio;
7776 private SVGIcon icon;
77 private URI svgUri;
7878
7979 SVGIconCreator(URL url) {
80 if (svgUniverse == null)
81 svgUniverse = new SVGUniverse();
80 SVGUniverse svgUniverse = SVGCache.getSVGUniverse();
8281 icon = new SVGIcon();
83 URI svgUri;
8482 try {
8583 try {
8684 new URI(url.toString());
8987 catch (URISyntaxException ex) {
9088 svgUri = svgUniverse.loadSVG(url.openStream(), url.getPath());
9189 }
92 icon.setSvgUniverse(svgUniverse);
93 icon.setSvgURI(svgUri);
9490 final SVGDiagram diagram = svgUniverse.getDiagram(svgUri);
9591 aspectRatio = diagram.getHeight() / diagram.getWidth();
96 icon.setAutosize(SVGIcon.AUTOSIZE_STRETCH);
97 icon.setAntiAlias(isSvgAntialiasEnabled());
9892 }
9993 catch (Exception e) {
10094 throw new RuntimeException(e);
10296 }
10397
10498 public Icon create() {
99 icon.setAutosize(SVGIcon.AUTOSIZE_STRETCH);
100 icon.setAntiAlias(isSvgAntialiasEnabled());
101 icon.setSvgURI(svgUri);
105102 return new CachingIcon(icon);
106103 }
107104
2222 import java.util.ListIterator;
2323
2424 /**
25 * Contains a list of actors and applys act() and undo() in a batch operation.
26 *
25 * Contains a list of actors and applies act() and undo() in a batch operation.
26 *
2727 * Implements composite design pattern.
28 *
28 *
2929 * @author Robert Ladstaetter
3030 */
3131 public class CompoundActor implements IActor {
1515 import org.freeplane.features.mode.Controller;
1616
1717 /**
18 * Provides methods and constants which are dependend on the underlying java version
18 * Provides methods and constants which are dependent on the underlying java version
1919 *
2020 * @author robert.ladstaetter
2121 */
2323 import java.util.Properties;
2424 import java.util.StringTokenizer;
2525
26 import org.freeplane.core.resources.ResourceController;
27
2628 /** provides access to the current Freeplane version. In scripts use <code>c.freeplaneVersion</code>.
27 * For usage instructions see {@link #compareTo(FreeplaneVersion)}. */
29 * For usage instructions see {@link #compareTo(org.freeplane.api.FreeplaneVersion)}. */
2830 public class FreeplaneVersion implements org.freeplane.api.FreeplaneVersion {
2931 private static final FreeplaneVersion VERSION = FreeplaneVersion.loadVersion();
3032 public static final String VERSION_KEY = "freeplane_version";
216218 }
217219
218220 private static String loadRevision() {
219 final URL gitInfo = FreeplaneVersion.class.getResource("/gitinfo.properties");
221 final URL gitInfo = ResourceController.getResourceController().getResource("/gitinfo.properties");
220222 final String revision;
221223 if(gitInfo != null){
222224 Properties gitProps = new Properties();
3838 * as "global variable" <code>htmlUtils</code>.
3939 */
4040 public class HtmlUtils {
41 private static final String TAB_SPACES = " ";
42
4143 public static class IndexPair {
4244 final public boolean mIsTag;
4345 final public int originalEnd;
99101 return htmlToPlain(text, strictHTMLOnly, /* removeNewLines= */true);
100102 }
101103
102 /** removes html markup and entities, partly and where appropriate by replacing it by plaintext equivalents like
104 /** removes html markup and entities, partly and where appropriate by replacing it by plaintext equivalents like
103105 * &lt;li&gt; &rarr; '*'.
104106 * @param strictHTMLOnly if true does nothing unless the text starts with &lt;html&gt;
105107 * @param removeNewLines set to false to keep all blank lines. */
108110 return text;
109111 }
110112 if (PATTERNS == null) {
111 PATTERNS = new Pattern[] {
112 Pattern.compile("(?ims)>[\n\t]+"),
113 Pattern.compile("(?ims)[\n\t ]+"),
114 Pattern.compile("(?ims)<br[^>]*>"),
113 PATTERNS = new Pattern[] {
114 Pattern.compile("(?ims)>[\n\t]+"),
115 Pattern.compile("(?ims)[\n\t ]+"),
116 Pattern.compile("(?ims)<br[^>]*>"),
115117 Pattern.compile("(?ims)<p[^>]*>\\s+"),
116 Pattern.compile("(?ims)<div[^>]*>\\s+"),
118 Pattern.compile("(?ims)<div[^>]*>\\s+"),
117119 Pattern.compile("(?ims)<tr[^>]*>\\s+"),
118 Pattern.compile("(?ims)<dt[^>]*>"),
120 Pattern.compile("(?ims)<dt[^>]*>"),
119121 Pattern.compile("(?ims)<dd[^>]*>"),
120 Pattern.compile("(?ims)<td[^>]*>"),
122 Pattern.compile("(?ims)<td[^>]*>"),
121123 Pattern.compile("(?ims)<[uo]l[^>]*>"),
122 Pattern.compile("(?ims)<li[^>]*>"),
124 Pattern.compile("(?ims)<li[^>]*>"),
123125 Pattern.compile("(?ims) *</[^>]*>"),
124 Pattern.compile("(?ims)<[^/][^>]*> *"),
125 Pattern.compile("^\n+"),
126 Pattern.compile("(?ims)<[^/][^>]*> *"),
127 Pattern.compile("^\n+"),
126128 Pattern.compile("(?ims)&lt;"),
127 Pattern.compile("(?ims)&gt;"),
128 Pattern.compile("(?ims)&quot;"),
129 Pattern.compile("(?ims)&gt;"),
130 Pattern.compile("(?ims)&quot;"),
129131 Pattern.compile("(?ims)&nbsp;"),
130132 Pattern.compile("(?ims)&amp;"),
131133 Pattern.compile("(?ims)[ \t]+\n") };
181183 * encloses the whole text in {@code <html><body><p>...</p></body></html>}. */
182184 public static String plainToHTML(final String text) {
183185 char myChar;
184 final String textTabsExpanded = text.replaceAll("\t", " ");
186 final String textTabsExpanded = text.replaceAll("\t", TAB_SPACES).replaceAll("(?<!\n)\r(?!\n)", "\n");
185187 final StringBuilder result = new StringBuilder(textTabsExpanded.length());
186188 final int lengthMinus1 = textTabsExpanded.length() - 1;
187189 result.append("<html><body><p>");
208210 break;
209211 case '\n':
210212 result.append("</p>\n<p>");
213 break;
214 case '\r':
211215 break;
212216 default:
213217 if (myChar < 32 || myChar > 126)
420424
421425 /**
422426 * Replaces text in node content without replacing tags. fc, 19.12.06: This
423 * method is very difficult. If you have a simplier method, please supply
427 * method is very difficult. If you have a simpler method, please supply
424428 * it. But look that it complies with FindTextTests!!!
425429 */
426430 public static String getReplaceResult(final Pattern pattern, final String text, final String replacement) {
444448 for(;;){
445449 final int mStart = matcher.start();
446450 final int mEnd = matcher.end();
447
451
448452 if(pair == null){
449453 for(pair = indexPairs.next();pair.pureTextEnd <= mStart;pair = indexPairs.next()){
450454 if(pair.mIsTag || pureTextPosition <= pair.pureTextStart){
459463 }
460464 }
461465
462 sbResult.append(unescapedText,
463 pair.originalStart + pureTextPosition - pair.pureTextStart,
466 sbResult.append(unescapedText,
467 pair.originalStart + pureTextPosition - pair.pureTextStart,
464468 pair.originalStart + mStart - pair.pureTextStart);
465469 appendReplacement(sbResult, matcher, replacement);
466470 pureTextPosition = mEnd;
467
471
468472 if(matcher.find()){
469473 if(matcher.start() >= pair.pureTextEnd){
470474 if(mEnd < pair.pureTextEnd){
488492 }
489493
490494 }
491
495
492496 private void initialize(final String text) {
493497 splittedStringList = new ArrayList<IndexPair>();
494498 stringWithoutTags = null;
535539 // Skip past $
536540 cursor++;
537541 // The first number is always a group
538 int refNum = (int) replacement.charAt(cursor) - '0';
542 int refNum = replacement.charAt(cursor) - '0';
539543 if ((refNum < 0) || (refNum > 9))
540544 throw new IllegalArgumentException("Illegal group reference");
541545 cursor++;
682686
683687 /** Gets the string URL of an existing link, or null if none. */
684688 public static String getURLOfExistingLink(HTMLDocument doc, int pos) {
685 //setIgnoreActions(true);
689 //setIgnoreActions(true);
686690 final Element linkElement = HtmlUtils.getCurrentLinkElement(doc, pos);
687691 final boolean foundLink = (linkElement != null);
688692 if (!foundLink) {
716720 }
717721
718722 public static boolean isEmpty(String newText) {
719 return ! (newText.contains("<img") || newText.contains("<table"))
723 return ! (newText.contains("<img") || newText.contains("<table"))
720724 && htmlToPlain(newText).equals("");
721725 }
722726
00 package org.freeplane.core.util;
1
2 import java.io.IOException;
3 import java.io.StringWriter;
4 import java.io.Writer;
5 import java.text.DecimalFormat;
6 import java.text.MessageFormat;
7 import java.text.SimpleDateFormat;
8 import java.util.Locale;
9 import java.util.regex.Pattern;
110
211 import org.freeplane.core.resources.ResourceBundles;
312 import org.freeplane.core.resources.ResourceController;
413 import org.freeplane.core.resources.TranslatedObject;
5 import org.freeplane.features.clipboard.ClipboardController;
14 import org.freeplane.features.clipboard.ClipboardAccessor;
615 import org.freeplane.features.format.FormatController;
7
8 import java.text.DecimalFormat;
9 import java.text.MessageFormat;
10 import java.text.SimpleDateFormat;
11 import java.util.regex.Pattern;
1216
1317 /** utilities for translations, conversions to/from number and dates etc.
1418 * In scripts available as "global variable" <code>textUtils</code>. */
6266 sb.append(rawLabel.subSequence(0, pos));
6367 sb.append(rawLabel.subSequence(pos + 1, length));
6468 return sb.toString();
65
69
6670 }
6771
6872 /** Removes the "TranslateMe" sign from the end of not translated texts. */
157161 }
158162
159163 /** in opposite to the URI make scheme mandatory. */
160 public static boolean matchUriPattern(String text) {
161 return text.length() > 0 && uriPattern.matcher(text).matches();
164 public static boolean matchesUriPattern(String text) {
165 return text.length() > 0 && (text.startsWith("file:") || uriPattern.matcher(text).matches());
162166 }
163167
164168 public static String getShortText(String text, int maximumCharacters, String continuationMark) {
172176 public DecimalFormat getDefaultNumberFormat() {
173177 return FormatController.getController().getDefaultNumberFormat();
174178 }
175
179
176180 /** accessor for scripts. */
177181 public SimpleDateFormat getDefaultDateFormat() {
178182 return FormatController.getController().getDefaultDateFormat();
179183 }
180
184
181185 /** accessor for scripts. */
182186 public SimpleDateFormat getDefaultDateTimeFormat() {
183187 return FormatController.getController().getDefaultDateTimeFormat();
185189
186190 /** Shortcut for scripting: Copies <code>string</code> to the system clipboard. */
187191 public static void copyToClipboard(String string) {
188 ClipboardController.getController().setClipboardContents(string);
189 }
190
192 ClipboardAccessor.getController().setClipboardContents(string);
193 }
194
191195 /** Shortcut for scripting: Copies <code>html</code> with mimetype text/html to the system clipboard. */
192196 public static void copyHtmlToClipboard(String html) {
193 ClipboardController.getController().setClipboardContentsToHtml(html);
194 }
195 }
197 ClipboardAccessor.getController().setClipboardContentsToHtml(html);
198 }
199
200 /**
201 * The escapeUtf8 method is a stripped down version of the
202 * StringEscapeUtils.escapeJava method in Commons Lang 2.6
203 *
204 * It escapes the UTF-8 non-ASCII characters in a <code>String</code>.
205 * <p>
206 * Such a character becomes <code>'\\'</code> and <code>'u'</code> followed by
207 * a 4 digit hex code.
208 * <p>
209 * Any ASCII character will stay intact
210 * <p>
211 * Example:
212 * <pre>
213 * input string: jalapeño
214 * output string: jalape\u005cu00F1o
215 * </pre>
216 *
217 * @param str String to escape values in, may be null
218 * @return String with escaped values, <code>null</code> if null string input
219 */
220 public static String escapeUtf8(String str) {
221 return escapeUtf8StyleString(str);
222 }
223
224 /**
225 * Escapes the UTF-8 non-ASCII characters in a <code>String</code> to
226 * a <code>Writer</code>.
227 * <p>
228 * A <code>null</code> string input has no effect.
229 *
230 * @see #escapeUtf8(java.lang.String)
231 * @param out Writer to write escaped string into
232 * @param str String to escape values in, may be null
233 * @throws IllegalArgumentException if the Writer is <code>null</code>
234 * @throws IOException if error occurs on underlying Writer
235 */
236 public static void escapeUtf8(Writer out, String str) throws IOException {
237 escapeUtf8StyleString(out, str);
238 }
239
240 private static String escapeUtf8StyleString(String str) {
241 if (str == null) {
242 return null;
243 }
244 try {
245 StringWriter writer = new StringWriter(str.length() * 2);
246 escapeUtf8StyleString(writer, str);
247 return writer.toString();
248 } catch (IOException ioe) {
249 // this should never ever happen while writing to a StringWriter
250 throw new RuntimeException(ioe);
251 }
252 }
253
254 private static void escapeUtf8StyleString(Writer out, String str) throws IOException {
255 if (out == null) {
256 throw new IllegalArgumentException("The Writer must not be null");
257 }
258 if (str == null) {
259 return;
260 }
261 int sz;
262 sz = str.length();
263 for (int i = 0; i < sz; i++) {
264 char ch = str.charAt(i);
265
266 // handle unicode
267 if (ch > 0xfff) {
268 out.write("\\u" + hex(ch));
269 } else if (ch > 0xff) {
270 out.write("\\u0" + hex(ch));
271 } else if (ch > 0x7f) {
272 out.write("\\u00" + hex(ch));
273 } else {
274 out.write(ch);
275 }
276 }
277 }
278
279 private static String hex(char ch) {
280 return Integer.toHexString(ch).toUpperCase(Locale.ENGLISH);
281 }
282 }
3535 static public Object create(final String objSpec) {
3636 return create(objSpec, true);
3737 }
38
38
3939 static public Object create(final String objSpec, final boolean verbose) {
4040 try {
4141 final int sep = objSpec.indexOf('|');
4343 return objSpec;
4444 final String type = objSpec.substring(0, sep);
4545 final String spec = objSpec.substring(sep + 1);
46 if(String.class.getName().equals(type))
47 return spec;
4648 final AccessibleObject factory = getFactory(type);
4749 if (factory instanceof Method)
4850 return ((Method) factory).invoke(null, spec);
7375
7476 public static String toSpec(Object obj){
7577 final Class<? extends Object> clazz = obj.getClass();
76 if(clazz.equals(String.class)){
77 return obj.toString();
78 }
7978 final SerializationMethod method = clazz.getAnnotation(SerializationMethod.class);
8079 final String type = clazz.getName() + '|';
8180 if(method == null){
3131 import org.freeplane.core.util.LogUtils;
3232 import org.freeplane.core.util.Quantity;
3333 import org.freeplane.core.util.TextUtils;
34 import org.freeplane.features.attribute.clipboard.AttributeClipboardController;
35 import org.freeplane.features.clipboard.ClipboardControllers;
3436 import org.freeplane.features.icon.IStateIconProvider;
3537 import org.freeplane.features.icon.IconController;
3638 import org.freeplane.features.icon.UIIcon;
5557 public static final String SHOW_ICON_FOR_ATTRIBUTES = "show_icon_for_attributes";
5658 private static final Integer ATTRIBUTE_TOOLTIP = 7;
5759 static private UIIcon attributeIcon = null;
58 static private AttributeSelection attributeSelection;
60 static private AttributeSelection attributeSelection = AttributeSelection.EMPTY;
5961
6062 public static void setAttributeSelection(AttributeSelection attributeSelection) {
61 if(AttributeController.attributeSelection != null)
63 if(AttributeController.attributeSelection != AttributeSelection.EMPTY)
6264 throw new IllegalStateException();
6365 AttributeController.attributeSelection = attributeSelection;
6466 }
8890 modeController.addAction(new SetBooleanMapPropertyAction(SHOW_ICON_FOR_ATTRIBUTES));
8991 registerTooltipProvider();
9092 registerStateIconProvider();
93 registerAttributeClipboardController(modeController);
94 }
95
96 protected void registerAttributeClipboardController(final ModeController modeController) {
97 modeController.getExtension(ClipboardControllers.class).add(new AttributeClipboardController());
9198 }
9299
93100 public NodeAttributeTableModel createAttributeTableModel(final NodeModel node) {
96103 if (attributeModel != null) {
97104 return attributeModel;
98105 }
99 attributeModel = new NodeAttributeTableModel(node);
106 attributeModel = new NodeAttributeTableModel();
100107 node.addExtension(attributeModel);
101108 if (node.areViewsEmpty()) {
102109 return attributeModel;
264271 return false;
265272 }
266273
267 public static NodeAttribute getSelectedAttribute() {
268 return attributeSelection != null ? attributeSelection.getSelectedAttribute() : null;
274 public static AttributeSelection getAttributeSelection() {
275 return attributeSelection;
269276 }
270277 }
00 package org.freeplane.features.attribute;
11
2 import java.util.Collections;
3 import java.util.List;
4 import java.util.stream.Stream;
5
26 public interface AttributeSelection {
3 NodeAttribute getSelectedAttribute();
7 public static final AttributeSelection EMPTY = new AttributeSelection() {
8 @Override
9 public List<SelectedAttribute> getSelectedAttributes() {
10 return Collections.emptyList();
11 }
12 };
13
14 public static class SelectedAttribute {
15 public enum SelectedPart{NAME, VALUE, BOTH}
16 private final NodeAttribute selectedAttribute;
17 private final SelectedPart selectedPart;
18 public SelectedAttribute(NodeAttribute selectedAttribute, SelectedPart selectedPart) {
19 super();
20 this.selectedAttribute = selectedAttribute;
21 this.selectedPart = selectedPart;
22 }
23 public NodeAttribute getSelectedAttribute() {
24 return selectedAttribute;
25 }
26 public SelectedPart getSelectedPart() {
27 return selectedPart;
28 }
29 }
30
31 List<SelectedAttribute> getSelectedAttributes();
32
33 default boolean isEmpty() {
34 return getSelectedAttributes().isEmpty();
35 }
36
37 default Stream<NodeAttribute> nodeAttributeStream() {
38 return getSelectedAttributes().stream().map(SelectedAttribute::getSelectedAttribute);
39 }
440 }
3030 int getRowCount();
3131
3232 Object getValueAt(int row, int col);
33
34 Attribute getAttribute(int row);
3335 }
00 package org.freeplane.features.attribute;
11
2 import org.freeplane.features.attribute.Attribute;
32 import org.freeplane.features.map.NodeModel;
43
54 public class NodeAttribute {
1817 public Object value() {
1918 return attribute.getValue();
2019 }
20
21 public Attribute attribute() {
22 return attribute;
23 }
2124 }
3838 public class NodeAttributeTableModel implements IExtension, IAttributeTableModel {
3939 private static final DefaultTableModel DUMMY = new DefaultTableModel();
4040 private static final int CAPACITY_INCREMENT = 10;
41 public static final NodeAttributeTableModel EMTPY_ATTRIBUTES = new NodeAttributeTableModel(null);
41 public static final NodeAttributeTableModel EMTPY_ATTRIBUTES = new NodeAttributeTableModel();
4242
4343 public static NodeAttributeTableModel getModel(final NodeModel node) {
4444 final NodeAttributeTableModel attributes = node
5050 private AttributeTableLayoutModel layout;
5151 private HashSet<TableModelListener> listeners;
5252
53 public NodeAttributeTableModel(final NodeModel node) {
54 this(node, 0);
55 }
56
57 public NodeAttributeTableModel(final NodeModel node, final int size) {
53 public NodeAttributeTableModel() {
54 this(0);
55 }
56
57 public NodeAttributeTableModel(final int size) {
5858 super();
5959 allocateAttributes(size);
6060 }
0 package org.freeplane.features.attribute.clipboard;
1
2 import java.awt.datatransfer.Transferable;
3 import java.io.IOException;
4 import java.io.StringWriter;
5 import java.util.stream.Collectors;
6
7 import org.freeplane.core.util.TypeReference;
8 import org.freeplane.features.attribute.AttributeController;
9 import org.freeplane.features.attribute.AttributeSelection;
10 import org.freeplane.features.attribute.NodeAttribute;
11 import org.freeplane.features.clipboard.ClipboardAccessor;
12 import org.freeplane.features.clipboard.ClipboardController;
13 import org.freeplane.n3.nanoxml.XMLElement;
14 import org.freeplane.n3.nanoxml.XMLWriter;
15
16 public class AttributeClipboardController implements ClipboardController{
17 private static final int PRIORITY = 1;
18
19 @Override
20 public boolean canCopy() {
21 return !AttributeController.getAttributeSelection().isEmpty();
22 }
23
24 @Override
25 public void copy() {
26 final AttributeSelection attributeSelection = AttributeController.getAttributeSelection();
27 final Transferable t = copy(attributeSelection);
28 ClipboardAccessor.getController().setClipboardContents(t);
29 }
30
31 @Override
32 public int getPriority() {
33 return PRIORITY;
34 }
35 private Transferable copy(final AttributeSelection selection) {
36 String attributesContent = toAttributesContent(selection);
37 String stringContent = toStringContent(selection);
38 return new AttributeTransferable(attributesContent, stringContent);
39 }
40
41 private String toStringContent(AttributeSelection selection) {
42 return selection.nodeAttributeStream().map(this::toStringContent)
43 .collect(Collectors.joining("\n"));
44 }
45
46 private String toStringContent(NodeAttribute attribute) {
47 return attribute.name() + '\t' + String.valueOf(attribute.value());
48 }
49
50 private String toAttributesContent(AttributeSelection selection) {
51 StringWriter writer = new StringWriter();
52 final XMLWriter xmlWriter = new XMLWriter(writer);
53 selection.nodeAttributeStream().map(this::toAttributesContent)
54 .forEach(element -> {
55 try {
56 xmlWriter.write(element);
57 }
58 catch (IOException e) {
59 throw new RuntimeException(e);
60 }
61 });
62 return writer.toString();
63 }
64
65 private XMLElement toAttributesContent(NodeAttribute attribute) {
66 final XMLElement element = new XMLElement("attribute");
67 element.setAttribute("name", attribute.name());
68 element.setAttribute("name", attribute.name());
69 Object value = attribute.value();
70 final String encodedValue = TypeReference.toSpec(value);
71 element.setAttribute("object", encodedValue);
72 return element;
73 }
74 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.attribute.clipboard;
20
21 import java.awt.datatransfer.Clipboard;
22 import java.awt.datatransfer.ClipboardOwner;
23 import java.awt.datatransfer.DataFlavor;
24 import java.awt.datatransfer.Transferable;
25 import java.awt.datatransfer.UnsupportedFlavorException;
26
27 import org.freeplane.core.util.LogUtils;
28
29 public class AttributeTransferable implements Transferable, ClipboardOwner {
30 public static DataFlavor attributesFlavor = null;
31 static {
32 try {
33 AttributeTransferable.attributesFlavor = new DataFlavor("text/freeplane-attributes; class=java.lang.String");
34 }
35 catch (final Exception e) {
36 LogUtils.severe(e);
37 }
38 }
39 final private String attributesContent;
40 final private String stringContent;
41
42 public AttributeTransferable(final String attributesContent, final String stringContent) {
43 this.attributesContent = attributesContent;
44 this.stringContent = stringContent;
45 }
46
47 @Override
48 public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException {
49 if (flavor.equals(DataFlavor.stringFlavor)) {
50 return stringContent;
51 }
52 if (flavor.equals(AttributeTransferable.attributesFlavor)) {
53 return attributesContent;
54 }
55 throw new UnsupportedFlavorException(flavor);
56 }
57
58 @Override
59 public DataFlavor[] getTransferDataFlavors() {
60 return new DataFlavor[] { DataFlavor.stringFlavor, AttributeTransferable.attributesFlavor};
61 }
62
63 @Override
64 public boolean isDataFlavorSupported(final DataFlavor flavor) {
65 if (flavor.equals(DataFlavor.stringFlavor)) {
66 return true;
67 }
68 else if (flavor.equals(AttributeTransferable.attributesFlavor)) {
69 return true;
70 }
71 return false;
72 }
73
74 @Override
75 public void lostOwnership(final Clipboard clipboard, final Transferable contents) {
76 }
77 }
493493 attributesChanged();
494494 }
495495
496 @Override
497 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
498 }
499
500496 private void selectedAttributeChanged(final Object selectedAttributeName, final JComboBox values) {
501497 final MapModel map = Controller.getCurrentController().getMap();
502498 final AttributeRegistry attributes = AttributeRegistry.getRegistry(map);
4242 import org.freeplane.core.util.TextUtils;
4343 import org.freeplane.core.util.collection.IListModel;
4444 import org.freeplane.features.attribute.AttributeRegistry;
45 import org.freeplane.features.icon.factory.IconStoreFactory;
4645 import org.freeplane.features.map.IMapSelectionListener;
4746 import org.freeplane.features.map.MapController;
4847 import org.freeplane.features.map.MapModel;
5554 public class AttributeManagerDialog extends JDialog implements IMapSelectionListener {
5655 private class ApplyAction extends AFreeplaneAction {
5756 /**
58 *
57 *
5958 */
6059 private static final long serialVersionUID = 1L;
6160
6968 * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent
7069 * )
7170 */
71 @Override
7272 public void actionPerformed(final ActionEvent e) {
7373 applyChanges();
7474 Controller.getCurrentModeController().startTransaction();
7777
7878 private class CancelAction extends AFreeplaneAction {
7979 /**
80 *
80 *
8181 */
8282 private static final long serialVersionUID = 1L;
8383
9191 * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent
9292 * )
9393 */
94 @Override
9495 public void actionPerformed(final ActionEvent e) {
9596 resetChanges();
9697 AttributeManagerDialog.this.setVisible(false);
108109
109110 class EditListAction extends AbstractAction {
110111 /**
111 *
112 *
112113 */
113114 private static final long serialVersionUID = 1L;
114115 private String labelText;
120121 super(null, AttributeManagerDialog.editButtonImage);
121122 }
122123
124 @Override
123125 public void actionPerformed(final ActionEvent e) {
124126 ListDialog.showDialog((Component) e.getSource(), AttributeManagerDialog.this, labelText, title,
125127 listBoxModel, "xxxxxxxxxxxxxxxxxxxxx");
142144
143145 private class ImportAction extends AFreeplaneAction {
144146 /**
145 *
147 *
146148 */
147149 private static final long serialVersionUID = 1L;
148150
156158 * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent
157159 * )
158160 */
161 @Override
159162 public void actionPerformed(final ActionEvent e) {
160163 if (importDialog == null) {
161164 importDialog = new ImportAttributesDialog(AttributeManagerDialog.this);
166169
167170 private class OKAction extends AFreeplaneAction {
168171 /**
169 *
172 *
170173 */
171174 private static final long serialVersionUID = 1L;
172175
180183 * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent
181184 * )
182185 */
186 @Override
183187 public void actionPerformed(final ActionEvent e) {
184188 applyChanges();
185189 AttributeManagerDialog.this.setVisible(false);
227231 controller.getMapViewManager().addMapSelectionListener(this);
228232 }
229233
234 @Override
230235 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
231236 if (newMap != null) {
232237 model = AttributeRegistry.getRegistry(newMap);
249254 mapController.setSaved(map, false);
250255 }
251256
252 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
253 }
254
255257 private void resetChanges() {
256258 model.resetChanges();
257259 Controller.getCurrentModeController().rollback();
3030 import org.freeplane.features.attribute.AttributeRegistry;
3131 import org.freeplane.features.attribute.AttributeRegistryElement;
3232 import org.freeplane.features.attribute.NodeAttributeTableModel;
33 import org.freeplane.features.map.MapController;
33 import org.freeplane.features.attribute.mindmapmode.clipboard.MAttributeClipboardController;
34 import org.freeplane.features.clipboard.ClipboardControllers;
35 import org.freeplane.features.clipboard.mindmapmode.MClipboardControllers;
3436 import org.freeplane.features.map.MapModel;
3537 import org.freeplane.features.map.NodeModel;
3638 import org.freeplane.features.mode.Controller;
200202 */
201203 void iterate(final NodeModel node) {
202204 visitor.visit(node, NodeAttributeTableModel.getModel(node));
203 MapController r = Controller.getCurrentModeController().getMapController();
204205 for (final NodeModel child : node.getChildren()) {
205206 iterate(child);
206207 }
578579 performInsertRow(node, attributes, rowCount, pAttribute.getName(), pAttribute.getValue());
579580 return rowCount;
580581 }
582
583 @Override
584 protected void registerAttributeClipboardController(final ModeController modeController) {
585 final MClipboardControllers controllers = (MClipboardControllers) modeController.getExtension(ClipboardControllers.class);
586 controllers.add(new MAttributeClipboardController(this));
587 }
588
581589
582590 /**
583591 *
693701 final String value = nodeAttributeTableModel.getValueAt(i, 1).toString();
694702 performRegistryAttributeValue(node.getMap(), name, value, false);
695703 }
696 MapController r = Controller.getCurrentModeController().getMapController();
697704 for (final NodeModel child : node.getChildren()) {
698705 performRegistrySubtreeAttributes(child);
699706 }
0 package org.freeplane.features.attribute.mindmapmode.clipboard;
1
2 import java.awt.datatransfer.Transferable;
3 import java.awt.datatransfer.UnsupportedFlavorException;
4 import java.io.IOException;
5 import java.io.StringReader;
6
7 import org.freeplane.core.io.xml.XMLLocalParserFactory;
8 import org.freeplane.core.util.TypeReference;
9 import org.freeplane.features.attribute.Attribute;
10 import org.freeplane.features.attribute.AttributeController;
11 import org.freeplane.features.attribute.AttributeSelection;
12 import org.freeplane.features.attribute.NodeAttribute;
13 import org.freeplane.features.attribute.NodeAttributeTableModel;
14 import org.freeplane.features.attribute.clipboard.AttributeClipboardController;
15 import org.freeplane.features.attribute.clipboard.AttributeTransferable;
16 import org.freeplane.features.attribute.mindmapmode.MAttributeController;
17 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
18 import org.freeplane.features.map.NodeModel;
19 import org.freeplane.features.mode.Controller;
20 import org.freeplane.n3.nanoxml.IXMLParser;
21 import org.freeplane.n3.nanoxml.IXMLReader;
22 import org.freeplane.n3.nanoxml.StdXMLReader;
23 import org.freeplane.n3.nanoxml.XMLElement;
24 import org.freeplane.n3.nanoxml.XMLException;
25
26 public class MAttributeClipboardController
27 extends AttributeClipboardController implements MClipboardController{
28 private final MAttributeController attributeController;
29
30 public MAttributeClipboardController(MAttributeController attributeController) {
31 this.attributeController = attributeController;
32 }
33 @Override
34 public boolean canPaste(Transferable t) {
35 return t.isDataFlavorSupported(AttributeTransferable.attributesFlavor);
36 }
37
38 @Override
39 public void paste(Transferable t) {
40 try {
41 final NodeModel target = Controller.getCurrentController().getSelection().getSelected();
42 final String transferData = (String) t.getTransferData(AttributeTransferable.attributesFlavor);
43 final IXMLParser parser = XMLLocalParserFactory.createLocalXMLParser();
44 final IXMLReader xmlReader = new StdXMLReader(new StringReader(transferData));
45 parser.setReader(xmlReader);
46 while(! xmlReader.atEOF()) {
47 final XMLElement storage = (XMLElement) parser.parse();
48 String name = storage.getAttribute("name", null);
49 final String object = storage.getAttribute("object", null);
50 Object value = TypeReference.create(object);
51 attributeController.addAttribute(target, new Attribute(name, value));
52 }
53
54 }
55 catch (UnsupportedFlavorException | IOException | XMLException e) {
56 throw new IllegalArgumentException(e);
57 }
58 }
59
60 @Override
61 public boolean canCut() {
62 return canCopy();
63 }
64
65 @Override
66 public void cut() {
67 copy();
68 final AttributeSelection attributeSelection = AttributeController.getAttributeSelection();
69 attributeSelection.nodeAttributeStream().forEach(this::delete);
70
71 }
72
73 private void delete(NodeAttribute nodeAttribute) {
74 final NodeModel node = nodeAttribute.node;
75 final NodeAttributeTableModel model = node.getExtension(NodeAttributeTableModel.class);
76 final int attributeIndex = model.getAttributeIndex(nodeAttribute.attribute);
77 attributeController.performRemoveRow(node, model, attributeIndex);
78
79 }
80 }
0 package org.freeplane.features.clipboard;
1
2 import java.awt.GraphicsEnvironment;
3 import java.awt.Toolkit;
4 import java.awt.datatransfer.Clipboard;
5 import java.awt.datatransfer.StringSelection;
6 import java.awt.datatransfer.Transferable;
7 import java.security.AccessControlException;
8
9 import org.freeplane.core.extension.IExtension;
10 import org.freeplane.core.util.LogUtils;
11 import org.freeplane.features.mode.Controller;
12
13 public class ClipboardAccessor implements IExtension{
14
15 private Clipboard clipboard;
16 // final private ModeController modeController;
17 private Clipboard selection;
18 public static void install( final ClipboardAccessor clipboardController) {
19 Controller.getCurrentModeController().addExtension(ClipboardAccessor.class, clipboardController);
20 }
21 public static ClipboardAccessor getController() {
22 return Controller.getCurrentModeController().getExtension(ClipboardAccessor.class);
23 }
24
25
26 public ClipboardAccessor() {
27 super();
28 // this.modeController = modeController;
29 try {
30 final Toolkit toolkit = Toolkit.getDefaultToolkit();
31
32 if (!GraphicsEnvironment.isHeadless()) {
33 selection = toolkit.getSystemSelection();
34 clipboard = toolkit.getSystemClipboard();
35 } else {
36 selection = null;
37 clipboard = null;
38 }
39 }
40 catch (final AccessControlException e) {
41 LogUtils.warn("can not access system clipboard, clipboard controller disabled");
42 }
43 }
44
45 /**
46 */
47 public Transferable getClipboardContents() {
48 if (clipboard != null) {
49 return clipboard.getContents(this);
50 }
51 return null;
52 }
53
54 /**
55 */
56 public void setClipboardContents(final Transferable t) {
57 if (clipboard != null) {
58 clipboard.setContents(t, null);
59 }
60 if (selection != null) {
61 selection.setContents(t, null);
62 }
63 }
64
65 /** copies a string to the system clipboard. */
66 public void setClipboardContents(final String string) {
67 setClipboardContents(new StringSelection(string));
68 }
69
70 /** copies a string to the system clipboard with text/html mimetype. */
71 public void setClipboardContentsToHtml(final String html) {
72 setClipboardContents(new HtmlSelection(html));
73 }
74 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is created by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
190 package org.freeplane.features.clipboard;
201
21 import java.awt.Color;
22 import java.awt.GraphicsEnvironment;
23 import java.awt.Toolkit;
24 import java.awt.datatransfer.Clipboard;
25 import java.awt.datatransfer.StringSelection;
26 import java.awt.datatransfer.Transferable;
27 import java.awt.datatransfer.UnsupportedFlavorException;
28 import java.io.BufferedWriter;
29 import java.io.File;
30 import java.io.FileOutputStream;
31 import java.io.IOException;
32 import java.io.OutputStreamWriter;
33 import java.io.StringReader;
34 import java.io.StringWriter;
35 import java.io.Writer;
36 import java.util.*;
37
38 import org.freeplane.core.extension.IExtension;
39 import org.freeplane.core.resources.ResourceController;
40 import org.freeplane.core.util.LogUtils;
41 import org.freeplane.features.link.NodeLinks;
42 import org.freeplane.features.map.IMapSelection;
43 import org.freeplane.features.map.MapController;
44 import org.freeplane.features.map.MapWriter.Mode;
45 import org.freeplane.features.map.NodeModel;
46 import org.freeplane.features.mode.Controller;
47 import org.freeplane.features.mode.ModeController;
48 import org.freeplane.features.nodestyle.NodeStyleModel;
49 import org.freeplane.features.text.TextController;
50
51 /**
52 * @author Dimitry Polivaev
53 */
54 public class ClipboardController implements IExtension {
55 public static final String NODESEPARATOR = "<nodeseparator>";
56
57 public static ClipboardController getController() {
58 return (ClipboardController) Controller.getCurrentModeController().getExtension(ClipboardController.class);
59 }
60
61 public static void install( final ClipboardController clipboardController) {
62 Controller.getCurrentModeController().addExtension(ClipboardController.class, clipboardController);
63 }
64
65 final private Clipboard clipboard;
66 // final private ModeController modeController;
67 final private Clipboard selection;
68
69 public ClipboardController() {
70 super();
71 // this.modeController = modeController;
72 final Toolkit toolkit = Toolkit.getDefaultToolkit();
73
74 if (!GraphicsEnvironment.isHeadless()) {
75 selection = toolkit.getSystemSelection();
76 clipboard = toolkit.getSystemClipboard();
77 } else {
78 selection = null;
79 clipboard = null;
80 }
81 createActions();
82 }
83
84 private void collectColors(final NodeModel node, final HashSet<Color> colors) {
85 final Color color = NodeStyleModel.getColor(node);
86 if (color != null) {
87 colors.add(color);
88 }
89 MapController r = Controller.getCurrentModeController().getMapController();
90 for (final NodeModel child : node.getChildren()) {
91 collectColors(child, colors);
92 }
93 }
94
95 public MindMapNodesSelection copy(final Collection<NodeModel> selectedNodes, final boolean copyInvisible) {
96 try {
97 final String forNodesFlavor = createForNodesFlavor(selectedNodes, copyInvisible);
98 final String plainText = getAsPlainText(selectedNodes);
99 return new MindMapNodesSelection(forNodesFlavor, plainText, getAsRTF(selectedNodes),
100 getAsHTML(selectedNodes));
101 }
102 catch (final UnsupportedFlavorException ex) {
103 LogUtils.severe(ex);
104 }
105 catch (final IOException ex) {
106 LogUtils.severe(ex);
107 }
108 return null;
109 }
110
111 public Transferable copy(final IMapSelection selection) {
112 return copy(selection.getSortedSelection(true), false);
113 }
114
115 public Transferable copy(final NodeModel node, final boolean saveInvisible) {
116 final StringWriter stringWriter = new StringWriter();
117 try {
118 Controller.getCurrentModeController().getMapController().getMapWriter().writeNodeAsXml(stringWriter, node, Mode.CLIPBOARD,
119 saveInvisible, true, false);
120 }
121 catch (final IOException e) {
122 LogUtils.severe(e);
123 }
124 return new MindMapNodesSelection(stringWriter.toString());
125 }
126
127 public Transferable copySingle(final Collection<NodeModel> source) {
128 final int size = source.size();
129 final Vector<NodeModel> target = new Vector<NodeModel>(size);
130 target.setSize(size);
131 int i = 0;
132 for (NodeModel node : source) {
133 target.set(i, new SingleCopySource(node));
134 i++;
135 }
136 return copy(target, false);
137 }
138
139 /**
140 *
141 */
142 private void createActions() {
143 final Controller controller = Controller.getCurrentController();
144 ModeController modeController = controller.getModeController();
145 modeController.addAction(new CopyAction());
146 modeController.addAction(new CopySingleAction());
147 if(!controller.getViewController().isApplet())
148 modeController.addAction(new CopyIDAction());
149 modeController.addAction(new CopyNodeURIAction());
150 }
151
152 public String createForNodesFlavor(final Collection<NodeModel> selectedNodes, final boolean copyInvisible)
153 throws UnsupportedFlavorException, IOException {
154 String forNodesFlavor = "";
155 boolean firstLoop = true;
156 for (final NodeModel tmpNode : selectedNodes) {
157 if (firstLoop) {
158 firstLoop = false;
159 }
160 else {
161 forNodesFlavor += "<nodeseparator>";
162 }
163 forNodesFlavor += copy(tmpNode, copyInvisible).getTransferData(MindMapNodesSelection.mindMapNodesFlavor);
164 }
165 return forNodesFlavor;
166 }
167
168 public String getAsHTML(final Collection<NodeModel> selectedNodes) {
169 try {
170 final StringWriter stringWriter = new StringWriter();
171 final BufferedWriter fileout = new BufferedWriter(stringWriter);
172 writeHTML(selectedNodes, fileout);
173 fileout.close();
174 return stringWriter.toString();
175 }
176 catch (final Exception e) {
177 LogUtils.severe(e);
178 return null;
179 }
180 }
181
182 public String getAsPlainText(final Collection<NodeModel> selectedNodes) {
183 try {
184 final StringWriter stringWriter = new StringWriter();
185 final BufferedWriter fileout = new BufferedWriter(stringWriter);
186 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
187 writeTXT(it.next(), fileout,/* depth= */0);
188 }
189 fileout.close();
190 return stringWriter.toString();
191 }
192 catch (final Exception e) {
193 LogUtils.severe(e);
194 return null;
195 }
196 }
197
198 public String getAsRTF(final Collection<NodeModel> selectedNodes) {
199 try {
200 final StringWriter stringWriter = new StringWriter();
201 final BufferedWriter fileout = new BufferedWriter(stringWriter);
202 writeRTF(selectedNodes, fileout);
203 fileout.close();
204 return stringWriter.toString();
205 }
206 catch (final Exception e) {
207 LogUtils.severe(e);
208 return null;
209 }
210 }
211
212 /**
213 */
214 public Transferable getClipboardContents() {
215 if (clipboard != null) {
216 return clipboard.getContents(this);
217 }
218 return null;
219 }
220
221 private String rtfEscapeUnicodeAndSpecialCharacters(final String text) {
222 final int len = text.length();
223 final StringBuilder result = new StringBuilder(len);
224 int intValue;
225 char myChar;
226 for (int i = 0; i < len; ++i) {
227 myChar = text.charAt(i);
228 intValue = text.charAt(i);
229 if (intValue > 128) {
230 result.append("\\u").append(intValue).append("?");
231 }
232 else {
233 switch (myChar) {
234 case '\\':
235 result.append("\\\\");
236 break;
237 case '{':
238 result.append("\\{");
239 break;
240 case '}':
241 result.append("\\}");
242 break;
243 case '\n':
244 result.append(" \\line ");
245 break;
246 default:
247 result.append(myChar);
248 }
249 }
250 }
251 return result.toString();
252 }
253
254 public void saveHTML(final NodeModel rootNodeOfBranch, final File file) throws IOException {
255 saveHTML(Collections.singletonList(rootNodeOfBranch), file);
256 }
257
258 public void saveHTML(final List<NodeModel> branchRootNodes, final File file) throws IOException {
259 final BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
260 final MindMapHTMLWriter htmlWriter = new MindMapHTMLWriter(Controller.getCurrentModeController().getMapController(), fileout);
261 htmlWriter.writeHTML(branchRootNodes);
262 }
263
264 public boolean saveTXT(final NodeModel rootNodeOfBranch, final File file) {
265 try {
266 final BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
267 writeTXT(rootNodeOfBranch, fileout,/* depth= */
268 0);
269 fileout.close();
270 return true;
271 }
272 catch (final Exception e) {
273 LogUtils.severe("Error in MindMapMapModel.saveTXT(): ", e);
274 return false;
275 }
276 }
277
278 /**
279 */
280 public void setClipboardContents(final Transferable t) {
281 if (clipboard != null) {
282 clipboard.setContents(t, null);
283 }
284 if (selection != null) {
285 selection.setContents(t, null);
286 }
287 }
288
289 /** copies a string to the system clipboard. */
290 public void setClipboardContents(final String string) {
291 setClipboardContents(new StringSelection(string));
292 }
293
294 /** copies a string to the system clipboard with text/html mimetype. */
295 public void setClipboardContentsToHtml(final String html) {
296 setClipboardContents(new HtmlSelection(html));
297 }
298
299 public NodeModel duplicate(final NodeModel source, boolean withChildren) {
300 try {
301 final StringWriter writer = new StringWriter();
302 ModeController modeController = Controller.getCurrentModeController();
303 modeController.getMapController().getMapWriter()
304 .writeNodeAsXml(writer, source, Mode.CLIPBOARD, true, withChildren, false);
305 final String result = writer.toString();
306 final NodeModel copy = modeController.getMapController().getMapReader().createNodeTreeFromXml(
307 source.getMap(), new StringReader(result), Mode.CLIPBOARD);
308 copy.setFolded(false);
309 return copy;
310 }
311 catch (final Exception e) {
312 LogUtils.severe(e);
313 return null;
314 }
315 }
316
317 private void writeChildrenRTF(final NodeModel node, final Writer fileout, final int depth,
318 final HashMap<Color, Integer> colorTable) throws IOException {
319 MapController r = Controller.getCurrentModeController().getMapController();
320 for (final NodeModel child : node.getChildren()) {
321 if (child.hasVisibleContent()) {
322 writeRTF(child, fileout, depth + 1, colorTable);
323 }
324 else {
325 writeChildrenRTF(child, fileout, depth, colorTable);
326 }
327 }
328 }
329
330 private void writeChildrenText(final NodeModel node, final Writer fileout, final int depth, String indentation)
331 throws IOException {
332 MapController r = Controller.getCurrentModeController().getMapController();
333 for (final NodeModel child : node.getChildren()) {
334 if (child.hasVisibleContent()) {
335 writeTXT(child, fileout, depth + 1, indentation);
336 }
337 else {
338 writeChildrenText(child, fileout, depth, indentation);
339 }
340 }
341 }
342
343 public void writeHTML(final Collection<NodeModel> selectedNodes, final Writer fileout) throws IOException {
344 final MindMapHTMLWriter htmlWriter = new MindMapHTMLWriter(Controller.getCurrentModeController().getMapController(), fileout);
345 htmlWriter.writeHTML(selectedNodes);
346 }
347
348 public boolean writeRTF(final Collection<NodeModel> selectedNodes, final BufferedWriter fileout) {
349 try {
350 final HashSet<Color> colors = new HashSet<Color>();
351 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
352 collectColors(it.next(), colors);
353 }
354 String colorTableString = "{\\colortbl;\\red0\\green0\\blue255;";
355 final HashMap<Color, Integer> colorTable = new HashMap<Color, Integer>();
356 int colorPosition = 2;
357 for (final Color color : colors) {
358 colorTableString += "\\red" + color.getRed() + "\\green" + color.getGreen() + "\\blue"
359 + color.getBlue() + ";";
360 colorTable.put(color, new Integer(colorPosition));
361 }
362 colorTableString += "}";
363 fileout.write("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fswiss\\fcharset0 Arial;}"
364 + colorTableString + "}" + "\\viewkind4\\uc1\\pard\\f0\\fs20{}");
365 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
366 writeRTF(it.next(), fileout,/* depth= */0, colorTable);
367 }
368 fileout.write("}");
369 return true;
370 }
371 catch (final Exception e) {
372 LogUtils.severe(e);
373 return false;
374 }
375 }
376
377 public void writeRTF(final NodeModel mindMapNodeModel, final Writer fileout, final int depth,
378 final HashMap<Color, Integer> colorTable) throws IOException {
379 String pre = "{" + "\\li" + depth * 350;
380 String level;
381 if (depth <= 8) {
382 level = "\\outlinelevel" + depth;
383 }
384 else {
385 level = "";
386 }
387 String fontsize = "";
388 if (NodeStyleModel.getColor(mindMapNodeModel) != null) {
389 pre += "\\cf" + colorTable.get(NodeStyleModel.getColor(mindMapNodeModel)).intValue();
390 }
391 final NodeStyleModel font = NodeStyleModel.getModel(mindMapNodeModel);
392 if (font != null) {
393 if (Boolean.TRUE.equals(font.isItalic())) {
394 pre += "\\i ";
395 }
396 if (Boolean.TRUE.equals(font.isBold())) {
397 pre += "\\b ";
398 }
399 if (font.getFontSize() != null) {
400 fontsize = "\\fs" + Math.round(1.5 * font.getFontSize());
401 pre += fontsize;
402 }
403 }
404 pre += "{}";
405 fileout.write("\\li" + depth * 350 + level + "{}");
406 final String nodeText = TextController.getController().getPlainTransformedText(mindMapNodeModel);
407 if (nodeText.matches(" *")) {
408 fileout.write("o");
409 }
410 else {
411 final String text = rtfEscapeUnicodeAndSpecialCharacters(nodeText);
412 if (NodeLinks.getValidLink(mindMapNodeModel) != null) {
413 final String link = rtfEscapeUnicodeAndSpecialCharacters(NodeLinks.getLinkAsString(mindMapNodeModel));
414 if (link.equals(nodeText)) {
415 fileout.write(pre + "<{\\ul\\cf1 " + link + "}>" + "}");
416 }
417 else {
418 fileout.write("{" + fontsize + pre + text + "} ");
419 fileout.write("<{\\ul\\cf1 " + link + "}}>");
420 }
421 }
422 else {
423 fileout.write(pre + text + "}");
424 }
425 }
426 fileout.write("\\par");
427 fileout.write("\n");
428 writeChildrenRTF(mindMapNodeModel, fileout, depth, colorTable);
429 }
430
431 public void writeTXT(final NodeModel mindMapNodeModel, final Writer fileout, final int depth) throws IOException {
432 boolean indentationUsesTabsInTextOutput = ResourceController.getResourceController().getBooleanProperty("indentationUsesTabsInTextOutput");
433 String indentation = indentationUsesTabsInTextOutput ? "\t" : " ";
434 writeTXT(mindMapNodeModel, fileout, depth, indentation);
435 }
436
437 private void writeTXT(final NodeModel mindMapNodeModel, final Writer fileout, final int depth, String indentation) throws IOException {
438 String plainTextContent = TextController.getController().getPlainTransformedText(mindMapNodeModel).replace('\n', ' ');
439 for (int i = 0; i < depth; ++i) {
440 fileout.write(indentation);
441 }
442 if (NodeLinks.getValidLink(mindMapNodeModel) != null) {
443 final String link = NodeLinks.getLinkAsString(mindMapNodeModel);
444 if (!link.equals(plainTextContent)) {
445 fileout.write(plainTextContent + " ");
446 }
447 fileout.write("<" + link + ">");
448 }
449 else {
450 fileout.write(plainTextContent);
451 }
452 fileout.write("\n");
453 writeChildrenText(mindMapNodeModel, fileout, depth, indentation);
454 }
2 public interface ClipboardController{
3 boolean canCopy();
4 void copy();
5 int getPriority();
4556 }
0 package org.freeplane.features.clipboard;
1
2 import java.util.SortedSet;
3 import java.util.TreeSet;
4
5 import org.freeplane.core.extension.IExtension;
6 import org.freeplane.features.mode.Controller;
7 import org.freeplane.features.mode.ModeController;
8
9 public class ClipboardControllers implements IExtension{
10 public static void install( final ClipboardControllers clipboardController) {
11 Controller.getCurrentModeController().addExtension(ClipboardControllers.class, clipboardController);
12 Controller.getCurrentModeController().addExtension(ClipboardAccessor.class, new ClipboardAccessor());
13 }
14 public static ClipboardControllers getController() {
15 return Controller.getCurrentModeController().getExtension(ClipboardControllers.class);
16 }
17
18 private final SortedSet<ClipboardController> controllers;
19 public final CopyAction copyAction;
20
21
22 public ClipboardControllers() {
23 super();
24 controllers = new TreeSet<>(this::prioritySort);
25 final Controller controller = Controller.getCurrentController();
26 ModeController modeController = controller.getModeController();
27 copyAction = new CopyAction();
28 modeController.addAction(copyAction);
29 }
30
31 protected int prioritySort(ClipboardController x, ClipboardController y) {
32 return -Integer.compare(x.getPriority(), y.getPriority());
33 }
34
35
36 public boolean add(ClipboardController e) {
37 return controllers.add(e);
38 }
39
40 public void copy() {
41 controllers.stream().filter(ClipboardController::canCopy)
42 .findFirst().ifPresent(ClipboardController::copy);
43 }
44
45 }
1818 */
1919 package org.freeplane.features.clipboard;
2020
21 import java.awt.datatransfer.Transferable;
2221 import java.awt.event.ActionEvent;
2322
2423 import org.freeplane.core.ui.AFreeplaneAction;
25 import org.freeplane.features.map.IMapSelection;
26 import org.freeplane.features.mode.Controller;
27 import org.freeplane.features.mode.ModeController;
2824
2925 class CopyAction extends AFreeplaneAction {
3026 // private static final String NAME = "copy";
3430 super("CopyAction");
3531 }
3632
33 @Override
3734 public void actionPerformed(final ActionEvent e) {
38 final Controller controller = Controller.getCurrentController();
39 final ModeController modeController = Controller.getCurrentModeController();
40 final IMapSelection selection = controller.getSelection();
41 if (selection != null) {
42 final ClipboardController clipboardController = (ClipboardController) modeController
43 .getExtension(ClipboardController.class);
44 final Transferable copy = clipboardController.copy(selection);
45 if (copy != null) {
46 clipboardController.setClipboardContents(copy);
47 }
48 }
35 final ClipboardControllers clipboardController = ClipboardControllers
36 .getController();
37 clipboardController.copy();
4938 }
5039 }
+0
-39
freeplane/src/main/java/org/freeplane/features/clipboard/CopyIDAction.java less more
0 package org.freeplane.features.clipboard;
1
2 import java.awt.datatransfer.StringSelection;
3 import java.awt.event.ActionEvent;
4 import java.util.Collection;
5 import org.freeplane.core.ui.AFreeplaneAction;
6 import org.freeplane.features.map.NodeModel;
7 import org.freeplane.features.mode.Controller;
8
9 public class CopyIDAction extends AFreeplaneAction {
10 public CopyIDAction() {
11 super("CopyIDAction");
12 }
13
14 /**
15 *
16 */
17 private static final long serialVersionUID = 1L;
18
19 public void actionPerformed(final ActionEvent e) {
20 final Controller controller = Controller.getCurrentController();
21 final Collection<NodeModel> selectedNodes = controller.getSelection().getSelection();
22 StringBuilder sb = null;
23 for (final NodeModel node : selectedNodes) {
24 if (sb == null) {
25 sb = new StringBuilder();
26 }
27 else {
28 sb.append(", ");
29 }
30 sb.append(node.createID());
31 }
32 final String idString = sb.toString();
33 final ClipboardController clipboardController = (ClipboardController) Controller.getCurrentModeController().getExtension(
34 ClipboardController.class);
35 clipboardController.setClipboardContents(new StringSelection(idString));
36 controller.getViewController().out(idString);
37 }
38 }
+0
-43
freeplane/src/main/java/org/freeplane/features/clipboard/CopyNodeURIAction.java less more
0 package org.freeplane.features.clipboard;
1
2 import java.awt.datatransfer.StringSelection;
3 import java.awt.event.ActionEvent;
4 import java.io.File;
5
6 import org.freeplane.core.ui.AFreeplaneAction;
7 import org.freeplane.core.ui.components.UITools;
8 import org.freeplane.core.util.TextUtils;
9 import org.freeplane.features.map.NodeModel;
10 import org.freeplane.features.mode.Controller;
11 import org.freeplane.features.url.FreeplaneUriConverter;
12
13 public class CopyNodeURIAction extends AFreeplaneAction {
14 public CopyNodeURIAction() {
15 super("CopyNodeURIAction");
16 }
17
18 /**
19 *
20 */
21 private static final long serialVersionUID = 1L;
22 public void actionPerformed(final ActionEvent e) {
23 final Controller controller = Controller.getCurrentController();
24 final NodeModel node = controller.getSelection().getSelected();
25 File mindmapFile = node.getMap().getFile();
26 if(mindmapFile == null) {
27 UITools.errorMessage(TextUtils.getRawText("map_not_saved"));
28 return;
29 }
30 final String idString = uri(node, mindmapFile);
31 final ClipboardController clipboardController = Controller.getCurrentModeController().getExtension(
32 ClipboardController.class);
33 clipboardController.setClipboardContents(new StringSelection(idString));
34 controller.getViewController().out(idString);
35 }
36
37 public String uri(final NodeModel node, File mindmapFile) {
38 final String fileBasedUri = mindmapFile.toURI().toString() + '#' + node.createID();
39 final FreeplaneUriConverter freeplaneUriConverter = new FreeplaneUriConverter();
40 return freeplaneUriConverter.freeplaneUriForFile(fileBasedUri);
41 }
42 }
+0
-50
freeplane/src/main/java/org/freeplane/features/clipboard/CopySingleAction.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard;
20
21 import java.awt.datatransfer.Transferable;
22 import java.awt.event.ActionEvent;
23 import java.util.Collection;
24 import org.freeplane.core.ui.AFreeplaneAction;
25 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.mode.Controller;
27 import org.freeplane.features.mode.ModeController;
28
29 class CopySingleAction extends AFreeplaneAction {
30 /**
31 *
32 */
33 private static final long serialVersionUID = 1L;
34
35 public CopySingleAction() {
36 super("CopySingleAction");
37 }
38
39 public void actionPerformed(final ActionEvent e) {
40 final Controller controller = Controller.getCurrentController();
41 final Collection<NodeModel> selection = controller.getSelection().getSortedSelection(false);
42 final ModeController modeController = Controller.getCurrentModeController();
43 final Transferable copy = ((ClipboardController) modeController.getExtension(ClipboardController.class))
44 .copySingle(selection);
45 if (copy != null) {
46 ((ClipboardController) modeController.getExtension(ClipboardController.class)).setClipboardContents(copy);
47 }
48 }
49 }
+0
-452
freeplane/src/main/java/org/freeplane/features/clipboard/MindMapHTMLWriter.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard;
20
21 import static org.freeplane.features.nodestyle.FontUtils.isStrikedThrough;
22
23 import java.awt.Color;
24 import java.awt.Font;
25 import java.io.IOException;
26 import java.io.Writer;
27 import java.util.Collection;
28 import java.util.Collections;
29 import java.util.List;
30
31 import org.freeplane.core.resources.ResourceController;
32 import org.freeplane.core.ui.LengthUnits;
33 import org.freeplane.core.util.ColorUtils;
34 import org.freeplane.core.util.FileUtils;
35 import org.freeplane.core.util.HtmlUtils;
36 import org.freeplane.core.util.Quantity;
37 import org.freeplane.features.icon.IconController;
38 import org.freeplane.features.icon.MindIcon;
39 import org.freeplane.features.link.NodeLinks;
40 import org.freeplane.features.map.MapController;
41 import org.freeplane.features.map.MapModel;
42 import org.freeplane.features.map.NodeModel;
43 import org.freeplane.features.nodestyle.NodeStyleController;
44 import org.freeplane.features.note.NoteModel;
45 import org.freeplane.features.styles.MapStyleModel;
46 import org.freeplane.features.text.DetailTextModel;
47 import org.freeplane.features.text.TextController;
48 import org.freeplane.features.url.UrlManager;
49
50 class MindMapHTMLWriter {
51 private static String lf = System.getProperty("line.separator");
52
53 private static String convertSpecialChar(final char c) {
54 String cvt;
55 switch (c) {
56 case 0xe4:
57 cvt = "&auml;";
58 break;
59 case 0xf6:
60 cvt = "&ouml;";
61 break;
62 case 0xfc:
63 cvt = "&uuml;";
64 break;
65 case 0xc4:
66 cvt = "&Auml;";
67 break;
68 case 0xd6:
69 cvt = "&Ouml;";
70 break;
71 case 0xdc:
72 cvt = "&Uuml;";
73 break;
74 case 0xdf:
75 cvt = "&szlig;";
76 break;
77 default:
78 cvt = "&#" + Integer.toString(c) + ";";
79 break;
80 }
81 return cvt;
82 }
83
84 private static String writeHTML_escapeUnicodeAndSpecialCharacters(final String text) {
85 final int len = text.length();
86 final StringBuilder result = new StringBuilder(len);
87 int intValue;
88 char myChar;
89 boolean previousSpace = false;
90 boolean spaceOccured = false;
91 for (int i = 0; i < len; ++i) {
92 myChar = text.charAt(i);
93 intValue = text.charAt(i);
94 if (intValue >= 128) {
95 result.append(MindMapHTMLWriter.convertSpecialChar(myChar));
96 }
97 else {
98 spaceOccured = false;
99 switch (myChar) {
100 case '&':
101 result.append("&amp;");
102 break;
103 case '<':
104 result.append("&lt;");
105 break;
106 case '>':
107 result.append("&gt;");
108 break;
109 case ' ':
110 spaceOccured = true;
111 if (previousSpace) {
112 result.append("&nbsp;");
113 }
114 else {
115 result.append(" ");
116 }
117 break;
118 case '\n':
119 result.append("\n<br>\n");
120 break;
121 default:
122 result.append(myChar);
123 }
124 previousSpace = spaceOccured;
125 }
126 }
127 return result.toString();
128 }
129
130 final private boolean basedOnHeadings;
131 final private Writer fileout;
132 final private MapController mapController;
133 private boolean writeFoldingCode;
134 private final NodeStyleController nodeStyleController;
135 private Font defaultFont;
136 private Color defaultColor;
137
138 MindMapHTMLWriter(final MapController mapController, final Writer fileout) {
139 this.mapController = mapController;
140 nodeStyleController = NodeStyleController.getController();
141 this.fileout = fileout;
142 writeFoldingCode = false;
143 basedOnHeadings = (getProperty("html_export_folding").equals("html_export_based_on_headings"));
144 }
145
146 private String fontStyle(Color color, Font font) throws IOException {
147 StringBuilder fontStyle = new StringBuilder();
148 if (color != null && (defaultColor == null || !color.equals(defaultColor)))
149 fontStyle.append("color: ").append(ColorUtils.colorToString(color)).append("; ");
150 if (font != null) {
151 final int fontSize = font.getSize();
152 if (defaultFont == null || fontSize != defaultFont.getSize())
153 fontStyle.append("font-size: ").append(fontSize).append("pt; ");
154 final String fontFamily = font.getFamily();
155 if (defaultFont == null || !fontFamily.equals(defaultFont.getFamily()))
156 fontStyle.append("font-family: \"").append(fontFamily).append("\", sans-serif; ");
157 if ((defaultFont == null || !defaultFont.isItalic()) && font.isItalic()) {
158 fontStyle.append("font-style: italic; ");
159 }
160 if ((defaultFont == null || !defaultFont.isBold()) && font.isBold()) {
161 fontStyle.append("font-weight: bold; ");
162 }
163 if ((defaultFont == null || !isStrikedThrough(defaultFont)) && isStrikedThrough(font)) {
164 fontStyle.append("text-decoration: line-through; ");
165 }
166 }
167 return fontStyle.toString();
168 }
169
170 private String getProperty(final String key) {
171 return ResourceController.getResourceController().getProperty(key);
172 }
173
174 private void writeBodyWithFolding(final NodeModel rootNodeOfBranch) throws IOException {
175 writeJavaScript();
176 fileout.write("<SPAN class=\"foldspecial\" onclick=\"unfold_document()\">All +</SPAN>" + lf);
177 fileout.write("<SPAN class=\"foldspecial\" onclick=\"fold_document()\">All -</SPAN>" + lf);
178 writeHTML(rootNodeOfBranch, "1", 0, /* isRoot */true, true, /* depth */
179 1);
180 fileout.write("<SCRIPT type=\"text/javascript\">" + lf);
181 fileout.write("fold_document();" + lf);
182 fileout.write("</SCRIPT>" + lf);
183 }
184
185 private void writeFoldingButtons(final String localParentID) throws IOException {
186 fileout.write("<span id=\"show" + localParentID + "\" class=\"foldclosed\" onClick=\"show_folder('"
187 + localParentID + "')\" style=\"POSITION: absolute\">+</span> " + "<span id=\"hide" + localParentID
188 + "\" class=\"foldopened\" onClick=\"hide_folder('" + localParentID + "')\">-</span>");
189 fileout.write("\n");
190 }
191
192 void writeHTML(final Collection<NodeModel> selectedNodes) throws IOException {
193 fileout.write("<html>" + lf + "<head>" + lf);
194 if (!selectedNodes.isEmpty()) {
195 final MapModel map = selectedNodes.iterator().next().getMap();
196 setDefaultsFrom(map);
197 writeStyle();
198 }
199 fileout.write(lf + "</head>" + lf + "<body>" + lf);
200 for (NodeModel node : selectedNodes) {
201 writeHTML(node, "1", 0, /* isRoot */true, true, /* depth */1);
202 }
203 fileout.write("</body>" + lf);
204 fileout.write("</html>" + lf);
205 fileout.close();
206 resetDefaults();
207 }
208
209 private void resetDefaults() {
210 defaultFont = null;
211 defaultColor = null;
212 }
213
214 private void setDefaultsFrom(MapModel map) {
215 final MapStyleModel model = MapStyleModel.getExtension(map);
216 final NodeModel styleNode = model.getStyleNodeSafe(MapStyleModel.DEFAULT_STYLE);
217 defaultFont = nodeStyleController.getFont(styleNode);
218 defaultColor = nodeStyleController.getColor(styleNode);
219 }
220
221 void writeHTML(final List<NodeModel> branchRootNodes) throws IOException {
222 if(branchRootNodes.isEmpty())
223 return;
224 NodeModel firstNode = branchRootNodes.get(0);
225 MapModel map = firstNode.getMap();
226 setDefaultsFrom(map);
227 final String htmlExportFoldingOption = getProperty("html_export_folding");
228 writeFoldingCode = htmlExportFoldingOption.equals("html_export_fold_all")
229 || (htmlExportFoldingOption.equals("html_export_fold_currently_folded")
230 && hasFoldedStrictDescendant(branchRootNodes));
231 ResourceController.getResourceController().getBooleanProperty("export_icons_in_html");
232 fileout
233 .write(
234 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"
235 + lf + "<html>" + lf + "<head>" + lf);
236 fileout.write("<title>"
237 + MindMapHTMLWriter.writeHTML_escapeUnicodeAndSpecialCharacters(
238 TextController.getController().getPlainTransformedTextWithoutNodeNumber(branchRootNodes.size() == 1 ? firstNode : map.getRootNode())
239 .replace('\n', ' '))
240 + "</title>" + lf);
241 writeStyle();
242 fileout.write(lf + "</head>" + lf + "<body");
243 final MapStyleModel style = MapStyleModel.getExtension(map);
244 final Color background = style != null ? style.getBackgroundColor() : null;
245 if (background != null) {
246 fileout.write(" bgcolor=" + ColorUtils.colorToString(background));
247 }
248 fileout.write(">" + lf);
249 for(NodeModel node : branchRootNodes) {
250 if (writeFoldingCode) {
251 writeBodyWithFolding(node);
252 } else {
253 writeHTML(node, "1", 0, /* isRoot */true, true, /* depth */ 1);
254 }
255 }
256 fileout.write("</body>" + lf);
257 fileout.write("</html>" + lf);
258 fileout.close();
259 resetDefaults();
260 }
261
262 private boolean hasFoldedStrictDescendant(List<NodeModel> branchRootNodes) {
263 for(NodeModel node : branchRootNodes) {
264 if (mapController.hasFoldedStrictDescendant(node))
265 return true;
266 }
267 return false;
268 }
269
270 private int writeHTML(final NodeModel model, final String parentID, int lastChildNumber, final boolean isRoot,
271 final boolean treatAsParagraph, final int depth)
272 throws IOException {
273 if (!model.hasVisibleContent()) {
274 for (final NodeModel child : model.getChildren()) {
275 lastChildNumber = writeHTML(child, parentID, lastChildNumber, false, false, depth);
276 }
277 return lastChildNumber;
278 }
279 boolean createFolding = false;
280 if (writeFoldingCode) {
281 createFolding = mapController.isFolded(model);
282 if (getProperty("html_export_folding").equals("html_export_fold_all")) {
283 createFolding = model.hasChildren();
284 }
285 if (getProperty("html_export_folding").equals("html_export_no_folding") || basedOnHeadings || isRoot) {
286 createFolding = false;
287 }
288 }
289 final TextController textController = TextController.getController();
290 final Object userObject = model.getUserObject();
291 final String text = textController.getTransformedTextNoThrow(userObject, model, userObject);
292 final boolean hasHtml = text.startsWith("<html>");
293 final boolean heading = basedOnHeadings && !hasHtml && model.hasChildren() && depth <= 6;
294 if (!treatAsParagraph && !basedOnHeadings) {
295 fileout.write("<li>");
296 }
297 else {
298 if (heading) {
299 fileout.write(lf + "<h" + depth + ">");
300 }
301 else if (!hasHtml) {
302 fileout.write("<p>");
303 }
304 }
305 String localParentID = parentID;
306 if (createFolding) {
307 lastChildNumber++;
308 localParentID = parentID + "_" + lastChildNumber;
309 writeFoldingButtons(localParentID);
310 }
311 final String fontStyle = fontStyle(nodeStyleController.getColor(model), nodeStyleController.getFont(model));
312 boolean shouldOutputFontStyle = !fontStyle.equals("");
313 if (shouldOutputFontStyle) {
314 fileout.write("<span style=\"" + fontStyle + "\">");
315 }
316 String link = NodeLinks.getLinkAsString(model);
317 if (link != null) {
318 if (link.endsWith(UrlManager.FREEPLANE_FILE_EXTENSION)) {
319 link += ".html";
320 }
321 fileout.write("<a href=\"" + link + "\" target=\"_blank\">");
322 }
323 if (ResourceController.getResourceController().getBooleanProperty("export_icons_in_html")) {
324 writeIcons(model);
325 }
326 writeModelContent(text);
327 if (link != null) {
328 fileout.write("</a>" + lf);
329 }
330 if (shouldOutputFontStyle) {
331 fileout.write("</span>");
332 }
333 final String detailText = DetailTextModel.getDetailTextText(model);
334 if (detailText != null) {
335 writeModelContent(detailText);
336 }
337 final String noteContent = NoteModel.getNoteText(model);
338 if (noteContent != null) {
339 writeModelContent(noteContent);
340 }
341 if (heading) {
342 fileout.write("</h" + depth + ">" + lf);
343 }
344 if (getProperty("html_export_folding").equals("html_export_based_on_headings")) {
345 for (final NodeModel child : model.getChildren()) {
346 lastChildNumber = writeHTML(child, parentID, lastChildNumber, /*isRoot=*/false,
347 false, depth + 1);
348 }
349 return lastChildNumber;
350 }
351 if (model.hasChildren()) {
352 if (getProperty("html_export_folding").equals("html_export_based_on_headings")) {
353 for (final NodeModel child : model.getChildren()) {
354 lastChildNumber = writeHTML(child, parentID, lastChildNumber,
355 /*isRoot=*/false, false, depth + 1);
356 }
357 }
358 else if (createFolding) {
359 fileout.write(lf + "<ul id=\"fold" + localParentID
360 + "\" style=\"POSITION: relative; VISIBILITY: visible;\">" + lf);
361 int localLastChildNumber = 0;
362 for (final NodeModel child : model.getChildren()) {
363 localLastChildNumber = writeHTML(child, localParentID, localLastChildNumber,
364 /* isRoot=*/false, false, depth + 1);
365 }
366 }
367 else {
368 fileout.write(lf + "<ul>" + lf);
369 for (final NodeModel child : model.getChildren()) {
370 lastChildNumber = writeHTML(child, parentID, lastChildNumber,
371 /* isRoot= */false, false, depth + 1);
372 }
373 }
374 fileout.write("</ul>" + lf);
375 }
376 if (!treatAsParagraph) {
377 fileout.write("</li>" + lf);
378 }
379 return lastChildNumber;
380 }
381
382 private void writeIcons(final NodeModel model) throws IOException {
383 final IconController iconController = IconController.getController();
384 final Collection<MindIcon> icons = iconController.getIcons(model);
385 for (MindIcon icon : icons) {
386 final String iconFileName = icon.getSource();
387 fileout.write("<img src=\"icons/" + iconFileName + "\" alt=\"" + icon.getTranslationValueLabel() + "\"");
388 if (iconFileName.endsWith(".svg")) {
389 final Quantity<LengthUnits> iconSize = iconController.getIconSize(model);
390 fileout.write(" height = \"" + iconSize.toBaseUnitsRounded() + "\"");
391 }
392 fileout.write(">");
393 }
394 }
395
396 private void writeJavaScript() throws IOException {
397 fileout.write("<script type=\"text/javascript\">" + lf);
398 fileout.write(FileUtils.slurpResource("/html/folding.js"));
399 fileout.write(lf + "</script>" + lf);
400 }
401
402 private void writeModelContent(final String string) throws IOException {
403 if (string.matches(" +")) {
404 fileout.write("&nbsp;");
405 }
406 else if (string.startsWith("<html")) {
407 String output = string.substring(6);
408 int start = output.indexOf("<body");
409 if (start == -1) {
410 start = output.indexOf('>') + 1;
411 }
412 else {
413 start = output.indexOf('>', start + 5) + 1;
414 }
415 int end = output.indexOf("</body>");
416 if (end == -1) {
417 end = output.indexOf("</html>");
418 }
419 if (end == -1) {
420 end = output.length();
421 }
422 output = output.substring(start, end);
423 fileout.write(output);
424 }
425 else {
426 fileout.write(HtmlUtils.unicodeToHTMLUnicodeEntity(string));
427 }
428 }
429
430 private void writeStyle() throws IOException {
431 fileout.write("<style type=\"text/css\">" + lf);
432 fileout.write(" body {");
433 writeDefaultFontStyle();
434 fileout.write("}" + lf);
435 fileout.write(FileUtils.slurpResource("/html/freeplane.css"));
436 if (writeFoldingCode)
437 fileout.write(FileUtils.slurpResource("/html/folding.css"));
438 fileout.write(lf + "</style>" + lf //
439 + "<!-- ^ Position is not set to relative / absolute here because of Mozilla -->");
440 }
441
442 private void writeDefaultFontStyle() throws IOException {
443 Font font = defaultFont;
444 defaultFont = null;
445 Color color = defaultColor;
446 defaultColor = null;
447 fileout.write(fontStyle(color, font));
448 defaultFont = font;
449 defaultColor = color;
450 }
451 }
+0
-144
freeplane/src/main/java/org/freeplane/features/clipboard/MindMapNodesSelection.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard;
20
21 import java.awt.datatransfer.Clipboard;
22 import java.awt.datatransfer.ClipboardOwner;
23 import java.awt.datatransfer.DataFlavor;
24 import java.awt.datatransfer.Transferable;
25 import java.awt.datatransfer.UnsupportedFlavorException;
26 import java.io.ByteArrayInputStream;
27 import java.util.Collection;
28
29 import org.freeplane.core.util.LogUtils;
30 import org.freeplane.features.map.NodeModel;
31
32 public class MindMapNodesSelection implements Transferable, ClipboardOwner {
33 public static DataFlavor dropActionFlavor = null;
34 public static DataFlavor fileListFlavor = null;
35 public static DataFlavor htmlFlavor = null;
36 public static DataFlavor mindMapNodesFlavor = null;
37 public static DataFlavor mindMapNodeObjectsFlavor = null;
38 public static DataFlavor mindMapNodeSingleObjectsFlavor = null;
39 public static DataFlavor rtfFlavor = null;
40 static {
41 try {
42 MindMapNodesSelection.mindMapNodesFlavor = new DataFlavor("text/freeplane-nodes; class=java.lang.String");
43 MindMapNodesSelection.mindMapNodeObjectsFlavor = new DataFlavor("application/freeplane-nodes; class=java.util.Collection");
44 MindMapNodesSelection.mindMapNodeSingleObjectsFlavor = new DataFlavor("application/freeplane-single-nodes; class=java.util.Collection");
45 MindMapNodesSelection.rtfFlavor = new DataFlavor("text/rtf; class=java.io.InputStream");
46 MindMapNodesSelection.htmlFlavor = new DataFlavor("text/html; class=java.lang.String");
47 MindMapNodesSelection.fileListFlavor = new DataFlavor("application/x-java-file-list; class=java.util.List");
48 MindMapNodesSelection.dropActionFlavor = new DataFlavor("text/drop-action; class=java.lang.String");
49 }
50 catch (final Exception e) {
51 LogUtils.severe(e);
52 }
53 }
54 final private String htmlContent;
55 final private String nodesContent;
56 final private String rtfContent;
57 final private String stringContent;
58 private String dropActionContent;
59 private Collection<NodeModel> nodes;
60 private boolean selectionContainsSingleNodes;
61
62 public MindMapNodesSelection(final String nodesContent, final String stringContent, final String rtfContent,
63 final String htmlContent) {
64 this.nodesContent = nodesContent;
65 this.rtfContent = rtfContent;
66 this.stringContent = stringContent;
67 this.htmlContent = htmlContent;
68 this.dropActionContent = null;
69 }
70
71 public MindMapNodesSelection(final String nodesContent) {
72 this(nodesContent, null, null, null);
73 }
74
75 public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException {
76 if (flavor.equals(DataFlavor.stringFlavor)) {
77 return stringContent;
78 }
79 if (flavor.equals(MindMapNodesSelection.mindMapNodesFlavor)) {
80 return nodesContent;
81 }
82 if (flavor.equals(MindMapNodesSelection.dropActionFlavor)) {
83 return dropActionContent;
84 }
85 if (flavor.equals(MindMapNodesSelection.rtfFlavor)) {
86 final byte[] byteArray = rtfContent.getBytes();
87 return new ByteArrayInputStream(byteArray);
88 }
89 if (flavor.equals(MindMapNodesSelection.htmlFlavor) && htmlContent != null) {
90 return htmlContent;
91 }
92 if (containsObjectsFor(flavor)) {
93 return nodes;
94 }
95 throw new UnsupportedFlavorException(flavor);
96 }
97
98 boolean containsObjectsFor(final DataFlavor flavor) {
99 return nodes != null && (flavor.equals(MindMapNodesSelection.mindMapNodeObjectsFlavor) && ! selectionContainsSingleNodes
100 || flavor.equals(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor) && selectionContainsSingleNodes);
101 }
102
103 public DataFlavor[] getTransferDataFlavors() {
104 return new DataFlavor[] { DataFlavor.stringFlavor, MindMapNodesSelection.mindMapNodesFlavor,
105 MindMapNodesSelection.rtfFlavor, MindMapNodesSelection.htmlFlavor,
106 MindMapNodesSelection.dropActionFlavor,
107 MindMapNodesSelection.mindMapNodeObjectsFlavor , MindMapNodesSelection.mindMapNodeSingleObjectsFlavor };
108 }
109
110 public boolean isDataFlavorSupported(final DataFlavor flavor) {
111 if (flavor.equals(DataFlavor.stringFlavor) && stringContent != null) {
112 return true;
113 }
114 if (flavor.equals(MindMapNodesSelection.mindMapNodesFlavor) && nodesContent != null) {
115 return true;
116 }
117 if (flavor.equals(MindMapNodesSelection.rtfFlavor) && rtfContent != null) {
118 return true;
119 }
120 if (flavor.equals(MindMapNodesSelection.dropActionFlavor) && dropActionContent != null) {
121 return true;
122 }
123 if (flavor.equals(MindMapNodesSelection.htmlFlavor) && htmlContent != null) {
124 return true;
125 }
126 if (containsObjectsFor(flavor)) {
127 return true;
128 }
129 return false;
130 }
131
132 public void lostOwnership(final Clipboard clipboard, final Transferable contents) {
133 }
134
135 public void setDropAction(final String dropActionContent) {
136 this.dropActionContent = dropActionContent;
137 }
138
139 public void setNodeObjects(Collection<NodeModel> collection, boolean selectionContainsSingleNodes) {
140 nodes = collection;
141 this.selectionContainsSingleNodes = selectionContainsSingleNodes;
142 }
143 }
+0
-366
freeplane/src/main/java/org/freeplane/features/clipboard/SingleCopySource.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2013 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.Enumeration;
24 import java.util.List;
25 import java.util.Map;
26
27 import javax.swing.tree.MutableTreeNode;
28
29 import org.freeplane.core.extension.IExtension;
30 import org.freeplane.features.filter.FilterInfo;
31 import org.freeplane.features.icon.MindIcon;
32 import org.freeplane.features.map.HistoryInformationModel;
33 import org.freeplane.features.map.INodeView;
34 import org.freeplane.features.map.MapModel;
35 import org.freeplane.features.map.NodeChangeEvent;
36 import org.freeplane.features.map.NodeModel;
37 import org.freeplane.features.ui.INodeViewVisitor;
38
39 /**
40 * @author Dimitry Polivaev
41 * 03.02.2013
42 */
43 class SingleCopySource extends NodeModel {
44
45 private static final String METHOD_NOT_SUPPORTED = "method not supported";
46 private final NodeModel delegate;
47
48 @Override
49 protected List<NodeModel> getChildrenInternal() {
50 return Collections.emptyList();
51 }
52
53 @Override
54 protected void init(final Object userObject) {
55 }
56
57 public SingleCopySource(NodeModel delegate) {
58 super(null);
59 this.delegate =delegate;
60 }
61
62 @Override
63 public int hashCode() {
64 return super.hashCode();
65 }
66
67 @Override
68 public Object getUserObject() {
69 return delegate.getUserObject();
70 }
71
72 @Override
73 public boolean equals(Object obj) {
74 return super.equals(obj);
75 }
76
77 @Override
78 public void acceptViewVisitor(INodeViewVisitor visitor) {
79 throw new RuntimeException(METHOD_NOT_SUPPORTED);
80 }
81
82 @Override
83 public void addExtension(IExtension extension) {
84 throw new RuntimeException(METHOD_NOT_SUPPORTED);
85 }
86
87 @Override
88 public IExtension putExtension(IExtension extension) {
89 throw new RuntimeException(METHOD_NOT_SUPPORTED);
90 }
91
92 @Override
93 public void addIcon(MindIcon icon) {
94 throw new RuntimeException(METHOD_NOT_SUPPORTED);
95 }
96
97 @Override
98 public void addIcon(MindIcon icon, int position) {
99 throw new RuntimeException(METHOD_NOT_SUPPORTED);
100 }
101
102 @Override
103 public void addViewer(INodeView viewer) {
104 throw new RuntimeException(METHOD_NOT_SUPPORTED);
105 }
106
107 @Override
108 public boolean areViewsEmpty() {
109 throw new RuntimeException(METHOD_NOT_SUPPORTED);
110 }
111
112 @Override
113 public Enumeration<NodeModel> children() {
114 return super.children();
115 }
116
117 @Override
118 public boolean containsExtension(Class<? extends IExtension> clazz) {
119 return delegate.containsExtension(clazz);
120 }
121
122 @Override
123 public String createID() {
124 return delegate.createID();
125 }
126
127 @Override
128 public void fireNodeChanged(NodeChangeEvent nodeChangeEvent) {
129 throw new RuntimeException(METHOD_NOT_SUPPORTED);
130 }
131
132 @Override
133 public boolean getAllowsChildren() {
134 return delegate.getAllowsChildren();
135 }
136
137 @Override
138 public NodeModel getChildAt(int childIndex) {
139 return super.getChildAt(childIndex);
140 }
141
142 @Override
143 public int getChildCount() {
144 return super.getChildCount();
145 }
146
147 @Override
148 public List<NodeModel> getChildren() {
149 return super.getChildren();
150 }
151
152 @Override
153 public <T extends IExtension> T getExtension(Class<T> clazz) {
154 return delegate.getExtension(clazz);
155 }
156
157 @Override
158 public Map<Class<? extends IExtension>, IExtension> getSharedExtensions() {
159 return delegate.getSharedExtensions();
160 }
161
162 @Override
163 public FilterInfo getFilterInfo() {
164 return delegate.getFilterInfo();
165 }
166
167 @Override
168 public HistoryInformationModel getHistoryInformation() {
169 return delegate.getHistoryInformation();
170 }
171
172 @Override
173 public MindIcon getIcon(int position) {
174 return delegate.getIcon(position);
175 }
176
177 @Override
178 public List<MindIcon> getIcons() {
179 return delegate.getIcons();
180 }
181
182 @Override
183 public String getID() {
184 return delegate.getID();
185 }
186
187 @Override
188 public int getIndex(NodeModel node) {
189 return super.getIndex(node);
190 }
191
192 @Override
193 public MapModel getMap() {
194 return delegate.getMap();
195 }
196
197 @Override
198 public int getNodeLevel(boolean countHidden) {
199 return delegate.getNodeLevel(countHidden);
200 }
201
202 @Override
203 public NodeModel getParentNode() {
204 return delegate.getParentNode();
205 }
206
207 @Override
208 public NodeModel[] getPathToRoot() {
209 return delegate.getPathToRoot();
210 }
211
212 @Override
213 public String getText() {
214 return delegate.getText();
215 }
216
217 @Override
218 public Collection<INodeView> getViewers() {
219 return delegate.getViewers();
220 }
221
222 @Override
223 public boolean hasChildren() {
224 return false;
225 }
226
227 @Override
228 public boolean hasID() {
229 return delegate.hasID();
230 }
231
232 public void insert(MutableTreeNode child, int index) {
233 throw new RuntimeException(METHOD_NOT_SUPPORTED);
234 }
235
236 @Override
237 public boolean isDescendantOf(NodeModel node) {
238 return delegate.isDescendantOf(node);
239 }
240
241 @Override
242 public boolean isFolded() {
243 return false;
244 }
245
246 @Override
247 public boolean isLeaf() {
248 return delegate.isLeaf();
249 }
250
251 @Override
252 public boolean isLeft() {
253 return delegate.isLeft();
254 }
255
256 @Override
257 public boolean isNewChildLeft() {
258 return delegate.isNewChildLeft();
259 }
260
261 @Override
262 public boolean isRoot() {
263 return delegate.isRoot();
264 }
265
266 @Override
267 public boolean isVisible() {
268 return delegate.isVisible();
269 }
270
271 @Override
272 public boolean hasVisibleContent() {
273 return delegate.hasVisibleContent();
274 }
275
276 @Override
277 public boolean isHiddenSummary() {
278 return delegate.isHiddenSummary();
279 }
280
281 public void remove(MutableTreeNode node) {
282 throw new RuntimeException(METHOD_NOT_SUPPORTED);
283 }
284
285 @Override
286 public <T extends IExtension> T removeExtension(Class<T> clazz) {
287 throw new RuntimeException(METHOD_NOT_SUPPORTED);
288 }
289
290 @Override
291 public boolean removeExtension(IExtension extension) {
292 throw new RuntimeException(METHOD_NOT_SUPPORTED);
293 }
294
295 @Override
296 public int removeIcon() {
297 throw new RuntimeException(METHOD_NOT_SUPPORTED);
298 }
299
300 @Override
301 public int removeIcon(int position) {
302 throw new RuntimeException(METHOD_NOT_SUPPORTED);
303 }
304
305 @Override
306 public void removeViewer(INodeView viewer) {
307 throw new RuntimeException(METHOD_NOT_SUPPORTED);
308 }
309
310 @Override
311 public void setFolded(boolean folded) {
312 throw new RuntimeException(METHOD_NOT_SUPPORTED);
313 }
314
315 @Override
316 public void setHistoryInformation(HistoryInformationModel historyInformation) {
317 throw new RuntimeException(METHOD_NOT_SUPPORTED);
318 }
319
320 @Override
321 public void setID(String value) {
322 throw new RuntimeException(METHOD_NOT_SUPPORTED);
323 }
324
325 @Override
326 public void setLeft(boolean isLeft) {
327 throw new RuntimeException(METHOD_NOT_SUPPORTED);
328 }
329
330 @Override
331 public void setMap(MapModel map) {
332 throw new RuntimeException(METHOD_NOT_SUPPORTED);
333 }
334
335 public void setParent(MutableTreeNode newParent) {
336 throw new RuntimeException(METHOD_NOT_SUPPORTED);
337 }
338
339 @Override
340 public void setParent(NodeModel newParent) {
341 throw new RuntimeException(METHOD_NOT_SUPPORTED);
342 }
343
344 @Override
345 public String toString() {
346 return delegate.toString();
347 }
348
349 @Override
350 public int depth() {
351 return delegate.depth();
352 }
353
354 @Override
355 public void insert(NodeModel newNodeModel) {
356 throw new RuntimeException(METHOD_NOT_SUPPORTED);
357 }
358
359 @Override
360 public NodeModel getVisibleAncestorOrSelf() {
361 return delegate.getVisibleAncestorOrSelf();
362 }
363
364
365 }
+0
-45
freeplane/src/main/java/org/freeplane/features/clipboard/mindmapmode/CloneAction.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard.mindmapmode;
20
21 import java.awt.event.ActionEvent;
22
23 import org.freeplane.core.ui.AFreeplaneAction;
24 import org.freeplane.features.clipboard.ClipboardController;
25 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.mode.Controller;
27
28 class CloneAction extends AFreeplaneAction {
29 /**
30 *
31 */
32 private static final long serialVersionUID = 1L;
33
34 public CloneAction() {
35 super("CloneAction");
36 }
37
38 public void actionPerformed(final ActionEvent e) {
39 final MClipboardController clipboardController = (MClipboardController) ClipboardController
40 .getController();
41 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
42 clipboardController.addClone(clipboardController.getClipboardContents(), parent);
43 }
44 }
2020
2121 import java.awt.event.ActionEvent;
2222
23 import javax.swing.JOptionPane;
24
2523 import org.freeplane.core.ui.AFreeplaneAction;
26 import org.freeplane.core.ui.components.OptionalDontShowMeAgainDialog;
27 import org.freeplane.core.ui.components.UITools;
28 import org.freeplane.core.util.TextUtils;
29 import org.freeplane.features.clipboard.ClipboardController;
30 import org.freeplane.features.map.NodeModel;
31 import org.freeplane.features.mode.Controller;
32 import org.freeplane.features.mode.ModeController;
24 import org.freeplane.features.clipboard.ClipboardControllers;
3325
3426 class CutAction extends AFreeplaneAction {
3527 /**
36 *
28 *
3729 */
3830 private static final long serialVersionUID = 1L;
3931
4133 super("CutAction");
4234 }
4335
36 @Override
4437 public void actionPerformed(final ActionEvent e) {
45 final ModeController mMindMapController = Controller.getCurrentModeController();
46 final Controller controller = Controller.getCurrentController();
47 final NodeModel root = controller.getMap().getRootNode();
48 if (controller.getSelection().isSelected(root)) {
49 UITools.errorMessage(TextUtils.getText("cannot_delete_root"));
50 return;
51 }
52 final int showResult = OptionalDontShowMeAgainDialog.show("really_cut_node", "confirmation",
53 MClipboardController.RESOURCES_CUT_NODES_WITHOUT_QUESTION,
54 OptionalDontShowMeAgainDialog.ONLY_OK_SELECTION_IS_STORED);
55 if (showResult != JOptionPane.OK_OPTION) {
56 return;
57 }
58 final MClipboardController clipboardController = (MClipboardController) mMindMapController
59 .getExtension(ClipboardController.class);
60 clipboardController.cut(controller.getSelection().getSortedSelection(true));
61 controller.getMapViewManager().obtainFocusForSelected();
38 final MClipboardControllers clipboardController = (MClipboardControllers) ClipboardControllers
39 .getController();
40 clipboardController.cut();
6241 }
6342 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is created by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
190 package org.freeplane.features.clipboard.mindmapmode;
201
21 import java.awt.Image;
22 import java.awt.datatransfer.DataFlavor;
232 import java.awt.datatransfer.Transferable;
24 import java.awt.datatransfer.UnsupportedFlavorException;
25 import java.awt.dnd.DnDConstants;
26 import java.io.File;
27 import java.io.IOException;
28 import java.io.StringReader;
29 import java.io.StringWriter;
30 import java.io.Writer;
31 import java.net.URI;
32 import java.util.ArrayList;
33 import java.util.Collection;
34 import java.util.LinkedList;
35 import java.util.List;
36 import java.util.regex.Matcher;
37 import java.util.regex.Pattern;
383
39 import javax.swing.JFileChooser;
40 import javax.swing.JOptionPane;
41 import javax.swing.text.BadLocationException;
42 import javax.swing.text.Element;
43 import javax.swing.text.ElementIterator;
44 import javax.swing.text.html.HTMLDocument;
45 import javax.swing.text.html.HTMLEditorKit;
4 import org.freeplane.features.clipboard.ClipboardController;
465
47 import org.freeplane.core.resources.ResourceController;
48 import org.freeplane.core.ui.ExampleFileFilter;
49 import org.freeplane.core.ui.components.UITools;
50 import org.freeplane.core.util.FileUtils;
51 import org.freeplane.core.util.FixedHTMLWriter;
52 import org.freeplane.core.util.HtmlUtils;
53 import org.freeplane.core.util.LogUtils;
54 import org.freeplane.core.util.TextUtils;
55 import org.freeplane.features.attribute.AttributeController;
56 import org.freeplane.features.clipboard.ClipboardController;
57 import org.freeplane.features.clipboard.MindMapNodesSelection;
58 import org.freeplane.features.link.LinkController;
59 import org.freeplane.features.link.NodeLinks;
60 import org.freeplane.features.link.mindmapmode.MLinkController;
61 import org.freeplane.features.map.CloneEncryptedNodeException;
62 import org.freeplane.features.map.FreeNode;
63 import org.freeplane.features.map.IMapSelection;
64 import org.freeplane.features.map.MapModel;
65 import org.freeplane.features.map.MapReader;
66 import org.freeplane.features.map.MapReader.NodeTreeCreator;
67 import org.freeplane.features.map.MapWriter.Hint;
68 import org.freeplane.features.map.MapWriter.Mode;
69 import org.freeplane.features.map.NodeModel;
70 import org.freeplane.features.map.mindmapmode.MMapController;
71 import org.freeplane.features.map.mindmapmode.SummaryGroupEdgeListAdder;
72 import org.freeplane.features.mode.Controller;
73 import org.freeplane.features.mode.ModeController;
74 import org.freeplane.features.text.TextController;
75 import org.freeplane.features.text.mindmapmode.MTextController;
76 import org.freeplane.features.url.UrlManager;
77 import org.freeplane.n3.nanoxml.XMLException;
78 import org.freeplane.view.swing.features.filepreview.ImageAdder;
79 import org.freeplane.view.swing.features.filepreview.ViewerController;
80 import org.freeplane.view.swing.features.filepreview.ViewerController.PasteMode;
6 public interface MClipboardController extends ClipboardController {
7 boolean canCut();
8 void cut();
819
82 /**
83 * @author Dimitry Polivaev
84 */
85 public class MClipboardController extends ClipboardController {
86 public static final String RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_NODES = "remind_use_rich_text_in_new_nodes";
87 private class DirectHtmlFlavorHandler implements IDataFlavorHandler {
88 private final String textFromClipboard;
89
90 public DirectHtmlFlavorHandler(final String textFromClipboard) {
91 this.textFromClipboard = textFromClipboard;
92 }
93
94 void paste(final NodeModel target) {
95 final String text = cleanHtml(textFromClipboard);
96 final NodeModel node = Controller.getCurrentModeController().getMapController().newNode(text,
97 Controller.getCurrentController().getMap());
98 ((MMapController) Controller.getCurrentModeController().getMapController()).insertNode(node, target);
99 }
100
101 @Override
102 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
103 paste(target);
104 }
105 }
106
107 private class FileListFlavorHandler implements IDataFlavorHandler {
108 final List<File> fileList;
109
110 public FileListFlavorHandler(final List<File> fileList) {
111 super();
112 this.fileList = fileList;
113 }
114
115 @Override
116 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
117 boolean copyFile = dropAction == DnDConstants.ACTION_COPY;
118 final File mapFile = target.getMap().getFile();
119 if ((copyFile || LinkController.getLinkType() == LinkController.LINK_RELATIVE_TO_MINDMAP) && mapFile == null) {
120 JOptionPane.showMessageDialog(Controller.getCurrentController().getViewController().getCurrentRootComponent(),
121 TextUtils.getText("map_not_saved"), "Freeplane", JOptionPane.WARNING_MESSAGE);
122 return;
123 }
124 ViewerController viewerController = (Controller.getCurrentModeController().getExtension(ViewerController.class));
125 boolean pasteImagesFromFiles = ResourceController.getResourceController().getBooleanProperty("pasteImagesFromFiles");
126 for (final File sourceFile : fileList) {
127 final File file;
128 if(copyFile){
129 try {
130 file = new TargetFileCreator().createTargetFile(mapFile, sourceFile.getName());
131 file.getParentFile().mkdirs();
132 FileUtils.copyFile(sourceFile, file);
133 } catch (IOException e) {
134 LogUtils.warn(e);
135 continue;
136 }
137 }
138 else
139 file = sourceFile;
140 if(! pasteImagesFromFiles || dropAction == DnDConstants.ACTION_LINK || !viewerController.paste(file, target, PasteMode.valueOf(asSibling), isLeft)) {
141 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
142 final NodeModel node = mapController.newNode(file.getName(), target.getMap());
143 ((MLinkController) LinkController.getController()).setLinkTypeDependantLink(node, file);
144 mapController.insertNode(node, target, asSibling, isLeft, isLeft);
145 }
146 }
147 }
148 }
149
150 interface IDataFlavorHandler {
151 void paste(Transferable t, NodeModel target, boolean asSibling, boolean isLeft, int dropAction);
152 }
153
154 private class MindMapNodesFlavorHandler implements IDataFlavorHandler {
155 private final String textFromClipboard;
156
157 public MindMapNodesFlavorHandler(final String textFromClipboard) {
158 this.textFromClipboard = textFromClipboard;
159 }
160
161 @Override
162 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
163 if (textFromClipboard != null) {
164 paste(textFromClipboard, target, asSibling, isLeft);
165 }
166 }
167
168 private void paste(final String text, final NodeModel target, final boolean asSibling, final boolean isLeft) {
169 final String[] textLines = text.split(ClipboardController.NODESEPARATOR);
170 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
171 final MapReader mapReader = mapController.getMapReader();
172 synchronized(mapReader) {
173 final NodeTreeCreator nodeTreeCreator = mapReader.nodeTreeCreator(target.getMap());
174 nodeTreeCreator.setHint(Hint.MODE, Mode.CLIPBOARD);
175 for (int i = 0; i < textLines.length; ++i) {
176 try {
177 final NodeModel newModel = nodeTreeCreator.create(new StringReader(textLines[i]));
178 newModel.removeExtension(FreeNode.class);
179 final boolean wasLeft = newModel.isLeft();
180 mapController.insertNode(newModel, target, asSibling, isLeft, wasLeft != isLeft);
181 }
182 catch (final XMLException e) {
183 LogUtils.severe("error on paste", e);
184 }
185 }
186 nodeTreeCreator.finish(target);
187 }
188 }
189 }
190
191 private static class PasteHtmlWriter extends FixedHTMLWriter {
192 private final Element element;
193
194 public PasteHtmlWriter(final Writer writer, final Element element, final HTMLDocument doc, final int pos,
195 final int len) {
196 super(writer, doc, pos, len);
197 this.element = getStandAloneElement(element);
198 }
199
200 @Override
201 protected ElementIterator getElementIterator() {
202 return new ElementIterator(element);
203 }
204
205 private Element getStandAloneElement(final Element element) {
206 final String name = element.getName();
207 if (name.equals("ul") || name.equals("ol") || name.equals("table") || name.equals("html")) {
208 return element;
209 }
210 return getStandAloneElement(element.getParentElement());
211 }
212
213 @Override
214 public void write() throws IOException, BadLocationException {
215 if (element.getName().equals("html")) {
216 super.write();
217 return;
218 }
219 write("<html>");
220 super.write();
221 write("</html>");
222 }
223 }
224
225 private class StringFlavorHandler implements IDataFlavorHandler {
226 private final String textFromClipboard;
227
228 public StringFlavorHandler(final String textFromClipboard) {
229 this.textFromClipboard = textFromClipboard;
230 }
231
232 @Override
233 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
234 final TextFragment[] textFragments = split(textFromClipboard);
235 pasteStringWithoutRedisplay(textFragments, target, asSibling, isLeft);
236 }
237
238 private TextFragment[] split(final String textFromClipboard) {
239 final LinkedList<TextFragment> textFragments = new LinkedList<TextFragment>();
240 final String[] textLines = textFromClipboard.split("\n");
241 for (int i = 0; i < textLines.length; ++i) {
242 String text = textLines[i];
243 text = text.replaceAll("\t", " ");
244 if (text.matches(" *")) {
245 continue;
246 }
247 int depth = 0;
248 while (depth < text.length() && text.charAt(depth) == ' ') {
249 ++depth;
250 }
251 final String visibleText = text.trim();
252 final String link = LinkController.findLink(text);
253 if (!visibleText.equals("")) {
254 textFragments.add(new TextFragment(visibleText, link, depth));
255 }
256 }
257 return textFragments.toArray(new TextFragment[textFragments.size()]);
258 }
259 }
260
261 private class StructuredHtmlFlavorHandler implements IDataFlavorHandler {
262 private final String textFromClipboard;
263
264 public StructuredHtmlFlavorHandler(final String textFromClipboard) {
265 this.textFromClipboard = textFromClipboard;
266 }
267
268 private void addFragment(final HTMLDocument doc, final Element element, final int depth, final int start,
269 final int end, final LinkedList<TextFragment> htmlFragments)
270 throws BadLocationException, IOException {
271 final String paragraphText = doc.getText(start, end - start).trim();
272 if (paragraphText.length() > 0 || element.getName().equals("img")) {
273 final StringWriter out = new StringWriter();
274 new PasteHtmlWriter(out, element, doc, start, end - start).write();
275 final String string = out.toString();
276 if (!string.equals("")) {
277 final String link = LinkController.findLink(string);
278 final TextFragment htmlFragment = new TextFragment(string, link, depth);
279 htmlFragments.add(htmlFragment);
280 }
281 }
282 }
283
284 private Element getParentElement(final HTMLDocument doc) {
285 final Element htmlRoot = doc.getDefaultRootElement();
286 final Element bodyElement = htmlRoot.getElement(htmlRoot.getElementCount() - 1);
287 Element parentCandidate = bodyElement;
288 do {
289 if (parentCandidate.getElementCount() > 1) {
290 return parentCandidate;
291 }
292 parentCandidate = parentCandidate.getElement(0);
293 } while (!(parentCandidate.isLeaf() || parentCandidate.getName().equalsIgnoreCase("p-implied")));
294 return bodyElement;
295 }
296
297 private boolean isSeparateElement(final Element current) {
298 return !current.isLeaf();
299 }
300
301 @Override
302 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
303 pasteHtmlWithoutRedisplay(textFromClipboard, target, asSibling, isLeft);
304 }
305
306 private void pasteHtmlWithoutRedisplay(final Object t, final NodeModel parent, final boolean asSibling,
307 final boolean isLeft) {
308 final String textFromClipboard = (String) t;
309 final String cleanedTextFromClipboard = cleanHtml(textFromClipboard);
310 final TextFragment[] htmlFragments = split(cleanedTextFromClipboard);
311 pasteStringWithoutRedisplay(htmlFragments, parent, asSibling, isLeft);
312 }
313
314 private void split(final HTMLDocument doc, final Element parent, final LinkedList<TextFragment> htmlFragments,
315 int depth) throws BadLocationException, IOException {
316 final int elementCount = parent.getElementCount();
317 int headerDepth = 0;
318 boolean headerFound = false;
319 int start = -1;
320 int end = -1;
321 Element last = null;
322 for (int i = 0; i < elementCount; i++) {
323 final Element current = parent.getElement(i);
324 final String name = current.getName();
325 final Matcher matcher = HEADER_REGEX.matcher(name);
326 if (matcher.matches()) {
327 try {
328 if (!headerFound) {
329 depth--;
330 }
331 final int newHeaderDepth = Integer.parseInt(matcher.group(1));
332 depth += newHeaderDepth - headerDepth;
333 headerDepth = newHeaderDepth;
334 headerFound = true;
335 }
336 catch (final NumberFormatException e) {
337 LogUtils.severe(e);
338 }
339 }
340 else {
341 if (headerFound) {
342 headerFound = false;
343 depth++;
344 }
345 }
346 final boolean separateElement = isSeparateElement(current);
347 if (separateElement && current.getElementCount() != 0) {
348 start = -1;
349 last = null;
350 split(doc, current, htmlFragments, depth + 1);
351 continue;
352 }
353 if (separateElement && start != -1) {
354 addFragment(doc, last, depth, start, end, htmlFragments);
355 }
356 if (start == -1 || separateElement) {
357 start = current.getStartOffset();
358 last = current;
359 }
360 end = current.getEndOffset();
361 if (separateElement) {
362 addFragment(doc, current, depth, start, end, htmlFragments);
363 }
364 }
365 if (start != -1) {
366 addFragment(doc, last, depth, start, end, htmlFragments);
367 }
368 }
369
370 private TextFragment[] split(final String text) {
371 final LinkedList<TextFragment> htmlFragments = new LinkedList<TextFragment>();
372 final HTMLEditorKit kit = new HTMLEditorKit();
373 final HTMLDocument doc = new HTMLDocument();
374 final StringReader buf = new StringReader(text);
375 try {
376 kit.read(buf, doc, 0);
377 final Element parent = getParentElement(doc);
378 split(doc, parent, htmlFragments, 0);
379 }
380 catch (final IOException e) {
381 LogUtils.severe(e);
382 }
383 catch (final BadLocationException e) {
384 LogUtils.severe(e);
385 }
386 return htmlFragments.toArray(new TextFragment[htmlFragments.size()]);
387 }
388 }
389
390 private static class TextFragment {
391 int depth;
392 String link;
393 String text;
394
395 public TextFragment(final String text, final String link, final int depth) {
396 super();
397 this.text = text;
398 this.depth = depth;
399 this.link = link;
400 }
401 }
402
403 private class ImageFlavorHandler implements IDataFlavorHandler {
404
405 final private Image image;
406
407 public ImageFlavorHandler(Image img) {
408 super();
409 image = img;
410 }
411
412 @Override
413 public void paste(Transferable t, NodeModel target, boolean asSibling, boolean isLeft, int dropAction) {
414 final ModeController modeController = Controller.getCurrentModeController();
415 final MMapController mapController = (MMapController) modeController.getMapController();
416 File mindmapFile = target.getMap().getFile();
417 if(mindmapFile == null) {
418 UITools.errorMessage(TextUtils.getRawText("map_not_saved"));
419 return;
420 }
421 //file that we'll save to disk.
422 File imageFile;
423 try {
424 imageFile = new TargetFileCreator().createTargetFile(mindmapFile, ImageAdder.IMAGE_FORMAT);
425 imageFile.getParentFile().mkdirs();
426 String imgfilepath=imageFile.getAbsolutePath();
427 File tempFile = imageFile = new File(imgfilepath);
428 final JFileChooser fileChooser = new JFileChooser(imageFile);
429 final ExampleFileFilter filter = new ExampleFileFilter();
430 filter.addExtension(ImageAdder.IMAGE_FORMAT);
431 fileChooser.setAcceptAllFileFilterUsed(false);
432 fileChooser.setFileFilter(filter);
433 fileChooser.setSelectedFile(imageFile);
434 int returnVal = fileChooser.showSaveDialog(UITools.getCurrentRootComponent());
435 if (returnVal != JFileChooser.APPROVE_OPTION) {
436 tempFile.delete();
437 return;
438 }
439 imageFile = fileChooser.getSelectedFile();
440 if(tempFile.exists() && ! imageFile.getAbsoluteFile().equals(tempFile)){
441 tempFile.delete();
442 }
443 if(imageFile.isDirectory())
444 return;
445 if(! FileUtils.getExtension(imageFile.getName()).equals(ImageAdder.IMAGE_FORMAT))
446 imageFile = new File(imageFile.getPath() + '.' + ImageAdder.IMAGE_FORMAT);
447 final NodeModel node = mapController.newNode(imageFile.getName(), target.getMap());
448 mapController.insertNode(node, target, asSibling, isLeft, isLeft);
449 new ImageAdder(image, mapController, mindmapFile, imageFile).attachImageToNode(node);
450 }
451 catch (IOException e) {
452 e.printStackTrace();
453 }
454 }
455
456 }
457 private static final Pattern HEADER_REGEX = Pattern.compile("h(\\d)", Pattern.CASE_INSENSITIVE);
458 private static final String RESOURCE_UNFOLD_ON_PASTE = "unfold_on_paste";
459 public static final String RESOURCES_CUT_NODES_WITHOUT_QUESTION = "cut_nodes_without_question";
460
461 public static String firstLetterCapitalized(final String text) {
462 if (text == null || text.length() == 0) {
463 return text;
464 }
465 return text.substring(0, 1).toUpperCase() + text.substring(1, text.length());
466 }
467
468 private List<NodeModel> newNodes;
469
470 /**
471 * @param modeController
472 */
473 public MClipboardController() {
474 super();
475 createActions();
476 }
477
478 private String cleanHtml(String content) {
479 content = content.replaceFirst("(?i)(?s)<head>.*</head>", "").replaceFirst("(?i)(?s)^.*<html[^>]*>", "<html>")
480 .replaceFirst("(?i)(?s)<body [^>]*>", "<body>").replaceAll("(?i)(?s)<script.*?>.*?</script>", "")
481 .replaceAll("(?i)(?s)</?tbody.*?>", "").replaceAll("(?i)(?s)<!--.*?-->", "").replaceAll(
482 "(?i)(?s)</?o[^>]*>", "");
483 if (ResourceController.getResourceController().getBooleanProperty("cut_out_pictures_when_pasting_html")) {
484 String contentWithoutImages = content.replaceAll("(?i)(?s)<img[^>]*>", "");
485 final boolean contentContainsOnlyImages = HtmlUtils.htmlToPlain(contentWithoutImages).trim().isEmpty();
486 if(! contentContainsOnlyImages) {
487 content = contentWithoutImages;
488 }
489 }
490 content = HtmlUtils.unescapeHTMLUnicodeEntity(content);
491 return content;
492 }
493
494 /**
495 * @param modeController
496 */
497 private void createActions() {
498 final ModeController modeController = Controller.getCurrentModeController();
499 modeController.addAction(new CutAction());
500 modeController.addAction(new PasteAction());
501 modeController.addAction(new SelectedPasteAction());
502 modeController.addAction(new CloneAction());
503 modeController.addAction(new MoveAction());
504 }
505
506
507
508 @Override
509 public Transferable copy(IMapSelection selection) {
510 final List<NodeModel> collection = selection.getSortedSelection(true);
511 final MindMapNodesSelection transferable = copy(new SummaryGroupEdgeListAdder(collection).addSummaryEdgeNodes(), false);
512 transferable.setNodeObjects(collection, false);
513 return transferable;
514 }
515
516
517
518 @Override
519 public Transferable copySingle(Collection<NodeModel> source) {
520 final MindMapNodesSelection transferable = (MindMapNodesSelection) super.copySingle(source);
521 transferable.setNodeObjects(new ArrayList<NodeModel>(source), true);
522 return transferable;
523 }
524
525 Transferable cut(final List<NodeModel> collection) {
526 Controller.getCurrentModeController().getMapController().sortNodesByDepth(collection);
527 final MindMapNodesSelection transferable = copy(new SummaryGroupEdgeListAdder(collection).addSummaryEdgeNodes(), true);
528 ((MMapController) Controller.getCurrentModeController().getMapController()).deleteNodes(collection);
529 setClipboardContents(transferable);
530 return transferable;
531 }
532
533 private IDataFlavorHandler getFlavorHandler(final Transferable t) {
534 if (t.isDataFlavorSupported(MindMapNodesSelection.mindMapNodesFlavor)) {
535 try {
536 final String textFromClipboard = t.getTransferData(MindMapNodesSelection.mindMapNodesFlavor).toString();
537 return new MindMapNodesFlavorHandler(textFromClipboard);
538 }
539 catch (final UnsupportedFlavorException e) {
540 }
541 catch (final IOException e) {
542 }
543 }
544 final ResourceController resourceController = ResourceController.getResourceController();
545 DataFlavor supportedHtmlFlavor = getSupportedHtmlFlavor(t);
546 if (supportedHtmlFlavor != null) {
547 try {
548 final String textFromClipboard = t.getTransferData(supportedHtmlFlavor).toString();
549 if (textFromClipboard.charAt(0) != 65533) {
550 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
551 final MTextController textController = (MTextController) TextController
552 .getController();
553 final boolean richText = textController.useRichTextInEditor(RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_NODES);
554 if (richText) {
555 final boolean structuredHtmlImport = resourceController
556 .getBooleanProperty("structured_html_import");
557 final IDataFlavorHandler htmlFlavorHandler;
558 if (structuredHtmlImport) {
559 htmlFlavorHandler = new StructuredHtmlFlavorHandler(textFromClipboard);
560 }
561 else {
562 htmlFlavorHandler = new DirectHtmlFlavorHandler(textFromClipboard);
563 }
564 return htmlFlavorHandler;
565 }
566 }
567 }
568 }
569 catch (final UnsupportedFlavorException e) {
570 }
571 catch (final IOException e) {
572 }
573 }
574 if (t.isDataFlavorSupported(MindMapNodesSelection.fileListFlavor)) {
575 try {
576 final List<File> fileList = castToFileList(t.getTransferData(MindMapNodesSelection.fileListFlavor));
577 if (!shouldIgnoreFileListFlavor(fileList))
578 return new FileListFlavorHandler(fileList);
579 }
580 catch (final UnsupportedFlavorException e) {
581 }
582 catch (final IOException e) {
583 }
584 }
585 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
586 try {
587 final String plainTextFromClipboard = t.getTransferData(DataFlavor.stringFlavor).toString();
588 return new StringFlavorHandler(plainTextFromClipboard);
589 }
590 catch (final UnsupportedFlavorException e) {
591 }
592 catch (final IOException e) {
593 }
594 }
595 if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
596 try {
597 Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
598 return new ImageFlavorHandler(image);
599 }
600 catch (final UnsupportedFlavorException e) {
601 }
602 catch (final IOException e) {
603 }
604 }
605 return null;
606 }
607
608 private boolean shouldIgnoreFileListFlavor(final List<File> fileList) {
609 if(fileList == null || fileList.isEmpty())
610 return true;
611 final File file = fileList.get(0);
612 if(file.isDirectory())
613 return false;
614 final String name = file.getName();
615 return name.endsWith(".URL") || name.endsWith(".url");
616 }
617
618 @SuppressWarnings("unchecked")
619 private List<File> castToFileList(Object transferData) {
620 return (List<File>) transferData;
621 }
622
623 Collection<IDataFlavorHandler> getFlavorHandlers() {
624 final Transferable t = getClipboardContents();
625 final Collection<IDataFlavorHandler> handlerList = new LinkedList<IDataFlavorHandler>();
626 if (t == null) {
627 return handlerList;
628 }
629 if (t.isDataFlavorSupported(MindMapNodesSelection.mindMapNodesFlavor)) {
630 try {
631 final String textFromClipboard = t.getTransferData(MindMapNodesSelection.mindMapNodesFlavor).toString();
632 handlerList.add(new MindMapNodesFlavorHandler(textFromClipboard));
633 }
634 catch (final UnsupportedFlavorException e) {
635 }
636 catch (final IOException e) {
637 }
638 }
639 DataFlavor supportedHtmlFlavor = getSupportedHtmlFlavor(t);
640 if (supportedHtmlFlavor != null) {
641 try {
642 final String textFromClipboard = t.getTransferData(supportedHtmlFlavor).toString();
643 if (textFromClipboard.charAt(0) != 65533) {
644 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
645 handlerList.add(new StructuredHtmlFlavorHandler(textFromClipboard));
646 handlerList.add(new DirectHtmlFlavorHandler(textFromClipboard));
647 }
648 }
649 }
650 catch (final UnsupportedFlavorException e) {
651 }
652 catch (final IOException e) {
653 }
654 }
655 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
656 try {
657 final String plainTextFromClipboard = t.getTransferData(DataFlavor.stringFlavor).toString();
658 handlerList.add(new StringFlavorHandler(plainTextFromClipboard));
659 }
660 catch (final UnsupportedFlavorException e) {
661 }
662 catch (final IOException e) {
663 }
664 }
665 if (t.isDataFlavorSupported(MindMapNodesSelection.fileListFlavor)) {
666 try {
667 final List<File> fileList = castToFileList(t.getTransferData(MindMapNodesSelection.fileListFlavor));
668 handlerList.add(new FileListFlavorHandler(fileList));
669 }
670 catch (final UnsupportedFlavorException e) {
671 }
672 catch (final IOException e) {
673 }
674 }
675 if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
676 try {
677 Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
678 handlerList.add(new ImageFlavorHandler(image));
679 }
680 catch (final UnsupportedFlavorException e) {
681 }
682 catch (final IOException e) {
683 }
684 }
685 return handlerList;
686 }
687 private DataFlavor getSupportedHtmlFlavor(Transferable t) {
688 for (DataFlavor dataFlavor : t.getTransferDataFlavors())
689 if(dataFlavor.getPrimaryType().equals(MindMapNodesSelection.htmlFlavor.getPrimaryType())
690 && dataFlavor.getSubType().equals(MindMapNodesSelection.htmlFlavor.getSubType())
691 && dataFlavor.getRepresentationClass().equals(MindMapNodesSelection.htmlFlavor.getRepresentationClass())
692 )
693 return dataFlavor;
694 return null;
695 }
696
697 public void paste(final Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft) {
698 paste(t, target, asSibling, isLeft, DnDConstants.ACTION_NONE);
699 }
700
701 public void paste(final Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
702 if (t == null) {
703 return;
704 }
705 //
706 // DataFlavor[] fl = t.getTransferDataFlavors();
707 // for (int i = 0; i < fl.length; i++) {
708 // System.out.println(fl[i]);
709 // }
710
711 final IDataFlavorHandler handler = getFlavorHandler(t);
712 paste(t, handler, target, asSibling, isLeft, dropAction);
713 }
714
715 void paste(final Transferable t, final IDataFlavorHandler handler, final NodeModel target, final boolean asSibling, final boolean isLeft) {
716 paste(t, handler, target, asSibling, isLeft, DnDConstants.ACTION_NONE);
717 }
718
719 void paste(final Transferable t, final IDataFlavorHandler handler, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
720 if (handler == null) {
721 return;
722 }
723 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
724 if (asSibling && !mapController.isWriteable(target.getParentNode()) || !asSibling
725 && !mapController.isWriteable(target)) {
726 final String message = TextUtils.getText("node_is_write_protected");
727 UITools.errorMessage(message);
728 return;
729 }
730 try {
731 Controller.getCurrentController().getViewController().setWaitingCursor(true);
732 if (newNodes == null) {
733 newNodes = new LinkedList<NodeModel>();
734 }
735 newNodes.clear();
736 handler.paste(t, target, asSibling, isLeft, dropAction);
737 final ModeController modeController = Controller.getCurrentModeController();
738 if (!asSibling && modeController.getMapController().isFolded(target)
739 && ResourceController.getResourceController().getBooleanProperty(RESOURCE_UNFOLD_ON_PASTE)) {
740 modeController.getMapController().unfoldAndScroll(target);
741 }
742 for (final NodeModel child : newNodes) {
743 AttributeController.getController().performRegistrySubtreeAttributes(child);
744 }
745 }
746 finally {
747 Controller.getCurrentController().getViewController().setWaitingCursor(false);
748 }
749 }
750
751 private void pasteStringWithoutRedisplay(final TextFragment[] textFragments, NodeModel parent,
752 final boolean asSibling, final boolean isLeft) {
753 final MapModel map = parent.getMap();
754 int insertionIndex;
755 if (asSibling) {
756 NodeModel target = parent;
757 parent = parent.getParentNode();
758 final NodeModel childNode = target;
759 insertionIndex = parent.getIndex(childNode);
760 }
761 else{
762 insertionIndex = parent.getChildCount();
763 }
764 final ArrayList<NodeModel> parentNodes = new ArrayList<NodeModel>();
765 final ArrayList<Integer> parentNodesDepths = new ArrayList<Integer>();
766 parentNodes.add(parent);
767 parentNodesDepths.add(new Integer(-1));
768 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
769 for (int i = 0; i < textFragments.length; ++i) {
770 final TextFragment textFragment = textFragments[i];
771 String text = textFragment.text;
772 final String link = textFragment.link;
773 URI uri = null;
774 if (link != null) {
775 try {
776 URI linkUri = new URI(link);
777 uri = linkUri;
778
779 File absoluteFile = UrlManager.getController().getAbsoluteFile(map, uri);
780 if(absoluteFile != null) {
781 //if ("file".equals(linkUri.getScheme())) {
782 final File mapFile = map.getFile();
783 uri = LinkController.toLinkTypeDependantURI(mapFile, absoluteFile);
784 if(link.equals(text)){
785 text = uri.toString();
786 }
787 }
788
789 }
790 catch (Exception e) {
791 }
792 }
793 final NodeModel node = mapController.newNode(text, map);
794 if(uri != null){
795 NodeLinks.createLinkExtension(node).setHyperLink(uri);
796 }
797 for (int j = parentNodes.size() - 1; j >= 0; --j) {
798 if (textFragment.depth > parentNodesDepths.get(j).intValue()) {
799 for (int k = j + 1; k < parentNodes.size(); ++k) {
800 final NodeModel n = parentNodes.get(k);
801 if (n.getParentNode() == null) {
802 mapController.insertNode(n, parent, insertionIndex++);
803 }
804 parentNodes.remove(k);
805 parentNodesDepths.remove(k);
806 }
807 final NodeModel target = parentNodes.get(j);
808 node.setLeft(isLeft);
809 if (target != parent) {
810 target.setFolded(true);
811 target.insert(node, target.getChildCount());
812 }
813 parentNodes.add(node);
814 parentNodesDepths.add(new Integer(textFragment.depth));
815 break;
816 }
817 }
818 }
819 {
820 for (int k = 0; k < parentNodes.size(); ++k) {
821 final NodeModel n = parentNodes.get(k);
822 if (map.getRootNode() != n && n.getParentNode() == null) {
823 mapController.insertNode(n, parent, insertionIndex++);
824 }
825 }
826 }
827 }
828
829 private enum Operation{CLONE, MOVE};
830
831 public void addClone(final Transferable transferable, final NodeModel target) {
832 processTransferable(transferable, target, Operation.CLONE);
833 }
834
835 public void move(final Transferable transferable, final NodeModel target) {
836 processTransferable(transferable, target, Operation.MOVE);
837 }
838
839 @SuppressWarnings("unchecked")
840 private void processTransferable(final Transferable transferable, final NodeModel target, Operation operation) {
841 try {
842 final Collection<NodeModel> clonedNodes;
843 final boolean asSingleNodes;
844 if (operation == Operation.CLONE && transferable.isDataFlavorSupported(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor)){
845 clonedNodes = (Collection<NodeModel>) transferable.getTransferData(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor);
846 asSingleNodes = true;
847 }
848 else if(transferable.isDataFlavorSupported(MindMapNodesSelection.mindMapNodeObjectsFlavor)){
849 clonedNodes = (Collection<NodeModel>) transferable.getTransferData(MindMapNodesSelection.mindMapNodeObjectsFlavor);
850 asSingleNodes = false;
851 }
852 else
853 return;
854
855 final List<NodeModel> movedNodes = new ArrayList<NodeModel>(clonedNodes.size());
856 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
857 for(NodeModel clonedNode:clonedNodes){
858 if(clonedNode.getParentNode() == null || ! clonedNode.getMap().equals(target.getMap()))
859 return;
860 if (!clonedNode.isRoot() && ! clonedNode.subtreeContainsCloneOf(target)) {
861 switch(operation){
862 case CLONE:
863 try {
864 final NodeModel clone = asSingleNodes ? clonedNode.cloneContent() : clonedNode.cloneTree();
865 mapController.addNewNode(clone, target, target.getChildCount(), target.isNewChildLeft());
866 } catch (CloneEncryptedNodeException e) {
867 UITools.errorMessage(TextUtils.getText("can_not_clone_encrypted_node"));
868 }
869 break;
870 case MOVE:
871 movedNodes.add(clonedNode);
872 break;
873 }
874 }
875 }
876 switch(operation){
877 case MOVE:
878 mapController.moveNodesAsChildren(movedNodes, target, target.isNewChildLeft(), true);
879 break;
880 default:
881 break;
882 }
883 }
884 catch (Exception e) {
885 LogUtils.severe(e);
886 }
887 }
10 boolean canPaste(Transferable t);
11 void paste(Transferable t);
88812 }
0 package org.freeplane.features.clipboard.mindmapmode;
1
2 import java.awt.datatransfer.Transferable;
3 import java.util.Optional;
4 import java.util.SortedSet;
5 import java.util.TreeSet;
6
7 import org.freeplane.features.clipboard.ClipboardAccessor;
8 import org.freeplane.features.clipboard.ClipboardController;
9 import org.freeplane.features.clipboard.ClipboardControllers;
10 import org.freeplane.features.mode.Controller;
11 import org.freeplane.features.mode.ModeController;
12
13 public class MClipboardControllers extends ClipboardControllers{
14
15 private final SortedSet<MClipboardController> controllers;
16
17 public MClipboardControllers(){
18 controllers = new TreeSet<MClipboardController>(this::prioritySort);
19 createActions();
20 }
21 private void createActions() {
22 final ModeController modeController = Controller.getCurrentModeController();
23 modeController.addAction(new CutAction());
24 modeController.addAction(new PasteAction());
25 }
26
27 public boolean add(MClipboardController e) {
28 return controllers.add(e);
29 }
30
31 @Override
32 public void copy() {
33 final Optional<MClipboardController> controller = controllers.stream()
34 .filter(ClipboardController::canCopy).findFirst();
35 if(controller.isPresent()) {
36 controller.ifPresent(ClipboardController::copy);
37 }
38 else {
39 super.copy();
40 }
41 }
42
43 public void cut() {
44 controllers.stream().filter(MClipboardController::canCut)
45 .findFirst().ifPresent(MClipboardController::cut);
46 }
47
48 public void paste() {
49 final Transferable t = ClipboardAccessor.getController().getClipboardContents();
50 if(t != null) {
51 controllers.stream().filter(c -> c.canPaste(t))
52 .findFirst().ifPresent(c -> c.paste(t));
53 }
54 }
55
56 }
+0
-45
freeplane/src/main/java/org/freeplane/features/clipboard/mindmapmode/MoveAction.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard.mindmapmode;
20
21 import java.awt.event.ActionEvent;
22
23 import org.freeplane.core.ui.AFreeplaneAction;
24 import org.freeplane.features.clipboard.ClipboardController;
25 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.mode.Controller;
27
28 class MoveAction extends AFreeplaneAction {
29 /**
30 *
31 */
32 private static final long serialVersionUID = 1L;
33
34 public MoveAction() {
35 super("MoveAction");
36 }
37
38 public void actionPerformed(final ActionEvent e) {
39 final MClipboardController clipboardController = (MClipboardController) ClipboardController
40 .getController();
41 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
42 clipboardController.move(clipboardController.getClipboardContents(), parent);
43 }
44 }
2121 import java.awt.event.ActionEvent;
2222
2323 import org.freeplane.core.ui.AFreeplaneAction;
24 import org.freeplane.features.clipboard.ClipboardController;
25 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.mode.Controller;
24 import org.freeplane.features.clipboard.ClipboardControllers;
2725
2826 class PasteAction extends AFreeplaneAction {
2927 private static final long serialVersionUID = 1L;
3230 super("PasteAction");
3331 }
3432
33 @Override
3534 public void actionPerformed(final ActionEvent e) {
36 final MClipboardController clipboardController = (MClipboardController) ClipboardController
35 final MClipboardControllers clipboardController = (MClipboardControllers) ClipboardControllers
3736 .getController();
38 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
39 clipboardController.paste(clipboardController.getClipboardContents(), parent, false, parent.isNewChildLeft());
37 clipboardController.paste();
4038 }
4139 }
+0
-103
freeplane/src/main/java/org/freeplane/features/clipboard/mindmapmode/SelectedPasteAction.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.clipboard.mindmapmode;
20
21 import java.awt.Component;
22 import java.awt.datatransfer.Transferable;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.util.Collection;
26
27 import javax.swing.Action;
28 import javax.swing.BoxLayout;
29 import javax.swing.ButtonGroup;
30 import javax.swing.JOptionPane;
31 import javax.swing.JPanel;
32 import javax.swing.JRadioButton;
33
34 import org.freeplane.core.ui.AFreeplaneAction;
35 import org.freeplane.core.util.TextUtils;
36 import org.freeplane.features.clipboard.ClipboardController;
37 import org.freeplane.features.clipboard.mindmapmode.MClipboardController.IDataFlavorHandler;
38 import org.freeplane.features.map.NodeModel;
39 import org.freeplane.features.mode.Controller;
40
41 class SelectedPasteAction extends AFreeplaneAction {
42 /**
43 *
44 */
45 private static final long serialVersionUID = 1L;
46
47 public SelectedPasteAction() {
48 super("SelectedPasteAction");
49 }
50
51 public void actionPerformed(final ActionEvent e) {
52 final MClipboardController clipboardController = (MClipboardController) ClipboardController
53 .getController();
54 final Collection<IDataFlavorHandler> flavorHandlers = clipboardController.getFlavorHandlers();
55 if (flavorHandlers.isEmpty()) {
56 return;
57 }
58 final JPanel options = createPane(flavorHandlers);
59 if (JOptionPane.CANCEL_OPTION == JOptionPane.showConfirmDialog((Component) e.getSource(), options,
60 (String) getValue(Action.NAME), JOptionPane.OK_CANCEL_OPTION)) {
61 return;
62 }
63 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
64 final Transferable clipboardContents = clipboardController.getClipboardContents();
65 clipboardController.paste(clipboardContents, selectedHandler, parent, false, parent.isNewChildLeft());
66 selectedHandler = null;
67 }
68
69 private IDataFlavorHandler selectedHandler;
70
71 private JPanel createPane(final Collection<IDataFlavorHandler> flavorHandlers) {
72 final ButtonGroup group = new ButtonGroup();
73 final JRadioButton[] buttons = new JRadioButton[flavorHandlers.size()];
74 int i = 0;
75 selectedHandler = null;
76 for (final IDataFlavorHandler handler : flavorHandlers) {
77 final JRadioButton radioButton = new JRadioButton(TextUtils.getText(handler.getClass().getSimpleName()));
78 group.add(radioButton);
79 if (selectedHandler == null) {
80 selectedHandler = handler;
81 radioButton.setSelected(true);
82 }
83 radioButton.addActionListener(new ActionListener() {
84 public void actionPerformed(final ActionEvent e) {
85 selectedHandler = handler;
86 }
87 });
88 buttons[i++] = radioButton;
89 }
90 return createPane(buttons);
91 }
92
93 private JPanel createPane(final JRadioButton[] radioButtons) {
94 final int numChoices = radioButtons.length;
95 final JPanel box = new JPanel();
96 box.setLayout(new BoxLayout(box, BoxLayout.PAGE_AXIS));
97 for (int i = 0; i < numChoices; i++) {
98 box.add(radioButtons[i]);
99 }
100 return box;
101 }
102 }
+0
-47
freeplane/src/main/java/org/freeplane/features/clipboard/mindmapmode/TargetFileCreator.java less more
0 package org.freeplane.features.clipboard.mindmapmode;
1
2 import java.io.File;
3 import java.io.IOException;
4
5 class TargetFileCreator {
6 File createTargetFile(File mindmapFile, String prototypeName) throws IOException{
7 final String mapFileNameWithExtension = mindmapFile.getName();
8 final String mapFileName = removeExtension(mapFileNameWithExtension);
9 final File mindMapDirectory = mindmapFile.getParentFile();
10 final File mapFilesDirectory = new File(mindMapDirectory, mapFileName + "_files");
11 if (! mapFilesDirectory.exists() || mapFilesDirectory.isDirectory()) {
12 if(prototypeName.contains(".")){
13 final File target = new File(mapFilesDirectory, prototypeName);
14 if(! target.exists())
15 return target;
16 }
17 String sourceFileName = removeExtension(prototypeName);
18 String fileNameTemplate = sourceFileName + "_";
19 while (fileNameTemplate.length() < 3)
20 fileNameTemplate = fileNameTemplate + '_';
21 mapFilesDirectory.mkdir();
22 File targetFile = File.createTempFile(fileNameTemplate, "."+ getExtension(prototypeName), mapFilesDirectory);
23 return targetFile;
24
25 } else {
26 String sourceFileName = removeExtension(prototypeName);
27 String fileNameTemplate = mapFileName + "_" + sourceFileName + "_";
28 while (fileNameTemplate.length() < 3)
29 fileNameTemplate = fileNameTemplate + '_';
30 File targetFile = File.createTempFile(fileNameTemplate, "."+ getExtension(prototypeName), mindMapDirectory);
31 return targetFile;
32 }
33 }
34
35 private String removeExtension(final String fileNameWithExtension) {
36 final int extensionIndex = fileNameWithExtension.lastIndexOf('.');
37 if(extensionIndex >= 0)
38 return fileNameWithExtension.substring(0, extensionIndex);
39 else
40 return fileNameWithExtension;
41 }
42
43 private String getExtension(final String fileNameWithExtension) {
44 return fileNameWithExtension.substring(fileNameWithExtension.lastIndexOf('.') + 1);
45 }
46 }
2525 import javax.swing.JComponent;
2626 import javax.swing.JOptionPane;
2727 import javax.swing.JScrollPane;
28
2829 import org.freeplane.core.ui.components.JRestrictedSizeScrollPane;
2930 import org.freeplane.core.ui.components.UITools;
3031 import org.freeplane.core.undo.IActor;
3637 import org.freeplane.features.edge.EdgeModel;
3738 import org.freeplane.features.edge.EdgeStyle;
3839 import org.freeplane.features.map.IExtensionCopier;
39 import org.freeplane.features.map.MapController;
4040 import org.freeplane.features.map.MapModel;
4141 import org.freeplane.features.map.NodeModel;
4242 import org.freeplane.features.mode.Controller;
5454 this.modeController = modeController;
5555 }
5656
57 @Override
5758 public void copy(final Object key, final NodeModel from, final NodeModel to) {
5859 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
5960 return;
6263 }
6364
6465 public void copy(final NodeModel from, final NodeModel to) {
65 final EdgeModel fromStyle = (EdgeModel) from.getExtension(EdgeModel.class);
66 final EdgeModel fromStyle = from.getExtension(EdgeModel.class);
6667 if (fromStyle == null) {
6768 return;
6869 }
7879 toStyle.setWidth(width);
7980 }
8081
82 @Override
8183 public void remove(final Object key, final NodeModel from) {
8284 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
8385 return;
8587 from.removeExtension(EdgeModel.class);
8688 }
8789
90 @Override
8891 public void remove(final Object key, final NodeModel from, final NodeModel which) {
8992 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
9093 return;
9194 }
92 final EdgeModel whichStyle = (EdgeModel) which.getExtension(EdgeModel.class);
95 final EdgeModel whichStyle = which.getExtension(EdgeModel.class);
9396 if (whichStyle == null) {
9497 return;
9598 }
96 final EdgeModel fromStyle = (EdgeModel) from.getExtension(EdgeModel.class);
99 final EdgeModel fromStyle = from.getExtension(EdgeModel.class);
97100 if (fromStyle == null) {
98101 return;
99102 }
119122 from.addExtension(delta);
120123 }
121124
125 @Override
122126 public void resolveParentExtensions(Object key, NodeModel to) {
123127 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
124128 return;
140144 }
141145 }
142146 }
143
147
144148 private ObjectRule<Color, Rules> getColorRule (NodeModel node) {
145149 return modeController.getExtension(EdgeController.class).getColorRule(node);
146150 }
220224 return;
221225 }
222226 final IActor actor = new IActor() {
227 @Override
223228 public void act() {
224229 EdgeModel.createEdgeModel(node).setColor(color);
225230 modeController.getMapController().nodeChanged(node);
226231 }
227232
233 @Override
228234 public String getDescription() {
229235 return "setColor";
230236 }
231237
238 @Override
232239 public void undo() {
233240 EdgeModel.createEdgeModel(node).setColor(oldColor);
234241 modeController.getMapController().nodeChanged(node);
253260 }
254261 }
255262 final IActor actor = new IActor() {
263 @Override
256264 public void act() {
257265 EdgeModel.createEdgeModel(node).setStyle(style);
258266 modeController.getMapController().nodeChanged(node);
260268 }
261269
262270 private void edgeStyleRefresh(final NodeModel node) {
263 MapController r = modeController.getMapController();
264271 for (final NodeModel child : node.getChildren()) {
265272 if(child.getViewers().isEmpty())
266273 continue;
272279 }
273280 }
274281
282 @Override
275283 public String getDescription() {
276284 return "setStyle";
277285 }
278286
287 @Override
279288 public void undo() {
280289 EdgeModel.createEdgeModel(node).setStyle(oldStyle);
281290 modeController.getMapController().nodeChanged(node);
292301 return;
293302 }
294303 final IActor actor = new IActor() {
304 @Override
295305 public void act() {
296306 EdgeModel.createEdgeModel(node).setWidth(width);
297307 modeController.getMapController().nodeChanged(node);
299309 }
300310
301311 private void edgeWidthRefresh(final NodeModel node) {
302 MapController r = modeController.getMapController();
303312 for (final NodeModel child : node.getChildren()) {
304313 if(child.getViewers().isEmpty())
305314 continue;
311320 }
312321 }
313322
323 @Override
314324 public String getDescription() {
315325 return "setWidth";
316326 }
317327
328 @Override
318329 public void undo() {
319330 EdgeModel.createEdgeModel(node).setWidth(oldWidth);
320331 modeController.getMapController().nodeChanged(node);
331342 return;
332343 }
333344 final IActor actor = new IActor() {
345 @Override
334346 public void act() {
335347 EdgeModel.createEdgeModel(node).setDash(dash);
336348 modeController.getMapController().nodeChanged(node);
338350 }
339351
340352 private void edgeWidthRefresh(final NodeModel node) {
341 MapController r = modeController.getMapController();
342353 for (final NodeModel child : node.getChildren()) {
343354 if(child.getViewers().isEmpty())
344355 continue;
350361 }
351362 }
352363
364 @Override
353365 public String getDescription() {
354366 return "setDash";
355367 }
356368
369 @Override
357370 public void undo() {
358371 EdgeModel.createEdgeModel(node).setDash(oldDash);
359372 modeController.getMapController().nodeChanged(node);
7676 });
7777 }
7878
79 public void toggleCryptState(final NodeModel node, PasswordStrategy passwordStrategy) {
79 public void toggleLock(final NodeModel node, PasswordStrategy passwordStrategy) {
8080 final EncryptionModel encryptionModel = EncryptionModel.getModel(node);
8181 if (encryptionModel != null) {
8282 final boolean wasFolded = node.isFolded();
8383 final boolean wasAccessible = encryptionModel.isAccessible();
84 if (wasAccessible) {
85 final MapWriter mapWriter = Controller.getCurrentModeController().getMapController().getMapWriter();
86 encryptionModel.calculateEncryptedContent(mapWriter);
87 }
88 else {
89 if (!doPasswordCheckAndDecryptNode(encryptionModel, passwordStrategy))
84 if (!wasAccessible && !doPasswordCheckAndDecryptNode(node, encryptionModel, passwordStrategy))
9085 return;
91 }
9286 final boolean becomesFolded = wasAccessible;
9387 final boolean becomesAccessible = ! wasAccessible;
9488 Controller.getCurrentController().getSelection().selectAsTheOnlyOneSelected(node);
89 final MapWriter mapWriter = Controller.getCurrentModeController().getMapController().getMapWriter();
9590 final IActor actor = new IActor() {
9691 @Override
9792 public void act() {
98 encryptionModel.setAccessible(becomesAccessible);
93 if(becomesAccessible) {
94 encryptionModel.unlock();
95 }
96 else {
97 encryptionModel.lock(mapWriter);
98 }
9999 if (becomesFolded != wasFolded) {
100100 node.setFolded(becomesFolded);
101101 }
102 fireEncyptionChangedEvent(node);
102 fireEncryptionChangedEvent(node);
103103 }
104104
105105 @Override
109109
110110 @Override
111111 public void undo() {
112 encryptionModel.setAccessible(wasAccessible);
112 if(wasAccessible) {
113 encryptionModel.unlock();
114 }
115 else {
116 encryptionModel.lock(mapWriter);
117 }
113118 if(becomesFolded != wasFolded)
114119 node.setFolded(wasFolded);
115 fireEncyptionChangedEvent(node);
120 fireEncryptionChangedEvent(node);
116121 }
117122 };
118123 Controller.getCurrentModeController().execute(actor, node.getMap());
122127 }
123128 }
124129
125 private boolean doPasswordCheckAndDecryptNode(final EncryptionModel encryptionModel, PasswordStrategy passwordStrategy) {
126 while (true) {
127 final StringBuilder password = passwordStrategy.getPassword();
128 if (passwordStrategy.isCancelled())
129 return false;
130 if (!decrypt(encryptionModel, password)) {
131 passwordStrategy.onWrongPassword();
132 return false;
133 }
134 else {
135 return true;
136 }
130 private boolean doPasswordCheckAndDecryptNode(NodeModel node, final EncryptionModel encryptionModel, PasswordStrategy passwordStrategy) {
131 final StringBuilder password = passwordStrategy.getPassword(node);
132 if (passwordStrategy.isCancelled())
133 return false;
134 if (!decrypt(encryptionModel, password)) {
135 passwordStrategy.onWrongPassword();
136 return false;
137 }
138 else {
139 return true;
137140 }
138141 }
139142
148151 return;
149152 }
150153
151 final StringBuilder password = passwordStrategy.getPasswordWithConfirmation();
154 final StringBuilder password = passwordStrategy.getPasswordWithConfirmation(node);
152155 if (passwordStrategy.isCancelled()) {
153156 return;
154157 }
155 final EncryptionModel encryptionModel = new EncryptionModel(node);
156 encryptionModel.setEncrypter(new SingleDesEncrypter(password));
158 final EncryptionModel encryptionModel = new EncryptionModel(node, new SingleDesEncrypter(password));
157159 final IActor actor = new IActor() {
158160 @Override
159161 public void act() {
160162 node.addExtension(encryptionModel);
161 fireEncyptionChangedEvent(node);
163 fireEncryptionChangedEvent(node);
162164 }
163165
164166 @Override
169171 @Override
170172 public void undo() {
171173 node.removeExtension(encryptionModel);
172 fireEncyptionChangedEvent(node);
174 fireEncryptionChangedEvent(node);
173175 }
174176 };
175177 Controller.getCurrentModeController().execute(actor, node.getMap());
176178 }
177179
178180
179 private void fireEncyptionChangedEvent(final NodeModel node) {
181 private void fireEncryptionChangedEvent(final NodeModel node) {
180182 Controller.getCurrentModeController().getMapController().nodeRefresh(node, EncryptionModel.class, null, null);
181183 }
182184 }
4141
4242 public void actionPerformed(final ActionEvent e) {
4343 final NodeModel node = Controller.getCurrentModeController().getMapController().getSelectedNode();
44 encryptionController.toggleCryptState(node, new SwingPasswordStrategy());
44 encryptionController.toggleLock(node, new SwingPasswordStrategy());
4545 }
4646
4747 public boolean canBeEnabled() {
00 package org.freeplane.features.encrypt;
1
2 import org.freeplane.features.map.NodeModel;
13
24 /** not a clean strategy since it is allowed to be stateful. */
35 public interface PasswordStrategy {
46
5 StringBuilder getPassword();
7 StringBuilder getPassword(NodeModel node);
68
7 StringBuilder getPasswordWithConfirmation();
9 StringBuilder getPasswordWithConfirmation(NodeModel node);
810
911 void onWrongPassword();
1012
44 import org.freeplane.core.ui.components.EnterPasswordDialog;
55 import org.freeplane.core.ui.components.UITools;
66 import org.freeplane.core.util.TextUtils;
7 import org.freeplane.features.map.NodeModel;
78 import org.freeplane.features.mode.Controller;
89
910 public class SwingPasswordStrategy implements PasswordStrategy {
1011
1112 private boolean isCancelled;
1213
13 public StringBuilder getPassword() {
14 return getPasswordImpl(false);
14 public StringBuilder getPassword(NodeModel node) {
15 final EnterPasswordDialog pwdDialog = new EnterPasswordDialog(UITools.getCurrentFrame(), false);
16 return getPassword(pwdDialog, node);
1517 }
1618
17 public StringBuilder getPasswordWithConfirmation() {
18 return getPasswordImpl(true);
19 public StringBuilder getPasswordWithConfirmation(NodeModel node) {
20 final EnterPasswordDialog pwdDialog = new EnterPasswordDialog(UITools.getCurrentFrame(), true);
21 return getPassword(pwdDialog, node);
1922 }
2023
21 private StringBuilder getPasswordImpl(boolean withConfirmation) {
22 final EnterPasswordDialog pwdDialog = new EnterPasswordDialog(UITools.getCurrentFrame(), withConfirmation);
23 pwdDialog.setModal(true);
24 pwdDialog.setVisible(true);
24 private StringBuilder getPassword(final EnterPasswordDialog pwdDialog, NodeModel node) {
25 UITools.setDialogLocationUnder(pwdDialog, node);
26 pwdDialog.setVisible(true);
2527 if (pwdDialog.getResult() == EnterPasswordDialog.CANCEL) {
2628 isCancelled = true;
2729 return null;
2830 }
2931 return pwdDialog.getPassword();
30 }
32 }
3133
3234 public void onWrongPassword() {
3335 final Controller controller = Controller.getCurrentController();
6868 final ModeController modeController = Controller.getCurrentModeController();
6969 MFileManager.getController(modeController).newMapFromDefaultTemplate();
7070 NodeModel node = Controller.getCurrentController().getMap().getRootNode();
71 final EncryptionModel encryptedMindMapNode = new EncryptionModel(node);
72 encryptedMindMapNode.setEncrypter(new SingleDesEncrypter(password));
71 final EncryptionModel encryptedMindMapNode = new EncryptionModel(node, new SingleDesEncrypter(password));
7372 node.addExtension(encryptedMindMapNode);
7473 Controller.getCurrentModeController().getMapController().nodeChanged(node);
7574 }
5050 return;
5151 }
5252 if(! encryptedMindMapNode.isAccessible())
53 toggleCryptState(node, passwordStrategy);
53 toggleLock(node, passwordStrategy);
5454 if(! encryptedMindMapNode.isAccessible())
5555 return;
5656 final IActor actor = new IActor() {
33 import java.awt.event.ActionEvent;
44
55 import org.freeplane.core.ui.AFreeplaneAction;
6 import org.freeplane.features.clipboard.ClipboardController;
6 import org.freeplane.features.clipboard.ClipboardAccessor;
77 import org.freeplane.features.map.NodeModel;
88 import org.freeplane.features.mode.Controller;
99
2424 public void actionPerformed(final ActionEvent e) {
2525 final Controller controller = Controller.getCurrentController();
2626 final NodeModel selected = controller.getSelection().getSelected();
27 final ClipboardController clipboardController = Controller.getCurrentModeController().getExtension(
28 ClipboardController.class);
27 final ClipboardAccessor clipboardController = Controller.getCurrentModeController().getExtension(
28 ClipboardAccessor.class);
2929 String suggestedString = explorer.getNodeReferenceSuggestion(selected);
3030 clipboardController.setClipboardContents(new StringSelection(suggestedString));
3131 controller.getViewController().out(suggestedString);
+0
-70
freeplane/src/main/java/org/freeplane/features/explorer/mindmapmode/ConfigureNodeReference.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.explorer.mindmapmode;
20
21 import java.awt.KeyboardFocusManager;
22 import java.awt.event.ActionEvent;
23
24 import javax.swing.Box;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.JOptionPane;
28 import javax.swing.JTextField;
29
30 import org.freeplane.core.ui.AFreeplaneAction;
31 import org.freeplane.core.ui.textchanger.TranslatedElementFactory;
32 import org.freeplane.core.util.TextUtils;
33 import org.freeplane.features.map.NodeModel;
34 import org.freeplane.features.mode.Controller;
35
36 class ConfigureNodeReference extends AFreeplaneAction {
37 /**
38 *
39 */
40 private static final long serialVersionUID = 1L;
41 private MMapExplorerController explorer;
42
43 public ConfigureNodeReference(final MMapExplorerController explorer) {
44 super("ConfigureNodeReferenceAction");
45 this.explorer = explorer;
46 }
47
48 @Override
49 public void actionPerformed(final ActionEvent e) {
50 final NodeModel node = Controller.getCurrentModeController().getMapController().getSelectedNode();
51 final String alias = explorer.getAlias(node);
52 final String title = TextUtils.getText(getTextKey());
53 final JLabel aliasLabel = TranslatedElementFactory.createLabel("node_alias");
54 final JTextField aliasInput = new JTextField(alias, 40);
55
56 JCheckBox globalNodeCheckBox = TranslatedElementFactory.createCheckBox("globally_accessible");
57 globalNodeCheckBox.setSelected(explorer.isGlobal(node));
58 Box components = Box.createVerticalBox();
59 components.add(aliasLabel);
60 components.add(aliasInput);
61 components.add(globalNodeCheckBox);
62 if(JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(), components, title, JOptionPane.OK_CANCEL_OPTION,
63 JOptionPane.PLAIN_MESSAGE)){
64 explorer.setAlias(node, aliasInput.getText());
65 explorer.makeGlobal(node, globalNodeCheckBox.isSelected());
66 }
67 }
68
69 }
1717 public static void install(ModeController modeController, TextController textController) {
1818 final MMapExplorerController explorer = new MMapExplorerController(modeController, textController);
1919 modeController.addExtension(MapExplorerController.class, explorer);
20 modeController.addAction(new ConfigureNodeReference(explorer));
20 modeController.addAction(new SetNodeAlias(explorer));
2121 modeController.addAction(new CopySuggestedReferenceAction(explorer));
2222 MapExplorerController.install(modeController);
2323 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.explorer.mindmapmode;
20
21 import java.awt.KeyboardFocusManager;
22 import java.awt.event.ActionEvent;
23
24 import javax.swing.Box;
25 import javax.swing.JCheckBox;
26 import javax.swing.JLabel;
27 import javax.swing.JOptionPane;
28 import javax.swing.JTextField;
29
30 import org.freeplane.core.ui.AFreeplaneAction;
31 import org.freeplane.core.ui.textchanger.TranslatedElementFactory;
32 import org.freeplane.core.util.TextUtils;
33 import org.freeplane.features.map.NodeModel;
34 import org.freeplane.features.mode.Controller;
35
36 class SetNodeAlias extends AFreeplaneAction {
37 /**
38 *
39 */
40 private static final long serialVersionUID = 1L;
41 private MMapExplorerController explorer;
42
43 public SetNodeAlias(final MMapExplorerController explorer) {
44 super("SetNodeAliasAction");
45 this.explorer = explorer;
46 }
47
48 @Override
49 public void actionPerformed(final ActionEvent e) {
50 final NodeModel node = Controller.getCurrentModeController().getMapController().getSelectedNode();
51 final String alias = explorer.getAlias(node);
52 final String title = TextUtils.getText(getTextKey());
53 final JLabel aliasLabel = TranslatedElementFactory.createLabel("node_alias");
54 final JTextField aliasInput = new JTextField(alias, 40);
55
56 JCheckBox globalNodeCheckBox = TranslatedElementFactory.createCheckBox("globally_accessible");
57 globalNodeCheckBox.setSelected(explorer.isGlobal(node));
58 Box components = Box.createVerticalBox();
59 components.add(aliasLabel);
60 components.add(aliasInput);
61 components.add(globalNodeCheckBox);
62 if(JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(), components, title, JOptionPane.OK_CANCEL_OPTION,
63 JOptionPane.PLAIN_MESSAGE)){
64 explorer.setAlias(node, aliasInput.getText());
65 explorer.makeGlobal(node, globalNodeCheckBox.isSelected());
66 }
67 }
68
69 }
2222 import org.freeplane.core.ui.components.UITools;
2323 import org.freeplane.core.util.LogUtils;
2424 import org.freeplane.core.util.TextUtils;
25 import org.freeplane.features.clipboard.ClipboardController;
2625 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.map.clipboard.MapClipboardController;
2727 import org.freeplane.features.mode.Controller;
2828 import org.freeplane.features.url.UrlManager;
2929
3939
4040 public void export(List<NodeModel> branches, File file) {
4141 try {
42 ClipboardController.getController().saveHTML(branches, file);
42 MapClipboardController.getController().saveHTML(branches, file);
4343 ((UrlManager) Controller.getCurrentModeController().getExtension(UrlManager.class))
4444 .loadURL(file.toURI());
4545 }
2323 import org.freeplane.core.ui.components.UITools;
2424 import org.freeplane.core.util.LogUtils;
2525 import org.freeplane.core.util.TextUtils;
26 import org.freeplane.features.clipboard.ClipboardController;
2726 import org.freeplane.features.map.MapModel;
2827 import org.freeplane.features.map.NodeModel;
28 import org.freeplane.features.map.clipboard.MapClipboardController;
2929 import org.freeplane.features.mode.Controller;
3030 import org.freeplane.features.url.UrlManager;
3131
4545 public void export(List<NodeModel> nodes, File file) {
4646 try {
4747 MapModel map = nodes.get(0).getMap();
48 ClipboardController.getController().saveHTML(map.getRootNode(), file);
48 MapClipboardController.getController().saveHTML(map.getRootNode(), file);
4949 if (ResourceController.getResourceController().getBooleanProperty("export_icons_in_html")) {
5050 ExportWithXSLT.copyIconsToDirectory(map, new File(file.getAbsoluteFile().getParentFile(), "icons")
5151 .getAbsolutePath());
7575 */
7676 private class AddElementaryConditionAction extends AFreeplaneAction {
7777 /**
78 *
78 *
7979 */
8080 private static final long serialVersionUID = 1L;
8181
8383 super("AddElementaryConditionAction");
8484 }
8585
86 @Override
8687 public void actionPerformed(final ActionEvent e) {
8788 ASelectableCondition newCond;
8889 newCond = editor.getCondition();
9596 }
9697
9798 private class CloseAction implements ActionListener {
99 @Override
98100 public void actionPerformed(final ActionEvent e) {
99101 final Object source = e.getSource();
100102 final boolean success;
136138 public void mouseClicked(final MouseEvent e) {
137139 if (e.getClickCount() == 2) {
138140 EventQueue.invokeLater(new Runnable() {
141 @Override
139142 public void run() {
140143 if (selectCondition()) {
141144 dispose(true);
147150 }
148151
149152 private class ConditionListSelectionListener implements ListSelectionListener {
153 @Override
150154 public void valueChanged(final ListSelectionEvent e) {
151155 final int minSelectionIndex = elementaryConditionList.getMinSelectionIndex();
152156 if (minSelectionIndex == -1) {
185189
186190 private class CreateConjunctConditionAction extends AFreeplaneAction {
187191 /**
188 *
192 *
189193 */
190194 private static final long serialVersionUID = 1L;
191195
193197 super("CreateConjunctConditionAction");
194198 }
195199
200 @Override
196201 public void actionPerformed(final ActionEvent e) {
197202 final ASelectableCondition[] selectedValues = toConditionsArray(elementaryConditionList.getSelectedValues());
198203 if (selectedValues.length < 2) {
207212
208213 private class CreateDisjunctConditionAction extends AFreeplaneAction {
209214 /**
210 *
215 *
211216 */
212217 private static final long serialVersionUID = 1L;
213218
215220 super("CreateDisjunctConditionAction");
216221 }
217222
223 @Override
218224 public void actionPerformed(final ActionEvent e) {
219225 final ASelectableCondition[] selectedValues = toConditionsArray(elementaryConditionList.getSelectedValues());
220226 if (selectedValues.length < 2) {
237243
238244 private class CreateNotSatisfiedConditionAction extends AFreeplaneAction {
239245 /**
240 *
241 */
242 private static final long serialVersionUID = 1L;
243
244 /**
245 *
246 *
247 */
248 private static final long serialVersionUID = 1L;
249
250 /**
251 *
246252 */
247253 CreateNotSatisfiedConditionAction() {
248254 super("CreateNotSatisfiedConditionAction");
249255 }
250256
257 @Override
251258 public void actionPerformed(final ActionEvent e) {
252259 final int min = elementaryConditionList.getMinSelectionIndex();
253260 if (min >= 0) {
266273
267274 private class SplitConditionAction extends AFreeplaneAction {
268275 /**
269 *
270 */
271 private static final long serialVersionUID = 1L;
272
273 /**
274 *
276 *
277 */
278 private static final long serialVersionUID = 1L;
279
280 /**
281 *
275282 */
276283 SplitConditionAction() {
277284 super("SplitConditionAction");
278285 }
279286
287 @Override
280288 public void actionPerformed(final ActionEvent e) {
281289 final int min = elementaryConditionList.getMinSelectionIndex();
282290 if (min >= 0) {
309317
310318 private class DeleteConditionAction extends AFreeplaneAction {
311319 /**
312 *
320 *
313321 */
314322 private static final long serialVersionUID = 1L;
315323
317325 super("DeleteConditionAction");
318326 }
319327
328 @Override
320329 public void actionPerformed(final ActionEvent e) {
321330 final DefaultComboBoxModel model = (DefaultComboBoxModel) elementaryConditionList.getModel();
322331 final int minSelectionIndex = elementaryConditionList.getMinSelectionIndex();
334343
335344 private class NameConditionAction extends AFreeplaneAction {
336345 /**
337 *
346 *
338347 */
339348 private static final long serialVersionUID = 1L;
340349
342351 super("NameConditionAction");
343352 }
344353
354 @Override
345355 public void actionPerformed(final ActionEvent e) {
346356 final DefaultComboBoxModel model = (DefaultComboBoxModel) elementaryConditionList.getModel();
347357 final int minSelectionIndex = elementaryConditionList.getMinSelectionIndex();
376386
377387 private class MoveConditionAction extends AFreeplaneAction {
378388 /**
379 *
389 *
380390 */
381391 private static final long serialVersionUID = 1L;
382392 final private int positionChange;
388398 this.positionChange = up ? -1 : 1;
389399 }
390400
401 @Override
391402 public void actionPerformed(final ActionEvent e) {
392403 model = (DefaultComboBoxModel) elementaryConditionList.getModel();
393404 selectedIndices = elementaryConditionList.getSelectedIndices();
414425 }
415426 }
416427 private class LoadAction implements ActionListener {
428 @Override
417429 public void actionPerformed(final ActionEvent e) {
418430 final JFileChooser chooser = getFileChooser();
419431 final int returnVal = chooser.showOpenDialog(AFilterComposerDialog.this);
457469 }
458470
459471 private class SaveAction implements ActionListener {
472 @Override
460473 public void actionPerformed(final ActionEvent e) {
461474 final JFileChooser chooser = getFileChooser();
462475 chooser.setDialogTitle(TextUtils.getText("SaveAsAction.text"));
480493 }
481494
482495 /**
483 *
496 *
484497 */
485498 private static final long serialVersionUID = 1L;
486499 private static final int GAP_BETWEEN_BUTTONS = 10;
592605 UITools.addEscapeActionToDialog(this);
593606 pack();
594607 }
595
596
608
609
597610
598611 public void setConditionRenderer(ListCellRenderer cellRenderer) {
599612 elementaryConditionList.setCellRenderer(cellRenderer);
609622 return button;
610623 }
611624
625 @Override
612626 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
613627 editor.mapChanged(newMap);
614628 }
626640 }
627641
628642 abstract protected boolean applyModel(DefaultComboBoxModel model, int[] selectedIndices);
629
630 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
631 }
632643
633644 protected JFileChooser getFileChooser() {
634645 final JFileChooser chooser = UrlManager.getController().getFileChooser(MindMapFilterFileFilter.filter, false);
2323 /**
2424 * Damerau-Levenshtein implementation, computes the edit distance (ins/del/subst/transpos)
2525 * between a search term and a text to search against.
26 * see http://en.wikipedia.org/wiki/Damerau–Levenshtein_distance
27 * The basic algorithm is orignally from wikipedia, and was extended for semi-global alignments.
28 *
26 * see http://en.wikipedia.org/wiki/Damerau–Levenshtein_distance
27 * The basic algorithm is originally from Wikipedia, and was extended for semi-global alignments.
28 *
2929 * Optionally the edit distance of a semi-global alignment is computed which
3030 * allows the search term to be shifted free-of-cost (i.e. dist("file", "a file is")==0).
31 *
31 *
3232 * Some properties are explained in the unit test, {@link org.freeplane.features.filter.EditDistanceStringMatchingStrategiesTest}.
33 *
33 *
3434 * TODO: use unicode code points instead of chars !!
35 *
35 *
3636 * @author Felix Natter <fnatter@gmx.net>
3737 *
3838 */
3939 public class DamerauLevenshtein implements EditDistanceStringMatchingStrategy {
40
40
4141 private String searchTerm;
4242 private String searchText;
4343 private Type type;
4646 public int distance()
4747 {
4848 final int INFINITY = searchTerm.length() + searchText.length();
49 int[][] H = new int[searchTerm.length()+2][searchText.length()+2];
49 int[][] H = new int[searchTerm.length()+2][searchText.length()+2];
5050 H[0][0] = INFINITY;
5151 for(int i = 0; i<=searchTerm.length(); i++) {
5252 H[i+1][1] = i;
5555 for(int j = 0; j<=searchText.length(); j++) {
5656 H[1][j+1] = (type == Type.Global) ? j : 0;
5757 H[0][j+1] = INFINITY;
58 }
58 }
5959 int[] DA = new int[alphabetLength];
6060 Arrays.fill(DA, 0);
6161 for(int i = 1; i<=searchTerm.length(); i++) {
6868 H[i+1][j+1] =
6969 min(H[i][j]+d,
7070 H[i+1][j] + 1,
71 H[i][j+1]+1,
71 H[i][j+1]+1,
7272 H[i1][j1] + (i-i1-1) + 1 + (j-j1-1));
7373 }
7474 DA[searchTerm.charAt(i-1)] = i;
8888 return min;
8989 }
9090 }
91
91
9292 private void writeMatrix(int[][] H)
9393 {
9494 for (int i = 0; i < H.length; i++)
100100 System.out.println();
101101 }
102102 }
103
104 private static int min(int ... nums)
103
104 private static int min(int ... nums)
105105 {
106106 int min = Integer.MAX_VALUE;
107107 for (int num : nums) {
121121 return 1.0F - ((float)distance() / Math.min(searchTerm.length(), searchText.length()));
122122 }
123123 }
124
124
125125 /*
126126 public DamerauLevenshtein(final String searchTerm, final String searchText,
127 final Type type, final boolean caseSensitive)
127 final Type type, final boolean caseSensitive)
128128 {
129129 if (caseSensitive)
130130 {
149149 alphabetLength = maxCodePoint + 1;
150150 }
151151 */
152
152
153153 public DamerauLevenshtein() {
154
154
155155 }
156
156
157157 public void init(final String searchTerm, final String searchText, final boolean subStringMatch,
158158 final boolean caseSensitive)
159159 {
161161 {
162162 throw new IllegalArgumentException("Null searchText/searchTerm!");
163163 }
164
164
165165 if (caseSensitive)
166166 {
167167 this.searchTerm = searchTerm;
184184 }
185185 alphabetLength = maxCodePoint + 1;
186186 }
187
187
188188 public boolean matches(final String searchTerm, final String searchText, final boolean subStringMatch,
189189 final boolean caseSensitive)
190190 {
191191 //LogUtils.severe(String.format("DL(%s,%s)\n", searchTerm, searchText));
192192 init(searchTerm, searchText, subStringMatch, caseSensitive);
193
194 return matchProb() > StringMatchingStrategy.APPROXIMATE_MATCHING_MINPROB;
193
194 return matchProb() > StringMatchingStrategy.APPROXIMATE_MATCHING_MINPROB;
195195 }
196196 }
2727 import org.freeplane.features.filter.condition.ICondition;
2828 import org.freeplane.features.map.IMapSelection;
2929 import org.freeplane.features.map.MapChangeEvent;
30 import org.freeplane.features.map.MapController;
3130 import org.freeplane.features.map.MapModel;
3231 import org.freeplane.features.map.NodeModel;
3332 import org.freeplane.features.mode.Controller;
150149 Controller.getCurrentController().getViewController().setWaitingCursor(false);
151150 }
152151 }
152
153153 public void calculateFilterResults(final MapModel map) {
154154 final NodeModel root = map.getRootNode();
155155 resetFilter(root);
156156 if (filterChildren(root, checkNode(root), false)) {
157157 addFilterResult(root, FilterInfo.FILTER_SHOW_ANCESTOR);
158158 }
159 }
160
161 public void calculateFilterResults(final NodeModel root) {
162 applyFilter(root, false, false, false);
159163 }
160164
161165 private boolean applyFilter(final NodeModel node,
219223 private boolean filterChildren(final NodeModel node,
220224 final boolean isAncestorSelected, final boolean isAncestorEclipsed) {
221225 boolean isDescendantSelected = false;
222 MapController r = Controller.getCurrentModeController().getMapController();
223226 for (final NodeModel child : node.getChildren()) {
224227 isDescendantSelected = applyFilter(child, isAncestorSelected, isAncestorEclipsed,
225228 isDescendantSelected);
6060 import org.freeplane.core.ui.components.JAutoToggleButton;
6161 import org.freeplane.core.ui.components.JComboBoxWithBorder;
6262 import org.freeplane.core.ui.components.UITools;
63 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
6364 import org.freeplane.core.ui.menubuilders.generic.EntryVisitor;
6465 import org.freeplane.core.util.LogUtils;
6566 import org.freeplane.core.util.TextUtils;
8182 import org.freeplane.features.mode.Controller;
8283 import org.freeplane.features.ui.FrameController;
8384 import org.freeplane.features.ui.ToggleToolbarAction;
84 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
8585 import org.freeplane.features.ui.ViewController;
8686 import org.freeplane.n3.nanoxml.IXMLParser;
8787 import org.freeplane.n3.nanoxml.IXMLReader;
374374 }
375375 }
376376
377 @Override
378 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
379 }
380
381377 private Filter createFilter(final ASelectableCondition selectedCondition) {
382378
383379 final ASelectableCondition filterCondition;
401397 .getBooleanProperty("filter_toolbar_visible"));
402398 Controller controller = Controller.getCurrentController();
403399 FrameController frameController = (FrameController) controller.getViewController();
404 UIComponentVisibilityDispatcher.install(frameController, filterToolbar, "filter_toolbar_visible");
400 UIComponentVisibilityDispatcher.install(filterToolbar, "filter_toolbar_visible");
405401 final JButton undoBtn = new JButton(controller.getAction("UndoFilterAction"));
406402 final JButton redoBtn = new JButton(controller.getAction("RedoFilterAction"));
407403 final JToggleButton showAncestorsBox = new JAutoToggleButton(controller.getAction("ShowAncestorsAction"),
6262 // implementation detail
6363 private FormattedNumber(final Number number, final String pattern, final String formattedString,
6464 final boolean isDefault) {
65 final long longValue = number.longValue();
66 if(longValue == number.doubleValue())
67 this.number = longValue;
65 if(number instanceof Float || number instanceof Double) {
66 final long longValue = number.longValue();
67 if (longValue == number.doubleValue()) {
68 if(longValue >= Integer.MIN_VALUE && longValue <= Integer.MAX_VALUE)
69 this.number = (int)longValue;
70 else
71 this.number = longValue;
72 }
73 else
74 this.number = number;
75 }
6876 else
6977 this.number = number;
7078 this.pattern = pattern;
1818 */
1919 package org.freeplane.features.help;
2020
21 import java.awt.Component;
2122 import java.awt.event.ActionEvent;
2223 import java.net.URI;
2324 import java.net.URISyntaxException;
2425
26 import javax.swing.BorderFactory;
2527 import javax.swing.Box;
2628 import javax.swing.JButton;
29 import javax.swing.JComponent;
2730 import javax.swing.JLabel;
2831 import javax.swing.JOptionPane;
32 import javax.swing.JTextField;
2933 import javax.swing.SwingConstants;
3034
3135 import org.freeplane.core.resources.ResourceController;
3236 import org.freeplane.core.ui.AFreeplaneAction;
33
3437 import org.freeplane.core.ui.components.UITools;
3538 import org.freeplane.core.util.Compat;
3639 import org.freeplane.core.util.FreeplaneVersion;
40 import org.freeplane.core.util.HtmlUtils;
3741 import org.freeplane.core.util.TextUtils;
3842
3943
4044 class AboutAction extends AFreeplaneAction {
4145 /**
42 *
46 *
4347 */
4448 private static final long serialVersionUID = 1L;
4549
5054 super("AboutAction");
5155 }
5256
57 @Override
5358 public void actionPerformed(final ActionEvent e) {
5459 Box box = Box.createVerticalBox();
5560 String about = TextUtils.getText("about_text") + " " + FreeplaneVersion.getVersion();
5661 addUri(box, "homepage_url", about);
5762 addUri(box, "copyright_url", TextUtils.getText("copyright"));
58 addMessage(box, FreeplaneVersion.getVersion().getRevision());
63 final String revision = FreeplaneVersion.getVersion().getRevision();
64 if(! revision.isEmpty())
65 addMessage(box, revision);
5966 addFormattedMessage(box, "java_version", Compat.JAVA_VERSION);
6067 addFormattedMessage(box, "main_resource_directory", ResourceController.getResourceController().getResourceBaseDir());
6168 addUri(box, "license_url", TextUtils.getText("license"));
6269 addMessage(box, TextUtils.getText("license_text"));
63
70
6471 JOptionPane.showMessageDialog(UITools.getCurrentRootComponent(), box, TextUtils
6572 .getText("AboutAction.text"), JOptionPane.INFORMATION_MESSAGE);
6673 }
6774
6875 private void addFormattedMessage(Box box, String format, String parameter) {
69 box.add(new JLabel(TextUtils.format(format, parameter)));
76 addMessage(box,TextUtils.format(format, parameter));
7077 }
7178
72 private void addMessage(Box box, String localMessage) {
73 box.add(new JLabel(localMessage));
79 private void addMessage(Box box, String text) {
80 final JComponent textComponent;
81 if(HtmlUtils.isHtmlNode(text)) {
82 textComponent = new JLabel(text);
83 }
84 else {
85 final JTextField textField = new JTextField(text);
86 textField.setEditable(false);
87 textField.setBorder(BorderFactory.createEmptyBorder());
88 textComponent = textField;
89 }
90 textComponent.setAlignmentX(Component.LEFT_ALIGNMENT);
91 box.add(textComponent);
7492 }
7593
7694 private void addUri(Box box, String uriProperty, String message) {
7896 URI uri;
7997 uri = new URI( ResourceController.getResourceController().getProperty(uriProperty));
8098 JButton uriButton = UITools.createHtmlLinkStyleButton(uri, message);
99 uriButton.setAlignmentX(Component.LEFT_ALIGNMENT);
81100 uriButton.setHorizontalAlignment(SwingConstants.LEADING);
82101 box.add(uriButton);
83102 } catch (URISyntaxException e1) {
6161 * Gets called when File -> Properties is selected
6262 */
6363 public void actionPerformed(final ActionEvent e) {
64 //variables for informations to be displayed
64 //variables for information to be displayed
6565 final String fileNamePath, fileSavedDateTime, fileSize;
6666 final int fileChangesSinceSave;
67 //get informations
67 //get information
6868 //if file has been saved once
6969 final MapModel map = Controller.getCurrentController().getMap();
7070 if (map.getFile() != null) {
327327 }
328328
329329 /**
330 * Builts an array containing nodes form the given node on downwards.
331 *
332 * @param NodeModel node: The node from which on to search
333 * @param boolean CountLeaves: If true only leave nodes are included in the return list,
330 * Builds an array containing nodes form the given node on downwards.
331 *
332 * @param node The node from which on to search
333 * @param condition If true only leave nodes are included in the return list,
334334 * otherwise all nodes from the selected on are included
335 *
335 *
336336 * @return Returns a list of nodes
337337 */
338338 private int getNodeCount(final NodeModel node, final ICondition condition) {
2323 import java.net.URL;
2424
2525 import org.freeplane.core.ui.AFreeplaneAction;
26
2726 import org.freeplane.core.ui.components.UITools;
2827 import org.freeplane.core.util.LogUtils;
2928 import org.freeplane.core.util.TextUtils;
3029 import org.freeplane.features.mode.Controller;
3130
3231
33 class OpenURLAction extends AFreeplaneAction {
32 public class OpenURLAction extends AFreeplaneAction {
3433 /**
35 *
34 *
3635 */
3736 private static final long serialVersionUID = 1L;
3837 final private String url;
3938
40 OpenURLAction(final String key, final String url) {
39 public OpenURLAction(final String key, final String url) {
4140 super(key);
4241 this.url = url;
4342 }
4443
44 @Override
4545 public void actionPerformed(final ActionEvent e) {
4646 try {
4747 Controller.getCurrentController().getViewController().openDocument(new URL(url));
2424
2525 import org.freeplane.core.extension.IExtension;
2626 import org.freeplane.features.icon.HierarchicalIcons.Mode;
27 import org.freeplane.features.map.MapController;
2827 import org.freeplane.features.map.NodeModel;
2928 import org.freeplane.features.mode.Controller;
3029
3938 AccumulatedIcons(Collection<? extends UIIcon> ownIcons) {
4039 this.ownIcons = ownIcons;
4140 this.childIcons = new TreeSet<UIIcon>();
42 }
41 }
4342
4443 public Collection<UIIcon> getAccumulatedIcons() {
4544 return childIcons;
5049 private void addAccumulatedIconsToTreeSet(final NodeModel child) {
5150 final IconController iconController = IconController.getController();
5251 childIcons.addAll(iconController.getIcons(child));
53 final AccumulatedIcons icons = (AccumulatedIcons) child.getExtension(AccumulatedIcons.class);
52 final AccumulatedIcons icons = child.getExtension(AccumulatedIcons.class);
5453 if (icons == null) {
5554 return;
5655 }
57 childIcons.addAll((Collection<UIIcon>) icons.childIcons);
56 childIcons.addAll(icons.childIcons);
5857 }
5958
6059 static public boolean setStyleCheckForChange(final NodeModel node, Mode mode) {
6160 final Collection<MindIcon> ownIcons = IconController.getController().getIcons(node);
6261 final AccumulatedIcons iconSet = new AccumulatedIcons(ownIcons);
6362 boolean first = true;
64 MapController r = Controller.getCurrentModeController().getMapController();
6563 for (final NodeModel child : node.getChildren()) {
6664 if(first || mode.equals(Mode.OR)){
6765 iconSet.addAccumulatedIconsToTreeSet(child);
7068 @SuppressWarnings("unchecked")
7169 final AccumulatedIcons iconSet2 = new AccumulatedIcons(Collections.EMPTY_SET);
7270 iconSet2.addAccumulatedIconsToTreeSet(child);
73 iconSet.childIcons.retainAll((Collection<UIIcon>) iconSet2.childIcons);
71 iconSet.childIcons.retainAll(iconSet2.childIcons);
7472 if(iconSet.ownIcons.isEmpty() && iconSet.childIcons.isEmpty())
7573 break;
7674 }
7775 first = false;
7876 }
7977 iconSet.childIcons.removeAll(ownIcons);
80
78
8179 final AccumulatedIcons oldSet;
8280 if (! (iconSet.ownIcons.isEmpty() && iconSet.childIcons.isEmpty())) {
8381 oldSet = (AccumulatedIcons)node.putExtension(iconSet);
104102 return ownIcons.equals(ai.ownIcons) && childIcons.equals(ai.childIcons);
105103 }
106104 return false;
107 }
108
109
105 }
106
107
110108 }
2020 package org.freeplane.features.icon;
2121
2222 import java.util.Map;
23
2324 import org.freeplane.core.extension.IExtension;
2425 import org.freeplane.core.io.IReadCompletionListener;
2526 import org.freeplane.features.map.IMapChangeListener;
2627 import org.freeplane.features.map.INodeChangeListener;
2728 import org.freeplane.features.map.MapChangeEvent;
28 import org.freeplane.features.map.MapController;
2929 import org.freeplane.features.map.MapModel;
3030 import org.freeplane.features.map.NodeChangeEvent;
3131 import org.freeplane.features.map.NodeDeletionEvent;
5252 this(Mode.OR);
5353 final ModeController modeController = Controller.getCurrentModeController();
5454 IconController.getController(modeController).addStateIconProvider(new IStateIconProvider() {
55 @Override
5556 public UIIcon getStateIcon(NodeModel node) {
5657 AccumulatedIcons iconSet = node.getExtension(AccumulatedIcons.class);
5758 if(iconSet != null)
7677 modeController.getMapController().addMapChangeListener(this);
7778 }
7879
80
81
7982 @Override
8083 protected void add(final NodeModel node, final IExtension extension) {
8184 if(MapStyleModel.getExtension(node.getMap()) != null){
8790
8891
8992 @Override
93 public void undoableToggleHook(NodeModel node, IExtension extension) {
94 removeAnotherMode(node);
95 super.undoableToggleHook(node, extension);
96 }
97
98 protected void removeAnotherMode(NodeModel node) {
99 final HierarchicalIcons2 extension = node.getExtension(HierarchicalIcons2.class);
100 if(extension != null)
101 extension.undoableDeactivateHook(node);
102 }
103 @Override
90104 protected IExtension createExtension(final NodeModel node, final XMLElement element) {
91105 return this;
92106 }
100114 }
101115 return;
102116 }
103 MapController r = Controller.getCurrentModeController().getMapController();
104117 for (final NodeModel child : node.getChildren()) {
105118 gatherLeavesAndSetParentsStyle(child);
106119 }
114127 AccumulatedIcons.setStyleCheckForChange(node, mode);
115128 return;
116129 }
117 MapController r = Controller.getCurrentModeController().getMapController();
118130 for (final NodeModel child : node.getChildren()) {
119131 gatherLeavesAndSetStyle(child);
120132 }
121133 }
122134
135 @Override
123136 public void mapChanged(final MapChangeEvent event) {
124137 final MapModel map = event.getMap();
125138 if(map == null){
137150 gatherLeavesAndSetParentsStyle(rootNode);
138151 }
139152
153 @Override
140154 public void nodeChanged(final NodeChangeEvent event) {
141155 final NodeModel node = event.getNode();
142156 if (!isActive(node)) {
145159 setStyleRecursive(node);
146160 }
147161
162 @Override
148163 public void onNodeDeleted(NodeDeletionEvent nodeDeletionEvent) {
149164 if (!isActive(nodeDeletionEvent.parent)) {
150165 return;
152167 setStyleRecursive(nodeDeletionEvent.parent);
153168 }
154169
170 @Override
155171 public void onNodeInserted(final NodeModel parent, final NodeModel child, final int newIndex) {
156172 if (!isActive(parent)) {
157173 return;
159175 setStyleRecursive(child);
160176 }
161177
178 @Override
162179 public void onNodeMoved(NodeMoveEvent nodeMoveEvent) {
163180 if (!isActive(nodeMoveEvent.newParent)) {
164181 return;
167184 setStyleRecursive(nodeMoveEvent.child);
168185 }
169186
187 @Override
170188 public void onPreNodeDelete(NodeDeletionEvent nodeDeletionEvent) {
171189 }
172190
191 @Override
173192 public void readingCompleted(final NodeModel topNode, final Map<String, String> newIds) {
174193 if (!topNode.containsExtension(getClass()) && !topNode.getMap().getRootNode().containsExtension(getClass())) {
175194 return;
195214 AccumulatedIcons icons = node.removeExtension(AccumulatedIcons.class);
196215 if(icons != null){
197216 Controller.getCurrentModeController().getMapController().delayedNodeRefresh(node, HierarchicalIcons.ICONS, null, null);
198 MapController r = Controller.getCurrentModeController().getMapController();
199217 for (final NodeModel child : node.getChildren()) {
200218 removeIcons(child);
201219 }
213231 }
214232 }
215233
234 @Override
216235 public void onPreNodeMoved(NodeMoveEvent nodeMoveEvent) {
217236 }
218
219
237
238
220239 }
221240
222241 @NodeHookDescriptor(hookName = "accessories/plugins/HierarchicalIcons2.properties")
224243 public HierarchicalIcons2() {
225244 super(Mode.AND);
226245 }
246 @Override
247 protected void removeAnotherMode(NodeModel node) {
248 final HierarchicalIcons extension = node.getExtension(HierarchicalIcons.class);
249 if(extension != null)
250 extension.undoableDeactivateHook(node);
251 }
227252 }
2222 import javax.swing.KeyStroke;
2323
2424 public interface IIconInformation {
25 String getTranslationKeyLabel();
25 String getDescriptionTranslationKey();
2626
27 String getTranslationValueLabel();
27 String getTranslatedDescription();
2828
2929 Icon getIcon();
3030
2727 public class MindIcon extends UIIcon {
2828 private static final String DEFAULT_IMAGE_PATH = "/images/icons";
2929 private static final String SHORTCUT_KEY = "IconAction.%s.shortcut";
30
3130 public MindIcon(final String name) {
3231 this(name, name + ".png", "");
3332 }
5049 final String fileName = path.substring(path.lastIndexOf('/') + 1);
5150 return fileName;
5251 }
52
53 public static String nameToTranslationKey(final String name) {
54 return String.format("icon_%s", name);
55 }
5356 }
4646 + "\\.\\." + SEPARATOR);
4747 private final String name;
4848 private final String fileName;
49 private final String translationKeyLabel;
49 private final String descriptionTranslationKey;
5050 private final String shortcutKey;
5151 private URL resourceURL;
5252
5454 this(name, fileName, "", "?");
5555 }
5656
57 public UIIcon(final String name, final String fileName, final String translationKeyLabel) {
58 this(name, fileName, translationKeyLabel, "?");
59 }
60
61 public UIIcon(final String name, final String fileName, final String translationKeyLabel,
57 public UIIcon(final String name, final String fileName, final String descriptionTranslationKey) {
58 this(name, fileName, descriptionTranslationKey, "?");
59 }
60
61 public UIIcon(final String name, final String fileName, final String descriptionTranslationKey,
6262 final String shortcutKey) {
6363 this.name = name;
6464 this.fileName = fileName;
65 this.translationKeyLabel = translationKeyLabel;
65 this.descriptionTranslationKey = descriptionTranslationKey;
6666 this.shortcutKey = shortcutKey;
6767 }
6868
7979 }
8080
8181 @Override
82 public String getTranslationKeyLabel() {
83 return translationKeyLabel;
84 }
85
86 @Override
87 public String getTranslationValueLabel() {
88 return TextUtils.getText(translationKeyLabel, "");
82 public String getDescriptionTranslationKey() {
83 return descriptionTranslationKey;
84 }
85
86 @Override
87 public String getTranslatedDescription() {
88 return TextUtils.getText(descriptionTranslationKey, "");
8989 }
9090
9191 public String getName() {
134134 public int hashCode() {
135135 final int prime = 31;
136136 int result = 1;
137 result = prime * result + ((translationKeyLabel == null) ? 0 : translationKeyLabel.hashCode());
137 result = prime * result + ((descriptionTranslationKey == null) ? 0 : descriptionTranslationKey.hashCode());
138138 result = prime * result + ((fileName == null) ? 0 : fileName.hashCode());
139139 result = prime * result + ((name == null) ? 0 : name.hashCode());
140140 result = prime * result + ((shortcutKey == null) ? 0 : shortcutKey.hashCode());
154154 return false;
155155 }
156156 final UIIcon other = (UIIcon) obj;
157 if (translationKeyLabel == null) {
158 if (other.translationKeyLabel != null) {
159 return false;
160 }
161 }
162 else if (!translationKeyLabel.equals(other.translationKeyLabel)) {
157 if (descriptionTranslationKey == null) {
158 if (other.descriptionTranslationKey != null) {
159 return false;
160 }
161 }
162 else if (!descriptionTranslationKey.equals(other.descriptionTranslationKey)) {
163163 return false;
164164 }
165165 if (fileName == null) {
2626
2727 import org.freeplane.core.resources.ResourceController;
2828 import org.freeplane.core.util.LogUtils;
29 import org.freeplane.core.util.TextUtils;
2930
3031 /**
3132 *
6566 }
6667
6768 @Override
68 public String getTranslationValueLabel() {
69 return getTranslationKeyLabel();
69 public String getTranslatedDescription() {
70 String key = getDescriptionTranslationKey();
71 return TextUtils.getOptionalText(MindIcon.nameToTranslationKey(key), key);
7072 }
7173
7274 @Override
4040 private ImageIcon zoomedIcon;
4141
4242 public ZoomedIcon(final UIIcon uiIcon, final float zoom) {
43 super(uiIcon.getName(), uiIcon.getFileName(), uiIcon.getTranslationValueLabel(), uiIcon.getShortcutKey());
43 super(uiIcon.getName(), uiIcon.getFileName(), uiIcon.getDescriptionTranslationKey(), uiIcon.getShortcutKey());
4444 this.uiIcon = uiIcon;
4545 this.zoom = zoom;
4646 }
4949 public Icon getIcon() {
5050 throw new RuntimeException(new NoSuchMethodException());
5151 }
52
52
5353 @Override
5454 public Icon getIcon(final NodeModel node) {
5555 if(uiIcon.getUrl().getPath().endsWith(".svg")) {
2626 * @author Tamas Eppel
2727 */
2828 public class MindIconFactory {
29 private static final String DESC_KEY = "icon_%s";
30
3129 /**
3230 * Constructs a MindIcon with the given name from the property file.
3331 * The name of the icon is the file name without the extension.
3432 */
3533 public static MindIcon createIcon(final String name) {
36 final String translationKeyLabel = name.indexOf('/') > 0 ? "" : String.format(DESC_KEY, name);
34 final String translationKeyLabel = name.indexOf('/') > 0 ? "" : MindIcon.nameToTranslationKey(name);
3735 return new MindIcon(name, name + ".png", translationKeyLabel);
3836 }
3937
4040 final private MindIcon mindIcon;
4141
4242 public IconAction( final MindIcon _icon) {
43 super("IconAction." + _icon.getName(), _icon.getTranslationValueLabel(), null);
43 super("IconAction." + _icon.getName(), _icon.getTranslatedDescription(), null);
4444 mindIcon = _icon;
4545 setIcon(getIcon());
46 putValue(Action.SHORT_DESCRIPTION, getTranslationValueLabel());
46 putValue(Action.SHORT_DESCRIPTION, getTranslatedDescription());
4747 }
4848
4949 private MindIcon replaceByUserDefinedIcon() {
5555 ((MIconController) IconController.getController()).addIcon(node, replaceByUserDefinedIcon());
5656 }
5757
58 public String getTranslationKeyLabel() {
59 return mindIcon.getTranslationKeyLabel();
58 public String getDescriptionTranslationKey() {
59 return mindIcon.getDescriptionTranslationKey();
6060 }
6161
6262 @Override
6363 public String getTextKey() {
64 return getTranslationKeyLabel();
64 return getDescriptionTranslationKey();
6565 }
6666
67 public String getTranslationValueLabel() {
68 return mindIcon.getTranslationValueLabel();
67 public String getTranslatedDescription() {
68 return mindIcon.getTranslatedDescription();
6969 }
7070
7171 public Icon getIcon() {
2121 import java.awt.Component;
2222 import java.awt.Dimension;
2323 import java.awt.Font;
24 import java.awt.Graphics;
2425 import java.awt.GridLayout;
2526 import java.awt.Insets;
2627 import java.awt.Point;
3536
3637 import javax.swing.Action;
3738 import javax.swing.Box;
39 import javax.swing.Icon;
3840 import javax.swing.JComponent;
3941 import javax.swing.JMenu;
4042 import javax.swing.JMenuBar;
4143 import javax.swing.JMenuItem;
4244 import javax.swing.JToolBar;
4345 import javax.swing.SwingConstants;
46 import javax.swing.plaf.basic.BasicIconFactory;
4447
4548 import org.freeplane.core.resources.ResourceController;
4649 import org.freeplane.core.resources.components.IPropertyControl;
5356 import org.freeplane.core.ui.MenuSplitter;
5457 import org.freeplane.core.ui.components.FreeplaneToolBar;
5558 import org.freeplane.core.ui.components.JAutoScrollBarPane;
56 import org.freeplane.core.ui.components.JResizer.Direction;
5759 import org.freeplane.core.ui.components.UITools;
60 import org.freeplane.core.ui.components.resizer.CollapseableBoxBuilder;
61 import org.freeplane.core.ui.components.resizer.JResizer.Direction;
5862 import org.freeplane.core.ui.menubuilders.generic.Entry;
5963 import org.freeplane.core.ui.menubuilders.generic.EntryAccessor;
6064 import org.freeplane.core.ui.menubuilders.generic.EntryVisitor;
7983 import org.freeplane.features.mode.mindmapmode.MModeController;
8084 import org.freeplane.features.styles.ConditionPredicate;
8185 import org.freeplane.features.styles.LogicalStyleController;
82 import org.freeplane.features.ui.CollapseableBoxBuilder;
8386 import org.freeplane.features.ui.FrameController;
8487
8588 /**
9093 private static final int ARROW_SIZE = Math.round(UITools.getUIFontSize(0.8));
9194 private static final Font ARROW_FONT = new Font("SansSerif", 0, ARROW_SIZE);
9295 private static final ConditionPredicate DEPENDS_ON_ICON = new ConditionPredicate() {
93
96
9497 @Override
9598 public boolean test(ICondition condition) {
96 return condition instanceof IconContainedCondition
99 return condition instanceof IconContainedCondition
97100 || condition instanceof IconExistsCondition;
98101 }
99102 };
165168 };
166169
167170 private static class ExtensionCopier implements IExtensionCopier {
171 @Override
168172 public void copy(final Object key, final NodeModel from, final NodeModel to) {
169173 if (!key.equals(Keys.ICONS)) {
170174 return;
183187 }
184188 }
185189
190 @Override
186191 public void remove(final Object key, final NodeModel from) {
187192 if (!key.equals(Keys.ICONS)) {
188193 return;
192197 }
193198 }
194199
200 @Override
195201 public void remove(final Object key, final NodeModel from, final NodeModel which) {
196202 if (!key.equals(Keys.ICONS)) {
197203 return;
207213 targetIconIterator.remove();
208214 }
209215 }
216 @Override
210217 public void resolveParentExtensions(Object key, NodeModel to) {
211218 }
212219 }
227234 UITools.setScrollbarIncrement(iconToolBarScrollPane);
228235 UITools.addScrollbarIncrementPropertyListener(iconToolBarScrollPane);
229236 FrameController frameController = (FrameController) modeController.getController().getViewController();
230 iconBox = new CollapseableBoxBuilder(frameController).setPropertyNameBase("leftToolbarVisible").setResizeable(true).createBox(iconToolBarScrollPane, Direction.LEFT);
237 iconBox = new CollapseableBoxBuilder().setPropertyNameBase("leftToolbarVisible").setResizeable(true).createBox(iconToolBarScrollPane, Direction.LEFT);
231238 createIconActions(modeController);
232239 createPreferences();
233240 modeController.addUiBuilder(Phase.ACTIONS, "icon_actions", new IconActionBuilder(modeController));
234241 }
235
242
236243 @Override
237244 public void install(final ModeController modeController) {
238245 super.install(modeController);
239246 modeController.getMapController().addNodeChangeListener(new INodeChangeListener() {
240
247
241248 @Override
242249 public void nodeChanged(NodeChangeEvent event) {
243250 final NodeModel node = event.getNode();
252259
253260 public void addIcon(final NodeModel node, final MindIcon icon) {
254261 final IActor actor = new IActor() {
262 @Override
255263 public void act() {
256264 node.addIcon(icon);
257265 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, null, icon);
258266 }
259267
268 @Override
260269 public String getDescription() {
261270 return "addIcon";
262271 }
263272
273 @Override
264274 public void undo() {
265275 node.removeIcon();
266276 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, icon, null);
271281
272282 public void addIcon(final NodeModel node, final MindIcon icon, final int position) {
273283 final IActor actor = new IActor() {
284 @Override
274285 public void act() {
275286 node.addIcon(icon, position);
276287 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, null, icon);
277288 }
278289
290 @Override
279291 public String getDescription() {
280292 return "addIcon";
281293 }
282294
295 @Override
283296 public void undo() {
284297 node.removeIcon(position);
285298 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, icon, null);
294307
295308 private Quantity<LengthUnits> oldIconSize;
296309
310 @Override
297311 public void act() {
298312 oldIconSize = node.getSharedData().getIcons().getIconSize();
299313 node.getSharedData().getIcons().setIconSize(iconSize);
300314 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON_SIZE, null, iconSize);
301315 }
302316
317 @Override
303318 public String getDescription() {
304319 return "changeIconSize";
305320 }
306321
322 @Override
307323 public void undo() {
308324 node.getSharedData().getIcons().setIconSize(oldIconSize);
309325 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON_SIZE, oldIconSize, null);
335351 for (final AFreeplaneAction iconAction : actions) {
336352 final IIconInformation info = (IIconInformation) iconAction;
337353 optionPanelBuilder.addCreator("Keystrokes/icons", new IPropertyControlCreator() {
354 @Override
338355 public IPropertyControl createControl() {
339 final KeyProperty keyProperty = new KeyProperty(info.getShortcutKey(), info.getTranslationValueLabel());
356 final KeyProperty keyProperty = new KeyProperty(info.getShortcutKey(), info.getTranslatedDescription());
340357 keyProperty.setIcon(info.getIcon());
341358 keyProperty.disableModifiers();
342359 return keyProperty;
365382 }
366383 return iconInfoList;
367384 }
368
385 final static private Icon SUBMENU_ICON = BasicIconFactory.getMenuArrowIcon();
369386 private JMenu getSubmenu( final IconGroup group) {
370 final JMenu menu = new JMenu("\u25ba") {
387 final JMenu menu = new JMenu() {
371388 private static final long serialVersionUID = 1L;
372389
373390 @Override
374391 protected Point getPopupMenuOrigin() {
375392 return new Point(getWidth(), 0);
376393 }
394
395 @Override
396 protected void paintComponent(Graphics g) {
397 super.paintComponent(g);
398 final int x = getWidth() - SUBMENU_ICON.getIconWidth();
399 final int y = (getHeight() - SUBMENU_ICON.getIconHeight()) / 2;
400 SUBMENU_ICON.paintIcon(this, g, x, y);
401 }
402
403 @Override
404 public Dimension getPreferredSize() {
405 final Dimension result = super.getPreferredSize();
406 result.width += SUBMENU_ICON.getIconWidth();
407 return result;
408 }
409
410
377411 };
378412 menu.setFont(ARROW_FONT);
379413 menu.setMargin(ICON_SUBMENU_INSETS);
448482 final IActor actor = new IActor() {
449483 private final MindIcon icon = node.getIcon(index);
450484
485 @Override
451486 public void act() {
452487 node.removeIcon(index);
453488 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, icon, null);
454489 }
455490
491 @Override
456492 public String getDescription() {
457493 return "removeIcon";
458494 }
459495
496 @Override
460497 public void undo() {
461498 node.addIcon(icon, index);
462499 Controller.getCurrentModeController().getMapController().nodeChanged(node, NodeModel.NODE_ICON, null, icon);
4040
4141 public RemoveAllIconsAction() {
4242 super("RemoveAllIconsAction");
43 putValue(Action.SHORT_DESCRIPTION, getTranslationValueLabel());
43 putValue(Action.SHORT_DESCRIPTION, getTranslatedDescription());
4444 }
4545
4646 @Override
4949 iconController.removeAllIcons(node);
5050 }
5151
52 public String getTranslationKeyLabel() {
52 public String getDescriptionTranslationKey() {
5353 return null;
5454 }
5555
56 public String getTranslationValueLabel() {
56 public String getTranslatedDescription() {
5757 return (String) getValue(Action.NAME);
5858 }
5959
4242 public RemoveIconAction( final int position) {
4343 super(position == -1 ? "RemoveIconAction" : "RemoveIcon_" + position + "_Action");
4444 this.position = position;
45 putValue(Action.SHORT_DESCRIPTION, getTranslationValueLabel());
45 putValue(Action.SHORT_DESCRIPTION, getTranslatedDescription());
4646 }
4747
4848 @Override
5252 return;
5353 }
5454
55 public String getTranslationKeyLabel() {
55 public String getDescriptionTranslationKey() {
5656 return null;
5757 }
5858
59 public String getTranslationValueLabel() {
59 public String getTranslatedDescription() {
6060 return (String) getValue(Action.NAME);
6161 }
6262
6464 import org.freeplane.core.ui.menubuilders.generic.EntryAccessor;
6565 import org.freeplane.core.ui.menubuilders.generic.EntryVisitor;
6666 import org.freeplane.core.ui.menubuilders.generic.PhaseProcessor.Phase;
67 import org.freeplane.core.util.*;
67 import org.freeplane.core.util.ColorUtils;
68 import org.freeplane.core.util.Compat;
69 import org.freeplane.core.util.HtmlUtils;
70 import org.freeplane.core.util.LogUtils;
71 import org.freeplane.core.util.MenuUtils;
72 import org.freeplane.core.util.TextUtils;
6873 import org.freeplane.features.DashVariant;
6974 import org.freeplane.features.explorer.MapExplorerController;
7075 import org.freeplane.features.filter.FilterController;
7176 import org.freeplane.features.link.ConnectorModel.Shape;
72 import org.freeplane.features.map.*;
77 import org.freeplane.features.map.IMapSelection;
78 import org.freeplane.features.map.INodeSelectionListener;
79 import org.freeplane.features.map.MapController;
80 import org.freeplane.features.map.MapModel;
81 import org.freeplane.features.map.NodeModel;
7382 import org.freeplane.features.mode.Controller;
7483 import org.freeplane.features.mode.ModeController;
7584 import org.freeplane.features.mode.SelectionController;
620629 // patterns only need to be compiled once
621630 static Pattern patSMB = Pattern.compile( // \\host\path[#fragement]
622631 "(?:\\\\\\\\([^\\\\]+)\\\\)(.*?)(?:#([^#]*))?");
623 static Pattern patFile = Pattern.compile( // [drive:]path[#fragment]
624 "((?:\\p{Alpha}:)?([/\\\\])?(?:[^:#?]*))?(?:#([^#]*))?");
632 static Pattern patFile = Pattern.compile( // [file:][drive:]path[#fragment]
633 "(?:file:)?((?:\\p{Alpha}:)?([/\\\\])?(?:[^:#?]*))?(?:#([^#]*))?");
625634 static Pattern patURI = Pattern.compile( // [scheme:]scheme-specific-part[#fragment]
626635 "(?:(\\p{Alpha}[\\p{Alnum}+.-]+):)?(.*?)(?:#([^#]*))?");
627636
4040 public static final Object CONNECTOR = "connector";
4141
4242 /**
43 * @param source2
43 * @param node
4444 * @return
4545 */
4646 public static NodeLinks createLinkExtension(final NodeModel node) {
2929 import org.freeplane.core.util.Compat;
3030 import org.freeplane.core.util.LogUtils;
3131 import org.freeplane.core.util.TextUtils;
32 import org.freeplane.features.clipboard.ClipboardController;
32 import org.freeplane.features.clipboard.ClipboardAccessor;
3333 import org.freeplane.features.link.LinkController;
3434 import org.freeplane.features.link.NodeLinks;
3535 import org.freeplane.features.map.NodeModel;
3838
3939 class SetLinkByTextFieldAction extends AFreeplaneAction {
4040 /**
41 *
41 *
4242 */
4343 private static final long serialVersionUID = 1L;
4444
4646 super("SetLinkByTextFieldAction");
4747 }
4848
49 @Override
4950 public void actionPerformed(final ActionEvent e) {
5051 final ModeController modeController = Controller.getCurrentModeController();
5152 final NodeModel selectedNode = modeController.getMapController().getSelectedNode();
5758 if(linkAsString == null || "".equals(linkAsString)){
5859 linkAsString = "http://";
5960 // if clipboard contains a valid uri use it
60 ClipboardController clipboardController = modeController.getExtension(ClipboardController.class);
61 ClipboardAccessor clipboardController = modeController.getExtension(ClipboardAccessor.class);
6162 Transferable t = clipboardController.getClipboardContents();
6263 if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
6364 try {
2828
2929 import org.freeplane.core.extension.IExtension;
3030 import org.freeplane.core.util.LogUtils;
31 import org.freeplane.features.clipboard.ClipboardController;
3231 import org.freeplane.features.map.MapWriter.Mode;
32 import org.freeplane.features.map.clipboard.MapClipboardController;
3333
3434 public class EncryptionModel implements IExtension {
3535 private final static WeakHashMap<NodeModel, List<NodeModel>> hiddenChildren = new WeakHashMap<>();
3838 }
3939
4040 private String encryptedContent;
41 private boolean isAccessible = true;
42 /**
43 * is only set to false by the load mechanism. If the node is generated or
44 * it is decrypted once, this is always true.
45 */
46 private boolean isDecrypted = true;
4741 private IEncrypter mEncrypter;
4842 /**
4943 * password have to be stored in a StringBuilder as Strings cannot be deleted
5145 */
5246 final private NodeModel node;
5347
54 public EncryptionModel(final NodeModel node) {
48 public EncryptionModel(final NodeModel node, IEncrypter encrypter) {
5549 this.node = node;
50 this.mEncrypter = encrypter;
5651 encryptedContent = null;
57 setAccessible(true);
58 isDecrypted = true;
5952 }
6053
6154 /**
6457 public EncryptionModel(final NodeModel node, final String encryptedContent) {
6558 this.node = node;
6659 this.encryptedContent = encryptedContent;
67 setAccessible(false);
68 isDecrypted = false;
60 this.mEncrypter = null;
6961 }
7062
71 /**
72 */
73 public boolean checkPassword(final IEncrypter encrypter) {
63 private boolean checkAndSetEncrypter(final IEncrypter encrypter) {
7464 final String decryptedNode = decryptXml(encryptedContent, encrypter);
7565 if (decryptedNode == null || !decryptedNode.equals("") && !decryptedNode.startsWith("<node ")) {
7666 LogUtils.warn("Wrong password supplied (stored!=given).");
7767 return false;
7868 }
79 setEncrypter(encrypter);
69 mEncrypter = encrypter;
8070 return true;
8171 }
8272
8575 * @return true, if the password was correct.
8676 */
8777 public boolean decrypt(final MapController mapController, final IEncrypter encrypter) {
88 if (!checkPassword(encrypter)) {
78 if(encryptedContent == null)
79 throw new IllegalStateException("No encrypted content");
80 if (!checkAndSetEncrypter(encrypter)) {
8981 return false;
9082 }
91 setAccessible(true);
92 if (!isDecrypted) {
83 if (! hiddenChildren.containsKey(node)) {
9384 try {
9485 final String childXml = decryptXml(encryptedContent, encrypter);
95 final String[] childs = childXml.split(ClipboardController.NODESEPARATOR);
86 final String[] childs = childXml.split(MapClipboardController.NODESEPARATOR);
9687 for (int i = 0; i < childs.length; i++) {
9788 final String string = childs[i];
9889 if (string.length() == 0) {
9990 continue;
10091 }
10192 pasteXML(string, node, mapController);
93 hiddenChildren.put(node, node.getChildrenInternal());
10294 }
103 isDecrypted = true;
10495 }
10596 catch (final Exception e) {
10697 LogUtils.severe(e);
107 setAccessible(false);
108 return true;
10998 }
11099 }
111100 return true;
131120 }
132121 }
133122
134 private void runEncryptedContentGeneration(final MapWriter mapWriter) throws IOException {
135 final StringWriter sWriter = new StringWriter();
136 for (final Iterator<NodeModel> i = node.getChildren().listIterator(); i.hasNext();) {
137 final NodeModel child = i.next();
138 mapWriter.writeNodeAsXml(sWriter, child, MapWriter.Mode.FILE, true, true, false);
139 if (i.hasNext()) {
140 sWriter.write(ClipboardController.NODESEPARATOR);
123 private String encrypt(final MapWriter mapWriter, List<NodeModel> childNodes) {
124 try {
125 final StringWriter sWriter = new StringWriter();
126 for (final Iterator<NodeModel> i = childNodes.listIterator(); i.hasNext();) {
127 final NodeModel child = i.next();
128 mapWriter.writeNodeAsXml(sWriter, child, MapWriter.Mode.FILE, true, true, false);
129 if (i.hasNext()) {
130 sWriter.write(MapClipboardController.NODESEPARATOR);
131 }
141132 }
133 final StringBuffer childXml = sWriter.getBuffer();
134 String encryptedContent = encryptXml(childXml);
135 return encryptedContent;
142136 }
143 final StringBuffer childXml = sWriter.getBuffer();
144 encryptedContent = encryptXml(childXml);
137 catch (IOException e) {
138 throw new RuntimeException("Unexpected", e);
139 }
145140 }
146141
147142 public String calculateEncryptedContent(final MapWriter mapWriter) {
148 if (isDecrypted) {
143 if (encryptedContent == null) {
149144 try {
150 runEncryptedContentGeneration(mapWriter);
145 return encrypt(mapWriter, node.getChildrenInternal());
151146 }
152147 catch (final Exception e) {
153148 LogUtils.severe(e);
156151 return encryptedContent;
157152 }
158153
159 /**
160 * @return Returns the isAccessible (ie. if the node is decrypted
161 * (isAccessible==true) or not).
162 */
163154 public boolean isAccessible() {
164 return isAccessible;
155 return encryptedContent == null;
156 }
157
158 public boolean isLocked() {
159 return encryptedContent != null;
165160 }
166161
167162 private void pasteXML(final String pasted, final NodeModel target, final MapController mapController) {
175170 }
176171 }
177172
178 /**
179 * @param isAccessible
180 * The isAccessible to set.
181 */
182 synchronized public void setAccessible(final boolean isAccessible) {
183 if(this.isAccessible != isAccessible) {
184 if(isAccessible) {
185 node.setChildrenInternal(hiddenChildren.remove(node));
186 }
187 else {
188 final List<NodeModel> oldList = hiddenChildren.put(node, node.getChildrenInternal());
189 node.setChildrenInternal(Collections.emptyList());
190 if(oldList != null) {
191 LogUtils.severe("Hidden children replaced");
192 }
193 }
194 this.isAccessible = isAccessible;
173 synchronized public void unlock() {
174 node.setChildrenInternal(hiddenChildren.remove(node));
175 encryptedContent = null;
176 }
177
178 synchronized public void lock(MapWriter mapWriter) {
179 List<NodeModel> childNodes = node.getChildrenInternal();
180 encryptedContent = encrypt(mapWriter, childNodes);
181 List<NodeModel> oldContent = hiddenChildren.put(node, childNodes);
182 node.setChildrenInternal(Collections.emptyList());
183 if(oldContent != null) {
184 LogUtils.severe("Hidden children replaced");
195185 }
196186 }
197
198 public void setEncrypter(final IEncrypter encrypter) {
199 mEncrypter = encrypter;
200 }
201187 }
2020
2121
2222 public interface IMapSelectionListener {
23 void afterMapChange(MapModel oldMap, MapModel newMap);
23 default void afterMapChange(MapModel oldMap, MapModel newMap) {}
2424
25 void beforeMapChange(MapModel oldMap, MapModel newMap);
25 default void beforeMapChange(MapModel oldMap, MapModel newMap) {}
2626 }
2222 * @author Dimitry Polivaev
2323 * 10.01.2009
2424 */
25 public interface INodeView extends INodeChangeListener, IMapChangeListener {
25 public interface INodeView {
26 default void nodeChanged(NodeChangeEvent event) {};
27 default void onNodeDeleted(NodeDeletionEvent nodeDeletionEvent) {};
28 default void onNodeInserted(NodeModel parent, NodeModel child, int newIndex) {};
2629 }
5050 import org.freeplane.core.ui.AFreeplaneAction;
5151 import org.freeplane.core.undo.IActor;
5252 import org.freeplane.core.util.DelayedRunner;
53 import org.freeplane.features.clipboard.ClipboardControllers;
5354 import org.freeplane.features.explorer.MapExplorerController;
5455 import org.freeplane.features.filter.FilterController;
5556 import org.freeplane.features.filter.condition.ConditionFactory;
5657 import org.freeplane.features.map.MapWriter.Mode;
5758 import org.freeplane.features.map.NodeModel.NodeChangeType;
59 import org.freeplane.features.map.clipboard.MapClipboardController;
5860 import org.freeplane.features.mode.AController.IActionOnChange;
5961 import org.freeplane.features.mode.Controller;
6062 import org.freeplane.features.mode.ModeController;
271273
272274
273275 /**
274 * This class sortes nodes by ascending depth of their paths to root. This
276 * This class sorts nodes by ascending depth of their paths to root. This
275277 * is useful to assure that children are cutted <b>before </b> their
276278 * fathers!!!. Moreover, it sorts nodes with the same depth according to
277279 * their position relative to each other.
346348 addNodeSelectionListener(actionSelectorOnChange);
347349 addNodeChangeListener(actionSelectorOnChange);
348350 addMapChangeListener(actionSelectorOnChange);
349
351 final MapClipboardController mapClipboardController = createMapClipboardController();
352 modeController.addExtension(MapClipboardController.class, mapClipboardController);
350353 createActions(modeController);
354 }
355
356
357 protected MapClipboardController createMapClipboardController() {
358 final MapClipboardController mapClipboardController = new MapClipboardController();
359 modeController.getExtension(ClipboardControllers.class).add(mapClipboardController);
360 return mapClipboardController;
351361 }
352362
353363 public void unfoldAndScroll(final NodeModel node) {
3030 class ToggleFoldedAction extends AFreeplaneAction {
3131 static final String NAME = "toggleFolded";
3232 /**
33 *
33 *
3434 */
3535 private static final long serialVersionUID = 1L;
3636
3838 super("ToggleFoldedAction");
3939 }
4040
41 @Override
4142 public void actionPerformed(final ActionEvent e) {
4243 MapController r = Controller.getCurrentModeController().getMapController();
4344 final Collection<NodeModel> selectedNodes = r.getSelectedNodes();
0 package org.freeplane.features.map.clipboard;
1
2 import java.awt.datatransfer.StringSelection;
3 import java.awt.event.ActionEvent;
4 import java.util.Collection;
5 import org.freeplane.core.ui.AFreeplaneAction;
6 import org.freeplane.features.map.NodeModel;
7 import org.freeplane.features.mode.Controller;
8
9 public class CopyIDAction extends AFreeplaneAction {
10 public CopyIDAction() {
11 super("CopyIDAction");
12 }
13
14 /**
15 *
16 */
17 private static final long serialVersionUID = 1L;
18
19 public void actionPerformed(final ActionEvent e) {
20 final Controller controller = Controller.getCurrentController();
21 final Collection<NodeModel> selectedNodes = controller.getSelection().getSelection();
22 StringBuilder sb = null;
23 for (final NodeModel node : selectedNodes) {
24 if (sb == null) {
25 sb = new StringBuilder();
26 }
27 else {
28 sb.append(", ");
29 }
30 sb.append(node.createID());
31 }
32 final String idString = sb.toString();
33 final MapClipboardController clipboardController = (MapClipboardController) Controller.getCurrentModeController().getExtension(
34 MapClipboardController.class);
35 clipboardController.setClipboardContents(new StringSelection(idString));
36 controller.getViewController().out(idString);
37 }
38 }
0 package org.freeplane.features.map.clipboard;
1
2 import java.awt.datatransfer.StringSelection;
3 import java.awt.event.ActionEvent;
4 import java.io.File;
5
6 import org.freeplane.core.ui.AFreeplaneAction;
7 import org.freeplane.core.ui.components.UITools;
8 import org.freeplane.core.util.TextUtils;
9 import org.freeplane.features.map.NodeModel;
10 import org.freeplane.features.mode.Controller;
11 import org.freeplane.features.url.FreeplaneUriConverter;
12
13 public class CopyNodeURIAction extends AFreeplaneAction {
14 public CopyNodeURIAction() {
15 super("CopyNodeURIAction");
16 }
17
18 /**
19 *
20 */
21 private static final long serialVersionUID = 1L;
22 public void actionPerformed(final ActionEvent e) {
23 final Controller controller = Controller.getCurrentController();
24 final NodeModel node = controller.getSelection().getSelected();
25 File mindmapFile = node.getMap().getFile();
26 if(mindmapFile == null) {
27 UITools.errorMessage(TextUtils.getRawText("map_not_saved"));
28 return;
29 }
30 final String idString = uri(node, mindmapFile);
31 final MapClipboardController clipboardController = Controller.getCurrentModeController().getExtension(
32 MapClipboardController.class);
33 clipboardController.setClipboardContents(new StringSelection(idString));
34 controller.getViewController().out(idString);
35 }
36
37 public String uri(final NodeModel node, File mindmapFile) {
38 final String fileBasedUri = mindmapFile.toURI().toString() + '#' + node.createID();
39 final FreeplaneUriConverter freeplaneUriConverter = new FreeplaneUriConverter();
40 return freeplaneUriConverter.freeplaneUriForFile(fileBasedUri);
41 }
42 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.clipboard;
20
21 import java.awt.datatransfer.Transferable;
22 import java.awt.event.ActionEvent;
23 import java.util.Collection;
24 import org.freeplane.core.ui.AFreeplaneAction;
25 import org.freeplane.features.map.NodeModel;
26 import org.freeplane.features.mode.Controller;
27 import org.freeplane.features.mode.ModeController;
28
29 class CopySingleAction extends AFreeplaneAction {
30 /**
31 *
32 */
33 private static final long serialVersionUID = 1L;
34
35 public CopySingleAction() {
36 super("CopySingleAction");
37 }
38
39 public void actionPerformed(final ActionEvent e) {
40 final Controller controller = Controller.getCurrentController();
41 final Collection<NodeModel> selection = controller.getSelection().getSortedSelection(false);
42 final ModeController modeController = Controller.getCurrentModeController();
43 final Transferable copy = ((MapClipboardController) modeController.getExtension(MapClipboardController.class))
44 .copySingle(selection);
45 if (copy != null) {
46 ((MapClipboardController) modeController.getExtension(MapClipboardController.class)).setClipboardContents(copy);
47 }
48 }
49 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is created by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.clipboard;
20
21 import java.awt.Color;
22 import java.awt.datatransfer.Transferable;
23 import java.awt.datatransfer.UnsupportedFlavorException;
24 import java.io.BufferedWriter;
25 import java.io.File;
26 import java.io.FileOutputStream;
27 import java.io.IOException;
28 import java.io.OutputStreamWriter;
29 import java.io.StringReader;
30 import java.io.StringWriter;
31 import java.io.Writer;
32 import java.util.Collection;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.HashSet;
36 import java.util.Iterator;
37 import java.util.List;
38 import java.util.Vector;
39
40 import org.freeplane.core.extension.IExtension;
41 import org.freeplane.core.resources.ResourceController;
42 import org.freeplane.core.util.LogUtils;
43 import org.freeplane.features.clipboard.ClipboardAccessor;
44 import org.freeplane.features.clipboard.ClipboardController;
45 import org.freeplane.features.link.NodeLinks;
46 import org.freeplane.features.map.IMapSelection;
47 import org.freeplane.features.map.MapWriter.Mode;
48 import org.freeplane.features.map.NodeModel;
49 import org.freeplane.features.mode.Controller;
50 import org.freeplane.features.mode.ModeController;
51 import org.freeplane.features.nodestyle.NodeStyleModel;
52 import org.freeplane.features.text.TextController;
53
54 /**
55 * @author Dimitry Polivaev
56 */
57 public class MapClipboardController implements IExtension, ClipboardController {
58 public static final String NODESEPARATOR = "<nodeseparator>";
59
60 public static MapClipboardController getController() {
61 return Controller.getCurrentModeController().getExtension(MapClipboardController.class);
62 }
63
64 public static void install( final MapClipboardController clipboardController) {
65 Controller.getCurrentModeController().addExtension(MapClipboardController.class, clipboardController);
66 }
67
68
69 public MapClipboardController() {
70 super();
71 createActions();
72 }
73
74 public void setClipboardContents(Transferable transferable) {
75 (Controller.getCurrentModeController().getExtension(ClipboardAccessor.class)).setClipboardContents(transferable);
76 }
77
78 private void collectColors(final NodeModel node, final HashSet<Color> colors) {
79 final Color color = NodeStyleModel.getColor(node);
80 if (color != null) {
81 colors.add(color);
82 }
83 for (final NodeModel child : node.getChildren()) {
84 collectColors(child, colors);
85 }
86 }
87
88 public MindMapNodesSelection copy(final Collection<NodeModel> selectedNodes, final boolean copyInvisible) {
89 try {
90 final String forNodesFlavor = createForNodesFlavor(selectedNodes, copyInvisible);
91 final String plainText = getAsPlainText(selectedNodes);
92 return new MindMapNodesSelection(forNodesFlavor, plainText, getAsRTF(selectedNodes),
93 getAsHTML(selectedNodes));
94 }
95 catch (final UnsupportedFlavorException ex) {
96 LogUtils.severe(ex);
97 }
98 catch (final IOException ex) {
99 LogUtils.severe(ex);
100 }
101 return null;
102 }
103
104 public Transferable copy(final IMapSelection selection) {
105 return copy(selection.getSortedSelection(true), false);
106 }
107
108 public Transferable copy(final NodeModel node, final boolean saveInvisible) {
109 final StringWriter stringWriter = new StringWriter();
110 try {
111 Controller.getCurrentModeController().getMapController().getMapWriter().writeNodeAsXml(stringWriter, node, Mode.CLIPBOARD,
112 saveInvisible, true, false);
113 }
114 catch (final IOException e) {
115 LogUtils.severe(e);
116 }
117 return new MindMapNodesSelection(stringWriter.toString());
118 }
119
120 public Transferable copySingle(final Collection<NodeModel> source) {
121 final int size = source.size();
122 final Vector<NodeModel> target = new Vector<NodeModel>(size);
123 target.setSize(size);
124 int i = 0;
125 for (NodeModel node : source) {
126 target.set(i, new SingleCopySource(node));
127 i++;
128 }
129 return copy(target, false);
130 }
131
132 /**
133 *
134 */
135 private void createActions() {
136 final Controller controller = Controller.getCurrentController();
137 ModeController modeController = controller.getModeController();
138 modeController.addAction(new CopySingleAction());
139 if(!controller.getViewController().isApplet())
140 modeController.addAction(new CopyIDAction());
141 modeController.addAction(new CopyNodeURIAction());
142 }
143
144 public String createForNodesFlavor(final Collection<NodeModel> selectedNodes, final boolean copyInvisible)
145 throws UnsupportedFlavorException, IOException {
146 String forNodesFlavor = "";
147 boolean firstLoop = true;
148 for (final NodeModel tmpNode : selectedNodes) {
149 if (firstLoop) {
150 firstLoop = false;
151 }
152 else {
153 forNodesFlavor += "<nodeseparator>";
154 }
155 forNodesFlavor += copy(tmpNode, copyInvisible).getTransferData(MindMapNodesSelection.mindMapNodesFlavor);
156 }
157 return forNodesFlavor;
158 }
159
160 public String getAsHTML(final Collection<NodeModel> selectedNodes) {
161 try {
162 final StringWriter stringWriter = new StringWriter();
163 final BufferedWriter fileout = new BufferedWriter(stringWriter);
164 writeHTML(selectedNodes, fileout);
165 fileout.close();
166 return stringWriter.toString();
167 }
168 catch (final Exception e) {
169 LogUtils.severe(e);
170 return null;
171 }
172 }
173
174 public String getAsPlainText(final Collection<NodeModel> selectedNodes) {
175 try {
176 final StringWriter stringWriter = new StringWriter();
177 final BufferedWriter fileout = new BufferedWriter(stringWriter);
178 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
179 writeTXT(it.next(), fileout,/* depth= */0);
180 }
181 fileout.close();
182 return stringWriter.toString();
183 }
184 catch (final Exception e) {
185 LogUtils.severe(e);
186 return null;
187 }
188 }
189
190 public String getAsRTF(final Collection<NodeModel> selectedNodes) {
191 try {
192 final StringWriter stringWriter = new StringWriter();
193 final BufferedWriter fileout = new BufferedWriter(stringWriter);
194 writeRTF(selectedNodes, fileout);
195 fileout.close();
196 return stringWriter.toString();
197 }
198 catch (final Exception e) {
199 LogUtils.severe(e);
200 return null;
201 }
202 }
203
204
205 private String rtfEscapeUnicodeAndSpecialCharacters(final String text) {
206 final int len = text.length();
207 final StringBuilder result = new StringBuilder(len);
208 int intValue;
209 char myChar;
210 for (int i = 0; i < len; ++i) {
211 myChar = text.charAt(i);
212 intValue = text.charAt(i);
213 if (intValue > 128) {
214 result.append("\\u").append(intValue).append("?");
215 }
216 else {
217 switch (myChar) {
218 case '\\':
219 result.append("\\\\");
220 break;
221 case '{':
222 result.append("\\{");
223 break;
224 case '}':
225 result.append("\\}");
226 break;
227 case '\n':
228 result.append(" \\line ");
229 break;
230 default:
231 result.append(myChar);
232 }
233 }
234 }
235 return result.toString();
236 }
237
238 public void saveHTML(final NodeModel rootNodeOfBranch, final File file) throws IOException {
239 saveHTML(Collections.singletonList(rootNodeOfBranch), file);
240 }
241
242 public void saveHTML(final List<NodeModel> branchRootNodes, final File file) throws IOException {
243 final BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
244 final MindMapHTMLWriter htmlWriter = new MindMapHTMLWriter(Controller.getCurrentModeController().getMapController(), fileout);
245 htmlWriter.writeHTML(branchRootNodes);
246 }
247
248 public boolean saveTXT(final NodeModel rootNodeOfBranch, final File file) {
249 try {
250 final BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
251 writeTXT(rootNodeOfBranch, fileout,/* depth= */
252 0);
253 fileout.close();
254 return true;
255 }
256 catch (final Exception e) {
257 LogUtils.severe("Error in MindMapMapModel.saveTXT(): ", e);
258 return false;
259 }
260 }
261
262 public NodeModel duplicate(final NodeModel source, boolean withChildren) {
263 try {
264 final StringWriter writer = new StringWriter();
265 ModeController modeController = Controller.getCurrentModeController();
266 modeController.getMapController().getMapWriter()
267 .writeNodeAsXml(writer, source, Mode.CLIPBOARD, true, withChildren, false);
268 final String result = writer.toString();
269 final NodeModel copy = modeController.getMapController().getMapReader().createNodeTreeFromXml(
270 source.getMap(), new StringReader(result), Mode.CLIPBOARD);
271 copy.setFolded(false);
272 return copy;
273 }
274 catch (final Exception e) {
275 LogUtils.severe(e);
276 return null;
277 }
278 }
279
280 private void writeChildrenRTF(final NodeModel node, final Writer fileout, final int depth,
281 final HashMap<Color, Integer> colorTable) throws IOException {
282 for (final NodeModel child : node.getChildren()) {
283 if (child.hasVisibleContent()) {
284 writeRTF(child, fileout, depth + 1, colorTable);
285 }
286 else {
287 writeChildrenRTF(child, fileout, depth, colorTable);
288 }
289 }
290 }
291
292 private void writeChildrenText(final NodeModel node, final Writer fileout, final int depth, String indentation)
293 throws IOException {
294 for (final NodeModel child : node.getChildren()) {
295 if (child.hasVisibleContent()) {
296 writeTXT(child, fileout, depth + 1, indentation);
297 }
298 else {
299 writeChildrenText(child, fileout, depth, indentation);
300 }
301 }
302 }
303
304 public void writeHTML(final Collection<NodeModel> selectedNodes, final Writer fileout) throws IOException {
305 final MindMapHTMLWriter htmlWriter = new MindMapHTMLWriter(Controller.getCurrentModeController().getMapController(), fileout);
306 htmlWriter.writeHTML(selectedNodes);
307 }
308
309 public boolean writeRTF(final Collection<NodeModel> selectedNodes, final BufferedWriter fileout) {
310 try {
311 final HashSet<Color> colors = new HashSet<Color>();
312 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
313 collectColors(it.next(), colors);
314 }
315 String colorTableString = "{\\colortbl;\\red0\\green0\\blue255;";
316 final HashMap<Color, Integer> colorTable = new HashMap<Color, Integer>();
317 int colorPosition = 2;
318 for (final Color color : colors) {
319 colorTableString += "\\red" + color.getRed() + "\\green" + color.getGreen() + "\\blue"
320 + color.getBlue() + ";";
321 colorTable.put(color, new Integer(colorPosition));
322 }
323 colorTableString += "}";
324 fileout.write("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fswiss\\fcharset0 Arial;}"
325 + colorTableString + "}" + "\\viewkind4\\uc1\\pard\\f0\\fs20{}");
326 for (final Iterator<NodeModel> it = selectedNodes.iterator(); it.hasNext();) {
327 writeRTF(it.next(), fileout,/* depth= */0, colorTable);
328 }
329 fileout.write("}");
330 return true;
331 }
332 catch (final Exception e) {
333 LogUtils.severe(e);
334 return false;
335 }
336 }
337
338 public void writeRTF(final NodeModel mindMapNodeModel, final Writer fileout, final int depth,
339 final HashMap<Color, Integer> colorTable) throws IOException {
340 String pre = "{" + "\\li" + depth * 350;
341 String level;
342 if (depth <= 8) {
343 level = "\\outlinelevel" + depth;
344 }
345 else {
346 level = "";
347 }
348 String fontsize = "";
349 if (NodeStyleModel.getColor(mindMapNodeModel) != null) {
350 pre += "\\cf" + colorTable.get(NodeStyleModel.getColor(mindMapNodeModel)).intValue();
351 }
352 final NodeStyleModel font = NodeStyleModel.getModel(mindMapNodeModel);
353 if (font != null) {
354 if (Boolean.TRUE.equals(font.isItalic())) {
355 pre += "\\i ";
356 }
357 if (Boolean.TRUE.equals(font.isBold())) {
358 pre += "\\b ";
359 }
360 if (font.getFontSize() != null) {
361 fontsize = "\\fs" + Math.round(1.5 * font.getFontSize());
362 pre += fontsize;
363 }
364 }
365 pre += "{}";
366 fileout.write("\\li" + depth * 350 + level + "{}");
367 final String nodeText = TextController.getController().getPlainTransformedText(mindMapNodeModel);
368 if (nodeText.matches(" *")) {
369 fileout.write("o");
370 }
371 else {
372 final String text = rtfEscapeUnicodeAndSpecialCharacters(nodeText);
373 if (NodeLinks.getValidLink(mindMapNodeModel) != null) {
374 final String link = rtfEscapeUnicodeAndSpecialCharacters(NodeLinks.getLinkAsString(mindMapNodeModel));
375 if (link.equals(nodeText)) {
376 fileout.write(pre + "<{\\ul\\cf1 " + link + "}>" + "}");
377 }
378 else {
379 fileout.write("{" + fontsize + pre + text + "} ");
380 fileout.write("<{\\ul\\cf1 " + link + "}}>");
381 }
382 }
383 else {
384 fileout.write(pre + text + "}");
385 }
386 }
387 fileout.write("\\par");
388 fileout.write("\n");
389 writeChildrenRTF(mindMapNodeModel, fileout, depth, colorTable);
390 }
391
392 public void writeTXT(final NodeModel mindMapNodeModel, final Writer fileout, final int depth) throws IOException {
393 boolean indentationUsesTabsInTextOutput = ResourceController.getResourceController().getBooleanProperty("indentationUsesTabsInTextOutput");
394 String indentation = indentationUsesTabsInTextOutput ? "\t" : " ";
395 writeTXT(mindMapNodeModel, fileout, depth, indentation);
396 }
397
398 private void writeTXT(final NodeModel mindMapNodeModel, final Writer fileout, final int depth, String indentation) throws IOException {
399 String plainTextContent = TextController.getController().getPlainTransformedText(mindMapNodeModel).replace('\n', ' ');
400 for (int i = 0; i < depth; ++i) {
401 fileout.write(indentation);
402 }
403 if (NodeLinks.getValidLink(mindMapNodeModel) != null) {
404 final String link = NodeLinks.getLinkAsString(mindMapNodeModel);
405 if (!link.equals(plainTextContent)) {
406 fileout.write(plainTextContent + " ");
407 }
408 fileout.write("<" + link + ">");
409 }
410 else {
411 fileout.write(plainTextContent);
412 }
413 fileout.write("\n");
414 writeChildrenText(mindMapNodeModel, fileout, depth, indentation);
415 }
416
417 @Override
418 public boolean canCopy() {
419 return true;
420 }
421
422 @Override
423 public void copy() {
424 final Controller controller = Controller.getCurrentController();
425 final IMapSelection selection = controller.getSelection();
426 if (selection != null) {
427 final Transferable copy = copy(selection);
428 if (copy != null) {
429 ClipboardAccessor.getController().setClipboardContents(copy);
430 }
431 }
432 }
433
434 @Override
435 public int getPriority() {
436 return Integer.MIN_VALUE;
437 }
438 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.clipboard;
20
21 import static org.freeplane.features.nodestyle.FontUtils.isStrikedThrough;
22
23 import java.awt.Color;
24 import java.awt.Font;
25 import java.io.IOException;
26 import java.io.Writer;
27 import java.util.Collection;
28 import java.util.Collections;
29 import java.util.List;
30
31 import org.freeplane.core.resources.ResourceController;
32 import org.freeplane.core.ui.LengthUnits;
33 import org.freeplane.core.util.ColorUtils;
34 import org.freeplane.core.util.FileUtils;
35 import org.freeplane.core.util.HtmlUtils;
36 import org.freeplane.core.util.Quantity;
37 import org.freeplane.features.icon.IconController;
38 import org.freeplane.features.icon.MindIcon;
39 import org.freeplane.features.link.NodeLinks;
40 import org.freeplane.features.map.MapController;
41 import org.freeplane.features.map.MapModel;
42 import org.freeplane.features.map.NodeModel;
43 import org.freeplane.features.nodestyle.NodeStyleController;
44 import org.freeplane.features.note.NoteModel;
45 import org.freeplane.features.styles.MapStyleModel;
46 import org.freeplane.features.text.DetailTextModel;
47 import org.freeplane.features.text.TextController;
48 import org.freeplane.features.url.UrlManager;
49
50 class MindMapHTMLWriter {
51 private static String lf = System.getProperty("line.separator");
52
53 private static String convertSpecialChar(final char c) {
54 String cvt;
55 switch (c) {
56 case 0xe4:
57 cvt = "&auml;";
58 break;
59 case 0xf6:
60 cvt = "&ouml;";
61 break;
62 case 0xfc:
63 cvt = "&uuml;";
64 break;
65 case 0xc4:
66 cvt = "&Auml;";
67 break;
68 case 0xd6:
69 cvt = "&Ouml;";
70 break;
71 case 0xdc:
72 cvt = "&Uuml;";
73 break;
74 case 0xdf:
75 cvt = "&szlig;";
76 break;
77 default:
78 cvt = "&#" + Integer.toString(c) + ";";
79 break;
80 }
81 return cvt;
82 }
83
84 private static String writeHTML_escapeUnicodeAndSpecialCharacters(final String text) {
85 final int len = text.length();
86 final StringBuilder result = new StringBuilder(len);
87 int intValue;
88 char myChar;
89 boolean previousSpace = false;
90 boolean spaceOccured = false;
91 for (int i = 0; i < len; ++i) {
92 myChar = text.charAt(i);
93 intValue = text.charAt(i);
94 if (intValue >= 128) {
95 result.append(MindMapHTMLWriter.convertSpecialChar(myChar));
96 }
97 else {
98 spaceOccured = false;
99 switch (myChar) {
100 case '&':
101 result.append("&amp;");
102 break;
103 case '<':
104 result.append("&lt;");
105 break;
106 case '>':
107 result.append("&gt;");
108 break;
109 case ' ':
110 spaceOccured = true;
111 if (previousSpace) {
112 result.append("&nbsp;");
113 }
114 else {
115 result.append(" ");
116 }
117 break;
118 case '\n':
119 result.append("\n<br>\n");
120 break;
121 default:
122 result.append(myChar);
123 }
124 previousSpace = spaceOccured;
125 }
126 }
127 return result.toString();
128 }
129
130 final private boolean basedOnHeadings;
131 final private Writer fileout;
132 final private MapController mapController;
133 private boolean writeFoldingCode;
134 private final NodeStyleController nodeStyleController;
135 private Font defaultFont;
136 private Color defaultColor;
137
138 MindMapHTMLWriter(final MapController mapController, final Writer fileout) {
139 this.mapController = mapController;
140 nodeStyleController = NodeStyleController.getController();
141 this.fileout = fileout;
142 writeFoldingCode = false;
143 basedOnHeadings = (getProperty("html_export_folding").equals("html_export_based_on_headings"));
144 }
145
146 private String fontStyle(Color color, Font font) throws IOException {
147 StringBuilder fontStyle = new StringBuilder();
148 if (color != null && (defaultColor == null || !color.equals(defaultColor)))
149 fontStyle.append("color: ").append(ColorUtils.colorToString(color)).append("; ");
150 if (font != null) {
151 final int fontSize = font.getSize();
152 if (defaultFont == null || fontSize != defaultFont.getSize())
153 fontStyle.append("font-size: ").append(fontSize).append("pt; ");
154 final String fontFamily = font.getFamily();
155 if (defaultFont == null || !fontFamily.equals(defaultFont.getFamily()))
156 fontStyle.append("font-family: \"").append(fontFamily).append("\", sans-serif; ");
157 if ((defaultFont == null || !defaultFont.isItalic()) && font.isItalic()) {
158 fontStyle.append("font-style: italic; ");
159 }
160 if ((defaultFont == null || !defaultFont.isBold()) && font.isBold()) {
161 fontStyle.append("font-weight: bold; ");
162 }
163 if ((defaultFont == null || !isStrikedThrough(defaultFont)) && isStrikedThrough(font)) {
164 fontStyle.append("text-decoration: line-through; ");
165 }
166 }
167 return fontStyle.toString();
168 }
169
170 private String getProperty(final String key) {
171 return ResourceController.getResourceController().getProperty(key);
172 }
173
174 private void writeBodyWithFolding(final NodeModel rootNodeOfBranch) throws IOException {
175 writeJavaScript();
176 fileout.write("<SPAN class=\"foldspecial\" onclick=\"unfold_document()\">All +</SPAN>" + lf);
177 fileout.write("<SPAN class=\"foldspecial\" onclick=\"fold_document()\">All -</SPAN>" + lf);
178 writeHTML(rootNodeOfBranch, "1", 0, /* isRoot */true, true, /* depth */
179 1);
180 fileout.write("<SCRIPT type=\"text/javascript\">" + lf);
181 fileout.write("fold_document();" + lf);
182 fileout.write("</SCRIPT>" + lf);
183 }
184
185 private void writeFoldingButtons(final String localParentID) throws IOException {
186 fileout.write("<span id=\"show" + localParentID + "\" class=\"foldclosed\" onClick=\"show_folder('"
187 + localParentID + "')\" style=\"POSITION: absolute\">+</span> " + "<span id=\"hide" + localParentID
188 + "\" class=\"foldopened\" onClick=\"hide_folder('" + localParentID + "')\">-</span>");
189 fileout.write("\n");
190 }
191
192 void writeHTML(final Collection<NodeModel> selectedNodes) throws IOException {
193 fileout.write("<html>" + lf + "<head>" + lf);
194 if (!selectedNodes.isEmpty()) {
195 final MapModel map = selectedNodes.iterator().next().getMap();
196 setDefaultsFrom(map);
197 writeStyle();
198 }
199 fileout.write(lf + "</head>" + lf + "<body>" + lf);
200 for (NodeModel node : selectedNodes) {
201 writeHTML(node, "1", 0, /* isRoot */true, true, /* depth */1);
202 }
203 fileout.write("</body>" + lf);
204 fileout.write("</html>" + lf);
205 fileout.close();
206 resetDefaults();
207 }
208
209 private void resetDefaults() {
210 defaultFont = null;
211 defaultColor = null;
212 }
213
214 private void setDefaultsFrom(MapModel map) {
215 final MapStyleModel model = MapStyleModel.getExtension(map);
216 final NodeModel styleNode = model.getStyleNodeSafe(MapStyleModel.DEFAULT_STYLE);
217 defaultFont = nodeStyleController.getFont(styleNode);
218 defaultColor = nodeStyleController.getColor(styleNode);
219 }
220
221 void writeHTML(final List<NodeModel> branchRootNodes) throws IOException {
222 if(branchRootNodes.isEmpty())
223 return;
224 NodeModel firstNode = branchRootNodes.get(0);
225 MapModel map = firstNode.getMap();
226 setDefaultsFrom(map);
227 final String htmlExportFoldingOption = getProperty("html_export_folding");
228 writeFoldingCode = htmlExportFoldingOption.equals("html_export_fold_all")
229 || (htmlExportFoldingOption.equals("html_export_fold_currently_folded")
230 && hasFoldedStrictDescendant(branchRootNodes));
231 ResourceController.getResourceController().getBooleanProperty("export_icons_in_html");
232 fileout
233 .write(
234 "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"
235 + lf + "<html>" + lf + "<head>" + lf);
236 fileout.write("<title>"
237 + MindMapHTMLWriter.writeHTML_escapeUnicodeAndSpecialCharacters(
238 TextController.getController().getPlainTransformedTextWithoutNodeNumber(branchRootNodes.size() == 1 ? firstNode : map.getRootNode())
239 .replace('\n', ' '))
240 + "</title>" + lf);
241 writeStyle();
242 fileout.write(lf + "</head>" + lf + "<body");
243 final MapStyleModel style = MapStyleModel.getExtension(map);
244 final Color background = style != null ? style.getBackgroundColor() : null;
245 if (background != null) {
246 fileout.write(" bgcolor=" + ColorUtils.colorToString(background));
247 }
248 fileout.write(">" + lf);
249 for(NodeModel node : branchRootNodes) {
250 if (writeFoldingCode) {
251 writeBodyWithFolding(node);
252 } else {
253 writeHTML(node, "1", 0, /* isRoot */true, true, /* depth */ 1);
254 }
255 }
256 fileout.write("</body>" + lf);
257 fileout.write("</html>" + lf);
258 fileout.close();
259 resetDefaults();
260 }
261
262 private boolean hasFoldedStrictDescendant(List<NodeModel> branchRootNodes) {
263 for(NodeModel node : branchRootNodes) {
264 if (mapController.hasFoldedStrictDescendant(node))
265 return true;
266 }
267 return false;
268 }
269
270 private int writeHTML(final NodeModel model, final String parentID, int lastChildNumber, final boolean isRoot,
271 final boolean treatAsParagraph, final int depth)
272 throws IOException {
273 if (!model.hasVisibleContent()) {
274 for (final NodeModel child : model.getChildren()) {
275 lastChildNumber = writeHTML(child, parentID, lastChildNumber, false, false, depth);
276 }
277 return lastChildNumber;
278 }
279 boolean createFolding = false;
280 if (writeFoldingCode) {
281 createFolding = mapController.isFolded(model);
282 if (getProperty("html_export_folding").equals("html_export_fold_all")) {
283 createFolding = model.hasChildren();
284 }
285 if (getProperty("html_export_folding").equals("html_export_no_folding") || basedOnHeadings || isRoot) {
286 createFolding = false;
287 }
288 }
289 final TextController textController = TextController.getController();
290 final Object userObject = model.getUserObject();
291 final String text = textController.getTransformedTextNoThrow(userObject, model, userObject);
292 final boolean hasHtml = text.startsWith("<html>");
293 final boolean heading = basedOnHeadings && !hasHtml && model.hasChildren() && depth <= 6;
294 if (!treatAsParagraph && !basedOnHeadings) {
295 fileout.write("<li>");
296 }
297 else {
298 if (heading) {
299 fileout.write(lf + "<h" + depth + ">");
300 }
301 else if (!hasHtml) {
302 fileout.write("<p>");
303 }
304 }
305 String localParentID = parentID;
306 if (createFolding) {
307 lastChildNumber++;
308 localParentID = parentID + "_" + lastChildNumber;
309 writeFoldingButtons(localParentID);
310 }
311 final String fontStyle = fontStyle(nodeStyleController.getColor(model), nodeStyleController.getFont(model));
312 boolean shouldOutputFontStyle = !fontStyle.equals("");
313 if (shouldOutputFontStyle) {
314 fileout.write("<span style=\"" + fontStyle + "\">");
315 }
316 String link = NodeLinks.getLinkAsString(model);
317 if (link != null) {
318 if (link.endsWith(UrlManager.FREEPLANE_FILE_EXTENSION)) {
319 link += ".html";
320 }
321 fileout.write("<a href=\"" + link + "\" target=\"_blank\">");
322 }
323 if (ResourceController.getResourceController().getBooleanProperty("export_icons_in_html")) {
324 writeIcons(model);
325 }
326 writeModelContent(text);
327 if (link != null) {
328 fileout.write("</a>" + lf);
329 }
330 if (shouldOutputFontStyle) {
331 fileout.write("</span>");
332 }
333 final String detailText = DetailTextModel.getDetailTextText(model);
334 if (detailText != null) {
335 writeModelContent(detailText);
336 }
337 final String noteContent = NoteModel.getNoteText(model);
338 if (noteContent != null) {
339 writeModelContent(noteContent);
340 }
341 if (heading) {
342 fileout.write("</h" + depth + ">" + lf);
343 }
344 if (getProperty("html_export_folding").equals("html_export_based_on_headings")) {
345 for (final NodeModel child : model.getChildren()) {
346 lastChildNumber = writeHTML(child, parentID, lastChildNumber, /*isRoot=*/false,
347 false, depth + 1);
348 }
349 return lastChildNumber;
350 }
351 if (model.hasChildren()) {
352 if (getProperty("html_export_folding").equals("html_export_based_on_headings")) {
353 for (final NodeModel child : model.getChildren()) {
354 lastChildNumber = writeHTML(child, parentID, lastChildNumber,
355 /*isRoot=*/false, false, depth + 1);
356 }
357 }
358 else if (createFolding) {
359 fileout.write(lf + "<ul id=\"fold" + localParentID
360 + "\" style=\"POSITION: relative; VISIBILITY: visible;\">" + lf);
361 int localLastChildNumber = 0;
362 for (final NodeModel child : model.getChildren()) {
363 localLastChildNumber = writeHTML(child, localParentID, localLastChildNumber,
364 /* isRoot=*/false, false, depth + 1);
365 }
366 }
367 else {
368 fileout.write(lf + "<ul>" + lf);
369 for (final NodeModel child : model.getChildren()) {
370 lastChildNumber = writeHTML(child, parentID, lastChildNumber,
371 /* isRoot= */false, false, depth + 1);
372 }
373 }
374 fileout.write("</ul>" + lf);
375 }
376 if (!treatAsParagraph) {
377 fileout.write("</li>" + lf);
378 }
379 return lastChildNumber;
380 }
381
382 private void writeIcons(final NodeModel model) throws IOException {
383 final IconController iconController = IconController.getController();
384 final Collection<MindIcon> icons = iconController.getIcons(model);
385 for (MindIcon icon : icons) {
386 final String iconFileName = icon.getSource();
387 fileout.write("<img src=\"icons/" + iconFileName + "\" alt=\"" + icon.getTranslatedDescription() + "\"");
388 if (iconFileName.endsWith(".svg")) {
389 final Quantity<LengthUnits> iconSize = iconController.getIconSize(model);
390 fileout.write(" height = \"" + iconSize.toBaseUnitsRounded() + "\"");
391 }
392 fileout.write(">");
393 }
394 }
395
396 private void writeJavaScript() throws IOException {
397 fileout.write("<script type=\"text/javascript\">" + lf);
398 fileout.write(FileUtils.slurpResource("/html/folding.js"));
399 fileout.write(lf + "</script>" + lf);
400 }
401
402 private void writeModelContent(final String string) throws IOException {
403 if (string.matches(" +")) {
404 fileout.write("&nbsp;");
405 }
406 else if (string.startsWith("<html")) {
407 String output = string.substring(6);
408 int start = output.indexOf("<body");
409 if (start == -1) {
410 start = output.indexOf('>') + 1;
411 }
412 else {
413 start = output.indexOf('>', start + 5) + 1;
414 }
415 int end = output.indexOf("</body>");
416 if (end == -1) {
417 end = output.indexOf("</html>");
418 }
419 if (end == -1) {
420 end = output.length();
421 }
422 output = output.substring(start, end);
423 fileout.write(output);
424 }
425 else {
426 fileout.write(HtmlUtils.unicodeToHTMLUnicodeEntity(string));
427 }
428 }
429
430 private void writeStyle() throws IOException {
431 fileout.write("<style type=\"text/css\">" + lf);
432 fileout.write(" body {");
433 writeDefaultFontStyle();
434 fileout.write("}" + lf);
435 fileout.write(FileUtils.slurpResource("/html/freeplane.css"));
436 if (writeFoldingCode)
437 fileout.write(FileUtils.slurpResource("/html/folding.css"));
438 fileout.write(lf + "</style>" + lf //
439 + "<!-- ^ Position is not set to relative / absolute here because of Mozilla -->");
440 }
441
442 private void writeDefaultFontStyle() throws IOException {
443 Font font = defaultFont;
444 defaultFont = null;
445 Color color = defaultColor;
446 defaultColor = null;
447 fileout.write(fontStyle(color, font));
448 defaultFont = font;
449 defaultColor = color;
450 }
451 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.clipboard;
20
21 import java.awt.datatransfer.Clipboard;
22 import java.awt.datatransfer.ClipboardOwner;
23 import java.awt.datatransfer.DataFlavor;
24 import java.awt.datatransfer.Transferable;
25 import java.awt.datatransfer.UnsupportedFlavorException;
26 import java.io.ByteArrayInputStream;
27 import java.util.Collection;
28
29 import org.freeplane.core.util.LogUtils;
30 import org.freeplane.features.map.NodeModel;
31
32 public class MindMapNodesSelection implements Transferable, ClipboardOwner {
33 public static DataFlavor dropActionFlavor = null;
34 public static DataFlavor fileListFlavor = null;
35 public static DataFlavor htmlFlavor = null;
36 public static DataFlavor mindMapNodesFlavor = null;
37 public static DataFlavor mindMapNodeObjectsFlavor = null;
38 public static DataFlavor mindMapNodeSingleObjectsFlavor = null;
39 public static DataFlavor rtfFlavor = null;
40 static {
41 try {
42 MindMapNodesSelection.mindMapNodesFlavor = new DataFlavor("text/freeplane-nodes; class=java.lang.String");
43 MindMapNodesSelection.mindMapNodeObjectsFlavor = new DataFlavor("application/freeplane-nodes; class=java.util.Collection");
44 MindMapNodesSelection.mindMapNodeSingleObjectsFlavor = new DataFlavor("application/freeplane-single-nodes; class=java.util.Collection");
45 MindMapNodesSelection.rtfFlavor = new DataFlavor("text/rtf; class=java.io.InputStream");
46 MindMapNodesSelection.htmlFlavor = new DataFlavor("text/html; class=java.lang.String");
47 MindMapNodesSelection.fileListFlavor = new DataFlavor("application/x-java-file-list; class=java.util.List");
48 MindMapNodesSelection.dropActionFlavor = new DataFlavor("text/drop-action; class=java.lang.String");
49 }
50 catch (final Exception e) {
51 LogUtils.severe(e);
52 }
53 }
54 final private String htmlContent;
55 final private String nodesContent;
56 final private String rtfContent;
57 final private String stringContent;
58 private String dropActionContent;
59 private Collection<NodeModel> nodes;
60 private boolean selectionContainsSingleNodes;
61
62 public MindMapNodesSelection(final String nodesContent, final String stringContent, final String rtfContent,
63 final String htmlContent) {
64 this.nodesContent = nodesContent;
65 this.rtfContent = rtfContent;
66 this.stringContent = stringContent;
67 this.htmlContent = htmlContent;
68 this.dropActionContent = null;
69 }
70
71 public MindMapNodesSelection(final String nodesContent) {
72 this(nodesContent, null, null, null);
73 }
74
75 public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException {
76 if (flavor.equals(DataFlavor.stringFlavor)) {
77 return stringContent;
78 }
79 if (flavor.equals(MindMapNodesSelection.mindMapNodesFlavor)) {
80 return nodesContent;
81 }
82 if (flavor.equals(MindMapNodesSelection.dropActionFlavor)) {
83 return dropActionContent;
84 }
85 if (flavor.equals(MindMapNodesSelection.rtfFlavor)) {
86 final byte[] byteArray = rtfContent.getBytes();
87 return new ByteArrayInputStream(byteArray);
88 }
89 if (flavor.equals(MindMapNodesSelection.htmlFlavor) && htmlContent != null) {
90 return htmlContent;
91 }
92 if (containsObjectsFor(flavor)) {
93 return nodes;
94 }
95 throw new UnsupportedFlavorException(flavor);
96 }
97
98 boolean containsObjectsFor(final DataFlavor flavor) {
99 return nodes != null && (flavor.equals(MindMapNodesSelection.mindMapNodeObjectsFlavor) && ! selectionContainsSingleNodes
100 || flavor.equals(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor) && selectionContainsSingleNodes);
101 }
102
103 public DataFlavor[] getTransferDataFlavors() {
104 return new DataFlavor[] { DataFlavor.stringFlavor, MindMapNodesSelection.mindMapNodesFlavor,
105 MindMapNodesSelection.rtfFlavor, MindMapNodesSelection.htmlFlavor,
106 MindMapNodesSelection.dropActionFlavor,
107 MindMapNodesSelection.mindMapNodeObjectsFlavor , MindMapNodesSelection.mindMapNodeSingleObjectsFlavor };
108 }
109
110 public boolean isDataFlavorSupported(final DataFlavor flavor) {
111 if (flavor.equals(DataFlavor.stringFlavor) && stringContent != null) {
112 return true;
113 }
114 if (flavor.equals(MindMapNodesSelection.mindMapNodesFlavor) && nodesContent != null) {
115 return true;
116 }
117 if (flavor.equals(MindMapNodesSelection.rtfFlavor) && rtfContent != null) {
118 return true;
119 }
120 if (flavor.equals(MindMapNodesSelection.dropActionFlavor) && dropActionContent != null) {
121 return true;
122 }
123 if (flavor.equals(MindMapNodesSelection.htmlFlavor) && htmlContent != null) {
124 return true;
125 }
126 if (containsObjectsFor(flavor)) {
127 return true;
128 }
129 return false;
130 }
131
132 public void lostOwnership(final Clipboard clipboard, final Transferable contents) {
133 }
134
135 public void setDropAction(final String dropActionContent) {
136 this.dropActionContent = dropActionContent;
137 }
138
139 public void setNodeObjects(Collection<NodeModel> collection, boolean selectionContainsSingleNodes) {
140 nodes = collection;
141 this.selectionContainsSingleNodes = selectionContainsSingleNodes;
142 }
143 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2013 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.clipboard;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.Enumeration;
24 import java.util.List;
25 import java.util.Map;
26
27 import javax.swing.tree.MutableTreeNode;
28
29 import org.freeplane.core.extension.IExtension;
30 import org.freeplane.features.filter.FilterInfo;
31 import org.freeplane.features.icon.MindIcon;
32 import org.freeplane.features.map.HistoryInformationModel;
33 import org.freeplane.features.map.INodeView;
34 import org.freeplane.features.map.MapModel;
35 import org.freeplane.features.map.NodeChangeEvent;
36 import org.freeplane.features.map.NodeModel;
37 import org.freeplane.features.ui.INodeViewVisitor;
38
39 /**
40 * @author Dimitry Polivaev
41 * 03.02.2013
42 */
43 class SingleCopySource extends NodeModel {
44
45 private static final String METHOD_NOT_SUPPORTED = "method not supported";
46 private final NodeModel delegate;
47
48 @Override
49 protected List<NodeModel> getChildrenInternal() {
50 return Collections.emptyList();
51 }
52
53 @Override
54 protected void init(final Object userObject) {
55 }
56
57 public SingleCopySource(NodeModel delegate) {
58 super(null);
59 this.delegate =delegate;
60 }
61
62 @Override
63 public int hashCode() {
64 return super.hashCode();
65 }
66
67 @Override
68 public Object getUserObject() {
69 return delegate.getUserObject();
70 }
71
72 @Override
73 public boolean equals(Object obj) {
74 return super.equals(obj);
75 }
76
77 @Override
78 public void acceptViewVisitor(INodeViewVisitor visitor) {
79 throw new RuntimeException(METHOD_NOT_SUPPORTED);
80 }
81
82 @Override
83 public void addExtension(IExtension extension) {
84 throw new RuntimeException(METHOD_NOT_SUPPORTED);
85 }
86
87 @Override
88 public IExtension putExtension(IExtension extension) {
89 throw new RuntimeException(METHOD_NOT_SUPPORTED);
90 }
91
92 @Override
93 public void addIcon(MindIcon icon) {
94 throw new RuntimeException(METHOD_NOT_SUPPORTED);
95 }
96
97 @Override
98 public void addIcon(MindIcon icon, int position) {
99 throw new RuntimeException(METHOD_NOT_SUPPORTED);
100 }
101
102 @Override
103 public void addViewer(INodeView viewer) {
104 throw new RuntimeException(METHOD_NOT_SUPPORTED);
105 }
106
107 @Override
108 public boolean areViewsEmpty() {
109 throw new RuntimeException(METHOD_NOT_SUPPORTED);
110 }
111
112 @Override
113 public Enumeration<NodeModel> children() {
114 return super.children();
115 }
116
117 @Override
118 public boolean containsExtension(Class<? extends IExtension> clazz) {
119 return delegate.containsExtension(clazz);
120 }
121
122 @Override
123 public String createID() {
124 return delegate.createID();
125 }
126
127 @Override
128 public void fireNodeChanged(NodeChangeEvent nodeChangeEvent) {
129 throw new RuntimeException(METHOD_NOT_SUPPORTED);
130 }
131
132 @Override
133 public boolean getAllowsChildren() {
134 return delegate.getAllowsChildren();
135 }
136
137 @Override
138 public NodeModel getChildAt(int childIndex) {
139 return super.getChildAt(childIndex);
140 }
141
142 @Override
143 public int getChildCount() {
144 return super.getChildCount();
145 }
146
147 @Override
148 public List<NodeModel> getChildren() {
149 return super.getChildren();
150 }
151
152 @Override
153 public <T extends IExtension> T getExtension(Class<T> clazz) {
154 return delegate.getExtension(clazz);
155 }
156
157 @Override
158 public Map<Class<? extends IExtension>, IExtension> getSharedExtensions() {
159 return delegate.getSharedExtensions();
160 }
161
162 @Override
163 public FilterInfo getFilterInfo() {
164 return delegate.getFilterInfo();
165 }
166
167 @Override
168 public HistoryInformationModel getHistoryInformation() {
169 return delegate.getHistoryInformation();
170 }
171
172 @Override
173 public MindIcon getIcon(int position) {
174 return delegate.getIcon(position);
175 }
176
177 @Override
178 public List<MindIcon> getIcons() {
179 return delegate.getIcons();
180 }
181
182 @Override
183 public String getID() {
184 return delegate.getID();
185 }
186
187 @Override
188 public int getIndex(NodeModel node) {
189 return super.getIndex(node);
190 }
191
192 @Override
193 public MapModel getMap() {
194 return delegate.getMap();
195 }
196
197 @Override
198 public int getNodeLevel(boolean countHidden) {
199 return delegate.getNodeLevel(countHidden);
200 }
201
202 @Override
203 public NodeModel getParentNode() {
204 return delegate.getParentNode();
205 }
206
207 @Override
208 public NodeModel[] getPathToRoot() {
209 return delegate.getPathToRoot();
210 }
211
212 @Override
213 public String getText() {
214 return delegate.getText();
215 }
216
217 @Override
218 public Collection<INodeView> getViewers() {
219 return delegate.getViewers();
220 }
221
222 @Override
223 public boolean hasChildren() {
224 return false;
225 }
226
227 @Override
228 public boolean hasID() {
229 return delegate.hasID();
230 }
231
232 public void insert(MutableTreeNode child, int index) {
233 throw new RuntimeException(METHOD_NOT_SUPPORTED);
234 }
235
236 @Override
237 public boolean isDescendantOf(NodeModel node) {
238 return delegate.isDescendantOf(node);
239 }
240
241 @Override
242 public boolean isFolded() {
243 return false;
244 }
245
246 @Override
247 public boolean isLeaf() {
248 return delegate.isLeaf();
249 }
250
251 @Override
252 public boolean isLeft() {
253 return delegate.isLeft();
254 }
255
256 @Override
257 public boolean isNewChildLeft() {
258 return delegate.isNewChildLeft();
259 }
260
261 @Override
262 public boolean isRoot() {
263 return delegate.isRoot();
264 }
265
266 @Override
267 public boolean isVisible() {
268 return delegate.isVisible();
269 }
270
271 @Override
272 public boolean hasVisibleContent() {
273 return delegate.hasVisibleContent();
274 }
275
276 @Override
277 public boolean isHiddenSummary() {
278 return delegate.isHiddenSummary();
279 }
280
281 public void remove(MutableTreeNode node) {
282 throw new RuntimeException(METHOD_NOT_SUPPORTED);
283 }
284
285 @Override
286 public <T extends IExtension> T removeExtension(Class<T> clazz) {
287 throw new RuntimeException(METHOD_NOT_SUPPORTED);
288 }
289
290 @Override
291 public boolean removeExtension(IExtension extension) {
292 throw new RuntimeException(METHOD_NOT_SUPPORTED);
293 }
294
295 @Override
296 public int removeIcon() {
297 throw new RuntimeException(METHOD_NOT_SUPPORTED);
298 }
299
300 @Override
301 public int removeIcon(int position) {
302 throw new RuntimeException(METHOD_NOT_SUPPORTED);
303 }
304
305 @Override
306 public void removeViewer(INodeView viewer) {
307 throw new RuntimeException(METHOD_NOT_SUPPORTED);
308 }
309
310 @Override
311 public void setFolded(boolean folded) {
312 throw new RuntimeException(METHOD_NOT_SUPPORTED);
313 }
314
315 @Override
316 public void setHistoryInformation(HistoryInformationModel historyInformation) {
317 throw new RuntimeException(METHOD_NOT_SUPPORTED);
318 }
319
320 @Override
321 public void setID(String value) {
322 throw new RuntimeException(METHOD_NOT_SUPPORTED);
323 }
324
325 @Override
326 public void setLeft(boolean isLeft) {
327 throw new RuntimeException(METHOD_NOT_SUPPORTED);
328 }
329
330 @Override
331 public void setMap(MapModel map) {
332 throw new RuntimeException(METHOD_NOT_SUPPORTED);
333 }
334
335 public void setParent(MutableTreeNode newParent) {
336 throw new RuntimeException(METHOD_NOT_SUPPORTED);
337 }
338
339 @Override
340 public void setParent(NodeModel newParent) {
341 throw new RuntimeException(METHOD_NOT_SUPPORTED);
342 }
343
344 @Override
345 public String toString() {
346 return delegate.toString();
347 }
348
349 @Override
350 public int depth() {
351 return delegate.depth();
352 }
353
354 @Override
355 public void insert(NodeModel newNodeModel) {
356 throw new RuntimeException(METHOD_NOT_SUPPORTED);
357 }
358
359 @Override
360 public NodeModel getVisibleAncestorOrSelf() {
361 return delegate.getVisibleAncestorOrSelf();
362 }
363
364
365 }
5555 import org.freeplane.core.util.LogUtils;
5656 import org.freeplane.core.util.Quantity;
5757 import org.freeplane.core.util.TextUtils;
58 import org.freeplane.features.clipboard.ClipboardController;
58 import org.freeplane.features.clipboard.ClipboardControllers;
59 import org.freeplane.features.clipboard.mindmapmode.MClipboardControllers;
5960 import org.freeplane.features.icon.mindmapmode.MIconController.Keys;
6061 import org.freeplane.features.link.mindmapmode.MLinkController;
6162 import org.freeplane.features.map.AlwaysUnfoldedNode;
7677 import org.freeplane.features.map.NodeRelativePath;
7778 import org.freeplane.features.map.SummaryLevels;
7879 import org.freeplane.features.map.SummaryNode;
80 import org.freeplane.features.map.clipboard.MapClipboardController;
81 import org.freeplane.features.map.mindmapmode.clipboard.MMapClipboardController;
7982 import org.freeplane.features.mode.Controller;
8083 import org.freeplane.features.mode.ModeController;
8184 import org.freeplane.features.mode.mindmapmode.MModeController;
224227 return newNode;
225228 }
226229
230
231
232 @Override
233 protected MapClipboardController createMapClipboardController() {
234 final MMapClipboardController mapClipboardController = new MMapClipboardController();
235 final MClipboardControllers extension = (MClipboardControllers) getModeController().getExtension(ClipboardControllers.class);
236 extension.add(mapClipboardController);
237 return mapClipboardController;
238 }
239
227240 private void startEditingAfterSelect(final NodeModel newNode) {
228241 final Component component = Controller.getCurrentController().getMapViewManager().getComponent(newNode);
229242 if(component == null)
424437
425438 private void convertCloneToNode(final NodeModel node) {
426439 final MModeController mModeController = getMModeController();
427 final ClipboardController clipboardController = mModeController.getExtension(ClipboardController.class);
440 final MapClipboardController clipboardController = mModeController.getExtension(MapClipboardController.class);
428441 final NodeModel duplicate = clipboardController.duplicate(node, false);
429442 IActor converter = new IActor() {
430443
750763 */
751764 private List<NodeModel> getSiblingsSortedOnSide(final NodeModel node) {
752765 final ArrayList<NodeModel> nodes = new ArrayList<NodeModel>(node.getChildCount());
753 MapController r = Controller.getCurrentModeController().getMapController();
754766 for (final NodeModel child : node.getChildren()) {
755767 nodes.add(child);
756768 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.mindmapmode.clipboard;
20
21 import java.awt.event.ActionEvent;
22
23 import org.freeplane.core.ui.AFreeplaneAction;
24 import org.freeplane.features.map.NodeModel;
25 import org.freeplane.features.map.clipboard.MapClipboardController;
26 import org.freeplane.features.mode.Controller;
27
28 class CloneAction extends AFreeplaneAction {
29 /**
30 *
31 */
32 private static final long serialVersionUID = 1L;
33
34 public CloneAction() {
35 super("CloneAction");
36 }
37
38 public void actionPerformed(final ActionEvent e) {
39 final MMapClipboardController clipboardController = (MMapClipboardController) MapClipboardController
40 .getController();
41 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
42 clipboardController.addClone(clipboardController.getClipboardContents(), parent);
43 }
44 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is created by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.mindmapmode.clipboard;
20
21 import java.awt.Image;
22 import java.awt.datatransfer.DataFlavor;
23 import java.awt.datatransfer.Transferable;
24 import java.awt.datatransfer.UnsupportedFlavorException;
25 import java.awt.dnd.DnDConstants;
26 import java.io.File;
27 import java.io.IOException;
28 import java.io.StringReader;
29 import java.io.StringWriter;
30 import java.io.Writer;
31 import java.net.URI;
32 import java.util.ArrayList;
33 import java.util.Collection;
34 import java.util.LinkedList;
35 import java.util.List;
36 import java.util.regex.Matcher;
37 import java.util.regex.Pattern;
38
39 import javax.swing.JFileChooser;
40 import javax.swing.JOptionPane;
41 import javax.swing.text.BadLocationException;
42 import javax.swing.text.Element;
43 import javax.swing.text.ElementIterator;
44 import javax.swing.text.html.HTMLDocument;
45 import javax.swing.text.html.HTMLEditorKit;
46
47 import org.freeplane.core.resources.ResourceController;
48 import org.freeplane.core.ui.ExampleFileFilter;
49 import org.freeplane.core.ui.components.OptionalDontShowMeAgainDialog;
50 import org.freeplane.core.ui.components.UITools;
51 import org.freeplane.core.util.FileUtils;
52 import org.freeplane.core.util.FixedHTMLWriter;
53 import org.freeplane.core.util.HtmlUtils;
54 import org.freeplane.core.util.LogUtils;
55 import org.freeplane.core.util.TextUtils;
56 import org.freeplane.features.attribute.Attribute;
57 import org.freeplane.features.attribute.AttributeController;
58 import org.freeplane.features.attribute.NodeAttributeTableModel;
59 import org.freeplane.features.attribute.mindmapmode.MAttributeController;
60 import org.freeplane.features.clipboard.ClipboardAccessor;
61 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
62 import org.freeplane.features.format.ScannerController;
63 import org.freeplane.features.link.LinkController;
64 import org.freeplane.features.link.NodeLinks;
65 import org.freeplane.features.link.mindmapmode.MLinkController;
66 import org.freeplane.features.map.CloneEncryptedNodeException;
67 import org.freeplane.features.map.FreeNode;
68 import org.freeplane.features.map.IMapSelection;
69 import org.freeplane.features.map.MapModel;
70 import org.freeplane.features.map.MapReader;
71 import org.freeplane.features.map.MapReader.NodeTreeCreator;
72 import org.freeplane.features.map.MapWriter.Hint;
73 import org.freeplane.features.map.MapWriter.Mode;
74 import org.freeplane.features.map.NodeModel;
75 import org.freeplane.features.map.clipboard.MapClipboardController;
76 import org.freeplane.features.map.clipboard.MindMapNodesSelection;
77 import org.freeplane.features.map.mindmapmode.MMapController;
78 import org.freeplane.features.map.mindmapmode.SummaryGroupEdgeListAdder;
79 import org.freeplane.features.mode.Controller;
80 import org.freeplane.features.mode.ModeController;
81 import org.freeplane.features.text.TextController;
82 import org.freeplane.features.text.mindmapmode.MTextController;
83 import org.freeplane.features.url.UrlManager;
84 import org.freeplane.n3.nanoxml.XMLException;
85 import org.freeplane.view.swing.features.filepreview.ImageAdder;
86 import org.freeplane.view.swing.features.filepreview.ViewerController;
87 import org.freeplane.view.swing.features.filepreview.ViewerController.PasteMode;
88
89 /**
90 * @author Dimitry Polivaev
91 */
92 public class MMapClipboardController extends MapClipboardController implements MClipboardController{
93 public static final String RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_NODES = "remind_use_rich_text_in_new_nodes";
94 private class DirectHtmlFlavorHandler implements IDataFlavorHandler {
95 private final String textFromClipboard;
96
97 public DirectHtmlFlavorHandler(final String textFromClipboard) {
98 this.textFromClipboard = textFromClipboard;
99 }
100
101 void paste(final NodeModel target) {
102 final String text = cleanHtml(textFromClipboard);
103 final NodeModel node = Controller.getCurrentModeController().getMapController().newNode(text,
104 Controller.getCurrentController().getMap());
105 ((MMapController) Controller.getCurrentModeController().getMapController()).insertNode(node, target);
106 }
107
108 @Override
109 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
110 paste(target);
111 }
112 }
113
114 private class FileListFlavorHandler implements IDataFlavorHandler {
115 final List<File> fileList;
116
117 public FileListFlavorHandler(final List<File> fileList) {
118 super();
119 this.fileList = fileList;
120 }
121
122 @Override
123 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
124 boolean copyFile = dropAction == DnDConstants.ACTION_COPY;
125 final File mapFile = target.getMap().getFile();
126 if ((copyFile || LinkController.getLinkType() == LinkController.LINK_RELATIVE_TO_MINDMAP) && mapFile == null) {
127 JOptionPane.showMessageDialog(Controller.getCurrentController().getViewController().getCurrentRootComponent(),
128 TextUtils.getText("map_not_saved"), "Freeplane", JOptionPane.WARNING_MESSAGE);
129 return;
130 }
131 ViewerController viewerController = (Controller.getCurrentModeController().getExtension(ViewerController.class));
132 boolean pasteImagesFromFiles = ResourceController.getResourceController().getBooleanProperty("pasteImagesFromFiles");
133 for (final File sourceFile : fileList) {
134 final File file;
135 if(copyFile){
136 try {
137 file = new TargetFileCreator().createTargetFile(mapFile, sourceFile.getName());
138 file.getParentFile().mkdirs();
139 FileUtils.copyFile(sourceFile, file);
140 } catch (IOException e) {
141 LogUtils.warn(e);
142 continue;
143 }
144 }
145 else
146 file = sourceFile;
147 if(! pasteImagesFromFiles || dropAction == DnDConstants.ACTION_LINK || !viewerController.paste(file, target, PasteMode.valueOf(asSibling), isLeft)) {
148 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
149 final NodeModel node = mapController.newNode(file.getName(), target.getMap());
150 ((MLinkController) LinkController.getController()).setLinkTypeDependantLink(node, file);
151 mapController.insertNode(node, target, asSibling, isLeft, isLeft);
152 }
153 }
154 }
155 }
156
157 interface IDataFlavorHandler {
158 void paste(Transferable t, NodeModel target, boolean asSibling, boolean isLeft, int dropAction);
159 }
160
161 private class MindMapNodesFlavorHandler implements IDataFlavorHandler {
162 private final String textFromClipboard;
163
164 public MindMapNodesFlavorHandler(final String textFromClipboard) {
165 this.textFromClipboard = textFromClipboard;
166 }
167
168 @Override
169 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
170 if (textFromClipboard != null) {
171 paste(textFromClipboard, target, asSibling, isLeft);
172 }
173 }
174
175 private void paste(final String text, final NodeModel target, final boolean asSibling, final boolean isLeft) {
176 final String[] textLines = text.split(MapClipboardController.NODESEPARATOR);
177 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
178 final MapReader mapReader = mapController.getMapReader();
179 synchronized(mapReader) {
180 final NodeTreeCreator nodeTreeCreator = mapReader.nodeTreeCreator(target.getMap());
181 nodeTreeCreator.setHint(Hint.MODE, Mode.CLIPBOARD);
182 for (int i = 0; i < textLines.length; ++i) {
183 try {
184 final NodeModel newModel = nodeTreeCreator.create(new StringReader(textLines[i]));
185 newModel.removeExtension(FreeNode.class);
186 final boolean wasLeft = newModel.isLeft();
187 mapController.insertNode(newModel, target, asSibling, isLeft, wasLeft != isLeft);
188 }
189 catch (final XMLException e) {
190 LogUtils.severe("error on paste", e);
191 }
192 }
193 nodeTreeCreator.finish(target);
194 }
195 }
196 }
197
198 private static class PasteHtmlWriter extends FixedHTMLWriter {
199 private final Element element;
200
201 public PasteHtmlWriter(final Writer writer, final Element element, final HTMLDocument doc, final int pos,
202 final int len) {
203 super(writer, doc, pos, len);
204 this.element = getStandAloneElement(element);
205 }
206
207 @Override
208 protected ElementIterator getElementIterator() {
209 return new ElementIterator(element);
210 }
211
212 private Element getStandAloneElement(final Element element) {
213 final String name = element.getName();
214 if (name.equals("ul") || name.equals("ol") || name.equals("table") || name.equals("html")) {
215 return element;
216 }
217 return getStandAloneElement(element.getParentElement());
218 }
219
220 @Override
221 public void write() throws IOException, BadLocationException {
222 if (element.getName().equals("html")) {
223 super.write();
224 return;
225 }
226 write("<html>");
227 super.write();
228 write("</html>");
229 }
230 }
231
232 private static final Pattern ATTRIBUTE_REGEX = Pattern.compile("\\s*\\+\t(\\S[^\t]*)(?:\t(.*?))\\s*");
233 private class StringFlavorHandler implements IDataFlavorHandler {
234 private final String textFromClipboard;
235
236 public StringFlavorHandler(final String textFromClipboard) {
237 this.textFromClipboard = textFromClipboard;
238 }
239
240 @Override
241 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
242 final TextFragment[] textFragments = split(textFromClipboard);
243 pasteStringWithoutRedisplay(textFragments, target, asSibling, isLeft);
244 }
245
246 private TextFragment[] split(final String textFromClipboard) {
247 final LinkedList<TextFragment> textFragments = new LinkedList<TextFragment>();
248 final String[] textLines = textFromClipboard.split("\n");
249 for (int i = 0; i < textLines.length; ++i) {
250 String text = textLines[i];
251 final Matcher matcher = ATTRIBUTE_REGEX.matcher(text);
252 if(matcher.matches()) {
253 textFragments.add(new TextFragment(matcher.group(1), matcher.group(2), TextFragment.ATTRIBUTE_DEPTH));
254 }
255 else {
256 text = text.replaceAll("\t", " ");
257 if (text.matches(" *")) {
258 continue;
259 }
260 int depth = 0;
261 while (depth < text.length() && text.charAt(depth) == ' ') {
262 ++depth;
263 }
264 final String visibleText = text.trim();
265 final String link = LinkController.findLink(text);
266 if (!visibleText.equals("")) {
267 textFragments.add(new TextFragment(visibleText, link, depth));
268 }
269 }
270 }
271 return textFragments.toArray(new TextFragment[textFragments.size()]);
272 }
273 }
274
275 private class StructuredHtmlFlavorHandler implements IDataFlavorHandler {
276 private final String textFromClipboard;
277
278 public StructuredHtmlFlavorHandler(final String textFromClipboard) {
279 this.textFromClipboard = textFromClipboard;
280 }
281
282 private void addFragment(final HTMLDocument doc, final Element element, final int depth, final int start,
283 final int end, final LinkedList<TextFragment> htmlFragments)
284 throws BadLocationException, IOException {
285 final String paragraphText = doc.getText(start, end - start).trim();
286 if (paragraphText.length() > 0 || element.getName().equals("img")) {
287 final StringWriter out = new StringWriter();
288 new PasteHtmlWriter(out, element, doc, start, end - start).write();
289 final String string = out.toString();
290 if (!string.equals("")) {
291 final String link = LinkController.findLink(string);
292 final TextFragment htmlFragment = new TextFragment(string, link, depth);
293 htmlFragments.add(htmlFragment);
294 }
295 }
296 }
297
298 private Element getParentElement(final HTMLDocument doc) {
299 final Element htmlRoot = doc.getDefaultRootElement();
300 final Element bodyElement = htmlRoot.getElement(htmlRoot.getElementCount() - 1);
301 Element parentCandidate = bodyElement;
302 do {
303 if (parentCandidate.getElementCount() > 1) {
304 return parentCandidate;
305 }
306 parentCandidate = parentCandidate.getElement(0);
307 } while (!(parentCandidate.isLeaf() || parentCandidate.getName().equalsIgnoreCase("p-implied")));
308 return bodyElement;
309 }
310
311 private boolean isSeparateElement(final Element current) {
312 return !current.isLeaf();
313 }
314
315 @Override
316 public void paste(Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
317 pasteHtmlWithoutRedisplay(textFromClipboard, target, asSibling, isLeft);
318 }
319
320 private void pasteHtmlWithoutRedisplay(final Object t, final NodeModel parent, final boolean asSibling,
321 final boolean isLeft) {
322 final String textFromClipboard = (String) t;
323 final String cleanedTextFromClipboard = cleanHtml(textFromClipboard);
324 final TextFragment[] htmlFragments = split(cleanedTextFromClipboard);
325 pasteStringWithoutRedisplay(htmlFragments, parent, asSibling, isLeft);
326 }
327
328 private void split(final HTMLDocument doc, final Element parent, final LinkedList<TextFragment> htmlFragments,
329 int depth) throws BadLocationException, IOException {
330 final int elementCount = parent.getElementCount();
331 int headerDepth = 0;
332 boolean headerFound = false;
333 int start = -1;
334 int end = -1;
335 Element last = null;
336 for (int i = 0; i < elementCount; i++) {
337 final Element current = parent.getElement(i);
338 final String name = current.getName();
339 final Matcher matcher = HEADER_REGEX.matcher(name);
340 if (matcher.matches()) {
341 try {
342 if (!headerFound) {
343 depth--;
344 }
345 final int newHeaderDepth = Integer.parseInt(matcher.group(1));
346 depth += newHeaderDepth - headerDepth;
347 headerDepth = newHeaderDepth;
348 headerFound = true;
349 }
350 catch (final NumberFormatException e) {
351 LogUtils.severe(e);
352 }
353 }
354 else {
355 if (headerFound) {
356 headerFound = false;
357 depth++;
358 }
359 }
360 final boolean separateElement = isSeparateElement(current);
361 if (separateElement && current.getElementCount() != 0) {
362 start = -1;
363 last = null;
364 split(doc, current, htmlFragments, depth + 1);
365 continue;
366 }
367 if (separateElement && start != -1) {
368 addFragment(doc, last, depth, start, end, htmlFragments);
369 }
370 if (start == -1 || separateElement) {
371 start = current.getStartOffset();
372 last = current;
373 }
374 end = current.getEndOffset();
375 if (separateElement) {
376 addFragment(doc, current, depth, start, end, htmlFragments);
377 }
378 }
379 if (start != -1) {
380 addFragment(doc, last, depth, start, end, htmlFragments);
381 }
382 }
383
384 private TextFragment[] split(final String text) {
385 final LinkedList<TextFragment> htmlFragments = new LinkedList<TextFragment>();
386 final HTMLEditorKit kit = new HTMLEditorKit();
387 final HTMLDocument doc = new HTMLDocument();
388 final StringReader buf = new StringReader(text);
389 try {
390 kit.read(buf, doc, 0);
391 final Element parent = getParentElement(doc);
392 split(doc, parent, htmlFragments, 0);
393 }
394 catch (final IOException e) {
395 LogUtils.severe(e);
396 }
397 catch (final BadLocationException e) {
398 LogUtils.severe(e);
399 }
400 return htmlFragments.toArray(new TextFragment[htmlFragments.size()]);
401 }
402 }
403
404 private static class TextFragment {
405 final static int ATTRIBUTE_DEPTH = -2;
406 String first;
407 String second;
408 int depth;
409
410 public TextFragment(final String text, final String link, final int depth) {
411 super();
412 this.first = text;
413 this.second = link;
414 this.depth = depth;
415 }
416
417 boolean isAttribute() {
418 return depth == ATTRIBUTE_DEPTH;
419 }
420
421 boolean isNode() {
422 return ! isAttribute();
423 }
424
425
426 }
427
428 private class ImageFlavorHandler implements IDataFlavorHandler {
429
430 final private Image image;
431
432 public ImageFlavorHandler(Image img) {
433 super();
434 image = img;
435 }
436
437 @Override
438 public void paste(Transferable t, NodeModel target, boolean asSibling, boolean isLeft, int dropAction) {
439 final ModeController modeController = Controller.getCurrentModeController();
440 final MMapController mapController = (MMapController) modeController.getMapController();
441 File mindmapFile = target.getMap().getFile();
442 if(mindmapFile == null) {
443 UITools.errorMessage(TextUtils.getRawText("map_not_saved"));
444 return;
445 }
446 //file that we'll save to disk.
447 File imageFile;
448 try {
449 imageFile = new TargetFileCreator().createTargetFile(mindmapFile, ImageAdder.IMAGE_FORMAT);
450 imageFile.getParentFile().mkdirs();
451 String imgfilepath=imageFile.getAbsolutePath();
452 File tempFile = imageFile = new File(imgfilepath);
453 final JFileChooser fileChooser = new JFileChooser(imageFile);
454 final ExampleFileFilter filter = new ExampleFileFilter();
455 filter.addExtension(ImageAdder.IMAGE_FORMAT);
456 fileChooser.setAcceptAllFileFilterUsed(false);
457 fileChooser.setFileFilter(filter);
458 fileChooser.setSelectedFile(imageFile);
459 int returnVal = fileChooser.showSaveDialog(UITools.getCurrentRootComponent());
460 if (returnVal != JFileChooser.APPROVE_OPTION) {
461 tempFile.delete();
462 return;
463 }
464 imageFile = fileChooser.getSelectedFile();
465 if(tempFile.exists() && ! imageFile.getAbsoluteFile().equals(tempFile)){
466 tempFile.delete();
467 }
468 if(imageFile.isDirectory())
469 return;
470 if(! FileUtils.getExtension(imageFile.getName()).equals(ImageAdder.IMAGE_FORMAT))
471 imageFile = new File(imageFile.getPath() + '.' + ImageAdder.IMAGE_FORMAT);
472 final NodeModel node = mapController.newNode(imageFile.getName(), target.getMap());
473 mapController.insertNode(node, target, asSibling, isLeft, isLeft);
474 new ImageAdder(image, mapController, mindmapFile, imageFile).attachImageToNode(node);
475 }
476 catch (IOException e) {
477 e.printStackTrace();
478 }
479 }
480
481 }
482 private static final Pattern HEADER_REGEX = Pattern.compile("h(\\d)", Pattern.CASE_INSENSITIVE);
483 private static final String RESOURCE_UNFOLD_ON_PASTE = "unfold_on_paste";
484 public static final String RESOURCES_CUT_NODES_WITHOUT_QUESTION = "cut_nodes_without_question";
485
486 public static String firstLetterCapitalized(final String text) {
487 if (text == null || text.length() == 0) {
488 return text;
489 }
490 return text.substring(0, 1).toUpperCase() + text.substring(1, text.length());
491 }
492
493 private List<NodeModel> newNodes;
494
495 /**
496 * @param modeController
497 */
498 public MMapClipboardController() {
499 super();
500 createActions();
501 }
502
503 private String cleanHtml(String content) {
504 content = content.replaceFirst("(?i)(?s)<head>.*</head>", "").replaceFirst("(?i)(?s)^.*<html[^>]*>", "<html>")
505 .replaceFirst("(?i)(?s)<body [^>]*>", "<body>").replaceAll("(?i)(?s)<script.*?>.*?</script>", "")
506 .replaceAll("(?i)(?s)</?tbody.*?>", "").replaceAll("(?i)(?s)<!--.*?-->", "").replaceAll(
507 "(?i)(?s)</?o[^>]*>", "");
508 if (ResourceController.getResourceController().getBooleanProperty("cut_out_pictures_when_pasting_html")) {
509 String contentWithoutImages = content.replaceAll("(?i)(?s)<img[^>]*>", "");
510 final boolean contentContainsOnlyImages = HtmlUtils.htmlToPlain(contentWithoutImages).trim().isEmpty();
511 if(! contentContainsOnlyImages) {
512 content = contentWithoutImages;
513 }
514 }
515 content = HtmlUtils.unescapeHTMLUnicodeEntity(content);
516 return content;
517 }
518
519 /**
520 * @param modeController
521 */
522 private void createActions() {
523 final ModeController modeController = Controller.getCurrentModeController();
524 modeController.addAction(new SelectedPasteAction());
525 modeController.addAction(new CloneAction());
526 modeController.addAction(new MoveAction());
527 }
528
529 @Override
530 public Transferable copy(IMapSelection selection) {
531 final List<NodeModel> collection = selection.getSortedSelection(true);
532 final MindMapNodesSelection transferable = copy(new SummaryGroupEdgeListAdder(collection).addSummaryEdgeNodes(), false);
533 transferable.setNodeObjects(collection, false);
534 return transferable;
535 }
536
537
538
539 @Override
540 public Transferable copySingle(Collection<NodeModel> source) {
541 final MindMapNodesSelection transferable = (MindMapNodesSelection) super.copySingle(source);
542 transferable.setNodeObjects(new ArrayList<NodeModel>(source), true);
543 return transferable;
544 }
545
546 Transferable cut(final List<NodeModel> collection) {
547 Controller.getCurrentModeController().getMapController().sortNodesByDepth(collection);
548 final MindMapNodesSelection transferable = copy(new SummaryGroupEdgeListAdder(collection).addSummaryEdgeNodes(), true);
549 ((MMapController) Controller.getCurrentModeController().getMapController()).deleteNodes(collection);
550 setClipboardContents(transferable);
551 return transferable;
552 }
553
554 private IDataFlavorHandler getFlavorHandler(final Transferable t) {
555 if (t.isDataFlavorSupported(MindMapNodesSelection.mindMapNodesFlavor)) {
556 try {
557 final String textFromClipboard = t.getTransferData(MindMapNodesSelection.mindMapNodesFlavor).toString();
558 return new MindMapNodesFlavorHandler(textFromClipboard);
559 }
560 catch (final UnsupportedFlavorException e) {
561 }
562 catch (final IOException e) {
563 }
564 }
565 final ResourceController resourceController = ResourceController.getResourceController();
566 DataFlavor supportedHtmlFlavor = getSupportedHtmlFlavor(t);
567 if (supportedHtmlFlavor != null) {
568 try {
569 final String textFromClipboard = t.getTransferData(supportedHtmlFlavor).toString();
570 if (textFromClipboard.charAt(0) != 65533) {
571 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
572 final MTextController textController = (MTextController) TextController
573 .getController();
574 final boolean richText = textController.useRichTextInEditor(RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_NODES);
575 if (richText) {
576 final boolean structuredHtmlImport = resourceController
577 .getBooleanProperty("structured_html_import");
578 final IDataFlavorHandler htmlFlavorHandler;
579 if (structuredHtmlImport) {
580 htmlFlavorHandler = new StructuredHtmlFlavorHandler(textFromClipboard);
581 }
582 else {
583 htmlFlavorHandler = new DirectHtmlFlavorHandler(textFromClipboard);
584 }
585 return htmlFlavorHandler;
586 }
587 }
588 }
589 }
590 catch (final UnsupportedFlavorException e) {
591 }
592 catch (final IOException e) {
593 }
594 }
595 if (t.isDataFlavorSupported(MindMapNodesSelection.fileListFlavor)) {
596 try {
597 final List<File> fileList = castToFileList(t.getTransferData(MindMapNodesSelection.fileListFlavor));
598 if (!shouldIgnoreFileListFlavor(fileList))
599 return new FileListFlavorHandler(fileList);
600 }
601 catch (final UnsupportedFlavorException e) {
602 }
603 catch (final IOException e) {
604 }
605 }
606 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
607 try {
608 final String plainTextFromClipboard = t.getTransferData(DataFlavor.stringFlavor).toString();
609 return new StringFlavorHandler(plainTextFromClipboard);
610 }
611 catch (final UnsupportedFlavorException e) {
612 }
613 catch (final IOException e) {
614 }
615 }
616 if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
617 try {
618 Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
619 return new ImageFlavorHandler(image);
620 }
621 catch (final UnsupportedFlavorException e) {
622 }
623 catch (final IOException e) {
624 }
625 }
626 return null;
627 }
628
629 private boolean shouldIgnoreFileListFlavor(final List<File> fileList) {
630 if(fileList == null || fileList.isEmpty())
631 return true;
632 final File file = fileList.get(0);
633 if(file.isDirectory())
634 return false;
635 final String name = file.getName();
636 return name.endsWith(".URL") || name.endsWith(".url");
637 }
638
639 @SuppressWarnings("unchecked")
640 private List<File> castToFileList(Object transferData) {
641 return (List<File>) transferData;
642 }
643
644 Collection<IDataFlavorHandler> getFlavorHandlers() {
645 final Transferable t = getClipboardContents();
646 final Collection<IDataFlavorHandler> handlerList = new LinkedList<IDataFlavorHandler>();
647 if (t == null) {
648 return handlerList;
649 }
650 if (t.isDataFlavorSupported(MindMapNodesSelection.mindMapNodesFlavor)) {
651 try {
652 final String textFromClipboard = t.getTransferData(MindMapNodesSelection.mindMapNodesFlavor).toString();
653 handlerList.add(new MindMapNodesFlavorHandler(textFromClipboard));
654 }
655 catch (final UnsupportedFlavorException e) {
656 }
657 catch (final IOException e) {
658 }
659 }
660 DataFlavor supportedHtmlFlavor = getSupportedHtmlFlavor(t);
661 if (supportedHtmlFlavor != null) {
662 try {
663 final String textFromClipboard = t.getTransferData(supportedHtmlFlavor).toString();
664 if (textFromClipboard.charAt(0) != 65533) {
665 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
666 handlerList.add(new StructuredHtmlFlavorHandler(textFromClipboard));
667 handlerList.add(new DirectHtmlFlavorHandler(textFromClipboard));
668 }
669 }
670 }
671 catch (final UnsupportedFlavorException e) {
672 }
673 catch (final IOException e) {
674 }
675 }
676 if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
677 try {
678 final String plainTextFromClipboard = t.getTransferData(DataFlavor.stringFlavor).toString();
679 handlerList.add(new StringFlavorHandler(plainTextFromClipboard));
680 }
681 catch (final UnsupportedFlavorException e) {
682 }
683 catch (final IOException e) {
684 }
685 }
686 if (t.isDataFlavorSupported(MindMapNodesSelection.fileListFlavor)) {
687 try {
688 final List<File> fileList = castToFileList(t.getTransferData(MindMapNodesSelection.fileListFlavor));
689 handlerList.add(new FileListFlavorHandler(fileList));
690 }
691 catch (final UnsupportedFlavorException e) {
692 }
693 catch (final IOException e) {
694 }
695 }
696 if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
697 try {
698 Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
699 handlerList.add(new ImageFlavorHandler(image));
700 }
701 catch (final UnsupportedFlavorException e) {
702 }
703 catch (final IOException e) {
704 }
705 }
706 return handlerList;
707 }
708 private DataFlavor getSupportedHtmlFlavor(Transferable t) {
709 for (DataFlavor dataFlavor : t.getTransferDataFlavors())
710 if(dataFlavor.getPrimaryType().equals(MindMapNodesSelection.htmlFlavor.getPrimaryType())
711 && dataFlavor.getSubType().equals(MindMapNodesSelection.htmlFlavor.getSubType())
712 && dataFlavor.getRepresentationClass().equals(MindMapNodesSelection.htmlFlavor.getRepresentationClass())
713 )
714 return dataFlavor;
715 return null;
716 }
717
718 public void paste(final Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft) {
719 paste(t, target, asSibling, isLeft, DnDConstants.ACTION_NONE);
720 }
721
722 public void paste(final Transferable t, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
723 if (t == null) {
724 return;
725 }
726 //
727 // DataFlavor[] fl = t.getTransferDataFlavors();
728 // for (int i = 0; i < fl.length; i++) {
729 // System.out.println(fl[i]);
730 // }
731
732 final IDataFlavorHandler handler = getFlavorHandler(t);
733 paste(t, handler, target, asSibling, isLeft, dropAction);
734 }
735
736 void paste(final Transferable t, final IDataFlavorHandler handler, final NodeModel target, final boolean asSibling, final boolean isLeft) {
737 paste(t, handler, target, asSibling, isLeft, DnDConstants.ACTION_NONE);
738 }
739
740 void paste(final Transferable t, final IDataFlavorHandler handler, final NodeModel target, final boolean asSibling, final boolean isLeft, int dropAction) {
741 if (handler == null) {
742 return;
743 }
744 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
745 if (asSibling && !mapController.isWriteable(target.getParentNode()) || !asSibling
746 && !mapController.isWriteable(target)) {
747 final String message = TextUtils.getText("node_is_write_protected");
748 UITools.errorMessage(message);
749 return;
750 }
751 try {
752 Controller.getCurrentController().getViewController().setWaitingCursor(true);
753 if (newNodes == null) {
754 newNodes = new LinkedList<NodeModel>();
755 }
756 newNodes.clear();
757 handler.paste(t, target, asSibling, isLeft, dropAction);
758 final ModeController modeController = Controller.getCurrentModeController();
759 if (!asSibling && modeController.getMapController().isFolded(target)
760 && ResourceController.getResourceController().getBooleanProperty(RESOURCE_UNFOLD_ON_PASTE)) {
761 modeController.getMapController().unfoldAndScroll(target);
762 }
763 for (final NodeModel child : newNodes) {
764 AttributeController.getController().performRegistrySubtreeAttributes(child);
765 }
766 }
767 finally {
768 Controller.getCurrentController().getViewController().setWaitingCursor(false);
769 }
770 }
771
772 private void pasteStringWithoutRedisplay(final TextFragment[] textFragments, NodeModel parent,
773 final boolean asSibling, final boolean isLeft) {
774 int insertionIndex;
775 if (asSibling) {
776 NodeModel target = parent;
777 parent = parent.getParentNode();
778 final NodeModel childNode = target;
779 insertionIndex = parent.getIndex(childNode);
780 }
781 else{
782 insertionIndex = parent.getChildCount();
783 }
784 final ArrayList<NodeModel> parentNodes = new ArrayList<NodeModel>();
785 final ArrayList<Integer> parentNodesDepths = new ArrayList<Integer>();
786 parentNodes.add(parent);
787 parentNodesDepths.add(new Integer(-1));
788 for (int i = 0; i < textFragments.length; ++i) {
789 final TextFragment textFragment = textFragments[i];
790 if(textFragment.isNode()) {
791 insertionIndex = addNode(parent, isLeft, insertionIndex, parentNodes, parentNodesDepths,
792 textFragment);
793 }
794 else if(textFragment.isAttribute()) {
795 NodeModel node = parentNodes.get(parentNodes.size() - 1);
796 addAttribute(node, textFragment, parent==node);
797 }
798 }
799 insertNewNodes(parent, insertionIndex, parentNodes);
800 }
801
802 private void addAttribute(NodeModel node, final TextFragment textFragment, boolean toExistingNode) {
803 final String name = textFragment.first;
804 final Object value = ScannerController.getController().parse(textFragment.second);
805 final Attribute atribute = new Attribute(name, value);
806 if(toExistingNode) {
807 MAttributeController.getController().addAttribute(node, atribute);
808 }
809 else {
810 NodeAttributeTableModel attributes = node.getExtension(NodeAttributeTableModel.class);
811 if(attributes == null) {
812 attributes = new NodeAttributeTableModel();
813 node.addExtension(attributes);
814 }
815 attributes.addRowNoUndo(node, atribute);
816 }
817 }
818
819 private int addNode(NodeModel parent, final boolean isLeft, int insertionIndex,
820 final ArrayList<NodeModel> parentNodes, final ArrayList<Integer> parentNodesDepths,
821 final TextFragment textFragment) {
822 final MapModel map = parent.getMap();
823 final NodeModel node = createNode(map, textFragment);
824 return insertNode(parent, isLeft, insertionIndex, parentNodes, parentNodesDepths, textFragment, node);
825 }
826
827 private int insertNode(NodeModel parent, final boolean isLeft, int insertionIndex,
828 final ArrayList<NodeModel> parentNodes, final ArrayList<Integer> parentNodesDepths,
829 final TextFragment textFragment, final NodeModel node) {
830 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
831 for (int j = parentNodes.size() - 1; j >= 0; --j) {
832 if (textFragment.depth > parentNodesDepths.get(j).intValue()) {
833 for (int k = j + 1; k < parentNodes.size(); ++k) {
834 final NodeModel n = parentNodes.get(k);
835 if (n.getParentNode() == null) {
836 mapController.insertNode(n, parent, insertionIndex++);
837 }
838 parentNodes.remove(k);
839 parentNodesDepths.remove(k);
840 }
841 final NodeModel target = parentNodes.get(j);
842 node.setLeft(isLeft);
843 if (target != parent) {
844 target.setFolded(true);
845 target.insert(node, target.getChildCount());
846 }
847 parentNodes.add(node);
848 parentNodesDepths.add(new Integer(textFragment.depth));
849 break;
850 }
851 }
852 return insertionIndex;
853 }
854
855 private NodeModel createNode(final MapModel map, final TextFragment textFragment) {
856 String text = textFragment.first;
857 final String link = textFragment.second;
858 URI uri = null;
859 if (link != null) {
860 try {
861 URI linkUri = new URI(link);
862 uri = linkUri;
863
864 File absoluteFile = UrlManager.getController().getAbsoluteFile(map, uri);
865 if(absoluteFile != null) {
866 //if ("file".equals(linkUri.getScheme())) {
867 final File mapFile = map.getFile();
868 uri = LinkController.toLinkTypeDependantURI(mapFile, absoluteFile);
869 if(link.equals(text)){
870 text = uri.toString();
871 }
872 }
873
874 }
875 catch (Exception e) {
876 }
877 }
878 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
879 final NodeModel node = mapController.newNode(text, map);
880 if(uri != null){
881 NodeLinks.createLinkExtension(node).setHyperLink(uri);
882 }
883 return node;
884 }
885
886 private void insertNewNodes(NodeModel parent, int insertionIndex,
887 final ArrayList<NodeModel> parentNodes) {
888 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
889 final MapModel map = parent.getMap();
890 for (int k = 0; k < parentNodes.size(); ++k) {
891 final NodeModel node = parentNodes.get(k);
892 if (map.getRootNode() != node && node.getParentNode() == null) {
893 mapController.insertNode(node, parent, insertionIndex++);
894 }
895 }
896 }
897
898 private enum Operation{CLONE, MOVE};
899
900 public void addClone(final Transferable transferable, final NodeModel target) {
901 processTransferable(transferable, target, Operation.CLONE);
902 }
903
904 public void move(final Transferable transferable, final NodeModel target) {
905 processTransferable(transferable, target, Operation.MOVE);
906 }
907
908 @SuppressWarnings("unchecked")
909 private void processTransferable(final Transferable transferable, final NodeModel target, Operation operation) {
910 try {
911 final Collection<NodeModel> clonedNodes;
912 final boolean asSingleNodes;
913 if (operation == Operation.CLONE && transferable.isDataFlavorSupported(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor)){
914 clonedNodes = (Collection<NodeModel>) transferable.getTransferData(MindMapNodesSelection.mindMapNodeSingleObjectsFlavor);
915 asSingleNodes = true;
916 }
917 else if(transferable.isDataFlavorSupported(MindMapNodesSelection.mindMapNodeObjectsFlavor)){
918 clonedNodes = (Collection<NodeModel>) transferable.getTransferData(MindMapNodesSelection.mindMapNodeObjectsFlavor);
919 asSingleNodes = false;
920 }
921 else
922 return;
923
924 final List<NodeModel> movedNodes = new ArrayList<NodeModel>(clonedNodes.size());
925 final MMapController mapController = (MMapController) Controller.getCurrentModeController().getMapController();
926 for(NodeModel clonedNode:clonedNodes){
927 if(clonedNode.getParentNode() == null || ! clonedNode.getMap().equals(target.getMap()))
928 return;
929 if (!clonedNode.isRoot() && ! clonedNode.subtreeContainsCloneOf(target)) {
930 switch(operation){
931 case CLONE:
932 try {
933 final NodeModel clone = asSingleNodes ? clonedNode.cloneContent() : clonedNode.cloneTree();
934 mapController.addNewNode(clone, target, target.getChildCount(), target.isNewChildLeft());
935 } catch (CloneEncryptedNodeException e) {
936 UITools.errorMessage(TextUtils.getText("can_not_clone_encrypted_node"));
937 }
938 break;
939 case MOVE:
940 movedNodes.add(clonedNode);
941 break;
942 }
943 }
944 }
945 switch(operation){
946 case MOVE:
947 mapController.moveNodesAsChildren(movedNodes, target, target.isNewChildLeft(), true);
948 break;
949 default:
950 break;
951 }
952 }
953 catch (Exception e) {
954 LogUtils.severe(e);
955 }
956 }
957
958 public Transferable getClipboardContents() {
959 return ClipboardAccessor.getController().getClipboardContents();
960 }
961
962 @Override
963 public boolean canCut() {
964 return true;
965 }
966
967 @Override
968 public void cut() {
969 final Controller controller = Controller.getCurrentController();
970 final NodeModel root = controller.getMap().getRootNode();
971 if (controller.getSelection().isSelected(root)) {
972 UITools.errorMessage(TextUtils.getText("cannot_delete_root"));
973 return;
974 }
975 final int showResult = OptionalDontShowMeAgainDialog.show("really_cut_node", "confirmation",
976 MMapClipboardController.RESOURCES_CUT_NODES_WITHOUT_QUESTION,
977 OptionalDontShowMeAgainDialog.ONLY_OK_SELECTION_IS_STORED);
978 if (showResult != JOptionPane.OK_OPTION) {
979 return;
980 }
981 cut(controller.getSelection().getSortedSelection(true));
982 controller.getMapViewManager().obtainFocusForSelected();
983
984 }
985
986 @Override
987 public boolean canPaste(Transferable t) {
988 return true;
989 }
990
991 @Override
992 public void paste(Transferable t) {
993 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
994 paste(t, parent, false, parent.isNewChildLeft());
995 }
996 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.mindmapmode.clipboard;
20
21 import java.awt.event.ActionEvent;
22
23 import org.freeplane.core.ui.AFreeplaneAction;
24 import org.freeplane.features.map.NodeModel;
25 import org.freeplane.features.map.clipboard.MapClipboardController;
26 import org.freeplane.features.mode.Controller;
27
28 class MoveAction extends AFreeplaneAction {
29 /**
30 *
31 */
32 private static final long serialVersionUID = 1L;
33
34 public MoveAction() {
35 super("MoveAction");
36 }
37
38 public void actionPerformed(final ActionEvent e) {
39 final MMapClipboardController clipboardController = (MMapClipboardController) MapClipboardController
40 .getController();
41 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
42 clipboardController.move(clipboardController.getClipboardContents(), parent);
43 }
44 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
3 *
4 * This file is modified by Dimitry Polivaev in 2008.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.map.mindmapmode.clipboard;
20
21 import java.awt.Component;
22 import java.awt.datatransfer.Transferable;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.util.Collection;
26
27 import javax.swing.Action;
28 import javax.swing.BoxLayout;
29 import javax.swing.ButtonGroup;
30 import javax.swing.JOptionPane;
31 import javax.swing.JPanel;
32 import javax.swing.JRadioButton;
33
34 import org.freeplane.core.ui.AFreeplaneAction;
35 import org.freeplane.core.util.TextUtils;
36 import org.freeplane.features.map.NodeModel;
37 import org.freeplane.features.map.clipboard.MapClipboardController;
38 import org.freeplane.features.map.mindmapmode.clipboard.MMapClipboardController.IDataFlavorHandler;
39 import org.freeplane.features.mode.Controller;
40
41 class SelectedPasteAction extends AFreeplaneAction {
42 /**
43 *
44 */
45 private static final long serialVersionUID = 1L;
46
47 public SelectedPasteAction() {
48 super("SelectedPasteAction");
49 }
50
51 public void actionPerformed(final ActionEvent e) {
52 final MMapClipboardController clipboardController = (MMapClipboardController) MapClipboardController
53 .getController();
54 final Collection<IDataFlavorHandler> flavorHandlers = clipboardController.getFlavorHandlers();
55 if (flavorHandlers.isEmpty()) {
56 return;
57 }
58 final JPanel options = createPane(flavorHandlers);
59 if (JOptionPane.CANCEL_OPTION == JOptionPane.showConfirmDialog((Component) e.getSource(), options,
60 (String) getValue(Action.NAME), JOptionPane.OK_CANCEL_OPTION)) {
61 return;
62 }
63 final NodeModel parent = Controller.getCurrentController().getSelection().getSelected();
64 final Transferable clipboardContents = clipboardController.getClipboardContents();
65 clipboardController.paste(clipboardContents, selectedHandler, parent, false, parent.isNewChildLeft());
66 selectedHandler = null;
67 }
68
69 private IDataFlavorHandler selectedHandler;
70
71 private JPanel createPane(final Collection<IDataFlavorHandler> flavorHandlers) {
72 final ButtonGroup group = new ButtonGroup();
73 final JRadioButton[] buttons = new JRadioButton[flavorHandlers.size()];
74 int i = 0;
75 selectedHandler = null;
76 for (final IDataFlavorHandler handler : flavorHandlers) {
77 final JRadioButton radioButton = new JRadioButton(TextUtils.getText(handler.getClass().getSimpleName()));
78 group.add(radioButton);
79 if (selectedHandler == null) {
80 selectedHandler = handler;
81 radioButton.setSelected(true);
82 }
83 radioButton.addActionListener(new ActionListener() {
84 public void actionPerformed(final ActionEvent e) {
85 selectedHandler = handler;
86 }
87 });
88 buttons[i++] = radioButton;
89 }
90 return createPane(buttons);
91 }
92
93 private JPanel createPane(final JRadioButton[] radioButtons) {
94 final int numChoices = radioButtons.length;
95 final JPanel box = new JPanel();
96 box.setLayout(new BoxLayout(box, BoxLayout.PAGE_AXIS));
97 for (int i = 0; i < numChoices; i++) {
98 box.add(radioButtons[i]);
99 }
100 return box;
101 }
102 }
0 package org.freeplane.features.map.mindmapmode.clipboard;
1
2 import java.io.File;
3 import java.io.IOException;
4
5 class TargetFileCreator {
6 File createTargetFile(File mindmapFile, String prototypeName) throws IOException{
7 final String mapFileNameWithExtension = mindmapFile.getName();
8 final String mapFileName = removeExtension(mapFileNameWithExtension);
9 final File mindMapDirectory = mindmapFile.getParentFile();
10 final File mapFilesDirectory = new File(mindMapDirectory, mapFileName + "_files");
11 if (! mapFilesDirectory.exists() || mapFilesDirectory.isDirectory()) {
12 if(prototypeName.contains(".")){
13 final File target = new File(mapFilesDirectory, prototypeName);
14 if(! target.exists())
15 return target;
16 }
17 String sourceFileName = removeExtension(prototypeName);
18 String fileNameTemplate = sourceFileName + "_";
19 while (fileNameTemplate.length() < 3)
20 fileNameTemplate = fileNameTemplate + '_';
21 mapFilesDirectory.mkdir();
22 File targetFile = File.createTempFile(fileNameTemplate, "."+ getExtension(prototypeName), mapFilesDirectory);
23 return targetFile;
24
25 } else {
26 String sourceFileName = removeExtension(prototypeName);
27 String fileNameTemplate = mapFileName + "_" + sourceFileName + "_";
28 while (fileNameTemplate.length() < 3)
29 fileNameTemplate = fileNameTemplate + '_';
30 File targetFile = File.createTempFile(fileNameTemplate, "."+ getExtension(prototypeName), mindMapDirectory);
31 return targetFile;
32 }
33 }
34
35 private String removeExtension(final String fileNameWithExtension) {
36 final int extensionIndex = fileNameWithExtension.lastIndexOf('.');
37 if(extensionIndex >= 0)
38 return fileNameWithExtension.substring(0, extensionIndex);
39 else
40 return fileNameWithExtension;
41 }
42
43 private String getExtension(final String fileNameWithExtension) {
44 return fileNameWithExtension.substring(fileNameWithExtension.lastIndexOf('.') + 1);
45 }
46 }
122122 final NodeModel backup = new NodeModel(null);
123123 copyExtensions(key, to, backup);
124124 final IActor actor = new IActor() {
125 @Override
125126 public void undo() {
126127 removeExtensions(key, to);
127128 copyExtensions(key, backup, to);
128129 getMapController().nodeChanged(to);
129130 }
130131
132 @Override
131133 public String getDescription() {
132134 return "undoableCopyExtensions";
133135 }
134136
137 @Override
135138 public void act() {
136139 copyExtensions(key, from, to);
137140 getMapController().nodeChanged(to);
166169 final NodeModel backup = new NodeModel(null);
167170 copyExtensions(key, from, backup);
168171 final IActor actor = new IActor() {
172 @Override
169173 public void undo() {
170174 copyExtensions(key, backup, from);
171175 getMapController().nodeChanged(from);
172176 }
173177
178 @Override
174179 public String getDescription() {
175180 return "undoableCopyExtensions";
176181 }
177182
183 @Override
178184 public void act() {
179185 removeExtensions(key, from, which);
180186 getMapController().nodeChanged(from);
203209 final NodeModel backup = new NodeModel(null);
204210 copyExtensions(key, to, backup);
205211 final IActor actor = new IActor() {
212 @Override
206213 public void undo() {
207214 copyExtensions(key, backup, to);
208215 getMapController().nodeChanged(to);
209216 }
210217
218 @Override
211219 public String getDescription() {
212220 return "undoableCopyExtensions";
213221 }
214222
223 @Override
215224 public void act() {
216225 resolveParentExtensions(key, to);
217226 getMapController().nodeChanged(to);
291300
292301 public boolean hasOneVisibleChild(final NodeModel parent) {
293302 int count = 0;
294 MapController r = getMapController();
295303 for (final NodeModel child : parent.getChildren()) {
296304 if (child.hasVisibleContent()) {
297305 count++;
1818 */
1919 package org.freeplane.features.mode;
2020
21 import java.awt.Component;
2122 import java.awt.event.ActionEvent;
2223 import java.awt.event.KeyEvent;
2324
2425 import org.freeplane.core.ui.AFreeplaneAction;
2526 import org.freeplane.features.map.IMapSelection;
26 import org.freeplane.view.swing.map.NodeView;
2727
2828 class MoveToRootAction extends AFreeplaneAction {
2929 static final String NAME = "moveToRoot";
3030 /**
31 *
31 *
3232 */
3333 private static final long serialVersionUID = 1L;
3434
3636 super("MoveToRootAction");
3737 }
3838
39 @Override
3940 public void actionPerformed(final ActionEvent event) {
4041 Controller ctrl = Controller.getCurrentController();
4142 final IMapSelection selection = ctrl.getSelection();
4243 if (selection != null) {
43 final NodeView selectedComponent = (NodeView) ctrl.getMapViewManager().getSelectedComponent();
44 if (!selectedComponent.focused() && java.awt.EventQueue.getCurrentEvent() instanceof KeyEvent)
44 final Component selectedComponent = ctrl.getMapViewManager().getSelectedComponent();
45 if (!selectedComponent.hasFocus() && java.awt.EventQueue.getCurrentEvent() instanceof KeyEvent)
4546 selectedComponent.requestFocusInWindow();
4647 else
4748 selection.selectRoot();
4545 Controller.getCurrentController().getMapViewManager().addMapSelectionListener(this);
4646 setEnabled(false);
4747 changeListener = new ChangeListener() {
48 @Override
4849 public void stateChanged(final ChangeEvent e) {
4950 final MapModel map = Controller.getCurrentController().getMap();
5051 final IUndoHandler undoHandler = map.getExtension(IUndoHandler.class);
6162 };
6263 }
6364
65 @Override
6466 public void actionPerformed(final ActionEvent e) {
6567 if(UITools.isEditingText())
6668 return;
7173
7274 }
7375
76 @Override
7477 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
7578 if (oldMap instanceof MMapModel) {
7679 final IUndoHandler undoHandler = oldMap.getExtension(IUndoHandler.class);
9194 @Override
9295 public void afterMapChange(final Object newMap) {};
9396
94 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
95 }
96
9797 public void setRedo(final Action redo) {
9898 this.redo = redo;
9999 }
2121 import java.awt.Color;
2222 import java.awt.event.ActionEvent;
2323 import java.util.Collection;
24
2425 import org.freeplane.core.ui.AMultipleNodeAction;
2526 import org.freeplane.core.ui.LengthUnits;
2627 import org.freeplane.core.undo.IActor;
3536 import org.freeplane.features.nodestyle.NodeSizeModel;
3637 import org.freeplane.features.nodestyle.NodeStyleController;
3738 import org.freeplane.features.nodestyle.NodeStyleModel;
39 import org.freeplane.features.nodestyle.NodeStyleModel.HorizontalTextAlignment;
3840 import org.freeplane.features.nodestyle.NodeStyleModel.Shape;
39 import org.freeplane.features.nodestyle.NodeStyleModel.HorizontalTextAlignment;
4041 import org.freeplane.features.nodestyle.ShapeConfigurationModel;
4142 import org.freeplane.features.styles.LogicalStyleKeys;
4243
5152 this.modeController = modeController;
5253 }
5354
55 @Override
5456 public void copy(final Object key, final NodeModel from, final NodeModel to) {
5557 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
5658 return;
7173 if (fromBorder != null) {
7274 fromBorder.copyTo(NodeBorderModel.createNodeBorderModel(to));
7375 }
74
75 }
76
76
77 }
78
79 @Override
7780 public void remove(final Object key, final NodeModel from) {
7881 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
7982 return;
8386 from.removeExtension(NodeBorderModel.class);
8487 }
8588
89 @Override
8690 public void remove(final Object key, final NodeModel from, final NodeModel which) {
8791 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
8892 return;
137141 fromData.setBorderColor(null);
138142 }
139143 }
140
144
141145 private void removeStyleData(Object key, NodeModel from, NodeModel which) {
142 final NodeStyleModel whichStyle = (NodeStyleModel) which.getExtension(NodeStyleModel.class);
146 final NodeStyleModel whichStyle = which.getExtension(NodeStyleModel.class);
143147 if (whichStyle == null) {
144148 return;
145149 }
146 final NodeStyleModel fromStyle = (NodeStyleModel) from.getExtension(NodeStyleModel.class);
150 final NodeStyleModel fromStyle = from.getExtension(NodeStyleModel.class);
147151 if (fromStyle == null) {
148152 return;
149153 }
182186 }
183187 }
184188
189 @Override
185190 public void resolveParentExtensions(Object key, NodeModel to) {
186191 if (!key.equals(LogicalStyleKeys.NODE_STYLE)) {
187192 return;
203208 private boolean hasOwnShape(NodeModel to) {
204209 return ! Shape.as_parent.equals(getShape(to));
205210 }
206
211
207212 private Shape getShape(NodeModel node) {
208213 return modeController.getExtension(NodeStyleController.class).getShape(node);
209214 }
272277 setHorizontalTextAlignment(target, sourceStyleModel.getHorizontalTextAlignment());
273278 }
274279 }
275
280
276281 private void copySizeModel(final NodeModel source, final NodeModel target) {
277282 final NodeSizeModel sourceSizeModel = NodeSizeModel.getModel(source);
278283 if (sourceSizeModel != null) {
280285 setMinNodeWidth(target, sourceSizeModel.getMinNodeWidth());
281286 }
282287 }
283
288
284289 private void copyBorderModel(final NodeModel source, final NodeModel target) {
285290 final NodeBorderModel from = NodeBorderModel.getModel(source);
286291 if (from != null) {
302307 }
303308 final ModeController modeController = Controller.getCurrentModeController();
304309 final IActor actor = new IActor() {
310 @Override
305311 public void act() {
306312 node.addExtension(new NodeStyleModel());
307313 }
308314
315 @Override
309316 public String getDescription() {
310317 return null;
311318 }
312319
320 @Override
313321 public void undo() {
314322 node.removeExtension(NodeStyleModel.class);
315323 }
327335 }
328336 final ModeController modeController = Controller.getCurrentModeController();
329337 final IActor actor = new IActor() {
338 @Override
330339 public void act() {
331340 node.addExtension(new NodeSizeModel());
332341 }
333342
343 @Override
334344 public String getDescription() {
335345 return null;
336346 }
337347
348 @Override
338349 public void undo() {
339350 node.removeExtension(NodeSizeModel.class);
340351 }
360371 return;
361372 }
362373 final IActor actor = new IActor() {
374 @Override
363375 public void act() {
364376 NodeStyleModel.setBackgroundColor(node, color);
365377 Controller.getCurrentModeController().getMapController().nodeChanged(node);
366378 }
367379
380 @Override
368381 public String getDescription() {
369382 return "setBackgroundColor";
370383 }
371384
385 @Override
372386 public void undo() {
373387 NodeStyleModel.setBackgroundColor(node, oldColor);
374388 Controller.getCurrentModeController().getMapController().nodeChanged(node);
388402 createOwnStyleModel(node);
389403 final ModeController modeController = Controller.getCurrentModeController();
390404 final IActor actor = new IActor() {
405 @Override
391406 public void act() {
392407 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
393408 styleModel.setBold(bold);
394409 Controller.getCurrentModeController().getMapController().nodeChanged(node);
395410 }
396411
412 @Override
397413 public String getDescription() {
398414 return "setBold";
399415 }
400416
417 @Override
401418 public void undo() {
402419 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
403420 styleModel.setBold(oldBold);
414431 return;
415432 }
416433 final IActor actor = new IActor() {
434 @Override
417435 public void act() {
418436 NodeStyleModel.setColor(node, color);
419437 Controller.getCurrentModeController().getMapController().nodeChanged(node);
420438 }
421439
440 @Override
422441 public String getDescription() {
423442 return "setColor";
424443 }
425444
445 @Override
426446 public void undo() {
427447 NodeStyleModel.setColor(node, oldColor);
428448 Controller.getCurrentModeController().getMapController().nodeChanged(node);
442462 createOwnStyleModel(node);
443463 final ModeController modeController = Controller.getCurrentModeController();
444464 final IActor actor = new IActor() {
465 @Override
445466 public void act() {
446467 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
447468 styleModel.setFontFamilyName(fontFamily);
448469 Controller.getCurrentModeController().getMapController().nodeChanged(node);
449470 }
450471
472 @Override
451473 public String getDescription() {
452474 return "setFontFamily";
453475 }
454476
477 @Override
455478 public void undo() {
456479 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
457480 styleModel.setFontFamilyName(oldFontFamily);
485508 createOwnStyleModel(node);
486509 final ModeController modeController = Controller.getCurrentModeController();
487510 final IActor actor = new IActor() {
511 @Override
488512 public void act() {
489513 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
490514 styleModel.setFontSize(fontSize);
491515 Controller.getCurrentModeController().getMapController().nodeChanged(node);
492516 }
493517
518 @Override
494519 public String getDescription() {
495520 return "setFontSize";
496521 }
497522
523 @Override
498524 public void undo() {
499525 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
500526 styleModel.setFontSize(oldFontSize);
515541 createOwnStyleModel(node);
516542 final ModeController modeController = Controller.getCurrentModeController();
517543 final IActor actor = new IActor() {
544 @Override
518545 public void act() {
519546 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
520547 styleModel.setItalic(italic);
521548 Controller.getCurrentModeController().getMapController().nodeChanged(node);
522549 }
523550
551 @Override
524552 public String getDescription() {
525553 return "setItalic";
526554 }
527555
556 @Override
528557 public void undo() {
529558 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
530559 styleModel.setItalic(oldItalic);
538567 final ModeController modeController = Controller.getCurrentModeController();
539568 final Boolean oldValue = NodeStyleModel.getNodeNumbering(node);
540569 final IActor actor = new IActor() {
570 @Override
541571 public void act() {
542572 NodeStyleModel.setNodeNumbering(node, enableNodeNumbering);
543573 final MapController mapController = modeController.getMapController();
545575 mapController.delayedNodeRefresh(node, NodeStyleController.NODE_NUMBERING, oldValue, enableNodeNumbering);
546576 }
547577
578 @Override
548579 public String getDescription() {
549580 return "setNodeNumbering";
550581 }
551582
583 @Override
552584 public void undo() {
553585 NodeStyleModel.setNodeNumbering(node, oldValue);
554586 final MapController mapController = modeController.getMapController();
563595 final ModeController modeController = Controller.getCurrentModeController();
564596 final String oldFormat = NodeStyleModel.getNodeFormat(node);
565597 final IActor actor = new IActor() {
598 @Override
566599 public void act() {
567600 NodeStyleModel.setNodeFormat(node, format);
568601 modeController.getMapController().nodeChanged(node);
569602 }
570603
604 @Override
571605 public String getDescription() {
572606 return "setNodeFormat";
573607 }
574608
609 @Override
575610 public void undo() {
576611 NodeStyleModel.setNodeFormat(node, oldFormat);
577612 modeController.getMapController().nodeChanged(node);
583618 public void setShape(final NodeModel node, final String shape) {
584619 setShape(node, shape == null ? null : Shape.valueOf(shape));
585620 }
586
621
587622 public void setShape(final NodeModel node, final Shape shape) {
588623 final ShapeConfigurationModel oldShape = NodeStyleModel.getShapeConfiguration(node);
589624 setShapeConfiguration(node, oldShape.withShape(shape));
590625 }
591
626
592627 public void setShapeHorizontalMargin(NodeModel node, Quantity<LengthUnits> margin) {
593628 final ShapeConfigurationModel oldShape = NodeStyleModel.getShapeConfiguration(node);
594629 setShapeConfiguration(node, oldShape.withHorizontalMargin(margin));
604639 setShapeConfiguration(node, oldShape.withUniform(uniform));
605640 }
606641
607
642
608643 public void setShapeConfiguration(final NodeModel node, final ShapeConfigurationModel shape) {
609644 final ModeController modeController = Controller.getCurrentModeController();
610645 final ShapeConfigurationModel oldShape = NodeStyleModel.getShapeConfiguration(node);
611646 final IActor actor = new IActor() {
647 @Override
612648 public void act() {
613649 NodeStyleModel.setShapeConfiguration(node, shape);
614650 modeController.getMapController().nodeChanged(node);
615651 childShapeRefresh(node);
616652 }
617653
654 @Override
618655 public String getDescription() {
619656 return "setShape";
620657 }
621658
622659 private void childShapeRefresh(final NodeModel node) {
623 MapController r = modeController.getMapController();
624660 for (final NodeModel child : node.getChildren()) {
625661 if(child.getViewers().isEmpty())
626662 continue;
632668 }
633669 }
634670
671 @Override
635672 public void undo() {
636673 NodeStyleModel.setShapeConfiguration(node, oldShape);
637674 modeController.getMapController().nodeChanged(node);
645682 final NodeSizeModel sizeModel = createOwnSizeModel(node);
646683 final Quantity<LengthUnits> oldValue = NodeSizeModel.getMinNodeWidth(node);
647684 final IActor actor = new IActor() {
685 @Override
648686 public void act() {
649687 sizeModel.setMinNodeWidth(minNodeWidth);
650688 final MapController mapController = getModeController().getMapController();
651689 mapController.nodeChanged(node);
652690 }
653691
692 @Override
654693 public String getDescription() {
655694 return "setMinNodeWidth";
656695 }
657696
697 @Override
658698 public void undo() {
659699 sizeModel.setMinNodeWidth(oldValue);
660700 final MapController mapController = getModeController().getMapController();
673713 final NodeSizeModel sizeModel = createOwnSizeModel(node);
674714 final Quantity<LengthUnits> oldValue = NodeSizeModel.getMaxNodeWidth(node);
675715 final IActor actor = new IActor() {
716 @Override
676717 public void act() {
677718 sizeModel.setMaxNodeWidth(maxNodeWidth);
678719 final MapController mapController = getModeController().getMapController();
679720 mapController.nodeChanged(node);
680721 }
681722
723 @Override
682724 public String getDescription() {
683725 return "setMaxNodeWidth";
684726 }
685727
728 @Override
686729 public void undo() {
687730 sizeModel.setMaxNodeWidth(oldValue);
688731 final MapController mapController = getModeController().getMapController();
700743 public void setHorizontalTextAlignment(final NodeModel node, final HorizontalTextAlignment textAlignment) {
701744 final HorizontalTextAlignment oldTextAlignment = NodeStyleModel.getHorizontalTextAlignment(node);
702745 final IActor actor = new IActor() {
746 @Override
703747 public void act() {
704748 NodeStyleModel.setHorizontalTextAlignment(node, textAlignment);
705749 final MapController mapController = getModeController().getMapController();
706750 mapController.nodeChanged(node);
707751 }
708752
753 @Override
709754 public String getDescription() {
710755 return "setHorizontalTextAlignment";
711756 }
712757
758 @Override
713759 public void undo() {
714760 NodeStyleModel.setHorizontalTextAlignment(node, oldTextAlignment);
715761 final MapController mapController = getModeController().getMapController();
717763 }
718764 };
719765 getModeController().execute(actor, node.getMap());
720
766
721767 }
722768
723769
724770 public void setBorderWidthMatchesEdgeWidth(final NodeModel node, final Boolean borderWidthMatchesEdgeWidth) {
725771 final Boolean oldBorderWidthMatchesEdgeWidth = NodeBorderModel.getBorderWidthMatchesEdgeWidth(node);
726772 final IActor actor = new IActor() {
773 @Override
727774 public void act() {
728775 NodeBorderModel.setBorderWidthMatchesEdgeWidth(node, borderWidthMatchesEdgeWidth);
729776 final MapController mapController = getModeController().getMapController();
730777 mapController.nodeChanged(node);
731778 }
732779
780 @Override
733781 public String getDescription() {
734782 return "setBorderWidthMatchesEdgeWidth";
735783 }
736784
785 @Override
737786 public void undo() {
738787 NodeBorderModel.setBorderWidthMatchesEdgeWidth(node, oldBorderWidthMatchesEdgeWidth);
739788 final MapController mapController = getModeController().getMapController();
742791 };
743792 getModeController().execute(actor, node.getMap());
744793 }
745
794
746795 public void setBorderDashMatchesEdgeDash(final NodeModel node, final Boolean borderDashMatchesEdgeDash) {
747796 final Boolean oldBorderDashMatchesEdgeDash = NodeBorderModel.getBorderDashMatchesEdgeDash(node);
748797 final IActor actor = new IActor() {
798 @Override
749799 public void act() {
750800 NodeBorderModel.setBorderDashMatchesEdgeDash(node, borderDashMatchesEdgeDash);
751801 final MapController mapController = getModeController().getMapController();
752802 mapController.nodeChanged(node);
753803 }
754804
805 @Override
755806 public String getDescription() {
756807 return "setBorderDashMatchesEdgeDash";
757808 }
758809
810 @Override
759811 public void undo() {
760812 NodeBorderModel.setBorderDashMatchesEdgeDash(node, oldBorderDashMatchesEdgeDash);
761813 final MapController mapController = getModeController().getMapController();
764816 };
765817 getModeController().execute(actor, node.getMap());
766818 }
767
819
768820
769821 public void setBorderColorMatchesEdgeColor(final NodeModel node, final Boolean borderColorMatchesEdgeColor) {
770822 final Boolean oldBorderColorMatchesEdgeColor = NodeBorderModel.getBorderColorMatchesEdgeColor(node);
771823 final IActor actor = new IActor() {
824 @Override
772825 public void act() {
773826 NodeBorderModel.setBorderColorMatchesEdgeColor(node, borderColorMatchesEdgeColor);
774827 final MapController mapController = getModeController().getMapController();
775828 mapController.nodeChanged(node);
776829 }
777830
831 @Override
778832 public String getDescription() {
779833 return "setBorderColorMatchesEdgeColor";
780834 }
781835
836 @Override
782837 public void undo() {
783838 NodeBorderModel.setBorderColorMatchesEdgeColor(node, oldBorderColorMatchesEdgeColor);
784839 final MapController mapController = getModeController().getMapController();
787842 };
788843 getModeController().execute(actor, node.getMap());
789844 }
790
845
791846 public void setBorderWidth(final NodeModel node, final Quantity<LengthUnits> borderWidth) {
792847 final Quantity<LengthUnits> oldBorderWidth = NodeBorderModel.getBorderWidth(node);
793848 final IActor actor = new IActor() {
849 @Override
794850 public void act() {
795851 NodeBorderModel.setBorderWidth(node, borderWidth);
796852 final MapController mapController = getModeController().getMapController();
797853 mapController.nodeChanged(node);
798854 }
799855
856 @Override
800857 public String getDescription() {
801858 return "setBorderWidth";
802859 }
803860
861 @Override
804862 public void undo() {
805863 NodeBorderModel.setBorderWidth(node, oldBorderWidth);
806864 final MapController mapController = getModeController().getMapController();
808866 }
809867 };
810868 getModeController().execute(actor, node.getMap());
811
812 }
813
869
870 }
871
814872 public void setBorderDash(final NodeModel node, final DashVariant borderDash) {
815873 final DashVariant oldBorderDash = NodeBorderModel.getBorderDash(node);
816874 final IActor actor = new IActor() {
875 @Override
817876 public void act() {
818877 NodeBorderModel.setBorderDash(node, borderDash);
819878 final MapController mapController = getModeController().getMapController();
820879 mapController.nodeChanged(node);
821880 }
822881
882 @Override
823883 public String getDescription() {
824884 return "setBorderDash";
825885 }
826886
887 @Override
827888 public void undo() {
828889 NodeBorderModel.setBorderDash(node, oldBorderDash);
829890 final MapController mapController = getModeController().getMapController();
831892 }
832893 };
833894 getModeController().execute(actor, node.getMap());
834
835 }
836
895
896 }
897
837898 public void setBorderColor(final NodeModel node, final Color borderColor) {
838899 final Color oldBorderColor = NodeBorderModel.getBorderColor(node);
839900 final IActor actor = new IActor() {
901 @Override
840902 public void act() {
841903 NodeBorderModel.setBorderColor(node, borderColor);
842904 final MapController mapController = getModeController().getMapController();
843905 mapController.nodeChanged(node);
844906 }
845907
908 @Override
846909 public String getDescription() {
847910 return "setBorderColor";
848911 }
849912
913 @Override
850914 public void undo() {
851915 NodeBorderModel.setBorderColor(node, oldBorderColor);
852916 final MapController mapController = getModeController().getMapController();
854918 }
855919 };
856920 getModeController().execute(actor, node.getMap());
857
921
858922 }
859923
860924 public void setStrikedThrough(final NodeModel node, final Boolean strikedThrough) {
865929 createOwnStyleModel(node);
866930 final ModeController modeController = Controller.getCurrentModeController();
867931 final IActor actor = new IActor() {
932 @Override
868933 public void act() {
869934 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
870935 styleModel.setStrikedThrough(strikedThrough);
871936 Controller.getCurrentModeController().getMapController().nodeChanged(node);
872937 }
873938
939 @Override
874940 public String getDescription() {
875941 return "setStrikedThrough";
876942 }
877943
944 @Override
878945 public void undo() {
879946 final NodeStyleModel styleModel = NodeStyleModel.getModel(node);
880947 styleModel.setStrikedThrough(oldStrikedThrough);
1818 */
1919 package org.freeplane.features.note;
2020
21 import java.awt.Color;
2221 import java.awt.Component;
23 import java.awt.Font;
22
2423 import javax.swing.Icon;
2524
2625 import org.freeplane.core.extension.IExtension;
2726 import org.freeplane.core.io.WriteManager;
2827 import org.freeplane.core.resources.ResourceController;
29 import org.freeplane.core.ui.components.html.CssRuleBuilder;
3028 import org.freeplane.features.icon.IStateIconProvider;
3129 import org.freeplane.features.icon.IconController;
3230 import org.freeplane.features.icon.UIIcon;
3634 import org.freeplane.features.map.NodeModel;
3735 import org.freeplane.features.mode.Controller;
3836 import org.freeplane.features.mode.ModeController;
39 import org.freeplane.features.nodestyle.NodeSizeModel;
40 import org.freeplane.features.nodestyle.NodeStyleController;
4137 import org.freeplane.features.styles.MapStyle;
4238 import org.freeplane.features.styles.MapStyleModel;
4339 import org.freeplane.features.text.TextController;
5450 private static final UIIcon noteIcon= IconStoreFactory.ICON_STORE.getUIIcon("knotes.png");
5551 public static final String bwNoteIconUrl;
5652 public static final Icon bwNoteIcon;
57
53
5854 static {
5955 String bwNoteIconName = "note_black_and_transp.png";
6056 bwNoteIconUrl = "freeplaneresource:/images/" + bwNoteIconName;
7167 }
7268
7369 public static NoteController getController(ModeController modeController) {
74 return (NoteController) modeController.getExtension(NoteController.class);
70 return modeController.getExtension(NoteController.class);
7571 }
76
72
7773 public static void install( final NoteController noteController) {
7874 final ModeController modeController = Controller.getCurrentModeController();
7975 modeController.addExtension(NoteController.class, noteController);
9591 }
9692
9793 public final String getNoteText(final NodeModel node) {
98 final NoteModel extension = (NoteModel) node.getExtension(NoteModel.class);
94 final NoteModel extension = node.getExtension(NoteModel.class);
9995 return extension != null ? extension.getHtml() : null;
10096 }
10197
10298 public final String getXmlNoteText(final NodeModel node) {
103 final NoteModel extension = (NoteModel) node.getExtension(NoteModel.class);
99 final NoteModel extension = node.getExtension(NoteModel.class);
104100 return extension != null ? extension.getXml() : null;
105101 }
106102
112108
113109 private void registerNoteTooltipProvider(ModeController modeController) {
114110 modeController.addToolTipProvider(NOTE_TOOLTIP, new ITooltipProvider() {
111 @Override
115112 public String getTooltip(final ModeController modeController, NodeModel node, Component view){
116113 return getTooltip(modeController, node, (MainView)view);
117114 }
123120 if (noteText == null)
124121 return null;
125122 float zoom = view.getNodeView().getMap().getZoom();
126 final String rule = getNoteCSSStyle(modeController, node, zoom, true);
123 final String rule = new NoteStyleAccessor(modeController, node, zoom, true).getNoteCSSStyle();
127124 final StringBuilder tooltipBodyBegin = new StringBuilder("<body><div style=\"");
128125 tooltipBodyBegin.append(rule);
129126 tooltipBodyBegin.append("\">");
132129 tooltipBodyBegin.append(bwNoteIconUrl.toString());
133130 tooltipBodyBegin.append("\">");
134131 }
135 final String tooltipText = noteText.replaceFirst("<body>",
132 final String tooltipText = noteText.replaceFirst("<body>",
136133 tooltipBodyBegin.toString()).replaceFirst("</body>", "</div></body>");
137134 return tooltipText;
138135 }
141138
142139 private void registerStateIconProvider() {
143140 IconController.getController().addStateIconProvider(new IStateIconProvider() {
141 @Override
144142 public UIIcon getStateIcon(NodeModel node) {
145143 boolean showIcon;
146144 if(NoteModel.getNote(node) != null){
147145 final String showNoteIcon = MapStyle.getController(modeController).getPropertySetDefault(node.getMap(), SHOW_NOTE_ICONS);
148146 showIcon = Boolean.parseBoolean(showNoteIcon);
149 if(showIcon)
147 if(showIcon)
150148 return noteIcon;
151149 }
152150 return null;
163161 final String property = MapStyleModel.getExtension(model).getProperty(NoteController.SHOW_NOTES_IN_MAP);
164162 return Boolean.parseBoolean(property);
165163 }
166
167 protected String getNoteCSSStyle(ModeController modeController, NodeModel node, float zoom, boolean asHtmlFragment) {
168 final StringBuilder rule = new StringBuilder();
169 // set default font for notes:
170 final NodeStyleController style = (NodeStyleController) Controller.getCurrentModeController().getExtension(
171 NodeStyleController.class);
172 MapModel map = modeController.getController().getMap();
173 if(map != null){
174 final MapStyleModel model = MapStyleModel.getExtension(map);
175 final NodeModel noteStyleNode = model.getStyleNodeSafe(MapStyleModel.NOTE_STYLE);
176 final Font noteFont = style.getFont(noteStyleNode);
177 Color noteBackground = style.getBackgroundColor(noteStyleNode);
178 Color noteForeground = style.getColor(noteStyleNode);
179 final int alignment = style.getHorizontalTextAlignment(noteStyleNode).swingConstant;
180 final CssRuleBuilder cssRuleBuilder = new CssRuleBuilder();
181 if(asHtmlFragment)
182 cssRuleBuilder.withHTMLFont(noteFont);
183 else
184 cssRuleBuilder.withCSSFont(noteFont);
185 cssRuleBuilder.withColor(noteForeground)
186 .withBackground(noteBackground)
187 .withAlignment(alignment);
188 if(asHtmlFragment)
189 cssRuleBuilder.withMaxWidthAsPt(zoom, NodeSizeModel.getMaxNodeWidth(noteStyleNode), style.getMaxWidth(node));
190 rule.append(cssRuleBuilder);
191 }
192 return rule.toString();
193 }
194
195164 }
0 package org.freeplane.features.note;
1
2 import java.awt.Color;
3 import java.awt.Font;
4
5 import org.freeplane.core.ui.components.html.CssRuleBuilder;
6 import org.freeplane.features.map.MapModel;
7 import org.freeplane.features.map.NodeModel;
8 import org.freeplane.features.mode.Controller;
9 import org.freeplane.features.mode.ModeController;
10 import org.freeplane.features.nodestyle.NodeSizeModel;
11 import org.freeplane.features.nodestyle.NodeStyleController;
12 import org.freeplane.features.styles.MapStyleModel;
13
14 public class NoteStyleAccessor {
15 final private String rule;
16 final private Color noteForeground;
17 public NoteStyleAccessor(ModeController modeController, NodeModel node, float zoom, boolean asHtmlFragment) {
18 MapModel map = modeController.getController().getMap();
19 if(map != null){
20 final MapStyleModel model = MapStyleModel.getExtension(map);
21 final NodeModel noteStyleNode = model.getStyleNodeSafe(MapStyleModel.NOTE_STYLE);
22 final NodeStyleController style = Controller.getCurrentModeController().getExtension(
23 NodeStyleController.class);
24 final Font noteFont = style.getFont(noteStyleNode);
25 Color noteBackground = style.getBackgroundColor(noteStyleNode);
26 this.noteForeground = style.getColor(noteStyleNode);
27 final int alignment = style.getHorizontalTextAlignment(noteStyleNode).swingConstant;
28 final CssRuleBuilder cssRuleBuilder = new CssRuleBuilder();
29 if(asHtmlFragment)
30 cssRuleBuilder.withHTMLFont(noteFont);
31 else
32 cssRuleBuilder.withCSSFont(noteFont);
33 cssRuleBuilder.withColor(noteForeground)
34 .withBackground(noteBackground)
35 .withAlignment(alignment);
36 if(asHtmlFragment)
37 cssRuleBuilder.withMaxWidthAsPt(zoom, NodeSizeModel.getMaxNodeWidth(noteStyleNode), style.getMaxWidth(node));
38 this.rule = cssRuleBuilder.toString();
39 }
40 else {
41 this.rule = "";
42 this.noteForeground = null;
43 }
44
45 }
46 public String getNoteCSSStyle() {
47 return rule;
48 }
49 public Color getNoteForeground() {
50 return noteForeground;
51 }
52
53
54 }
1919 package org.freeplane.features.note.mindmapmode;
2020
2121 import java.awt.BorderLayout;
22 import java.awt.Color;
2223 import java.awt.Component;
2324 import java.awt.Dimension;
2425 import java.awt.EventQueue;
5253 import org.freeplane.features.mode.ModeController;
5354 import org.freeplane.features.note.NoteController;
5455 import org.freeplane.features.note.NoteModel;
56 import org.freeplane.features.note.NoteStyleAccessor;
5557 import org.freeplane.features.spellchecker.mindmapmode.SpellCheckerController;
5658 import org.freeplane.features.styles.MapStyle;
5759 import org.freeplane.features.styles.SetBooleanMapPropertyAction;
113115 }
114116
115117 private static SHTMLPanel htmlEditorPanel;
118 private static Color defaultCaretColor;
119
116120 public static final String RESOURCES_REMOVE_NOTES_WITHOUT_QUESTION = "remove_notes_without_question";
117121 public static final String RESOURCES_USE_DEFAULT_FONT_FOR_NOTES_TOO = "resources_use_default_font_for_notes_too";
118122 public static final String RESOURCES_USE_MARGIN_TOP_ZERO_FOR_NOTES = "resources_use_margin_top_zero_for_notes";
153157
154158 htmlEditorPanel.setMinimumSize(new Dimension(100, 100));
155159 final SHTMLEditorPane editorPane = (SHTMLEditorPane) htmlEditorPanel.getEditorPane();
160 defaultCaretColor = editorPane.getCaretColor();
156161
157162 for (InputMap inputMap = editorPane.getInputMap(); inputMap != null; inputMap = inputMap.getParent()){
158163 inputMap.remove(KeyStroke.getKeyStroke("ctrl pressed T"));
323328 styleSheet.removeStyle("p");
324329 // set default font for notes:
325330 final ModeController modeController = Controller.getCurrentModeController();
326 String noteCssRule = getNoteCSSStyle(modeController, node, 1f, false);
331 final NoteStyleAccessor noteStyleAccessor = new NoteStyleAccessor(modeController, node, 1f, false);
332 String noteCssRule = noteStyleAccessor.getNoteCSSStyle();
333 Color noteForeground = noteStyleAccessor.getNoteForeground();
334 noteViewerComponent.getEditorPane().setCaretColor(noteForeground != null ? noteForeground : defaultCaretColor);
327335 String bodyRule = new StringBuilder( "body {").append(noteCssRule).append("}\n").toString();
328336 styleSheet.addRule(bodyRule);
329337 if (ResourceController.getResourceController().getBooleanProperty(
6161 }
6262
6363 @Override
64 public void onSelect(final NodeModel nodeView) {
65 node = nodeView;
64 public void onSelect(final NodeModel node) {
65 this.node = node;
6666 updateEditor();
6767 }
6868
155155 }
156156 }
157157
158 @Override
159 public void beforeMapChange(MapModel oldMap, MapModel newMap) {
160 }
161
162158 NodeModel getNode() {
163159 return node;
164160 }
3030 private static final Color NODE_HIGHLIGHTING_COLOR = Color.GREEN.brighter();
3131 static final String PROCESS_NAVIGATION_KEYS_PROPERTY = "presentation.processesNavigationKeys";
3232 static final String PROCESS_ESCAPE_KEY_PROPERTY = "presentation.processesEscapeKey";
33
33
3434
3535 private static float[] FOLDED_NODE_DASH = new float[]{FOLDED_NODE_DOT_WIDTH/2, 2*FOLDED_NODE_DOT_WIDTH};
3636 private static BasicStroke FOLDED_NODE_STROKE = new BasicStroke(FOLDED_NODE_DOT_WIDTH, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 1f, FOLDED_NODE_DASH, 0f);
5050 final JTabbedPane tabs = (JTabbedPane) modeController.getUserInputListenerFactory().getToolBar("/format").getComponent(1);
5151 tabs.add("Presentations", presentationController.createPanel());
5252 highlightController.addNodeHighlighter(new NodeHighlighter() {
53
53
5454 @Override
5555 public boolean isNodeHighlighted(NodeModel node, boolean isPrinting) {
5656 return !isPrinting && presentationState.shouldHighlightNodeContainedOnSlide(node);
5757 }
58
58
5959 @Override
6060 public void configure(Graphics2D g, boolean isPrinting) {
6161 g.setColor(NODE_HIGHLIGHTING_COLOR);
6363
6464 });
6565 highlightController.addNodeHighlighter(new NodeHighlighter() {
66
66
6767 @Override
6868 public boolean isNodeHighlighted(NodeModel node, boolean isPrinting) {
6969 return !isPrinting && presentationState.shouldHighlightNodeFoldedOnSlide(node);
7070 }
71
71
7272 @Override
7373 public void configure(Graphics2D g, boolean isPrinting) {
7474 g.setColor(NODE_HIGHLIGHTING_COLOR);
7676 }
7777
7878 });
79
79
8080 KeyEventDispatcher navigationKeyEventDispatcher = new NavigationKeyEventDispatcher(presentationState);
8181 KeyEventDispatcher escapeKeyEventDispatcher = new EscapeKeyEventDispatcher(presentationState);
82 final PresentationAutomation presentationKeyHandler = new PresentationAutomation(presentationState,
82 final PresentationAutomation presentationKeyHandler = new PresentationAutomation(presentationState,
8383 PresentationKeyEventDispatcher.of(navigationKeyEventDispatcher, PROCESS_NAVIGATION_KEYS_PROPERTY),
8484 PresentationKeyEventDispatcher.of(escapeKeyEventDispatcher, PROCESS_ESCAPE_KEY_PROPERTY));
8585 presentationState.addPresentationStateListener(presentationKeyHandler);
9595 final ResourceController resourceController = ResourceController.getResourceController();
9696 boolean combinesAllPresentations = resourceController.getBooleanProperty("presentation.combineAll");
9797 resourceController.addPropertyChangeListener(new IFreeplanePropertyListener() {
98
98
9999 @Override
100100 public void propertyChanged(String propertyName, String newValue, String oldValue) {
101101 if("presentation.combineAll".equals(propertyName))
105105 presentationState.setCombinesAllPresentations(combinesAllPresentations);
106106 presentationEditorController = new PresentationEditorController(presentationState);
107107 presentationState.addPresentationStateListener(new PresentationStateChangeListener() {
108
108
109109 @Override
110110 public void onPresentationStateChange(PresentationStateChangeEvent presentationStateChangeEvent) {
111111 repaintMap();
115115
116116 private void addMapSelectionListener() {
117117 IMapSelectionListener mapSelectionListener = new IMapSelectionListener() {
118
119 @Override
120 public void beforeMapChange(MapModel oldMap, MapModel newMap) {
121 }
122
118
123119 @Override
124120 public void afterMapChange(MapModel oldMap, MapModel newMap) {
125121 presentationState.stopPresentation();
138134 if(mapPresentations == null) {
139135 mapPresentations = new MapPresentations(getPresentationFactory(map));
140136 final CollectionChangeListener<Presentation> presentationCollectionChangeListener = new CollectionChangeListener<Presentation>() {
141
137
142138 @Override
143139 public void onCollectionChange(CollectionChangedEvent<Presentation> event) {
144140 if(event.eventType == COLLECTION_SIZE_CHANGED)
150146 }
151147 return mapPresentations;
152148 }
153
149
154150 NamedElementFactory<Presentation> getPresentationFactory(final MapModel map) {
155151 final NamedElementFactory<Slide> slideFactory = getSlideFactory(map);
156
152
157153 final CollectionChangeListener<Slide> slideCollectionChangeListener = new CollectionChangeListener<Slide>() {
158
154
159155 @Override
160156 public void onCollectionChange(CollectionChangedEvent<Slide> event) {
161157 if(event.eventType == COLLECTION_SIZE_CHANGED)
165161 }
166162 };
167163 final NamedElementFactory<Presentation> presentationFactory = new NamedElementFactory<Presentation>() {
168
164
169165 @Override
170166 public Presentation create(Presentation prototype, String newName) {
171167 final Presentation presentation = prototype.create(newName);
172168 presentation.slides.addCollectionChangeListener(slideCollectionChangeListener);
173169 return presentation;
174170 }
175
171
176172 @Override
177173 public Presentation create(String name) {
178174 final Presentation presentation = new Presentation(name, slideFactory);
192188 presentationState.changeSlide();
193189 }
194190 };
195
191
196192 @Override
197193 public Slide create(Slide prototype, String newName) {
198194 final Slide slide = prototype.create(newName);
199195 slide.addSlideChangeListener(slideChangeListener);
200196 return slide;
201197 }
202
198
203199 @Override
204200 public Slide create(String name) {
205201 final Slide slide = new Slide(name);
217213 public void hierarchyChanged(HierarchyEvent e) {
218214 if( 0 != (e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED))
219215 presentationState.setHighlightsNodes(e.getComponent().isShowing());
220
216
221217 }
222218 });
223219 return new JAutoScrollBarPane(presentationEditor);
8383 this.conditionalStyleModel = conditionalStyleModel;
8484 }
8585
86 @Override
8687 public void undo() {
87 MLogicalStyleController.super.insertConditionalStyle(conditionalStyleModel, index, item.isActive(), item.getCondition(),
88 MLogicalStyleController.super.insertConditionalStyle(conditionalStyleModel, index, item.isActive(), item.getCondition(),
8889 item.getStyle(), item.isLast());
8990 }
9091
92 @Override
9193 public String getDescription() {
9294 return "RemoveConditionalStyle";
9395 }
9496
97 @Override
9598 public void act() {
9699 item = MLogicalStyleController.super.removeConditionalStyle(conditionalStyleModel, index);
97100 }
112115 this.isLast = isLast;
113116 }
114117
118 @Override
115119 public void undo() {
116120 int index = conditionalStyleModel.getStyleCount() - 1;
117121 MLogicalStyleController.super.removeConditionalStyle(conditionalStyleModel, index);
118122 }
119123
124 @Override
120125 public String getDescription() {
121126 return "AddConditionalStyle";
122127 }
123128
129 @Override
124130 public void act() {
125131 MLogicalStyleController.super.addConditionalStyle(conditionalStyleModel, isActive, condition, style, isLast);
126132 }
130136 public StyleRemover() {
131137 }
132138
139 @Override
133140 public void nodeChanged(final NodeChangeEvent event) {
134141 final ModeController modeController = Controller.getCurrentModeController();
135142 if (modeController == null || modeController.isUndoAction()) {
151158 };
152159
153160 private static class ExtensionCopier implements IExtensionCopier {
161 @Override
154162 public void copy(final Object key, final NodeModel from, final NodeModel to) {
155163 if (!key.equals(LogicalStyleKeys.LOGICAL_STYLE)) {
156164 return;
159167 }
160168
161169 public void copy(final NodeModel from, final NodeModel to) {
162 final LogicalStyleModel fromStyle = (LogicalStyleModel) from.getExtension(LogicalStyleModel.class);
170 final LogicalStyleModel fromStyle = from.getExtension(LogicalStyleModel.class);
163171 if (fromStyle == null) {
164172 return;
165173 }
167175 toStyle.setStyle(fromStyle.getStyle());
168176 }
169177
178 @Override
170179 public void remove(final Object key, final NodeModel from) {
171180 if (!key.equals(LogicalStyleKeys.LOGICAL_STYLE)) {
172181 return;
174183 from.removeExtension(LogicalStyleModel.class);
175184 }
176185
186 @Override
177187 public void remove(final Object key, final NodeModel from, final NodeModel which) {
178188 if (!key.equals(LogicalStyleKeys.LOGICAL_STYLE)) {
179189 return;
180190 }
181 final LogicalStyleModel whichStyle = (LogicalStyleModel) which.getExtension(LogicalStyleModel.class);
191 final LogicalStyleModel whichStyle = which.getExtension(LogicalStyleModel.class);
182192 if (whichStyle == null) {
183193 return;
184194 }
185 final LogicalStyleModel fromStyle = (LogicalStyleModel) from.getExtension(LogicalStyleModel.class);
195 final LogicalStyleModel fromStyle = from.getExtension(LogicalStyleModel.class);
186196 if (fromStyle == null) {
187197 return;
188198 }
189199 from.removeExtension(fromStyle);
190200 }
191
201
202 @Override
192203 public void resolveParentExtensions(Object key, NodeModel to) {
193204 }
194205 }
227238 new ChildActionEntryRemover(modeController));
228239 final IUserInputListenerFactory userInputListenerFactory = modeController.getUserInputListenerFactory();
229240 Controller.getCurrentController().getMapViewManager().addMapSelectionListener(new IMapSelectionListener() {
230 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
231 }
232
241 @Override
233242 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
234243 userInputListenerFactory.rebuildMenus(STYLE_ACTIONS);
235244 }
236245 });
237246 final MapController mapController = modeController.getMapController();
238247 mapController.addMapChangeListener(new IMapChangeListener() {
248 @Override
239249 public void onPreNodeMoved(NodeMoveEvent nodeMoveEvent) {
240250 }
241251
252 @Override
242253 public void onPreNodeDelete(NodeDeletionEvent nodeDeletionEvent) {
243254 }
244255
256 @Override
245257 public void onNodeMoved(NodeMoveEvent nodeMoveEvent) {
246258 }
247259
260 @Override
248261 public void onNodeInserted(final NodeModel parent, final NodeModel child, final int newIndex) {
249262 }
250263
264 @Override
251265 public void onNodeDeleted(NodeDeletionEvent nodeDeletionEvent) {
252266 }
253267
268 @Override
254269 public void mapChanged(final MapChangeEvent event) {
255270 if (event.getProperty().equals(MapStyle.MAP_STYLES)) {
256271 userInputListenerFactory.rebuildMenus(STYLE_ACTIONS);
258273 }
259274 });
260275 mapController.addNodeSelectionListener(new INodeSelectionListener() {
276 @Override
261277 public void onSelect(final NodeModel node) {
262278 selectActions();
263279 }
264280
281 @Override
265282 public void onDeselect(final NodeModel node) {
266283 }
267284 });
270287
271288 class StyleMenuBuilder implements EntryVisitor {
272289 private final ModeController modeController;
273
290
274291 public StyleMenuBuilder(ModeController modeController) {
275292 super();
276293 this.modeController = modeController;
337354 return;
338355 }
339356 final IActor actor = new IActor() {
357 @Override
340358 public String getDescription() {
341359 return "setStyle";
342360 }
343361
362 @Override
344363 public void act() {
345364 changeStyle(modeController, node, oldStyle, style);
346365 }
347366
367 @Override
348368 public void undo() {
349369 changeStyle(modeController, node, style, oldStyle);
350370 }
398418 }
399419 }
400420
401
421
402422 public void moveConditionalStyleDown(final MapModel map, final ConditionalStyleModel conditionalStyleModel, final int index) {
403423 int maxIndex = conditionalStyleModel.getStyleCount() - 1;
404424 if (index < 0 || index >= maxIndex) {
405425 return;
406426 }
407427 IActor actor = new IActor() {
428 @Override
408429 public String getDescription() {
409430 return "moveConditionalStyleDown";
410431 }
411432
433 @Override
412434 public void act() {
413435 MLogicalStyleController.super.moveConditionalStyleDown(conditionalStyleModel, index);
414436 }
415437
438 @Override
416439 public void undo() {
417440 MLogicalStyleController.super.moveConditionalStyleUp(conditionalStyleModel, index + 1);
418441 }
420443 Controller.getCurrentModeController().execute(actor, map);
421444 }
422445
423
446
424447 public void moveConditionalStyleUp(final MapModel map, final ConditionalStyleModel conditionalStyleModel, final int index) {
425448 int maxIndex = conditionalStyleModel.getStyleCount() - 1;
426449 if (index <= 0 || index > maxIndex) {
427450 return;
428451 }
429452 IActor actor = new IActor() {
453 @Override
430454 public String getDescription() {
431455 return "moveConditionalStyleUp";
432456 }
433457
458 @Override
434459 public void act() {
435460 MLogicalStyleController.super.moveConditionalStyleUp(conditionalStyleModel, index);
436461 }
437462
463 @Override
438464 public void undo() {
439465 MLogicalStyleController.super.moveConditionalStyleDown(conditionalStyleModel, index - 1);
440466 }
446472 return (MLogicalStyleController) LogicalStyleController.getController();
447473 }
448474
449
475
450476 public void addConditionalStyle(final MapModel map, final ConditionalStyleModel conditionalStyleModel, boolean isActive, ASelectableCondition condition, IStyle style, boolean isLast) {
451477 AddConditionalStyleActor actor = new AddConditionalStyleActor(conditionalStyleModel, isActive, condition, style, isLast);
452478 Controller.getCurrentModeController().execute(actor, map);
453479 }
454480
455
481
456482 public Item removeConditionalStyle(final MapModel map, final ConditionalStyleModel conditionalStyleModel, final int index) {
457483 RemoveConditionalStyleActor actor = new RemoveConditionalStyleActor(conditionalStyleModel, index);
458484 Controller.getCurrentModeController().execute(actor, map);
463489 return new TableModel() {
464490 private final TableModel tableModel = conditionalStyleModel.asTableModel();
465491
492 @Override
466493 public void addTableModelListener(TableModelListener l) {
467494 tableModel.addTableModelListener(l);
468495 }
469496
497 @Override
470498 public Class<?> getColumnClass(int columnIndex) {
471499 return tableModel.getColumnClass(columnIndex);
472500 }
473501
502 @Override
474503 public int getColumnCount() {
475504 return tableModel.getColumnCount();
476505 }
477506
507 @Override
478508 public String getColumnName(int columnIndex) {
479509 return tableModel.getColumnName(columnIndex);
480510 }
481511
512 @Override
482513 public int getRowCount() {
483514 return tableModel.getRowCount();
484515 }
485516
517 @Override
486518 public Object getValueAt(int rowIndex, int columnIndex) {
487519 return tableModel.getValueAt(rowIndex, columnIndex);
488520 }
489521
522 @Override
490523 public boolean isCellEditable(int rowIndex, int columnIndex) {
491524 return tableModel.isCellEditable(rowIndex, columnIndex);
492525 }
493526
527 @Override
494528 public void removeTableModelListener(TableModelListener l) {
495529 tableModel.removeTableModelListener(l);
496530 }
497531
532 @Override
498533 public void setValueAt(final Object aValue, final int rowIndex, final int columnIndex) {
499534 final Object oldValue = tableModel.getValueAt(rowIndex, columnIndex);
500535 if(aValue == oldValue || aValue != null && aValue.equals(oldValue)){
502537 }
503538 IActor actor = new IActor() {
504539
540 @Override
505541 public String getDescription() {
506542 return "set conditional style table cell value";
507543 }
508544
545 @Override
509546 public void act() {
510547 tableModel.setValueAt(aValue, rowIndex, columnIndex);
511548 }
512549
550 @Override
513551 public void undo() {
514552 tableModel.setValueAt(oldValue, rowIndex, columnIndex);
515553 }
518556 }
519557 };
520558 }
521
559
522560
523561 }
7474 final String[] envFonts = gEnv.getAvailableFontFamilyNames();
7575 fonts = new DefaultComboBoxModel(envFonts);
7676 final ListDataListener fontsListener = new ListDataListener() {
77 @Override
7778 public void intervalRemoved(final ListDataEvent e) {
7879 }
7980
81 @Override
8082 public void intervalAdded(final ListDataEvent e) {
8183 }
8284
85 @Override
8386 public void contentsChanged(final ListDataEvent e) {
8487 if (e.getIndex0() != -1) {
8588 return;
9598 };
9699 fonts.addListDataListener(fontsListener);
97100 final ListDataListener sizeListener = new ListDataListener() {
101 @Override
98102 public void intervalRemoved(final ListDataEvent e) {
99103 }
100104
105 @Override
101106 public void intervalAdded(final ListDataEvent e) {
102107 }
103108
109 @Override
104110 public void contentsChanged(final ListDataEvent e) {
105111 if (e.getIndex0() != -1) {
106112 return;
119125 };
120126 size.addListDataListener(sizeListener);
121127 final ListDataListener styleListener = new ListDataListener() {
128 @Override
122129 public void intervalRemoved(final ListDataEvent e) {
123130 }
124131
132 @Override
125133 public void intervalAdded(final ListDataEvent e) {
126134 }
127135
136 @Override
128137 public void contentsChanged(final ListDataEvent e) {
129138 if (e.getIndex0() != -1) {
130139 return;
154163 ignoreChangeEvent = false;
155164 }
156165
166 @Override
157167 public void nodeChanged(final NodeChangeEvent event) {
158168 IMapSelection selection = Controller.getCurrentController().getSelection();
159169 if(selection != null) {
164174 changeToolbar(event.getNode());
165175 }
166176
177 @Override
167178 public void onDeselect(final NodeModel node) {
168179 }
169180
181 @Override
170182 public void onSelect(final NodeModel node) {
171183 changeToolbar(node);
172184 }
210222 return fontsBox;
211223 }
212224
225 @Override
213226 public void mapChanged(final MapChangeEvent event) {
214227 final Object property = event.getProperty();
215228 if (property.equals(MapStyle.MAP_STYLES)) {
220233 }
221234 }
222235
236 @Override
223237 public void onNodeDeleted(NodeDeletionEvent nodeDeletionEvent) {
224238 }
225239
240 @Override
226241 public void onNodeInserted(final NodeModel parent, final NodeModel child, final int newIndex) {
227242 }
228243
244 @Override
229245 public void onNodeMoved(NodeMoveEvent nodeMoveEvent) {
230246 }
231247
248 @Override
232249 public void onPreNodeDelete(NodeDeletionEvent nodeDeletionEvent) {
233250 }
234251
252 @Override
235253 public void onPreNodeMoved(NodeMoveEvent nodeMoveEvent) {
236254 }
237255
256 @Override
238257 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
239258 updateMapStyles(newMap);
240259 }
252271 ignoreChangeEvent = false;
253272 }
254273
255 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
256 }
257274 }
2121 import java.awt.Color;
2222 import java.awt.Component;
2323 import java.awt.Font;
24 import java.io.File;
25 import java.net.URI;
26 import java.net.URISyntaxException;
2427 import java.util.Collections;
2528 import java.util.LinkedList;
2629 import java.util.List;
3740 import org.freeplane.core.util.LogUtils;
3841 import org.freeplane.core.util.TextUtils;
3942 import org.freeplane.features.filter.FilterController;
43 import org.freeplane.features.format.IFormattedObject;
4044 import org.freeplane.features.format.PatternFormat;
45 import org.freeplane.features.link.LinkController;
4146 import org.freeplane.features.map.ITooltipProvider;
4247 import org.freeplane.features.map.MapController;
4348 import org.freeplane.features.map.NodeChangeEvent;
6469 private final List<IContentTransformer> textTransformers;
6570 protected final ModeController modeController;
6671 private boolean nodeNumberingEnabled = true;
72 private static final String FILE_PROTOCOL = "file:";
6773 public static final String MARK_TRANSFORMED_TEXT = "highlight_formulas";
6874
6975 public static boolean isMarkTransformedTextSet() {
187193 /** returns an error message instead of a normal result if something goes wrong. */
188194 public Object getTransformedObjectNoFormattingNoThrow(Object data, final NodeModel node, Object extension) {
189195 try {
190 final Object transformedObject = getTransformedObject(data, node, extension);
196 Object transformedObject = getTransformedObject(data, node, extension);
191197 if (transformedObject instanceof HighlightedTransformedObject)
192 return ((HighlightedTransformedObject) transformedObject).getObject();
193 else
194 return transformedObject;
198 transformedObject = ((HighlightedTransformedObject) transformedObject).getObject();
199 if (transformedObject instanceof IFormattedObject)
200 transformedObject = ((IFormattedObject) transformedObject).getObject();
201 return transformedObject;
195202 }
196203 catch (Throwable e) {
197204 LogUtils.warn(e.getMessage());
414421 public boolean canEdit() {
415422 return false;
416423 }
424
425 public URI toUri(final Object value, final NodeModel node, Object extension) {
426 final Object transformedObject = getTransformedObjectNoFormattingNoThrow(value, node, extension);
427 if (transformedObject instanceof URI)
428 return (URI)transformedObject;
429 final String objectAsFileReference;
430 if(transformedObject instanceof File) {
431 objectAsFileReference = TextController.FILE_PROTOCOL + ((File)transformedObject).getPath();
432 }
433 else if (transformedObject instanceof String) {
434 objectAsFileReference = (String) transformedObject;
435 if(!objectAsFileReference.startsWith(TextController.FILE_PROTOCOL))
436 return null;
437 }
438 else
439 return null;
440 try {
441 return LinkController.createURI(objectAsFileReference);
442 }
443 catch (URISyntaxException e) {
444 return null;
445 }
446 }
417447 }
5353 abstract public class EditNodeBase {
5454 public static enum EditedComponent{TEXT, DETAIL, NOTE}
5555 abstract static class EditDialog{
56 private final JDialog dialog;
56 private final JDialog dialog;
5757 protected JDialog getDialog() {
5858 return dialog;
5959 }
6060
6161 class CancelAction extends AbstractAction {
6262 /**
63 *
63 *
6464 */
6565 private static final long serialVersionUID = 1L;
6666
67 @Override
6768 public void actionPerformed(final ActionEvent e) {
6869 confirmedCancel();
6970 }
9192
9293 class SplitAction extends AbstractAction {
9394 /**
94 *
95 *
9596 */
9697 private static final long serialVersionUID = 1L;
9798
99 @Override
98100 public void actionPerformed(final ActionEvent e) {
99101 split();
100102 }
102104
103105 class SubmitAction extends AbstractAction {
104106 /**
105 *
107 *
106108 */
107109 private static final long serialVersionUID = 1L;
108110
111 @Override
109112 public void actionPerformed(final ActionEvent e) {
110113 submit();
111114 }
196199 public Component getMostRecentFocusOwner() {
197200 return dialog.getMostRecentFocusOwner();
198201 }
199
200
202
203
201204 }
202205
203206 protected JPopupMenu createPopupMenu(Component component){
231234 void ok(String newText);
232235
233236 void split(String newText, int position);
234
237
235238 boolean canSplit();
236
239
237240 EditedComponent getEditType();
238241 }
239242
243246 final private IEditControl editControl;
244247 // final private ModeController modeController;
245248 protected NodeModel node;
246 protected String text;
249 private String text;
247250 private Color background;
248251 protected Color getBackground() {
249252 return background;
326329 abstract public void show(RootPaneContainer frame);
327330 public void setBackground(Color background) {
328331 this.background = background;
329
332
330333 }
331334 }
1818 */
1919 package org.freeplane.features.text.mindmapmode;
2020
21 import java.awt.BorderLayout;
2122 import java.awt.Color;
2223 import java.awt.Component;
24 import java.awt.Container;
2325 import java.awt.Dimension;
2426 import java.awt.Font;
2527 import java.awt.event.ActionEvent;
3234 import java.awt.event.MouseEvent;
3335 import java.awt.event.MouseListener;
3436
35 import javax.swing.BoxLayout;
3637 import javax.swing.JButton;
3738 import javax.swing.JCheckBox;
39 import javax.swing.JDialog;
3840 import javax.swing.JEditorPane;
3941 import javax.swing.JPanel;
4042 import javax.swing.JPopupMenu;
106108 editorScrollPane = new JScrollPane(textComponent);
107109 }
108110 }
109 final JPanel panel = new JPanel();
110111 final JButton okButton = new JButton();
111112 final JButton cancelButton = new JButton();
112113 final JButton splitButton = new JButton();
117118 LabelAndMnemonicSetter.setLabelAndMnemonic(splitButton, TextUtils.getRawText("split"));
118119 LabelAndMnemonicSetter.setLabelAndMnemonic(enterConfirms, TextUtils.getRawText("enter_confirms"));
119120 okButton.addActionListener(new ActionListener() {
121 @Override
120122 public void actionPerformed(final ActionEvent e) {
121123 submit();
122124 }
123125 });
124126 cancelButton.addActionListener(new ActionListener() {
127 @Override
125128 public void actionPerformed(final ActionEvent e) {
126129 cancel();
127130 }
128131 });
129132 splitButton.addActionListener(new ActionListener() {
133 @Override
130134 public void actionPerformed(final ActionEvent e) {
131135 split();
132136 }
133137 });
134138 enterConfirms.addActionListener(new ActionListener() {
139 @Override
135140 public void actionPerformed(final ActionEvent e) {
136141 textComponent.requestFocus();
137142 ResourceController.getResourceController().setProperty("el__enter_confirms_by_default",
139144 }
140145 });
141146 textComponent.addKeyListener(new KeyListener() {
147 @Override
142148 public void keyPressed(final KeyEvent e) {
143149 switch (e.getKeyCode()) {
144150 case KeyEvent.VK_ESCAPE:
170176 }
171177 }
172178
179 @Override
173180 public void keyReleased(final KeyEvent e) {
174181 }
175182
183 @Override
176184 public void keyTyped(final KeyEvent e) {
177185 }
178186 });
186194 }
187195 }
188196
197 @Override
189198 public void mouseClicked(final MouseEvent e) {
190199 }
191200
201 @Override
192202 public void mouseEntered(final MouseEvent e) {
193203 }
194204
205 @Override
195206 public void mouseExited(final MouseEvent e) {
196207 }
197208
209 @Override
198210 public void mousePressed(final MouseEvent e) {
199211 conditionallyShowPopup(e);
200212 }
201213
214 @Override
202215 public void mouseReleased(final MouseEvent e) {
203216 conditionallyShowPopup(e);
204217 }
210223 if (enableSplit)
211224 buttonPane.add(splitButton);
212225 buttonPane.setMaximumSize(new Dimension(1000, 20));
213 if (ResourceController.getResourceController().getBooleanProperty("el__buttons_above")) {
214 panel.add(buttonPane);
215 panel.add(editorScrollPane);
216 }
217 else {
218 panel.add(editorScrollPane);
219 panel.add(buttonPane);
220 }
221 panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
222 getDialog().setContentPane(panel);
226 final Container contentPane = getDialog().getContentPane();
227 contentPane.add(editorScrollPane, BorderLayout.CENTER);
228 final boolean areButtonsAtTheTop = ResourceController.getResourceController().getBooleanProperty("el__buttons_above");
229 contentPane.add(buttonPane, areButtonsAtTheTop ? BorderLayout.NORTH : BorderLayout.SOUTH);
223230 }
224231
225232 /*
296303 textComponent = textEditor;
297304 }
298305
306 @Override
299307 public void show(final RootPaneContainer frame) {
300308 if (title == null) {
301309 title = TextUtils.getText("edit_long_node");
302310 }
303 final EditDialog dialog = new LongNodeDialog(frame, title, getBackground());
311 final EditDialog editor = new LongNodeDialog(frame, title, getBackground());
304312 redispatchKeyEvents(textComponent, firstEvent);
305313 if (firstEvent == null) {
306314 textComponent.setCaretPosition(textComponent.getDocument().getLength());
307315 }
308 dialog.getDialog().setModal(isModal);
309 dialog.getDialog().pack();
316 final JDialog dialog = editor.getDialog();
317 configureDialog(dialog);
318 dialog.setModal(isModal);
319 dialog.pack();
310320 Controller.getCurrentModeController().getController().getMapViewManager().scrollNodeToVisible(node);
311321 if (ResourceController.getResourceController().getBooleanProperty("el__position_window_below_node")) {
312 UITools.setDialogLocationUnder(dialog.getDialog(), getNode());
322 UITools.setDialogLocationUnder(dialog, getNode());
313323 }
314324 else {
315 UITools.setDialogLocationRelativeTo(dialog.getDialog(), getNode());
316 }
317 dialog.show();
318 dialog.getDialog().addComponentListener(new ComponentListener() {
325 UITools.setDialogLocationRelativeTo(dialog, getNode());
326 }
327 editor.show();
328 dialog.addComponentListener(new ComponentListener() {
329 @Override
319330 public void componentShown(final ComponentEvent e) {
320331 }
321332
333 @Override
322334 public void componentResized(final ComponentEvent e) {
323335 }
324336
337 @Override
325338 public void componentMoved(final ComponentEvent e) {
326339 }
327340
341 @Override
328342 public void componentHidden(final ComponentEvent e) {
329 dialog.dispose();
343 editor.dispose();
330344 }
331345 });
346 }
347
348 protected void configureDialog(JDialog dialog) {
332349 }
333350
334351 public void setTitle(String title) {
7575 final SubmitAction submitAction = new SubmitAction();
7676 okButton.addActionListener(submitAction);
7777 cancelButton.addActionListener(new ActionListener() {
78 @Override
7879 public void actionPerformed(final ActionEvent e) {
7980 cancel();
8081 }
187188 private static final Dimension PREFERRED_SIZE = new Dimension(600, 400);
188189
189190 private String title;
190
191
191192 private Font font;
192193 private Color textColor = Color.BLACK;
193194 private Dimension preferredSize = PREFERRED_SIZE;
230231 super(node, text, editControl);
231232 }
232233
234 @Override
233235 public void show(final RootPaneContainer frame) {
234236 try {
235237 HTMLDialog htmlEditorWindow = createHtmlEditor(frame);
273275 else {
274276 UITools.setDialogLocationRelativeTo(htmlEditorWindow.getDialog(), node);
275277 }
276 String content = text;
278 String content = getText();
277279 if (!HtmlUtils.isHtmlNode(content)) {
278280 content = HtmlUtils.plainToHTML(content);
279281 }
299301 }
300302
301303 public HTMLDialog createHtmlEditor(final RootPaneContainer frame) throws Exception {
302 final JRootPane rootPane = ((RootPaneContainer)frame).getRootPane();
304 final JRootPane rootPane = frame.getRootPane();
303305 HTMLDialog htmlEditorWindow = (HTMLDialog) rootPane.getClientProperty(HTMLDialog.class);
304306 if (htmlEditorWindow == null) {
305307 htmlEditorWindow = new HTMLDialog(this, "", "", frame);
3232 import java.io.StringReader;
3333 import java.io.StringWriter;
3434 import java.net.URI;
35 import java.net.URISyntaxException;
3635 import java.util.Collection;
3736 import java.util.LinkedHashSet;
3837 import java.util.LinkedList;
504503 return parseData;
505504 }
506505
507 /** converts strings to date, number or URI if possible. All other data types are left unchanged. */
508 public Object guessObjectOrURI(final Object object, final String oldFormat) {
509 Object guessedObject = guessObject(object, oldFormat);
510 if (guessedObject == object && !(object instanceof URI) && matchUriPattern(object)) {
511 try {
512 return new URI((String) object);
513 }
514 catch (URISyntaxException e) {
515 LogUtils.warn("URI regular expression does not match URI parser for " + object);
516 return object;
517 }
518 }
519 return guessedObject;
520 }
521
522 private boolean matchUriPattern(Object object) {
523 if (!(object instanceof String))
524 return false;
525 return TextUtils.matchUriPattern((String) object);
526 }
527
528506 public void setNodeText(final NodeModel node, final String newText) {
529507 setNodeObject(node, newText);
530508 }
9797 if (formatter == null) {
9898 final StringBuilder sb = new StringBuilder();
9999 sb.append("<html>");
100 sb.append(TextUtils.getText("plugins/TimeList.xml_Created"));
100 sb.append(TextUtils.getText("reminder.Created"));
101101 sb.append(": {0,date} {0,time}<br>");
102 sb.append(TextUtils.getText("plugins/TimeList.xml_Modified"));
102 sb.append(TextUtils.getText("reminder.Modified"));
103103 sb.append(": {1,date} {1,time}</html>");
104104 String tooltipFormat = sb.toString();
105105 formatter = new MessageFormat(tooltipFormat);
+0
-110
freeplane/src/main/java/org/freeplane/features/ui/CollapseableBoxBuilder.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2014 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.ui;
20
21 import java.awt.Component;
22
23 import javax.swing.Box;
24
25 import org.freeplane.core.resources.ResourceController;
26 import org.freeplane.core.ui.components.JResizer.Direction;
27 import org.freeplane.core.ui.components.OneTouchCollapseResizer;
28 import org.freeplane.core.ui.components.OneTouchCollapseResizer.ComponentCollapseListener;
29 import org.freeplane.core.ui.components.ResizeEvent;
30 import org.freeplane.core.ui.components.ResizerListener;
31
32 /**
33 * @author Dimitry Polivaev
34 * 01.02.2014
35 */
36 public class CollapseableBoxBuilder {
37 private final FrameController frameController;
38 private String propertyNameBase;
39 private boolean resizeable = true;
40 public CollapseableBoxBuilder setResizeable(boolean resizeable) {
41 this.resizeable = resizeable;
42 return this;
43 }
44 public CollapseableBoxBuilder(final FrameController frameController){
45 this.frameController = frameController;
46
47 }
48 public CollapseableBoxBuilder setPropertyNameBase(String name) {
49 this.propertyNameBase = name;
50 return this;
51 }
52 public Box createBox(final Component component, final Direction direction) {
53 Box resisableComponent = direction.createBox();
54 UIComponentVisibilityDispatcher.install(frameController, resisableComponent, propertyNameBase);
55 final UIComponentVisibilityDispatcher dispatcher = UIComponentVisibilityDispatcher.dispatcher(resisableComponent);
56 final String sizePropertyName = dispatcher.getPropertyName() + ".size";
57 final boolean expanded = dispatcher.isVisible();
58
59 OneTouchCollapseResizer resizer = new OneTouchCollapseResizer(direction);
60 dispatcher.setResizer(resizer);
61 switch(direction){
62 case RIGHT:
63 case DOWN:
64 resisableComponent.add(resizer);
65 resisableComponent.add(component);
66 break;
67 default:
68 resisableComponent.add(component);
69 resisableComponent.add(resizer);
70 break;
71 }
72 if(resizeable){
73 try {
74 int size = ResourceController.getResourceController().getIntProperty(sizePropertyName, 0);
75 if(size > 10) {
76 direction.setPreferredSize(component, size);
77 }
78 }
79 catch (Exception e) {
80 // blindly accept
81 }
82 resizer.addResizerListener(new ResizerListener() {
83 public void componentResized(ResizeEvent event) {
84 if(event.getComponent().equals(component)) {
85 ResourceController.getResourceController().setProperty(sizePropertyName, String.valueOf(direction.getPreferredSize(component)));
86 }
87 }
88
89 });
90 }
91 else
92 resizer.setSliderLocked(true);
93 resizer.addCollapseListener(new ComponentCollapseListener() {
94 public void componentCollapsed(ResizeEvent event) {
95 if(event.getComponent().equals(component)) {
96 dispatcher.setProperty(false);
97 }
98 }
99
100 public void componentExpanded(ResizeEvent event) {
101 if(event.getComponent().equals(component)) {
102 dispatcher.setProperty(true);
103 }
104 }
105 });
106 resizer.setExpanded(expanded);
107 return resisableComponent;
108 }
109 }
7373 import org.freeplane.core.ui.components.ContainerComboBoxEditor;
7474 import org.freeplane.core.ui.components.FreeplaneMenuBar;
7575 import org.freeplane.core.ui.components.UITools;
76 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
7677 import org.freeplane.core.util.ClassLoaderFactory;
7778 import org.freeplane.core.util.LogUtils;
7879 import org.freeplane.core.util.Quantity;
168169 this.mapViewManager = mapViewManager;
169170 this.propertyKeyPrefix = propertyKeyPrefix;
170171 statusPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 3, 0));
171 UIComponentVisibilityDispatcher.install(this, statusPanel, "toolbarVisible");
172 UIComponentVisibilityDispatcher.install(statusPanel, propertyKeyPrefix + "toolbarVisible");
172173 status = new JLabel();
173174 status.setBorder(BorderFactory.createEtchedBorder());
174175 statusPanel.add(status);
262263 property = component + "Visible";
263264 }
264265 final boolean booleanProperty = ResourceController.getResourceController().getBooleanProperty(
265 getPropertyKeyPrefix() + property);
266 propertyKeyPrefix + property);
266267 return booleanProperty;
267268 }
268269
382383 if (newToolBars != null) {
383384 int i = 0;
384385 for (final JComponent toolBar : newToolBars) {
385 UIComponentVisibilityDispatcher dispatcher = UIComponentVisibilityDispatcher.dispatcher(toolBar);
386 UIComponentVisibilityDispatcher dispatcher = UIComponentVisibilityDispatcher.of(toolBar);
386387 if (dispatcher != null) {
387388 dispatcher.resetVisible();
388389 toolbarPanel[j].add(toolBar, i++);
422423 else {
423424 property = componentName + "Visible";
424425 }
425 ResourceController.getResourceController().setProperty(getPropertyKeyPrefix() + property, visible);
426 ResourceController.getResourceController().setProperty(propertyKeyPrefix + property, visible);
426427 }
427428
428429 /**
479480 final Iterable<JComponent> toolBars = controller.getModeController().getUserInputListenerFactory()
480481 .getToolBars(j);
481482 for (final JComponent toolBar : toolBars) {
482 UIComponentVisibilityDispatcher.dispatcher(toolBar).resetVisible();
483 UIComponentVisibilityDispatcher.of(toolBar).resetVisible();
483484 }
484485 }
485486 showWindows(visibleFrames);
496497 final Iterable<JComponent> toolBars = controller.getModeController().getUserInputListenerFactory()
497498 .getToolBars(j);
498499 for (final JComponent toolBar : toolBars) {
499 UIComponentVisibilityDispatcher.dispatcher(toolBar).resetVisible();
500 UIComponentVisibilityDispatcher.of(toolBar).resetVisible();
500501 }
501502 }
502503 showWindows(visibleFrames);
521522 protected void showWindows(final Iterable<Window> windows) {
522523 for (Window child : windows)
523524 child.setVisible(true);
524 }
525
526 @Override
527 public String completeVisiblePropertyKey(final JComponent toolBar) {
528 if (toolBar == null) {
529 return null;
530 }
531 return UIComponentVisibilityDispatcher.dispatcher(toolBar).completeVisiblePropertyKey();
532 }
533
534 protected String getPropertyKeyPrefix() {
535 return propertyKeyPrefix;
536525 }
537526
538527 public static void setLookAndFeel(final String lookAndFeel, boolean supportHidpi) {
2929 import java.util.List;
3030 import java.util.Map;
3131
32 import javax.swing.*;
32 import javax.swing.JComboBox;
33 import javax.swing.JComponent;
3334
3435 import org.freeplane.core.extension.Configurable;
3536 import org.freeplane.features.map.IMapSelection;
5657 public boolean changeToMapView(final Component newMapView);
5758
5859 public boolean changeToMapView(final String mapViewDisplayName);
59
60
6061 public void changeToMap(MapModel map);
6162
6263 public boolean changeToMode(final String modeName);
6566
6667 public boolean close();
6768 public boolean close(final Component view);
68
69
6970 public String createHtmlMap();
7071
7172 public RenderedImage createImage(int dpi);
7273
7374 public RenderedImage createImage(final Dimension slideSize, NodeModel placedNode, NodePosition placedNodePosition, int imageResolutionInDpi);
74
75
7576 public Color getBackgroundColor(NodeModel node);
7677
7778 public Component getComponent(NodeModel node);
78
79
7980 public boolean isFoldedOnCurrentView(NodeModel node);
8081
8182 public void displayOnCurrentView(NodeModel node);
82
83
8384 public void setFoldedOnCurrentView(NodeModel node, boolean folded);
8485
8586 public Font getFont(NodeModel node);
157158 public void hideChildren(NodeModel node);
158159
159160 public boolean showHiddenNode(NodeModel child);
160
161
161162 public boolean isSpotlightEnabled();
162
163
163164 public boolean isHeadless();
164165
165166 }
2424
2525 import org.freeplane.core.ui.AFreeplaneAction;
2626 import org.freeplane.core.ui.SelectableAction;
27 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
2728 import org.freeplane.features.mode.Controller;
2829
2930 @SelectableAction(checkOnPopup = true)
5051 public void actionPerformed(final ActionEvent event) {
5152 final JComponent toolBar = getToolbar();
5253 if(toolBar != null)
53 UIComponentVisibilityDispatcher.dispatcher(toolBar).toggleVisibility();
54 UIComponentVisibilityDispatcher.of(toolBar).toggleVisibility();
5455 }
5556
5657
6667
6768 public boolean isVisible() {
6869 final JComponent toolBar = getToolbar();
69 return toolBar != null && UIComponentVisibilityDispatcher.dispatcher(toolBar).isVisible();
70 return toolBar != null && UIComponentVisibilityDispatcher.of(toolBar).isVisible();
7071 }
7172 }
+0
-120
freeplane/src/main/java/org/freeplane/features/ui/UIComponentVisibilityDispatcher.java less more
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2014 Dimitry
3 *
4 * This file author is Dimitry
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.features.ui;
20
21 import java.awt.Container;
22
23 import javax.swing.JComponent;
24
25 import org.freeplane.core.resources.ResourceController;
26 import org.freeplane.core.ui.components.OneTouchCollapseResizer;
27 import org.freeplane.features.mode.Controller;
28
29 /**
30 * @author Dimitry Polivaev
31 * 01.02.2014
32 */
33 public class UIComponentVisibilityDispatcher {
34 private static String KEY = UIComponentVisibilityDispatcher.class.getName() + ".KEY";
35 private final FrameController frameController;
36 private final String key;
37 private final JComponent component;
38 private OneTouchCollapseResizer resizer;
39
40 public void setResizer(OneTouchCollapseResizer resizer) {
41 this.resizer = resizer;
42 }
43
44 public static void install(FrameController frameController, JComponent component, String key){
45 component.putClientProperty(KEY, new UIComponentVisibilityDispatcher(frameController, component, key));
46 }
47
48 public static UIComponentVisibilityDispatcher dispatcher(JComponent component){
49 return (UIComponentVisibilityDispatcher) component.getClientProperty(KEY);
50 }
51
52 public UIComponentVisibilityDispatcher(FrameController frameController, JComponent component, String key) {
53 this.frameController = frameController;
54 this.component = component;
55 this.key = key;
56 }
57
58 public String completeVisiblePropertyKey() {
59 final String completeKeyString;
60 if (frameController.isMenuComponentInFullScreenMode()) {
61 completeKeyString = key + ".fullscreen";
62 }
63 else {
64 completeKeyString = key;
65 }
66 return frameController.getPropertyKeyPrefix() + completeKeyString;
67 }
68
69 public void toggleVisibility() {
70 final ResourceController resourceController = ResourceController.getResourceController();
71 final boolean wasVisible = resourceController.getBooleanProperty(getPropertyName());
72 setVisible(!wasVisible);
73 }
74
75 public void setVisible(final boolean visible) {
76 setProperty(visible);
77 makeComponentVisible(visible);
78 final Container parent = component.getParent();
79 if(parent != null)
80 ((JComponent) parent).revalidate();
81 if (!visible) {
82 IMapViewManager mapViewManager = Controller.getCurrentController().getMapViewManager();
83 mapViewManager.moveFocusFromDescendantToSelection(component);
84 }
85
86 }
87
88 public void setProperty(final boolean visible) {
89 final ResourceController resourceController = ResourceController.getResourceController();
90 resourceController.setProperty(getPropertyName(), visible);
91 }
92
93 private void makeComponentVisible(final boolean visible) {
94 if(resizer == null)
95 component.setVisible(visible);
96 else {
97 if (visible || frameController.isMenuComponentInFullScreenMode() && ! visible)
98 resizer.setVisible(visible);
99 resizer.setExpanded(visible);
100 }
101 }
102
103 public String getPropertyName() {
104 final String propertyName = completeVisiblePropertyKey();
105 return propertyName;
106 }
107
108 public boolean isVisible() {
109 final String completeKeyString = completeVisiblePropertyKey();
110 if (completeKeyString == null) {
111 return true;
112 }
113 return !"false".equals(ResourceController.getResourceController().getProperty(completeKeyString, "true"));
114 }
115
116 public void resetVisible() {
117 setVisible(isVisible());
118 }
119 }
2828
2929 import javax.swing.Icon;
3030 import javax.swing.JComponent;
31
3132 import org.freeplane.core.ui.components.FreeplaneMenuBar;
3233 import org.freeplane.features.mode.Controller;
3334 import org.freeplane.features.mode.ModeController;
105106
106107 public void viewNumberChanged(final int number);
107108
108 public String completeVisiblePropertyKey(final JComponent toolBar);
109
110109 public void addObjectTypeInfo(Object value);
111110
112111 public boolean quit();
5454 import org.freeplane.core.util.LogUtils;
5555 import org.freeplane.core.util.TextUtils;
5656 import org.freeplane.features.explorer.MapExplorerController;
57 import org.freeplane.features.map.IMapSelectionListener;
5758 import org.freeplane.features.map.MapController;
5859 import org.freeplane.features.map.MapModel;
5960 import org.freeplane.features.map.MapWriter.Mode;
9293
9394 public UrlManager() {
9495 super();
96 Controller.getCurrentController().getMapViewManager().addMapSelectionListener(new IMapSelectionListener() {
97 @Override
98 public void afterMapChange(MapModel oldMap, MapModel newMap) {
99 if(newMap != null)
100 updateLastDirectoryFromMap(newMap);
101 }
102 });
95103 }
96104
97105 protected void init() {
116124 */
117125 @SuppressWarnings("serial")
118126 public JFileChooser getFileChooser(final FileFilter filter, boolean useDirectorySelector, boolean showHiddenFiles) {
119 final File parentFile = getMapsParentFile(Controller.getCurrentController().getMap());
120 if (parentFile != null && getLastCurrentDir() == null) {
121 setLastCurrentDir(parentFile);
122 }
123127 final JFileChooser chooser = new JFileChooser(){
124128 @Override
125129 protected JDialog createDialog(Component parent) throws HeadlessException {
164168 return null;
165169 }
166170 public File getLastCurrentDir() {
171 updateLastDirectoryFromCurrentMap();
167172 return lastCurrentDir;
173 }
174
175 private void updateLastDirectoryFromCurrentMap() {
176 final MapModel map = Controller.getCurrentController().getMap();
177 updateLastDirectoryFromMap(map);
178 }
179
180 private void updateLastDirectoryFromMap(final MapModel map) {
181 final File parentFile = getMapsParentFile(map);
182 if (parentFile != null) {
183 this.lastCurrentDir = parentFile;
184 }
168185 }
169186
170187 protected File getMapsParentFile(final MapModel map) {
2222 import java.io.File;
2323 import java.net.URI;
2424 import java.net.URL;
25
2526 import javax.swing.JOptionPane;
2627
2728 import org.freeplane.core.ui.AFreeplaneAction;
2930 import org.freeplane.features.link.LinkController;
3031 import org.freeplane.features.link.NodeLinks;
3132 import org.freeplane.features.link.mindmapmode.MLinkController;
32 import org.freeplane.features.map.MapController;
3333 import org.freeplane.features.map.MapModel;
3434 import org.freeplane.features.map.NodeModel;
3535 import org.freeplane.features.map.mindmapmode.MMapController;
4242 */
4343 class ImportLinkedBranchWithoutRootAction extends AFreeplaneAction {
4444 /**
45 *
45 *
4646 */
4747 private static final long serialVersionUID = 1L;
4848
5050 super("ImportLinkedBranchWithoutRootAction");
5151 }
5252
53 @Override
5354 public void actionPerformed(final ActionEvent e) {
5455 final MapModel map = Controller.getCurrentController().getMap();
5556 final ModeController modeController = Controller.getCurrentModeController();
6667 .getPath()).getFile());
6768 final NodeModel node = ((MFileManager) UrlManager.getController()).loadTree(map, file);
6869 map.setURL(url);
69 MapController r = Controller.getCurrentModeController().getMapController();
7070 for (final NodeModel child : node.getChildren()) {
7171 child.setParent(null);
7272 ((MMapController) modeController.getMapController()).insertNode(child, selected);
1616 import java.util.Properties;
1717 import java.util.Vector;
1818
19 import org.apache.commons.lang.StringEscapeUtils;
2019 import org.freeplane.core.util.FreeplaneVersion;
2120 import org.freeplane.core.util.TextUtils;
2221 import org.freeplane.n3.nanoxml.CdataContentXmlWriter;
452451 for (Entry<String, String> translationEntry : localeEntry.getValue().entrySet()) {
453452 final XMLElement translationElement = new XMLElement("entry");
454453 translationElement.setAttribute("key", translationEntry.getKey());
455 translationElement.setContent(StringEscapeUtils.escapeJava(translationEntry.getValue()));
454 translationElement.setContent(TextUtils.escapeUtf8(translationEntry.getValue()));
456455 localeElement.addChild(translationElement);
457456 }
458457 translationsElement.addChild(localeElement);
1818 */
1919 package org.freeplane.main.applet;
2020
21 import java.security.AccessControlException;
22
2321 import javax.swing.JPopupMenu;
2422 import javax.swing.SwingConstants;
2523
2624 import org.freeplane.core.ui.components.FreeplaneToolBar;
25 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
2726 import org.freeplane.core.ui.menubuilders.generic.PhaseProcessor.Phase;
28 import org.freeplane.core.util.LogUtils;
2927 import org.freeplane.features.attribute.AttributeController;
30 import org.freeplane.features.clipboard.ClipboardController;
28 import org.freeplane.features.clipboard.ClipboardControllers;
3129 import org.freeplane.features.cloud.CloudController;
3230 import org.freeplane.features.edge.EdgeController;
3331 import org.freeplane.features.encrypt.EncryptionController;
4947 import org.freeplane.features.styles.MapStyle;
5048 import org.freeplane.features.text.TextController;
5149 import org.freeplane.features.ui.FrameController;
52 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
5350 import org.freeplane.features.ui.ViewController;
5451 import org.freeplane.features.url.UrlManager;
5552 import org.freeplane.view.swing.features.filepreview.ViewerController;
6865 modeController.setUserInputListenerFactory(userInputListenerFactory);
6966 controller.addModeController(modeController);
7067 controller.selectModeForBuild(modeController);
68 ClipboardControllers.install(new ClipboardControllers());
7169 new MapController(modeController);
7270 new IconController(modeController).install(modeController);
7371 UrlManager.install(new UrlManager());
8179 MapExplorerController.install(modeController);
8280 LinkController.install(new LinkController(modeController));
8381 LogicalStyleController.install(new LogicalStyleController(modeController));
84 try {
85 ClipboardController.install(new ClipboardController());
86 }
87 catch (final AccessControlException e) {
88 LogUtils.warn("can not access system clipboard, clipboard controller disabled");
89 }
9082 LocationController.install(new LocationController());
9183 SummaryNode.install();
9284 FreeNode.install();
9789 userInputListenerFactory.setNodePopupMenu(new JPopupMenu());
9890 final FreeplaneToolBar toolBar = new FreeplaneToolBar("main_toolbar", SwingConstants.HORIZONTAL);
9991 FrameController frameController = (FrameController) controller.getViewController();
100 UIComponentVisibilityDispatcher.install(frameController, toolBar, "toolbarVisible");
92 UIComponentVisibilityDispatcher.install(toolBar, "toolbarVisible");
10193 userInputListenerFactory.addToolBar("/main_toolbar", ViewController.TOP, toolBar);
10294 userInputListenerFactory.addToolBar("/filter_toolbar", FilterController.TOOLBAR_SIDE, FilterController.getController(
10395 controller).getFilterToolbar());
5151 }
5252 catch (final IOException x) {
5353 UITools
54 .errorMessage("Could not invoke browser.\n\nFreeplane excecuted the following statement on a command line:\n\""
54 .errorMessage("Could not invoke browser.\n\nFreeplane executed the following statement on a command line:\n\""
5555 + command
5656 + "\".\n\nYou may look at the user or default property called '"
5757 + propertyString
7070 }
7171 catch (final IOException ex2) {
7272 UITools
73 .errorMessage("Could not invoke browser.\n\nFreeplane excecuted the following statement on a command line:\n\""
73 .errorMessage("Could not invoke browser.\n\nFreeplane executed the following statement on a command line:\n\""
7474 + browserCommand
7575 + "\".\n\nYou may look at the user or default property called 'default_browser_command_mac'.");
7676 System.err.println("Caught: " + ex2);
8787 }
8888 catch (final IOException ex2) {
8989 UITools
90 .errorMessage("Could not invoke browser.\n\nFreeplane excecuted the following statement on a command line:\n\""
90 .errorMessage("Could not invoke browser.\n\nFreeplane executed the following statement on a command line:\n\""
9191 + browserCommand
9292 + "\".\n\nYou may look at the user or default property called 'default_browser_command_other_os'.");
9393 System.err.println("Caught: " + ex2);
9494 }
9595 }
9696 }
97 }
97 }
113113 public static void showSysInfo() {
114114 final StringBuilder info = new StringBuilder();
115115 info.append("freeplane_version = ");
116 info.append(FreeplaneVersion.getVersion());
117 String revision = FreeplaneVersion.getVersion().getRevision();
116 final FreeplaneVersion freeplaneVersion = FreeplaneVersion.getVersion();
117 info.append(freeplaneVersion);
118 String revision = freeplaneVersion.getRevision();
118119
119120 info.append("; freeplane_xml_version = ");
120121 info.append(FreeplaneVersion.XML_VERSION);
2222 import javax.swing.SwingConstants;
2323
2424 import org.freeplane.core.ui.components.FreeplaneToolBar;
25 import org.freeplane.features.clipboard.ClipboardController;
25 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
26 import org.freeplane.features.clipboard.ClipboardControllers;
2627 import org.freeplane.features.cloud.CloudController;
2728 import org.freeplane.features.edge.EdgeController;
2829 import org.freeplane.features.filter.FilterController;
4344 import org.freeplane.features.styles.MapStyle;
4445 import org.freeplane.features.text.TextController;
4546 import org.freeplane.features.ui.FrameController;
46 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
4747 import org.freeplane.features.ui.ViewController;
4848 import org.freeplane.features.url.UrlManager;
4949 import org.freeplane.view.swing.features.nodehistory.NodeHistory;
6262 modeController.setUserInputListenerFactory(userInputListenerFactory);
6363 controller.addModeController(modeController);
6464 controller.selectModeForBuild(modeController);
65 ClipboardControllers.install(new ClipboardControllers());
6566 new FMapController(modeController);
6667 UrlManager.install(new UrlManager());
6768 MapIO.install(modeController);
7172 new TextController(modeController).install(modeController);
7273 LinkController.install(new LinkController(modeController));
7374 CloudController.install(new CloudController(modeController));
74 ClipboardController.install(new ClipboardController());
7575 LocationController.install(new LocationController());
7676 LogicalStyleController.install(new LogicalStyleController(modeController));
7777 MapStyle.install(true);
7878 NodeStyleController.getController().addShapeGetter(new Integer(0),
7979 new IPropertyHandler<ShapeConfigurationModel, NodeModel>() {
80 public ShapeConfigurationModel getProperty(final NodeModel node, final ShapeConfigurationModel currentValue) {
80 @Override
81 public ShapeConfigurationModel getProperty(final NodeModel node, final ShapeConfigurationModel currentValue) {
8182 return ShapeConfigurationModel.FORK;
8283 }
8384 });
8687 userInputListenerFactory.setNodePopupMenu(new JPopupMenu());
8788 final FreeplaneToolBar toolBar = new FreeplaneToolBar("main_toolbar", SwingConstants.HORIZONTAL);
8889 FrameController frameController = (FrameController) controller.getViewController();
89 UIComponentVisibilityDispatcher.install(frameController, toolBar, "toolbarVisible");
90 UIComponentVisibilityDispatcher.install(toolBar, "toolbarVisible");
9091 userInputListenerFactory.addToolBar("/main_toolbar", ViewController.TOP, toolBar);
9192 userInputListenerFactory.addToolBar("/filter_toolbar", FilterController.TOOLBAR_SIDE, FilterController.getCurrentFilterController().getFilterToolbar());
9293 userInputListenerFactory.addToolBar("/status", ViewController.BOTTOM, controller.getViewController().getStatusBar());
2020
2121 import org.freeplane.features.attribute.AttributeController;
2222 import org.freeplane.features.attribute.mindmapmode.MAttributeController;
23 import org.freeplane.features.clipboard.ClipboardController;
24 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
23 import org.freeplane.features.clipboard.ClipboardControllers;
24 import org.freeplane.features.clipboard.mindmapmode.MClipboardControllers;
2525 import org.freeplane.features.cloud.CloudController;
2626 import org.freeplane.features.cloud.mindmapmode.MCloudController;
2727 import org.freeplane.features.edge.AutomaticEdgeColorHook;
2828 import org.freeplane.features.edge.EdgeController;
2929 import org.freeplane.features.edge.mindmapmode.MEdgeController;
3030 import org.freeplane.features.encrypt.mindmapmode.MEncryptionController;
31 import org.freeplane.features.explorer.mindmapmode.MMapExplorerController;
3132 import org.freeplane.features.export.mindmapmode.ExportController;
3233 import org.freeplane.features.export.mindmapmode.ImportMindmanagerFiles;
3334 import org.freeplane.features.icon.HierarchicalIcons;
113114 modeController.setUserInputListenerFactory(new UserInputListenerFactory(modeController));
114115 controller.addModeController(modeController);
115116 controller.selectModeForBuild(modeController);
117 ClipboardControllers.install(new MClipboardControllers());
116118 new MMapController(modeController);
117119 final MFileManager fileManager = new MFileManager();
118120 UrlManager.install(fileManager);
123125 EdgeController.install(new MEdgeController(modeController));
124126 CloudController.install(new MCloudController(modeController));
125127 NoteController.install(new MNoteController(modeController));
126 new MTextController(modeController).install(modeController);
128 final MTextController textController = new MTextController(modeController);
129 textController.install(modeController);
130 MMapExplorerController.install(modeController, textController);
127131 LinkController.install(new MLinkController(modeController));
128132 NodeStyleController.install(new MNodeStyleController(modeController));
129 ClipboardController.install(new MClipboardController());
130133 LocationController.install(new MLocationController());
131134 final MLogicalStyleController logicalStyleController = new MLogicalStyleController(modeController);
132135 LogicalStyleController.install(logicalStyleController);
186186 }
187187
188188 @Override
189 public String completeVisiblePropertyKey(JComponent toolBar) {
190 throw methodNotImplementedException();
191 }
192
193 @Override
194189 public void addObjectTypeInfo(Object value) {
195190 throw methodNotImplementedException();
196191 }
3939 import org.freeplane.core.ui.SetAcceleratorOnNextClickAction;
4040 import org.freeplane.core.ui.components.FButtonBar;
4141 import org.freeplane.core.ui.components.FreeplaneToolBar;
42 import org.freeplane.core.ui.components.JResizer.Direction;
4342 import org.freeplane.core.ui.components.UITools;
43 import org.freeplane.core.ui.components.resizer.CollapseableBoxBuilder;
44 import org.freeplane.core.ui.components.resizer.JResizer.Direction;
45 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
4446 import org.freeplane.core.ui.menubuilders.action.ComponentBuilder;
4547 import org.freeplane.core.ui.menubuilders.generic.Entry;
4648 import org.freeplane.core.ui.menubuilders.generic.EntryVisitor;
5456 import org.freeplane.features.attribute.mindmapmode.RemoveAllAttributesAction;
5557 import org.freeplane.features.attribute.mindmapmode.RemoveFirstAttributeAction;
5658 import org.freeplane.features.attribute.mindmapmode.RemoveLastAttributeAction;
57 import org.freeplane.features.clipboard.ClipboardController;
58 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
59 import org.freeplane.features.clipboard.ClipboardControllers;
60 import org.freeplane.features.clipboard.mindmapmode.MClipboardControllers;
5961 import org.freeplane.features.cloud.CloudController;
6062 import org.freeplane.features.cloud.mindmapmode.MCloudController;
6163 import org.freeplane.features.edge.AutomaticEdgeColorHook;
107109 import org.freeplane.features.text.mindmapmode.SortNodes;
108110 import org.freeplane.features.text.mindmapmode.SplitNode;
109111 import org.freeplane.features.time.CreationModificationDatePresenter;
110 import org.freeplane.features.ui.CollapseableBoxBuilder;
111112 import org.freeplane.features.ui.FrameController;
112113 import org.freeplane.features.ui.ToggleToolbarAction;
113 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
114114 import org.freeplane.features.ui.ViewController;
115115 import org.freeplane.features.url.UrlManager;
116116 import org.freeplane.features.url.mindmapmode.MFileManager;
220220 modeController.setUserInputListenerFactory(userInputListenerFactory);
221221 controller.addModeController(modeController);
222222 controller.selectModeForBuild(modeController);
223 ClipboardControllers.install(new MClipboardControllers());
223224 new MMapController(modeController);
224225 final MFileManager fileManager = new MFileManager();
225226 UrlManager.install(fileManager);
237238 MMapExplorerController.install(modeController, textController);
238239 LinkController.install(new MLinkController(modeController));
239240 NodeStyleController.install(new MNodeStyleController(modeController));
240 ClipboardController.install(new MClipboardController());
241241 userInputListenerFactory.setNodeDragListener(new MNodeDragListener());
242242 userInputListenerFactory.setNodeDropTargetListener(new MNodeDropListener());
243243 LocationController.install(new MLocationController());
259259 MapStyle.install(true);
260260 final FreeplaneToolBar toolbar = new FreeplaneToolBar("main_toolbar", SwingConstants.HORIZONTAL);
261261 final FrameController frameController = (FrameController) controller.getViewController();
262 UIComponentVisibilityDispatcher.install(frameController, toolbar, "toolbarVisible");
262 UIComponentVisibilityDispatcher.install(toolbar, "toolbarVisible");
263263 userInputListenerFactory.addToolBar("/main_toolbar", ViewController.TOP, toolbar);
264264 userInputListenerFactory.addToolBar("/filter_toolbar", FilterController.TOOLBAR_SIDE, FilterController.getController(controller).getFilterToolbar());
265265 userInputListenerFactory.addToolBar("/status", ViewController.BOTTOM, frameController
266266 .getStatusBar());
267267 final JTabbedPane formattingPanel = new JTabbedPane();
268 Box resisableTabs = new CollapseableBoxBuilder(frameController).setPropertyNameBase("styleScrollPaneVisible").createBox(formattingPanel, Direction.RIGHT);
268 Box resisableTabs = new CollapseableBoxBuilder().setPropertyNameBase("styleScrollPaneVisible").createBox(formattingPanel, Direction.RIGHT);
269269 userInputListenerFactory.addToolBar("/format", ViewController.RIGHT, resisableTabs);
270270 final JRootPane rootPane = ((RootPaneContainer)frameController.getMenuComponent()).getRootPane();
271271 final FButtonBar fButtonToolBar = new FButtonBar(rootPane);
272 UIComponentVisibilityDispatcher.install(frameController, fButtonToolBar, "fbarVisible");
272 UIComponentVisibilityDispatcher.install(fButtonToolBar, "fbarVisible");
273273 fButtonToolBar.setVisible(ResourceController.getResourceController().getBooleanProperty("fbarVisible"));
274274 userInputListenerFactory.addToolBar("/fbuttons", ViewController.TOP, fButtonToolBar);
275275 userInputListenerFactory.setKeyEventProcessor(new IKeyStrokeProcessor() {
3232 import org.freeplane.core.ui.ShowSelectionAsRectangleAction;
3333 import org.freeplane.core.ui.components.FreeplaneToolBar;
3434 import org.freeplane.core.ui.components.UITools;
35 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
3536 import org.freeplane.features.attribute.AttributeController;
3637 import org.freeplane.features.attribute.ModelessAttributeController;
3738 import org.freeplane.features.attribute.mindmapmode.MAttributeController;
39 import org.freeplane.features.clipboard.ClipboardControllers;
40 import org.freeplane.features.clipboard.mindmapmode.MClipboardControllers;
3841 import org.freeplane.features.cloud.CloudController;
3942 import org.freeplane.features.cloud.mindmapmode.MCloudController;
4043 import org.freeplane.features.edge.EdgeController;
7578 import org.freeplane.features.text.TextController;
7679 import org.freeplane.features.text.mindmapmode.MTextController;
7780 import org.freeplane.features.ui.ToggleToolbarAction;
78 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
7981 import org.freeplane.features.ui.ViewController;
8082 import org.freeplane.features.url.mindmapmode.MFileManager;
8183 import org.freeplane.view.swing.map.MapViewController;
118120 controller.addAction(new ShowSelectionAsRectangleAction());
119121 modeController = new SModeController(controller);
120122 controller.selectModeForBuild(modeController);
123 ClipboardControllers.install(new MClipboardControllers());
121124 modeController.addAction(new NewUserStyleAction());
122125 modeController.addAction(new DeleteUserStyleAction());
123126 modeController.addAction(new NewLevelStyleAction());
155158 final JPopupMenu popupmenu = new JPopupMenu();
156159 userInputListenerFactory.setNodePopupMenu(popupmenu);
157160 final FreeplaneToolBar toolBar = new FreeplaneToolBar("main_toolbar", SwingConstants.HORIZONTAL);
158 UIComponentVisibilityDispatcher.install(viewController, toolBar, "toolbarVisible");
161 UIComponentVisibilityDispatcher.install(toolBar, "dialog_toolbarVisible");
159162 userInputListenerFactory.addToolBar("/main_toolbar", ViewController.TOP, toolBar);
160163 userInputListenerFactory.addToolBar("/icon_toolbar", ViewController.LEFT, ((MIconController) IconController
161164 .getController()).getIconToolBarScrollPane());
220223 UITools.setScrollbarIncrement(styleScrollPane);
221224 // styleEditorPanel.setPreferredSize(new Dimension(200, 200));
222225 userInputListenerFactory.addToolBar("/format", ViewController.RIGHT, styleScrollPane);
223 UIComponentVisibilityDispatcher.install(viewController, styleScrollPane, "styleScrollPaneVisible");
226 UIComponentVisibilityDispatcher.install(styleScrollPane, "dialog_styleScrollPaneVisible");
224227 modeController.addExtension(MUIFactory.class, new MUIFactory());
225228 final Set<String> emptySet = Collections.emptySet();
226229 modeController.updateMenus("/xml/stylemodemenu.xml", emptySet);
6464 private int imageY;
6565 private boolean scaleEnabled;
6666 private Dimension maximumSize = null;
67 private boolean center;
6867 private final static Object LOCK = new Object();
6968 private static boolean disabledDueToJavaBug = false;
7069
179178 }
180179
181180 private void centerImagePosition(final int scaledImageWidth, final int scaledImageHeight) {
182 if (center) {
183 imageX = (getWidth() - scaledImageWidth) / 2;
184 imageY = (getHeight() - scaledImageHeight) / 2;
185 }
186 else {
187 if (scaledImageWidth > getHeight()) {
188 imageX = 0;
189 imageY = (getHeight() - scaledImageHeight) / 2;
190 }
191 else {
192 imageX = (getWidth() - scaledImageWidth) / 2;
193 imageY = 0;
194 }
195 }
181 imageX = (getWidth() - scaledImageWidth) / 2;
182 imageY = (getHeight() - scaledImageHeight) / 2;
196183 }
197184
198185 private boolean componentHasNoArea() {
351338 private boolean isUnderMaximumSize(final Dimension size) {
352339 return maximumSize.getWidth() >= size.width || maximumSize.getHeight() >= size.height;
353340 }
354
355 @Override
356 public void setCenter(boolean center) {
357 this.center = center;
358 }
359341 }
3737 * 22.08.2009
3838 */
3939 public class BitmapViewerFactory implements IViewerFactory {
40 @Override
4041 public boolean accept(final URI uri) {
4142 final Iterator<ImageReader> readers = getImageReaders(uri);
4243 return readers.hasNext();
4344 }
4445
4546 private Iterator<ImageReader> getImageReaders(final URI uri) {
46 String path = uri.getRawPath();
47 String path = uri.isOpaque() ? uri.getSchemeSpecificPart() : uri.getRawPath();
4748 final int suffixPos = path.lastIndexOf('.') + 1;
4849 if (suffixPos == 0) {
4950 final List<ImageReader> empty = Collections.emptyList();
5455 return readers;
5556 }
5657
58 @Override
5759 public ScalableComponent createViewer(final ExternalResource resource,
5860 final URI uri, int maximumWidth) throws MalformedURLException,
5961 IOException {
6567 }
6668 final ViewerLayoutManager viewerLayoutManager = new ViewerLayoutManager(1f, resource, originalSize);
6769 ((JComponent) bitmapViewerComponent).setLayout(viewerLayoutManager);
68
70
6971 Dimension zoomedSize = viewerLayoutManager.calculatePreferredSize();
7072 bitmapViewerComponent.setFinalViewerSize(zoomedSize );
7173 return bitmapViewerComponent;
7274 }
7375
76 @Override
7477 public ScalableComponent createViewer(final URI uri,
7578 final Dimension preferredSize) throws MalformedURLException,
7679 IOException {
7982 return bitmapViewerComponent;
8083 }
8184
85 @Override
8286 public String getDescription() {
8387 return TextUtils.getText("bitmaps");
8488 }
8589
90 @Override
8691 public ScalableComponent createViewer(URI uri, float zoom)
8792 throws MalformedURLException, IOException {
8893 final BitmapViewerComponent bitmapViewerComponent = new BitmapViewerComponent(uri);
00 package org.freeplane.view.swing.features.filepreview;
11
2 import java.awt.Dimension;
3 import java.awt.Image;
42 import java.io.File;
5 import java.io.IOException;
6 import java.net.MalformedURLException;
73
8 import javax.swing.JComponent;
94 import javax.swing.JFileChooser;
5
106 import org.freeplane.core.ui.components.BitmapImagePreview;
11 import org.freeplane.core.util.LogUtils;
127 import org.freeplane.view.swing.features.filepreview.ViewerController.FactoryFileFilter;
138
14 /* ImagePreview.java by FileChooserDemo2.java. */
159 public class ImagePreview extends BitmapImagePreview {
1610 private static final long serialVersionUID = 1L;
1711
2519 if(! (fileFilter instanceof FactoryFileFilter))
2620 return;
2721 final FactoryFileFilter factoryFileFilter = (FactoryFileFilter) fileFilter;
28 final Dimension size = getSize();
29 size.width -= 2 * BORDER_WIDTH;
30 size.height -= 2 * BORDER_WIDTH;
31 JComponent viewer;
32 try {
33 viewer = (JComponent) factoryFileFilter.getFactory().createViewer(file.getAbsoluteFile().toURI(), size);
34 }
35 catch (final MalformedURLException e) {
36 LogUtils.warn(e);
37 return;
38 }
39 catch (final IOException e) {
40 LogUtils.warn(e);
41 return;
42 }
43 if (viewer == null) {
44 return;
45 }
46 viewer.setLocation(BORDER_WIDTH, BORDER_WIDTH);
47 if (viewer instanceof BitmapViewerComponent) {
48 ((BitmapViewerComponent) viewer).setHint(Image.SCALE_FAST);
49 }
50 add(viewer);
51 viewer.revalidate();
52 viewer.repaint();
22 final IViewerFactory factory = factoryFileFilter.getFactory();
23 new ImageRendererFactory().configureRenderer(factory, file.getAbsoluteFile().toURI(), getSize(), this);
5324 }
5425 }
0 package org.freeplane.view.swing.features.filepreview;
1
2 import java.awt.Color;
3 import java.awt.Dimension;
4 import java.awt.Image;
5 import java.io.IOException;
6 import java.net.MalformedURLException;
7 import java.net.URI;
8
9 import javax.swing.JComponent;
10 import javax.swing.border.MatteBorder;
11
12 import org.freeplane.core.util.LogUtils;
13
14 public class ImageRendererFactory {
15 private static final int BORDER_WIDTH = 2;
16
17 public void configureRenderer(IViewerFactory viewerFactory, URI uri, Dimension size, JComponent renderer) {
18 renderer.setBorder(new MatteBorder(BORDER_WIDTH, BORDER_WIDTH, BORDER_WIDTH, BORDER_WIDTH, Color.BLACK));
19 renderer.setPreferredSize(size);
20 renderer.setSize(size);
21 Dimension viewerSize = new Dimension(size.width - 2 * BORDER_WIDTH,
22 size.height - 2 * BORDER_WIDTH);
23 JComponent viewer = createViewer(viewerFactory, uri, viewerSize);
24 renderer.add(viewer);
25 viewer.setLocation(BORDER_WIDTH, BORDER_WIDTH);
26 }
27
28 private JComponent createViewer(IViewerFactory viewerFactory, URI uri, Dimension size) {
29 JComponent viewer = null;
30 try {
31 viewer = (JComponent) viewerFactory.createViewer(uri, size);
32 }
33 catch (final MalformedURLException e) {
34 LogUtils.warn(e);
35 return null;
36 }
37 catch (final IOException e) {
38 LogUtils.warn(e);
39 return null;
40 }
41 if (viewer == null) {
42 return null;
43 }
44 if (viewer instanceof BitmapViewerComponent) {
45 ((BitmapViewerComponent) viewer).setHint(Image.SCALE_FAST);
46 }
47 return viewer;
48 }
49
50 public JComponent createRenderer(IViewerFactory viewerFactory, URI absoluteUri, Dimension tooltipSize) {
51 JComponent renderer = new JComponent() {};
52 configureRenderer(viewerFactory, absoluteUri, tooltipSize, renderer);
53 return renderer;
54 }
55
56 }
3030 import javax.swing.SwingUtilities;
3131
3232 import org.freeplane.core.util.LogUtils;
33 import org.freeplane.features.clipboard.MindMapNodesSelection;
3433 import org.freeplane.features.map.NodeModel;
34 import org.freeplane.features.map.clipboard.MindMapNodesSelection;
3535 import org.freeplane.features.mode.Controller;
3636 import org.freeplane.view.swing.map.NodeView;
3737
4040 void setDraftViewerSize(Dimension size);
4141
4242 void setMaximumComponentSize(Dimension size);
43
44 void setCenter(boolean center);
4543 }
757757 return true;
758758 }
759759
760 public IViewerFactory getCombiFactory() {
760 public IViewerFactory getViewerFactory() {
761761 return new CombiFactory();
762762 }
763763 }
2020
2121 import java.util.Date;
2222 import java.util.Timer;
23
2324 import org.freeplane.core.extension.IExtension;
2425 import org.freeplane.core.util.SysUtils;
2526 import org.freeplane.features.map.IMapChangeListener;
3738 /**
3839 */
3940 public static ReminderExtension getExtension(final NodeModel node) {
40 return (ReminderExtension) node.getExtension(ReminderExtension.class);
41 return node.getExtension(ReminderExtension.class);
4142 }
4243
4344 private final NodeModel node;
6364 public void setRemindUserAt(final long remindUserAt) {
6465 this.remindUserAt = remindUserAt;
6566 }
66
67
6768
6869 public PeriodUnit getPeriodUnit() {
6970 return periodUnit;
130131 return false;
131132 }
132133
134 @Override
133135 public void onNodeInserted(final NodeModel parent, final NodeModel child, final int newIndex) {
134136 displayStateIcon(parent, ClockState.CLOCK_VISIBLE);
135137 }
136138
139 @Override
137140 public void onNodeMoved(NodeMoveEvent nodeMoveEvent) {
138141 displayStateIcon(nodeMoveEvent.newParent, ClockState.CLOCK_VISIBLE);
139142 }
140143
144 @Override
141145 public void onPreNodeDelete(NodeDeletionEvent nodeDeletionEvent) {
142146 displayStateIcon(nodeDeletionEvent.parent, null);
143147 }
144148
149 @Override
145150 public void onPreNodeMoved(NodeMoveEvent nodeMoveEvent) {
146151 displayStateIcon(nodeMoveEvent.oldParent, null);
147152 }
148153
154 @Override
149155 public void mapChanged(final MapChangeEvent event) {
150156 }
151157
158 @Override
152159 public void onNodeDeleted(NodeDeletionEvent nodeDeletionEvent) {
153160 }
154
161
155162 public void displayState(final ClockState stateAdded, final NodeModel pNode,
156163 final boolean recurse) {
157164 if(stateAdded != null)
3939 import org.freeplane.core.ui.AFreeplaneAction;
4040 import org.freeplane.core.ui.EnabledAction;
4141 import org.freeplane.core.ui.components.UITools;
42 import org.freeplane.core.util.LogUtils;
4243 import org.freeplane.core.util.TextUtils;
4344 import org.freeplane.features.filter.FilterController;
4445 import org.freeplane.features.icon.IStateIconProvider;
4950 import org.freeplane.features.map.INodeChangeListener;
5051 import org.freeplane.features.map.INodeSelectionListener;
5152 import org.freeplane.features.map.ITooltipProvider;
53 import org.freeplane.features.map.MapController;
5254 import org.freeplane.features.map.MapModel;
5355 import org.freeplane.features.map.NodeChangeEvent;
5456 import org.freeplane.features.map.NodeModel;
6163 import org.freeplane.n3.nanoxml.XMLElement;
6264 import org.freeplane.view.swing.features.time.mindmapmode.TimeManagement.JTimePanel;
6365 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.AllMapsNodeListAction;
64 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.NodeList;
6566 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.NodeListAction;
67 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.OldReminderListAction;
68 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.ReminderListAction;
69 import org.freeplane.view.swing.features.time.mindmapmode.nodelist.ShowPastRemindersOnce;
6670 import org.freeplane.view.swing.map.attribute.AttributePanelManager;
6771
6872 /**
7175 @NodeHookDescriptor(hookName = "plugins/TimeManagementReminder.xml", onceForMap = false)
7276 public class ReminderHook extends PersistentNodeHook implements IExtension {
7377
78 private static final ShowPastRemindersOnce SHOW_PAST_REMINDERS = new ShowPastRemindersOnce();
7479 private static final String REMINDERS_BLINK = "remindersBlink";
75 //******************************************
80 //******************************************
7681 @EnabledAction(checkOnNodeChange = true)
7782 private class ReminderHookAction extends HookAction {
7883 /**
79 *
84 *
8085 */
8186 private static final long serialVersionUID = 1L;
8287
8388 /**
84 *
89 *
8590 */
8691 public ReminderHookAction() {
8792 super("ReminderHookAction");
9398 }
9499 }
95100
96 static private class TimeListAction extends AFreeplaneAction {
101 static private class TimeManagementAction extends AFreeplaneAction {
97102 /**
98 *
103 *
99104 */
100105 private static final long serialVersionUID = 1L;
101106 /**
102 *
103 */
104 private final NodeList timeList;
105
106 public TimeListAction() {
107 super("TimeListAction");
108 timeList = new NodeList(false, false, "timelistwindow.configuration");
109 }
110
111 public void actionPerformed(final ActionEvent e) {
112 timeList.startup();
113 }
114 }
115
116 static private class TimeManagementAction extends AFreeplaneAction {
117 /**
118 *
119 */
120 private static final long serialVersionUID = 1L;
121 /**
122 *
107 *
123108 */
124109 private final TimeManagement timeManagement;
125110
128113 timeManagement = new TimeManagement(reminderHook);
129114 }
130115
116 @Override
131117 public void actionPerformed(final ActionEvent e) {
132118 timeManagement.showDialog();
133119 }
149135 super();
150136 this.modeController = modeController;
151137 registerAction(new TimeManagementAction(this));
152 registerAction(new TimeListAction());
138 registerAction(new ReminderListAction());
139 registerAction(new OldReminderListAction());
153140 registerAction(new NodeListAction());
154141 registerAction(new AllMapsNodeListAction());
155142 registerTooltipProvider();
165152 private static UIIcon flagIcon;
166153 void registerStateIconProvider(){
167154 IconController.getController(modeController).addStateIconProvider(new IStateIconProvider() {
155 @Override
168156 public UIIcon getStateIcon(NodeModel node) {
169157 UIIcon icon = null;
170158 ClockState stateAdded = node.getExtension(ClockState.class);
215203 }
216204 private void registerTooltipProvider() {
217205 modeController.addToolTipProvider(REMINDER_TOOLTIP, new ITooltipProvider() {
206 @Override
218207 public String getTooltip(ModeController modeController, NodeModel node, Component view) {
219208 final ReminderExtension model = ReminderExtension.getExtension(node);
220209 if(model == null)
222211 final Date date = new Date(model.getRemindUserAt());
223212 final Object[] messageArguments = { date };
224213 final MessageFormat formatter = new MessageFormat(TextUtils
225 .getText("plugins/TimeManagement.xml_reminderNode.tooltip"));
214 .getText("reminder.reminderNode.tooltip"));
226215 final String message = formatter.format(messageArguments);
227216 return message;
228217 }
235224 final int axis = BoxLayout.Y_AXIS;
236225 final JTimePanel timePanel = timeManagement.createTimePanel(null, false, 1);
237226 modeController.getMapController().addNodeSelectionListener(new INodeSelectionListener() {
227 @Override
238228 public void onSelect(NodeModel node) {
239229 timePanel.update(node);
240230 }
241
231
232 @Override
242233 public void onDeselect(NodeModel node) {
243234 }
244235 });
245236 modeController.getMapController().addNodeChangeListener(new INodeChangeListener() {
237 @Override
246238 public void nodeChanged(NodeChangeEvent event) {
247239 final NodeModel node = event.getNode();
248240 if(event.getProperty().equals(getExtensionClass()) && node.equals(modeController.getMapController().getSelectedNode()))
309301 final ReminderExtension reminderExtension = (ReminderExtension) extension;
310302 reminderExtension.deactivateTimer();
311303 reminderExtension.displayState(null, reminderExtension.getNode(), true);
312 modeController.getMapController().removeMapChangeListener(reminderExtension);
304 final MapController mapController = modeController.getMapController();
305 mapController.removeMapChangeListener(reminderExtension);
306 mapController.setSaved(node.getMap(), false);
313307 super.remove(node, extension);
314308 }
315309
325319 if(script != null){
326320 parameters.setAttribute(SCRIPT, script);
327321 }
328
322
329323 element.addChild(parameters);
330324 }
331325
332326 private void scheduleTimer(final ReminderExtension model) {
333327 final Date date = new Date(model.getRemindUserAt());
334 scheduleTimer(model, new TimerBlinkTask(this, model, false, System.currentTimeMillis() < date.getTime() + ReminderExtension.BLINKING_PERIOD));
335 model.displayState(ClockState.CLOCK_VISIBLE, model.getNode(), false);
328 final long fireTime = SHOW_PAST_REMINDERS.timeLimit();
329 final long reminderTime = date.getTime();
330 final boolean reminderTimePassed = fireTime >= reminderTime;
331 final boolean runScript = ! reminderTimePassed;
332 scheduleTimer(model, new TimerBlinkTask(this, model, false, runScript));
333 final NodeModel node = model.getNode();
334 if(reminderTimePassed)
335 SHOW_PAST_REMINDERS.addNode(node);
336 model.displayState(ClockState.CLOCK_VISIBLE, node, false);
336337 }
337338
338339 private void scheduleTimer(final ReminderExtension model, final TimerBlinkTask task) {
347348 final String script = reminderExtension.getScript();
348349 if(script == null || script.equals(""))
349350 return;
350 final IScriptStarter starter = (IScriptStarter) modeController.getExtension(IScriptStarter.class);
351 final IScriptStarter starter = modeController.getExtension(IScriptStarter.class);
351352 if(starter == null)
352353 return;
353354 final NodeModel node = reminderExtension.getNode();
355356 final Controller controller = modeController.getController();
356357 if(! controller.getMapViewManager().getMaps(modeController.getModeName()).containsValue(map))
357358 return;
358 starter.executeScript(node, script);
359 try {
360 starter.executeScript(node, script);
361 }
362 catch (Exception e) {
363 LogUtils.warn(e);
364 UITools.errorMessage(TextUtils.format("reminder_script_error", e.toString(), node.getMap().getTitle(), node.getID()));
365 }
359366 }
360367 /**
361368 * @author Dimitry
368375 public String toString() {
369376 return TextUtils.getText("NotificationOptions." + name());
370377 }
371
378
372379 };
373380 public void showNotificationPopup(ReminderExtension reminderExtension) {
374381 final NodeModel node = reminderExtension.getNode();
375
382
376383 String information = modeController.getExtension(TextController.class).getText(node);
377384 String title = TextUtils.getText("reminderNotification");
378385 final int option = JOptionPane.showOptionDialog(UITools.getCurrentFrame(), new JLabel(information), title, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, NotificationOptions.values(), NotificationOptions.SELECT_NODE);
7878 import org.freeplane.features.text.mindmapmode.MTextController;
7979
8080 import com.jgoodies.forms.builder.DefaultFormBuilder;
81 import com.jgoodies.forms.layout.FormLayout;
8182 import com.jgoodies.forms.layout.FormSpecs;
82 import com.jgoodies.forms.layout.FormLayout;
8383
8484 /**
8585 * @author foltin
8686 */
8787 class TimeManagement implements PropertyChangeListener, IMapSelectionListener {
8888
89 class JTimePanel extends JPanel
89 class JTimePanel extends JPanel
9090 {
9191 private static final long serialVersionUID = 1L;
9292 private JButton setReminderButton;
103103 final NodeModel selected = reminderHook.getModeController().getMapController().getSelectedNode();
104104 update(selected);
105105 }
106
106
107107 public void update(NodeModel node){
108108 if(node == null)
109109 return;
156156 calendarComponent.getDayChooser().addPropertyChangeListener(TimeManagement.this);
157157 calendarContainer.setAlignmentX(0.5f);
158158 add(calendarContainer);
159
159
160160 DefaultFormBuilder btnBuilder = new DefaultFormBuilder(new FormLayout(FormSpecs.GROWING_BUTTON_COLSPEC.toString(), ""));
161161 btnBuilder.getLayout().addGroupedColumn(btnBuilder.getColumnCount());
162162 for(int i = 1; i< colCount; i++){
166166 }
167167
168168 {
169 final JButton todayButton = new JButton(getResourceString("plugins/TimeManagement.xml_todayButton"));
169 final JButton todayButton = new JButton(getResourceString("reminder.todayButton"));
170170 todayButton.addActionListener(new ActionListener() {
171 @Override
171172 public void actionPerformed(final ActionEvent arg0) {
172173 final Calendar currentTime = Calendar.getInstance();
173174 currentTime.set(Calendar.SECOND, 0);
182183 btnBuilder.append(dateFormatChooser);
183184 }
184185 {
185 final JButton appendButton = new JButton(getResourceString("plugins/TimeManagement.xml_appendButton"));
186 final JButton appendButton = new JButton(getResourceString("reminder.appendButton"));
186187 if (dialog == null) {
187188 appendButton.setFocusable(false);
188189 }
196197 }
197198 {
198199 scriptEditor = null;
199 IScriptEditorStarter editor = (IScriptEditorStarter) reminderHook.getModeController().getExtension(IScriptEditorStarter.class);
200 IScriptEditorStarter editor = reminderHook.getModeController().getExtension(IScriptEditorStarter.class);
200201 if(editor != null){
201202 scriptEditor = editor.createComboBoxEditor(new Dimension(600, 400));
202203 Component scriptButton = scriptEditor.getEditorComponent();
204205 }
205206 }
206207 {
207 setReminderButton = new JButton(getResourceString("plugins/TimeManagement.xml_reminderButton"));
208 setReminderButton.setToolTipText(getResourceString("plugins/TimeManagement.xml_reminderButton.tooltip"));
208 setReminderButton = new JButton(getResourceString("reminder.reminderButton"));
209 setReminderButton.setToolTipText(getResourceString("reminder.reminderButton.tooltip"));
209210 setReminderButton.addMouseListener(new MouseAdapter() {
210211 @Override
211212 public void mouseClicked(MouseEvent e) {
216217 }
217218 {
218219 remindLaterButton = new JButton(
219 getResourceString("plugins/TimeManagement.xml_remindLaterButton"));
220 remindLaterButton.setToolTipText(getResourceString("plugins/TimeManagement.xml_remindLaterButton.tooltip"));
220 getResourceString("reminder.remindLaterButton"));
221 remindLaterButton.setToolTipText(getResourceString("reminder.remindLaterButton.tooltip"));
221222 remindLaterButton.addMouseListener(new MouseAdapter() {
222223
223224 @Override
224225 public void mouseClicked(MouseEvent e) {
225226 remindLaterReminder();
226227 }
227
228
228229 });
229230 btnBuilder.append(remindLaterButton);
230231 }
234235 }
235236 {
236237 removeReminderButton = new JButton(
237 getResourceString("plugins/TimeManagement.xml_removeReminderButton"));
238 removeReminderButton.setToolTipText(getResourceString("plugins/TimeManagement.xml_removeReminderButton.tooltip"));
238 getResourceString("reminder.removeReminderButton"));
239 removeReminderButton.setToolTipText(getResourceString("reminder.removeReminderButton.tooltip"));
239240 removeReminderButton.addMouseListener(new MouseAdapter() {
240241
241242 @Override
242243 public void mouseClicked(MouseEvent e) {
243244 removeReminder();
244245 }
245
246
246247 });
247248 btnBuilder.append(removeReminderButton);
248249 }
249250 if (dialog != null) {
250 final JButton cancelButton = new JButton(getResourceString("plugins/TimeManagement.xml_closeButton"));
251 final JButton cancelButton = new JButton(getResourceString("reminder.closeButton"));
251252 cancelButton.addMouseListener(new MouseAdapter() {
252253
253254 @Override
278279 if(oldReminderTime > System.currentTimeMillis()){
279280 final Object[] messageArguments = { new Date(oldReminderTime), date };
280281 final MessageFormat formatter = new MessageFormat(
281 getResourceString("plugins/TimeManagement.xml_reminderNode_onlyOneDate"));
282 getResourceString("reminder.reminderNode_onlyOneDate"));
282283 final String message = formatter.format(messageArguments);
283284 final int result = JOptionPane.showConfirmDialog(controller.getViewController().getCurrentRootComponent(), message,
284285 "Freeplane", JOptionPane.YES_NO_OPTION);
327328 Controller.getCurrentController().getMapViewManager().addMapSelectionListener(this);
328329 }
329330
330
331 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
332 }
333
331
332 @Override
334333 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
335334 disposeDialog();
336335 }
365364 }
366365
367366
367 @Override
368368 public void propertyChange(final PropertyChangeEvent event) {
369369 if (event.getPropertyName().equals(JDayChooser.DAY_PROPERTY)) {
370370 }
379379 dialog = new JDialog(UITools.getCurrentFrame(), false /*not modal*/);
380380 final JTimePanel timePanel =createTimePanel(dialog, true, 4);
381381 nodeSelectionListener = new INodeSelectionListener() {
382 @Override
382383 public void onSelect(NodeModel node) {
383384 timePanel.update(node);
384385 }
385
386
387 @Override
386388 public void onDeselect(NodeModel node) {
387389 }
388390 };
389391 getMindMapController().getMapController().addNodeSelectionListener(nodeSelectionListener);
390392 nodeChangeListener = new INodeChangeListener() {
393 @Override
391394 public void nodeChanged(NodeChangeEvent event) {
392395 final NodeModel node = event.getNode();
393396 if(event.getProperty().equals(ReminderExtension.class) && node.equals(getMindMapController().getMapController().getSelectedNode()))
395398 }
396399 };
397400 getMindMapController().getMapController().addNodeChangeListener(nodeChangeListener);
398
399 dialog.setTitle(getResourceString("plugins/TimeManagement.xml_WindowTitle"));
401
402 dialog.setTitle(getResourceString("reminder.WindowTitle"));
400403 dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
401404 dialog.addWindowListener(new WindowAdapter() {
402405 @Override
406409 });
407410 final Action action = new AbstractAction() {
408411 /**
409 *
412 *
410413 */
411414 private static final long serialVersionUID = 1L;
412415
416 @Override
413417 public void actionPerformed(final ActionEvent arg0) {
414418 disposeDialog();
415419 }
420424 UITools.setBounds(dialog, -1, -1, dialog.getWidth(), dialog.getHeight());
421425 dialog.setVisible(true);
422426 }
423
427
424428 public JTimePanel createTimePanel(final Dialog dialog, boolean useTriple, int colCount) {
425429 if (this.calendar == null) {
426430 this.calendar = Calendar.getInstance();
443447 return dateFormat;
444448 }
445449
450 @Override
446451 public String toString() {
447452 return dateFormat.formatObject(getCalendarDate()).toString();
448453 }
468473 dateFormatChooser.setSelectedIndex(selectedIndex);
469474 }
470475 dateFormatChooser.addItemListener(new ItemListener() {
476 @Override
471477 public void itemStateChanged(final ItemEvent e) {
472478 dateFormat = ((DateFormatComboBoxElement) e.getItem()).getDateFormat();
473479 final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
3232 class TimerBlinkTask extends TimerTask {
3333 private final ReminderHook reminderController;
3434 /**
35 *
35 *
3636 */
3737 private final ReminderExtension reminderExtension;
3838 private boolean stateAdded = false;
4040 private boolean alreadyExecuted;
4141
4242 /**
43 * @param b
43 * @param b
4444 */
4545 public TimerBlinkTask(final ReminderHook reminderController, final ReminderExtension reminderExtension,
4646 final boolean stateAdded, boolean runScript) {
5656 public void run() {
5757 SwingUtilities.invokeLater(new Runnable() {
5858
59 @Override
5960 public void run() {
6061 if(runScript){
6162 runScript = false;
6263 reminderController.runScript(reminderExtension);
6364 }
6465 if(! alreadyExecuted){
65 if(ResourceController.getResourceController().getBooleanProperty("remindersShowNotifications"))
66 if(runScript && ResourceController.getResourceController().getBooleanProperty("remindersShowNotifications"))
6667 SwingUtilities.invokeLater(new Runnable() {
6768 @Override
6869 public void run() {
6970 reminderController.showNotificationPopup(reminderExtension);
7071 }
7172 });
72
73
7374 alreadyExecuted = true;
7475 }
7576 stateAdded = !stateAdded;
7778 }
7879 });
7980 }
80
81
8182 public boolean alreadyExecuted(){
82 return alreadyExecuted;
83 return alreadyExecuted;
8384 }
8485 }
3535
3636 public AllMapsNodeListAction() {
3737 super("AllMapsNodeListAction");
38 nodeList = new NodeList(true, true, "allmapsnodelistwindow.configuration");
38 nodeList = new NodeListWithReplacement(NodeList.REMINDER_TEXT_WINDOW_TITLE_ALL_NODES,
39 true,
40 "allmapsnodelistwindow.configuration");
3941 }
4042
43 @Override
4144 public void actionPerformed(final ActionEvent e) {
42 nodeList.startup();
45 nodeList.startup((node, reminder) -> node.hasVisibleContent());
4346 }
4447 }
3232 */
3333 class FlatNodeTableFilterModel extends AbstractTableModel {
3434 private class TableModelHandler implements TableModelListener {
35 @Override
3536 public void tableChanged(final TableModelEvent arg0) {
3637 fireTableDataChanged();
3738 }
7172 * (non-Javadoc)
7273 * @see javax.swing.table.TableModel#getColumnCount()
7374 */
75 @Override
7476 public int getColumnCount() {
7577 return mTableModel.getColumnCount();
7678 }
8486 * (non-Javadoc)
8587 * @see javax.swing.table.TableModel#getRowCount()
8688 */
89 @Override
8790 public int getRowCount() {
8891 return mIndexArray.size();
8992 }
9295 * (non-Javadoc)
9396 * @see javax.swing.table.TableModel#getValueAt(int, int)
9497 */
98 @Override
9599 public Object getValueAt(final int row, final int column) {
100 ensureValidRow(row);
101 final int origRow = mIndexArray.get(row).intValue();
102 return mTableModel.getValueAt(origRow, column);
103 }
104
105 private void ensureValidRow(final int row) {
96106 if (row < 0 || row >= getRowCount()) {
97107 throw new IllegalArgumentException("Illegal Row specified: " + row);
98108 }
109 }
110
111 @Override
112 public void setValueAt(Object value, final int row, final int column) {
113 ensureValidRow(row);
99114 final int origRow = mIndexArray.get(row).intValue();
100 return mTableModel.getValueAt(origRow, column);
115 mTableModel.setValueAt(value, origRow, column);
116 fireTableCellUpdated(row, column);
101117 }
102118
103119 public void resetFilter() {
2525 import java.awt.Point;
2626 import java.awt.event.ActionEvent;
2727 import java.awt.event.ActionListener;
28 import java.awt.event.KeyAdapter;
2928 import java.awt.event.KeyEvent;
3029 import java.awt.event.KeyListener;
3130 import java.awt.event.MouseAdapter;
3938 import java.util.HashSet;
4039 import java.util.List;
4140 import java.util.Map;
42 import java.util.regex.Matcher;
43 import java.util.regex.Pattern;
44 import java.util.regex.PatternSyntaxException;
4541
4642 import javax.swing.AbstractAction;
4743 import javax.swing.Box;
5046 import javax.swing.JComboBox;
5147 import javax.swing.JDialog;
5248 import javax.swing.JLabel;
53 import javax.swing.JMenu;
54 import javax.swing.JMenuBar;
55 import javax.swing.JMenuItem;
5649 import javax.swing.JScrollPane;
5750 import javax.swing.JTable;
5851 import javax.swing.JTextField;
6760 import javax.swing.table.TableCellRenderer;
6861 import javax.swing.text.JTextComponent;
6962
70 import org.apache.commons.lang.StringUtils;
63 import org.dpolivaev.mnemonicsetter.MnemonicSetter;
7164 import org.freeplane.core.resources.ResourceController;
7265 import org.freeplane.core.resources.WindowConfigurationStorage;
73 import org.freeplane.core.ui.UIBuilder;
74 import org.freeplane.core.ui.components.BlindIcon;
7566 import org.freeplane.core.ui.components.JComboBoxWithBorder;
7667 import org.freeplane.core.ui.components.UITools;
7768 import org.freeplane.core.util.DelayedRunner;
78 import org.freeplane.core.util.HtmlUtils;
7969 import org.freeplane.core.util.TextUtils;
80 import org.freeplane.features.clipboard.ClipboardController;
8170 import org.freeplane.features.map.IMapChangeListener;
8271 import org.freeplane.features.map.IMapSelectionListener;
8372 import org.freeplane.features.map.INodeChangeListener;
8877 import org.freeplane.features.map.NodeDeletionEvent;
8978 import org.freeplane.features.map.NodeModel;
9079 import org.freeplane.features.map.NodeMoveEvent;
80 import org.freeplane.features.map.clipboard.MapClipboardController;
9181 import org.freeplane.features.mode.Controller;
9282 import org.freeplane.features.mode.ModeController;
9383 import org.freeplane.features.mode.mindmapmode.MModeController;
10090 /**
10191 * @author foltin
10292 */
103 public class NodeList {
93 class NodeList {
10494 private final class MapChangeListener implements IMapChangeListener, INodeChangeListener, IMapSelectionListener {
10595 public MapChangeListener() {
10696 super();
149139 if(hasTableFieldValueChanged(event.getProperty()))
150140 runner.runLater();
151141 }
152
153 @Override
154 public void afterMapChange(MapModel oldMap, MapModel newMap) {
155 }
156142
157143 @Override
158144 public void beforeMapChange(MapModel oldMap, MapModel newMap) {
292278 }
293279 }
294280 }
295
296 private class HolderAccessor{
297 private HolderAccessor() {
298 super();
299 }
300
301 public void changeString(final TextHolder textHolder, final String newText) {
302 textHolder.setText(newText);
303 }
304
305 public int getLength() {
306 return mFlatNodeTableFilterModel.getRowCount();
307 }
308
309 public TextHolder[] getNodeHoldersAt(final int row) {
310 return new TextHolder[]{
311 (TextHolder) sorter.getValueAt(row, NodeList.NODE_TEXT_COLUMN),
312 (TextHolder) sorter.getValueAt(row, NodeList.NODE_DETAILS_COLUMN),
313 (TextHolder) sorter.getValueAt(row, NodeList.NODE_NOTES_COLUMN)
314 };
315 }
316 }
317
318 private static String COLUMN_CREATED = "Created";
319 private static String COLUMN_DATE = "Date";
320 private static String COLUMN_ICONS = "Icons";
321 private static String COLUMN_MODIFIED = "Modified";
322 private static String COLUMN_NOTES = "Notes";
323 private static String COLUMN_TEXT = "Text";
324 private static String COLUMN_DETAILS = "Details";
325 private static final int DATE_COLUMN = 0;
326 protected static final int NODE_CREATED_COLUMN = 3;
327 protected static final int NODE_ICON_COLUMN = 2;
328 protected static final int NODE_MODIFIED_COLUMN = 4;
329 protected static final int NODE_DETAILS_COLUMN = 5;
330 protected static final int NODE_NOTES_COLUMN = 6;
331 public static final int NODE_TEXT_COLUMN = 1;
332 private static final String PLUGINS_TIME_LIST_XML_CREATED = "plugins/TimeList.xml_Created";
333 private static final String PLUGINS_TIME_LIST_XML_DATE = "plugins/TimeList.xml_Date";
334 private static final String PLUGINS_TIME_LIST_XML_ICONS = "plugins/TimeList.xml_Icons";
335 private static final String PLUGINS_TIME_LIST_XML_MODIFIED = "plugins/TimeList.xml_Modified";
336 private static final String PLUGINS_TIME_LIST_XML_NOTES = "plugins/TimeList.xml_Notes";
337 private static final String PLUGINS_TIME_LIST_XML_DETAILS = "plugins/TimeList.xml_Details";
338
339 private static final String PLUGINS_TIME_LIST_XML_TEXT = "plugins/TimeList.xml_Text";
340 private static final String PLUGINS_TIME_MANAGEMENT_XML_CLOSE = "plugins/TimeManagement.xml_closeButton";
341 private static final String PLUGINS_TIME_MANAGEMENT_XML_FIND = "plugins/TimeManagement.xml_Find";
342 private static final String PLUGINS_TIME_MANAGEMENT_XML_REPLACE = "plugins/TimeManagement.xml_Replace";
343 // private static final String PLUGINS_TIME_MANAGEMENT_XML_SELECT = "plugins/TimeManagement.xml_Select";
344 private static final String PLUGINS_TIME_MANAGEMENT_XML_WINDOW_TITLE = "plugins/TimeManagement.xml_WindowTitle";
345 private static final String PLUGINS_TIME_MANAGEMENT_XML_WINDOW_TITLE_ALL_NODES = "plugins/TimeManagement.xml_WindowTitle_All_Nodes";
281 private static final String REMINDER_TEXT_CREATED = "reminder.Created";
282 private static final String REMINDER_TEXT_REMINDER = "reminder.Reminder";
283 private static final String REMINDER_TEXT_ICONS = "reminder.Icons";
284 private static final String REMINDER_TEXT_MODIFIED = "reminder.Modified";
285 private static final String REMINDER_TEXT_NOTES = "reminder.Notes";
286 private static final String REMINDER_TEXT_DETAILS = "reminder.Details";
287
288 private static final String REMINDER_TEXT_MAP = "reminder.Map";
289 private static final String REMINDER_TEXT_TEXT = "reminder.Text";
290 private static final String REMINDER_TEXT_CLOSE = "reminder.closeButton";
291 private static final String REMINDER_TEXT_FIND = "reminder.Find";
292 static final String REMINDER_TEXT_WINDOW_TITLE = "reminder.WindowTitle";
293 public static final String REMINDER_TEXT_WINDOW_TITLE_ALL_NODES = "reminder.WindowTitle_All_Nodes";
294
295 private static String COLUMN_MODIFIED = TextUtils.getText(REMINDER_TEXT_MODIFIED);
296 private static String COLUMN_CREATED = TextUtils.getText(REMINDER_TEXT_CREATED);
297 private static String COLUMN_ICONS = TextUtils.getText(REMINDER_TEXT_ICONS);
298 private static String COLUMN_TEXT = TextUtils.getText(REMINDER_TEXT_TEXT);
299 private static String COLUMN_MAP = TextUtils.getText(REMINDER_TEXT_MAP);
300 private static String COLUMN_DETAILS= TextUtils.getText(REMINDER_TEXT_DETAILS);
301 private static String COLUMN_REMINDER = TextUtils.getText(REMINDER_TEXT_REMINDER);
302 private static String COLUMN_NOTES = TextUtils.getText(REMINDER_TEXT_NOTES);
303 private final int nodeMapColumn;
304 final int nodeTextColumn;
305 private final int nodeIconColumn;
306 final int nodeDetailsColumn;
307 final int nodeNotesColumn;
308 protected final int nodeReminderColumn;
309 private final int nodeCreatedColumn;
310 private final int nodeModifiedColumn;
346311 private final String windowPreferenceStorageProperty;
347 // = NodeList.class.getName() + "_properties"
348 private static String replace(final Pattern p, String input, final String replacement) {
349 final String result = HtmlUtils.getReplaceResult(p, input, replacement);
350 return result;
351 }
352
353 // // final private Controller controller;
354 private DateRenderer dateRenderer;
312
313 private final DateRenderer dateRenderer;
355314 private JDialog dialog;
356 private IconsRenderer iconsRenderer;
357 final private JComboBox mFilterTextReplaceField;
358 final private JComboBox mFilterTextSearchField;
359 private FlatNodeTableFilterModel mFlatNodeTableFilterModel;
360 // final private ModeController modeController;
361 private JTextField mNodePath;
362 private TextRenderer textRenderer;
363 private boolean showAllNodes = false;
364 private TableSorter sorter;
365 private JTable tableView;
315 private final IconsRenderer iconsRenderer;
316 protected final JComboBox mFilterTextSearchField;
317 protected FlatNodeTableFilterModel mFlatNodeTableFilterModel;
318 private final JTextField mNodePath;
319 private final TextRenderer textRenderer;
320
321 private final String windowTitle;
322 public interface NodeFilter {
323 boolean showsNode(NodeModel node, ReminderExtension reminder) ;
324 }
325 TableSorter sorter;
326 final protected JTable tableView;
366327 private DefaultTableModel tableModel;
367328 private final boolean searchInAllMaps;
368 private final JCheckBox useRegexInReplace;
369 private final JCheckBox useRegexInFind;
370 private final JCheckBox matchCase;
329 protected final JCheckBox useRegexInFind;
330 protected final JCheckBox matchCase;
371331 final private boolean modal;
372332 private final MapChangeListener mapChangeListener;
373
374 public NodeList( final boolean showAllNodes, final boolean searchInAllMaps, String windowPreferenceStorageProperty) {
375 this(false, showAllNodes, searchInAllMaps, windowPreferenceStorageProperty);
376 }
377
378 public NodeList( final boolean modal, final boolean showAllNodes, final boolean searchInAllMaps, String windowPreferenceStorageProperty) {
333 protected static final String PAST_REMINDERS_TEXT_WINDOW_TITLE = "reminder.WindowTitle_pastReminders";
334
335 NodeList( final String windowTitle, final boolean searchInAllMaps, String windowPreferenceStorageProperty) {
336 this.windowTitle = windowTitle;
337 nodeMapColumn = searchInAllMaps ? 0 : -1;
338 nodeTextColumn = nodeMapColumn + 1;
339 nodeIconColumn = nodeTextColumn + 1;
340 nodeDetailsColumn = nodeIconColumn + 1;
341 nodeNotesColumn = nodeDetailsColumn + 1;
342 nodeReminderColumn = nodeNotesColumn + 1;
343 nodeCreatedColumn = nodeReminderColumn + 1;
344 nodeModifiedColumn = nodeCreatedColumn + 1;
345
379346 // this.modeController = modeController;
380347 // controller = modeController.getController();
381 this.modal = modal;
382 this.showAllNodes = showAllNodes;
348 this.modal = false;
383349 this.searchInAllMaps = searchInAllMaps;
384350 mFilterTextSearchField = new JComboBoxWithBorder();
385351 mFilterTextSearchField.setEditable(true);
387353 mFilterTextSearchField.addActionListener(listener);
388354 final JTextComponent editorComponent = (JTextComponent) mFilterTextSearchField.getEditor().getEditorComponent();
389355 editorComponent.getDocument().addDocumentListener(listener);
390 mFilterTextSearchField.addKeyListener(new KeyAdapter() {
391 @Override
392 public void keyPressed(final KeyEvent pEvent) {
393 if (pEvent.getKeyCode() == KeyEvent.VK_DOWN) {
394 mFilterTextReplaceField.requestFocusInWindow();
395 }
396 }
397 });
398 mFilterTextReplaceField = new JComboBoxWithBorder();
399 mFilterTextReplaceField.setEditable(true);
400 mFilterTextReplaceField.addKeyListener(new KeyAdapter() {
401 @Override
402 public void keyPressed(final KeyEvent pEvent) {
403 if (pEvent.getKeyCode() == KeyEvent.VK_DOWN) {
404 tableView.requestFocusInWindow();
405 }
406 else if (pEvent.getKeyCode() == KeyEvent.VK_UP) {
407 mFilterTextSearchField.requestFocusInWindow();
408 }
409 }
410 });
411 useRegexInReplace = new JCheckBox();
412 useRegexInFind = new JCheckBox();
356 useRegexInFind = new JCheckBox(TextUtils.getText("regular_expressions"));
413357 useRegexInFind.addActionListener(listener);
414 matchCase = new JCheckBox();
358 matchCase = new JCheckBox(TextUtils.getText("filter_match_case"));
415359 matchCase.addActionListener(listener);
416360 mapChangeListener = new MapChangeListener();
417361 this.windowPreferenceStorageProperty = windowPreferenceStorageProperty;
362 dateRenderer = new DateRenderer();
363 textRenderer = new TextRenderer();
364 iconsRenderer = new IconsRenderer();
365 tableView = new FlatNodeTable();
366 mNodePath = new JTextField();
367
418368 }
419369
420370 /**
421371 *
422372 */
423 private void disposeDialog() {
373 protected void disposeDialog() {
424374 if(dialog == null || !dialog.isVisible()){
425375 return;
426376 }
460410 MFileManager.getController(mindMapController).newMapFromDefaultTemplate();
461411 final MapModel newMap = Controller.getCurrentController().getMap();
462412 for (final NodeModel node : selectedNodes) {
463 final NodeModel copy = ClipboardController.getController().duplicate(node, false);
413 final NodeModel copy = MapClipboardController.getController().duplicate(node, false);
464414 if (copy != null) {
465415 mindMapController.getMapController().insertNodeIntoWithoutUndo(copy, newMap.getRootNode());
466416 }
470420
471421 /**
472422 */
473 private NodeModel getMindMapNode(final int focussedRow) {
474 final NodeModel selectedNode = ((TextHolder) tableView.getModel().getValueAt(focussedRow,
475 NodeList.NODE_TEXT_COLUMN)).getNode();
423 protected NodeModel getMindMapNode(final int row) {
424 final NodeModel selectedNode = ((TextHolder) tableView.getModel().getValueAt(row,
425 nodeTextColumn)).getNode();
476426 return selectedNode;
477427 }
478428
479 private void replace(final HolderAccessor holderAccessor, boolean selectedOnly) {
480 final String searchString = (String) mFilterTextSearchField.getSelectedItem();
481 if(searchString == null)
482 return;
483 final String replaceString = (String) mFilterTextReplaceField.getSelectedItem();
484 Pattern p;
485 try {
486 p = Pattern.compile(useRegexInFind.isSelected() ? searchString : Pattern.quote(searchString),
487 matchCase.isSelected() ? 0 : Pattern.CASE_INSENSITIVE|Pattern.UNICODE_CASE);
488 }
489 catch (final PatternSyntaxException e) {
490 UITools.errorMessage(TextUtils.format("wrong_regexp", searchString, e.getMessage()));
491 return;
492 }
493 final String replacement = replaceString == null ? "" : replaceString;
494 final int length = holderAccessor.getLength();
495 for (int i = 0; i < length; i++) {
496 if( !selectedOnly || tableView.isRowSelected(i)){
497 TextHolder[] textHolders = holderAccessor.getNodeHoldersAt(i);
498 for(final TextHolder textHolder:textHolders){
499 final String text = textHolder.getText();
500 final String replaceResult;
501 final String literalReplacement = useRegexInReplace.isSelected() ? replacement : Matcher.quoteReplacement(replacement);
502 try {
503 if (HtmlUtils.isHtmlNode(text)) {
504 replaceResult = NodeList.replace(p, text,literalReplacement);
505 }
506 else {
507 replaceResult = p.matcher(text).replaceAll(literalReplacement);
508 }
509 }
510 catch (Exception e) {
511 final String message = e.getMessage();
512 UITools.errorMessage(TextUtils.format("wrong_regexp", replacement, message != null ? message : e.getClass().getSimpleName()));
513 return;
514 }
515 if (!StringUtils.equals(text, replaceResult)) {
516 holderAccessor.changeString(textHolder, replaceResult);
517 }
518 }
519 }
520 }
521 mFlatNodeTableFilterModel.resetFilter();
522 mFilterTextSearchField.insertItemAt(mFilterTextSearchField.getSelectedItem(), 0);
523 mFilterTextReplaceField.insertItemAt(mFilterTextReplaceField.getSelectedItem(), 0);
524 mFilterTextSearchField.setSelectedItem("");
525 }
526429
527430 private void selectNodes(final int focussedRow, final int[] selectedRows) {
528431 if (focussedRow >= 0) {
558461 selectNodes(tableView.getSelectedRow(), tableView.getSelectedRows());
559462 }
560463
561 public void startup() {
464 public void startup(NodeFilter nodeFilter) {
562465 if(dialog != null){
563466 dialog.toFront();
564467 return;
565468 }
566 NodeList.COLUMN_MODIFIED = TextUtils.getText(PLUGINS_TIME_LIST_XML_MODIFIED);
567 NodeList.COLUMN_CREATED = TextUtils.getText(PLUGINS_TIME_LIST_XML_CREATED);
568 NodeList.COLUMN_ICONS = TextUtils.getText(PLUGINS_TIME_LIST_XML_ICONS);
569 NodeList.COLUMN_TEXT = TextUtils.getText(PLUGINS_TIME_LIST_XML_TEXT);
570 NodeList.COLUMN_DETAILS= TextUtils.getText(PLUGINS_TIME_LIST_XML_DETAILS);
571 NodeList.COLUMN_DATE = TextUtils.getText(PLUGINS_TIME_LIST_XML_DATE);
572 NodeList.COLUMN_NOTES = TextUtils.getText(PLUGINS_TIME_LIST_XML_NOTES);
469 final DefaultTableModel model = createTableModel();
470 fillTableModel(model, nodeFilter);
471 tableModel = model;
472 initializeUI();
473 }
474
475 public void startup(List<NodeModel> nodes) {
476 if(dialog != null){
477 dialog.toFront();
478 return;
479 }
480 final DefaultTableModel model = createTableModel();
481 fillTableModel(model, nodes);
482 tableModel = model;
483 initializeUI();
484 }
485
486
487 private void initializeUI() {
488 mFlatNodeTableFilterModel = new FlatNodeTableFilterModel(tableModel,
489 new int[]{nodeTextColumn, nodeDetailsColumn, nodeNotesColumn}
490 );
491
492 sorter = new TableSorter(mFlatNodeTableFilterModel);
573493 dialog = new JDialog(UITools.getCurrentFrame(), modal /* modal */);
574 String windowTitle;
575 if (showAllNodes) {
576 windowTitle = PLUGINS_TIME_MANAGEMENT_XML_WINDOW_TITLE_ALL_NODES;
577 }
578 else {
579 windowTitle = PLUGINS_TIME_MANAGEMENT_XML_WINDOW_TITLE;
580 }
581494 dialog.setTitle(TextUtils.getText(windowTitle));
582495 dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
583496 final WindowAdapter windowListener = new WindowAdapter() {
605518 disposeDialog();
606519 }
607520 });
521
608522 final Container contentPane = dialog.getContentPane();
609523 final GridBagLayout gbl = new GridBagLayout();
610524 contentPane.setLayout(gbl);
617531 layoutConstraints.weighty = 0.0;
618532 layoutConstraints.anchor = GridBagConstraints.WEST;
619533 layoutConstraints.fill = GridBagConstraints.HORIZONTAL;
620 contentPane.add(new JLabel(TextUtils.getText(PLUGINS_TIME_MANAGEMENT_XML_FIND)), layoutConstraints);
534 contentPane.add(new JLabel(TextUtils.getText(REMINDER_TEXT_FIND)), layoutConstraints);
621535 layoutConstraints.gridwidth = 1;
622536 layoutConstraints.gridx++;
623537 contentPane.add(Box.createHorizontalStrut(40), layoutConstraints);
624538 layoutConstraints.gridx++;
625 contentPane.add(new JLabel(TextUtils.getText("filter_match_case")), layoutConstraints);
626 layoutConstraints.gridx++;
627539 contentPane.add(matchCase, layoutConstraints);
628540 layoutConstraints.gridx++;
629541 contentPane.add(Box.createHorizontalStrut(40), layoutConstraints);
630 layoutConstraints.gridx++;
631 contentPane.add(new JLabel(TextUtils.getText("regular_expressions")), layoutConstraints);
632542 layoutConstraints.gridx++;
633543 contentPane.add(useRegexInFind, layoutConstraints);
634544 layoutConstraints.gridx = 0;
636546 layoutConstraints.gridwidth = GridBagConstraints.REMAINDER;
637547 layoutConstraints.gridy++;
638548 contentPane.add(/* new JScrollPane */(mFilterTextSearchField), layoutConstraints);
639 layoutConstraints.gridy++;
640 layoutConstraints.weightx = 0.0;
641 layoutConstraints.gridwidth = 1;
642 contentPane.add(new JLabel(TextUtils.getText(PLUGINS_TIME_MANAGEMENT_XML_REPLACE)), layoutConstraints);
643 layoutConstraints.gridx = 5;
644 contentPane.add(new JLabel(TextUtils.getText("regular_expressions")), layoutConstraints);
645 layoutConstraints.gridx++;
646 contentPane.add(useRegexInReplace, layoutConstraints);
647 layoutConstraints.gridx = 0;
648 layoutConstraints.weightx = 1.0;
649 layoutConstraints.gridwidth = GridBagConstraints.REMAINDER;
650 layoutConstraints.gridy++;
651 contentPane.add(/* new JScrollPane */(mFilterTextReplaceField), layoutConstraints);
652 dateRenderer = new DateRenderer();
653 textRenderer = new TextRenderer();
654 iconsRenderer = new IconsRenderer();
655 tableView = new FlatNodeTable();
549 createSpecificUI(contentPane, layoutConstraints);
656550 tableView.addKeyListener(new FlatNodeTableKeyListener());
657551 tableView.addMouseListener(new FlatNodeTableMouseAdapter());
658552 tableView.getTableHeader().setReorderingAllowed(false);
659 tableModel = updateModel();
660 mFlatNodeTableFilterModel = new FlatNodeTableFilterModel(tableModel,
661 new int[]{NodeList.NODE_TEXT_COLUMN, NodeList.NODE_DETAILS_COLUMN, NodeList.NODE_NOTES_COLUMN}
662 );
663 sorter = new TableSorter(mFlatNodeTableFilterModel);
664553 tableView.setModel(sorter);
665554 sorter.setTableHeader(tableView.getTableHeader());
666555 sorter.setColumnComparator(Date.class, TableSorter.COMPARABLE_COMPARATOR);
667556 sorter.setColumnComparator(NodeModel.class, TableSorter.LEXICAL_COMPARATOR);
668557 sorter.setColumnComparator(IconsHolder.class, TableSorter.COMPARABLE_COMPARATOR);
669 sorter.setSortingStatus(NodeList.DATE_COLUMN, TableSorter.ASCENDING);
558 sorter.setSortingStatus(nodeReminderColumn, TableSorter.ASCENDING);
670559 final JScrollPane pane = new JScrollPane(tableView);
671560 UITools.setScrollbarIncrement(pane);
672561 layoutConstraints.gridy++;
675564 tableConstraints.weighty = 10;
676565 tableConstraints.fill = GridBagConstraints.BOTH;
677566 contentPane.add(pane, tableConstraints);
678 mNodePath = new JTextField();
679567 mNodePath.setEditable(false);
680568 layoutConstraints.gridy++;
681569 GridBagConstraints treeConstraints = (GridBagConstraints) layoutConstraints.clone();
683571 @SuppressWarnings("serial")
684572 JScrollPane scrollPane = new JScrollPane(mNodePath, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
685573 contentPane.add(scrollPane, treeConstraints);
686 final AbstractAction exportAction = new AbstractAction(TextUtils.getText("plugins/TimeManagement.xml_Export")) {
574 final AbstractAction exportAction = new AbstractAction(TextUtils.getText("reminder.Export")) {
687575 /**
688576 *
689577 */
695583 }
696584 };
697585 final JButton exportButton = new JButton(exportAction);
698 final AbstractAction replaceAllAction = new AbstractAction(TextUtils
699 .getText("plugins/TimeManagement.xml_Replace_All")) {
586 final AbstractAction gotoAction = new AbstractAction(TextUtils.getText("reminder.Goto")) {
700587 /**
701588 *
702589 */
704591
705592 @Override
706593 public void actionPerformed(final ActionEvent arg0) {
707 replace(new HolderAccessor(), false);
708 }
709 };
710 final JButton replaceAllButton = new JButton(replaceAllAction);
711 final AbstractAction replaceSelectedAction = new AbstractAction(TextUtils
712 .getText("plugins/TimeManagement.xml_Replace_Selected")) {
713 /**
714 *
715 */
716 private static final long serialVersionUID = 1L;
717
718 @Override
719 public void actionPerformed(final ActionEvent arg0) {
720 replace(new HolderAccessor(), true);
721 }
722 };
723 final JButton replaceSelectedButton = new JButton(replaceSelectedAction);
724 final AbstractAction gotoAction = new AbstractAction(TextUtils.getText("plugins/TimeManagement.xml_Goto")) {
725 /**
726 *
727 */
728 private static final long serialVersionUID = 1L;
729
730 @Override
731 public void actionPerformed(final ActionEvent arg0) {
732594 selectSelectedRows();
733595 }
734596 };
735597 final JButton gotoButton = new JButton(gotoAction);
736 final AbstractAction disposeAction = new AbstractAction(TextUtils.getText(PLUGINS_TIME_MANAGEMENT_XML_CLOSE)) {
598 final AbstractAction disposeAction = new AbstractAction(TextUtils.getText(REMINDER_TEXT_CLOSE)) {
737599 /**
738600 *
739601 */
748610 /* Initial State */
749611 gotoAction.setEnabled(false);
750612 exportAction.setEnabled(false);
751 replaceSelectedAction.setEnabled(false);
752613 final Box bar = Box.createHorizontalBox();
753614 bar.add(Box.createHorizontalGlue());
754615 bar.add(cancelButton);
755616 bar.add(exportButton);
756 bar.add(replaceAllButton);
757 bar.add(replaceSelectedButton);
617 createSpecificButtons(bar);
758618 bar.add(gotoButton);
759619 bar.add(Box.createHorizontalGlue());
760620 layoutConstraints.gridy++;
761621 contentPane.add(/* new JScrollPane */(bar), layoutConstraints);
762 final JMenuBar menuBar = new JMenuBar();
763 final JMenu menu = new JMenu(TextUtils.getText("plugins/TimeManagement.xml_menu_actions"));
764 final AbstractAction[] actionList = new AbstractAction[] { gotoAction, replaceSelectedAction,
765 replaceAllAction, exportAction, disposeAction };
766 for (int i = 0; i < actionList.length; i++) {
767 final AbstractAction action = actionList[i];
768 final JMenuItem item = menu.add(action);
769 item.setIcon(new BlindIcon(UIBuilder.ICON_SIZE));
770 }
771 menuBar.add(menu);
772 dialog.setJMenuBar(menuBar);
622 MnemonicSetter.INSTANCE.setComponentMnemonics(contentPane);
773623 final ListSelectionModel rowSM = tableView.getSelectionModel();
774624 rowSM.addListSelectionListener(new ListSelectionListener() {
775625 @Override
779629 }
780630 final ListSelectionModel lsm = (ListSelectionModel) e.getSource();
781631 final boolean enable = !(lsm.isSelectionEmpty());
782 replaceSelectedAction.setEnabled(enable);
783632 gotoAction.setEnabled(enable);
784633 exportAction.setEnabled(enable);
785634 }
832681 dialog.setVisible(true);
833682 }
834683
835 /**
836 * Creates a table model for the new table and returns it.
837 */
838 private DefaultTableModel updateModel() {
684 protected void createSpecificButtons(final Container container) {
685
686 }
687
688
689 protected void createSpecificUI(Container contentPane, GridBagConstraints layoutConstraints) {
690 }
691
692 private void fillTableModel(DefaultTableModel model, List<NodeModel> nodes) {
693 for(NodeModel node : nodes) {
694 final ReminderExtension hook = ReminderExtension.getExtension(node);
695 final Object[] row = createTableRowData(node, hook);
696 model.addRow(row);
697 }
698 }
699
700 private void fillTableModel(final DefaultTableModel model, NodeFilter nodeFilter) {
701 if (searchInAllMaps == false) {
702 final MapModel map = Controller.getCurrentController().getMap();
703 if(map != null) {
704 final NodeModel node = map.getRootNode();
705 fillModel(model, node, nodeFilter);
706 }
707 }
708 else {
709 final Map<String, MapModel> maps = Controller.getCurrentController().getMapViewManager().getMaps(MModeController.MODENAME);
710 for (final MapModel map : maps.values()) {
711 final NodeModel node = map.getRootNode();
712 fillModel(model, node, nodeFilter);
713 }
714 }
715 }
716
717 private DefaultTableModel createTableModel() {
839718 final DefaultTableModel model = new DefaultTableModel() {
840719 /**
841720 *
847726 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
848727 */
849728 @Override
850 public Class<?> getColumnClass(final int arg0) {
851 switch (arg0) {
852 case DATE_COLUMN:
853 case NODE_CREATED_COLUMN:
854 case NODE_MODIFIED_COLUMN:
855 return Date.class;
856 case NODE_TEXT_COLUMN:
857 case NODE_NOTES_COLUMN:
858 case NODE_DETAILS_COLUMN:
859 return TextHolder.class;
860 case NODE_ICON_COLUMN:
861 return IconsHolder.class;
862 default:
863 return Object.class;
729 public Class<?> getColumnClass(final int column) {
730 if (column == nodeReminderColumn || column == nodeCreatedColumn || column == nodeModifiedColumn) {
731 return Date.class;
732 }
733 else if (column == nodeTextColumn || column == nodeNotesColumn || column == nodeDetailsColumn) {
734 return TextHolder.class;
735 }
736 else if (column == nodeMapColumn) {
737 return String.class;
738 }
739 else if (column == nodeIconColumn) {
740 return IconsHolder.class;
741 }
742 else {
743 return Object.class;
864744 }
865745 }
866746 };
867 model.addColumn(NodeList.COLUMN_DATE);
868 model.addColumn(NodeList.COLUMN_TEXT);
869 model.addColumn(NodeList.COLUMN_ICONS);
870 model.addColumn(NodeList.COLUMN_CREATED);
871 model.addColumn(NodeList.COLUMN_MODIFIED);
872 model.addColumn(NodeList.COLUMN_DETAILS);
873 model.addColumn(NodeList.COLUMN_NOTES);
874 if (searchInAllMaps == false) {
875 final MapModel map = Controller.getCurrentController().getMap();
876 if(map != null) {
877 final NodeModel node = map.getRootNode();
878 updateModel(model, node);
879 }
880 }
881 else {
882 final Map<String, MapModel> maps = Controller.getCurrentController().getMapViewManager().getMaps(MModeController.MODENAME);
883 for (final MapModel map : maps.values()) {
884 final NodeModel node = map.getRootNode();
885 updateModel(model, node);
886 }
887 }
747 if(nodeMapColumn >= 0)
748 model.addColumn(COLUMN_MAP);
749 model.addColumn(COLUMN_TEXT);
750 model.addColumn(COLUMN_ICONS);
751 model.addColumn(COLUMN_DETAILS);
752 model.addColumn(COLUMN_NOTES);
753 model.addColumn(COLUMN_REMINDER);
754 model.addColumn(COLUMN_CREATED);
755 model.addColumn(COLUMN_MODIFIED);
888756 return model;
889757 }
890758
891 private void updateModel(final DefaultTableModel model, final NodeModel node) {
759 private void fillModel(final DefaultTableModel model, final NodeModel node, NodeFilter nodeFilter) {
892760 final ReminderExtension hook = ReminderExtension.getExtension(node);
893 Date date = null;
894 if (hook != null) {
895 date = new Date(hook.getRemindUserAt());
896 }
897 if (showAllNodes && node.hasVisibleContent() || hook != null) {
898 model.addRow(new Object[] {
899 date,
900 new TextHolder(new CoreTextAccessor(node)),
901 new IconsHolder(node),
902 node.getHistoryInformation().getCreatedAt(),
903 node.getHistoryInformation().getLastModifiedAt(),
904 new TextHolder(new DetailTextAccessor(node)) ,
905 new TextHolder(new NoteTextAccessor(node)) });
906 }
907 MapController r = Controller.getCurrentModeController().getMapController();
761 if (nodeFilter.showsNode(node, hook)) {
762 final Object[] row = createTableRowData(node, hook);
763 model.addRow(row);
764 }
908765 for (final NodeModel child : node.getChildren()) {
909 updateModel(model, child);
910 }
766 fillModel(model, child, nodeFilter);
767 }
768 }
769
770 private Object[] createTableRowData(final NodeModel node, final ReminderExtension hook) {
771 final Date date = hook != null ? new Date(hook.getRemindUserAt()) : null;
772 final Object[] row = searchInAllMaps ? new Object[] {
773 node.getMap().getTitle(),
774 new TextHolder(new CoreTextAccessor(node)),
775 new IconsHolder(node),
776 new TextHolder(new DetailTextAccessor(node)) ,
777 new TextHolder(new NoteTextAccessor(node)),
778 date,
779 node.getHistoryInformation().getCreatedAt(),
780 node.getHistoryInformation().getLastModifiedAt()} :
781 new Object[] {
782 new TextHolder(new CoreTextAccessor(node)),
783 new IconsHolder(node),
784 new TextHolder(new DetailTextAccessor(node)) ,
785 new TextHolder(new NoteTextAccessor(node)),
786 date,
787 node.getHistoryInformation().getCreatedAt(),
788 node.getHistoryInformation().getLastModifiedAt()};
789 return row;
911790 }
912791 static private HashSet<Object> changeableProperties = new HashSet<Object>(
913792 Arrays.asList(NodeModel.NODE_TEXT, NodeModel.NODE_ICON, DetailTextModel.class, NodeModel.NOTE_TEXT)
3535
3636 public NodeListAction() {
3737 super("NodeListAction");
38 nodeList = new NodeList(true, false, "nodelistwindow.configuration");
38 nodeList = new NodeListWithReplacement(NodeList.REMINDER_TEXT_WINDOW_TITLE_ALL_NODES,
39 false,
40 "nodelistwindow.configuration");
3941 }
4042
43 @Override
4144 public void actionPerformed(final ActionEvent e) {
42 nodeList.startup();
45 nodeList.startup((node, reminder) -> node.hasVisibleContent());
4346 }
4447 }
0 package org.freeplane.view.swing.features.time.mindmapmode.nodelist;
1
2 import java.awt.Component;
3 import java.awt.Container;
4 import java.awt.event.ActionEvent;
5
6 import javax.swing.AbstractAction;
7 import javax.swing.JButton;
8 import javax.swing.ListSelectionModel;
9 import javax.swing.event.ListSelectionEvent;
10 import javax.swing.event.ListSelectionListener;
11
12 import org.freeplane.core.util.TextUtils;
13 import org.freeplane.features.map.NodeModel;
14 import org.freeplane.features.mode.Controller;
15 import org.freeplane.view.swing.features.time.mindmapmode.ReminderExtension;
16 import org.freeplane.view.swing.features.time.mindmapmode.ReminderHook;
17
18 public class NodeListWithReminders extends NodeList{
19 public NodeListWithReminders(String windowTitle, boolean searchInAllMaps,
20 String windowPreferenceStorageProperty) {
21 super(windowTitle, searchInAllMaps, windowPreferenceStorageProperty);
22 }
23
24 @Override
25 protected void createSpecificButtons(final Container container) {
26 final AbstractAction runAllAction = new AbstractAction(TextUtils
27 .getText("reminder.Run_All")) {
28 /**
29 *
30 */
31 private static final long serialVersionUID = 1L;
32
33 @Override
34 public void actionPerformed(final ActionEvent arg0) {
35 runScripts(false);
36 }
37 };
38 final JButton runAllButton = new JButton(runAllAction);
39 final AbstractAction runSelectedAction = new AbstractAction(TextUtils
40 .getText("reminder.Run_Selected")) {
41 /**
42 *
43 */
44 private static final long serialVersionUID = 1L;
45
46 @Override
47 public void actionPerformed(final ActionEvent arg0) {
48 runScripts(true);
49 }
50 };
51 final JButton runSelectedButton = new JButton(runSelectedAction);
52 runSelectedAction.setEnabled(false);
53 final AbstractAction removeAllAction = new AbstractAction(TextUtils
54 .getText("reminder.Remove_All")) {
55 /**
56 *
57 */
58 private static final long serialVersionUID = 1L;
59
60 @Override
61 public void actionPerformed(final ActionEvent arg0) {
62 removeReminders(false);
63 disposeDialog();
64 }
65 };
66 final JButton removeAllButton = new JButton(removeAllAction);
67 final AbstractAction removeSelectedAction = new AbstractAction(TextUtils
68 .getText("reminder.Remove_Selected")) {
69 /**
70 *
71 */
72 private static final long serialVersionUID = 1L;
73
74 @Override
75 public void actionPerformed(final ActionEvent arg0) {
76 removeReminders(true);
77 }
78 };
79 final JButton removeSelectedButton = new JButton(removeSelectedAction);
80 removeSelectedAction.setEnabled(false);
81 final ListSelectionModel rowSM1 = tableView.getSelectionModel();
82 rowSM1.addListSelectionListener(new ListSelectionListener() {
83 @Override
84 public void valueChanged(final ListSelectionEvent e) {
85 if (e.getValueIsAdjusting()) {
86 return;
87 }
88 final ListSelectionModel lsm = (ListSelectionModel) e.getSource();
89 final boolean enable = !(lsm.isSelectionEmpty());
90 runSelectedAction.setEnabled(enable);
91 removeSelectedAction.setEnabled(enable);
92 }
93 });
94 Component[] components = new Component[] {runAllButton, runSelectedButton, removeAllButton, removeSelectedButton};
95 for(Component c : components)
96 container.add(c);
97 }
98
99
100 private interface ReminderAction{
101 void apply(ReminderHook controller, NodeModel node, ReminderExtension reminder, int row);
102 }
103 private void runScripts(boolean selectedOnly) {
104 apply(selectedOnly, this::runScript);
105 }
106
107 private void runScript(ReminderHook c, NodeModel n, ReminderExtension r, int row) {
108 c.runScript(r);
109 }
110 private void removeReminders(boolean selectedOnly) {
111 apply(selectedOnly, this::removeReminder);
112 }
113
114 private void removeReminder(ReminderHook reminderHook, NodeModel node, ReminderExtension reminder, int row) {
115 reminderHook.undoableDeactivateHook(node);
116 tableView.setValueAt(null, row, nodeReminderColumn);
117 }
118
119 private void apply(boolean selectedOnly, ReminderAction action) {
120 final ReminderHook reminderController = Controller.getCurrentModeController().getExtension(ReminderHook.class);
121 for (int row = 0; row < tableView.getRowCount(); row++) {
122 if(! selectedOnly || tableView.isRowSelected(row)) {
123 final NodeModel node = getMindMapNode(row);
124 final ReminderExtension reminder = node.getExtension(ReminderExtension.class);
125 if(reminder != null) {
126 action.apply(reminderController, node, reminder, row);
127 }
128 }
129 }
130 }
131
132 }
0 package org.freeplane.view.swing.features.time.mindmapmode.nodelist;
1
2 import java.awt.Container;
3 import java.awt.GridBagConstraints;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.KeyAdapter;
6 import java.awt.event.KeyEvent;
7 import java.util.regex.Matcher;
8 import java.util.regex.Pattern;
9 import java.util.regex.PatternSyntaxException;
10
11 import javax.swing.AbstractAction;
12 import javax.swing.JButton;
13 import javax.swing.JCheckBox;
14 import javax.swing.JComboBox;
15 import javax.swing.JLabel;
16 import javax.swing.ListSelectionModel;
17 import javax.swing.event.ListSelectionEvent;
18 import javax.swing.event.ListSelectionListener;
19
20 import org.apache.commons.lang.StringUtils;
21 import org.freeplane.core.ui.components.JComboBoxWithBorder;
22 import org.freeplane.core.ui.components.UITools;
23 import org.freeplane.core.util.HtmlUtils;
24 import org.freeplane.core.util.TextUtils;
25
26 public class NodeListWithReplacement extends NodeList{
27 class HolderAccessor{
28 HolderAccessor() {
29 super();
30 }
31
32 public void changeString(final TextHolder textHolder, final String newText) {
33 textHolder.setText(newText);
34 }
35
36 public int getLength() {
37 return mFlatNodeTableFilterModel.getRowCount();
38 }
39
40 public TextHolder[] getNodeHoldersAt(final int row) {
41 return new TextHolder[]{
42 (TextHolder) sorter.getValueAt(row, nodeTextColumn),
43 (TextHolder) sorter.getValueAt(row, nodeDetailsColumn),
44 (TextHolder) sorter.getValueAt(row, nodeNotesColumn)
45 };
46 }
47 }
48
49 private static final String REMINDER_TEXT_REPLACE = "reminder.Replace";
50 final private JComboBox mFilterTextReplaceField;
51 private final JCheckBox useRegexInReplace;
52
53 public NodeListWithReplacement(String windowTitle, boolean searchInAllMaps, String windowPreferenceStorageProperty) {
54 super(windowTitle, searchInAllMaps, windowPreferenceStorageProperty);
55 mFilterTextSearchField.addKeyListener(new KeyAdapter() {
56 @Override
57 public void keyPressed(final KeyEvent pEvent) {
58 if (pEvent.getKeyCode() == KeyEvent.VK_DOWN) {
59 mFilterTextReplaceField.requestFocusInWindow();
60 }
61 }
62 });
63 mFilterTextReplaceField = new JComboBoxWithBorder();
64 mFilterTextReplaceField.setEditable(true);
65 mFilterTextReplaceField.addKeyListener(new KeyAdapter() {
66 @Override
67 public void keyPressed(final KeyEvent pEvent) {
68 if (pEvent.getKeyCode() == KeyEvent.VK_DOWN) {
69 tableView.requestFocusInWindow();
70 }
71 else if (pEvent.getKeyCode() == KeyEvent.VK_UP) {
72 mFilterTextSearchField.requestFocusInWindow();
73 }
74 }
75 });
76 useRegexInReplace = new JCheckBox(TextUtils.getText("regular_expressions"));
77 }
78 private static String replace(final Pattern p, String input, final String replacement) {
79 final String result = HtmlUtils.getReplaceResult(p, input, replacement);
80 return result;
81 }
82 private void replace(final HolderAccessor holderAccessor, boolean selectedOnly) {
83 final String searchString = (String) mFilterTextSearchField.getSelectedItem();
84 if(searchString == null)
85 return;
86 final String replaceString = (String) mFilterTextReplaceField.getSelectedItem();
87 Pattern p;
88 try {
89 p = Pattern.compile(useRegexInFind.isSelected() ? searchString : Pattern.quote(searchString),
90 matchCase.isSelected() ? 0 : Pattern.CASE_INSENSITIVE|Pattern.UNICODE_CASE);
91 }
92 catch (final PatternSyntaxException e) {
93 UITools.errorMessage(TextUtils.format("wrong_regexp", searchString, e.getMessage()));
94 return;
95 }
96 final String replacement = replaceString == null ? "" : replaceString;
97 final int length = holderAccessor.getLength();
98 for (int i = 0; i < length; i++) {
99 if( !selectedOnly || tableView.isRowSelected(i)){
100 TextHolder[] textHolders = holderAccessor.getNodeHoldersAt(i);
101 for(final TextHolder textHolder:textHolders){
102 final String text = textHolder.getText();
103 final String replaceResult;
104 final String literalReplacement = useRegexInReplace.isSelected() ? replacement : Matcher.quoteReplacement(replacement);
105 try {
106 if (HtmlUtils.isHtmlNode(text)) {
107 replaceResult = replace(p, text,literalReplacement);
108 }
109 else {
110 replaceResult = p.matcher(text).replaceAll(literalReplacement);
111 }
112 }
113 catch (Exception e) {
114 final String message = e.getMessage();
115 UITools.errorMessage(TextUtils.format("wrong_regexp", replacement, message != null ? message : e.getClass().getSimpleName()));
116 return;
117 }
118 if (!StringUtils.equals(text, replaceResult)) {
119 holderAccessor.changeString(textHolder, replaceResult);
120 }
121 }
122 }
123 }
124 mFlatNodeTableFilterModel.resetFilter();
125 mFilterTextSearchField.insertItemAt(mFilterTextSearchField.getSelectedItem(), 0);
126 mFilterTextReplaceField.insertItemAt(mFilterTextReplaceField.getSelectedItem(), 0);
127 mFilterTextSearchField.setSelectedItem("");
128 }
129
130 @Override
131 protected void createSpecificUI(final Container contentPane, final GridBagConstraints layoutConstraints) {
132 layoutConstraints.gridy++;
133 layoutConstraints.weightx = 0.0;
134 layoutConstraints.gridwidth = 1;
135 contentPane.add(new JLabel(TextUtils.getText(REMINDER_TEXT_REPLACE)), layoutConstraints);
136 layoutConstraints.gridx = 4;
137 contentPane.add(useRegexInReplace, layoutConstraints);
138 layoutConstraints.gridx = 0;
139 layoutConstraints.weightx = 1.0;
140 layoutConstraints.gridwidth = GridBagConstraints.REMAINDER;
141 layoutConstraints.gridy++;
142 contentPane.add(/* new JScrollPane */(mFilterTextReplaceField), layoutConstraints);
143 }
144 @Override
145 protected void createSpecificButtons(final Container container) {
146 final AbstractAction replaceAllAction = new AbstractAction(TextUtils
147 .getText("reminder.Replace_All")) {
148 /**
149 *
150 */
151 private static final long serialVersionUID = 1L;
152
153 @Override
154 public void actionPerformed(final ActionEvent arg0) {
155 replace(new HolderAccessor(), false);
156 }
157 };
158 final JButton replaceAllButton = new JButton(replaceAllAction);
159 final AbstractAction replaceSelectedAction = new AbstractAction(TextUtils
160 .getText("reminder.Replace_Selected")) {
161 /**
162 *
163 */
164 private static final long serialVersionUID = 1L;
165
166 @Override
167 public void actionPerformed(final ActionEvent arg0) {
168 replace(new HolderAccessor(), true);
169 }
170 };
171 final JButton replaceSelectedButton = new JButton(replaceSelectedAction);
172 replaceSelectedAction.setEnabled(false);
173 container.add(replaceAllButton);
174 container.add(replaceSelectedButton);
175 final ListSelectionModel rowSM1 = tableView.getSelectionModel();
176 rowSM1.addListSelectionListener(new ListSelectionListener() {
177 @Override
178 public void valueChanged(final ListSelectionEvent e) {
179 if (e.getValueIsAdjusting()) {
180 return;
181 }
182 final ListSelectionModel lsm = (ListSelectionModel) e.getSource();
183 final boolean enable = !(lsm.isSelectionEmpty());
184 replaceSelectedAction.setEnabled(enable);
185 }
186 });
187 }
188 }
0 package org.freeplane.view.swing.features.time.mindmapmode.nodelist;
1
2 import java.awt.event.ActionEvent;
3
4 import org.freeplane.core.ui.AFreeplaneAction;
5
6 public class OldReminderListAction extends AFreeplaneAction {
7 /**
8 *
9 */
10 private static final long serialVersionUID = 1L;
11 /**
12 *
13 */
14 private final NodeList timeList;
15
16 public OldReminderListAction() {
17 super("OldReminderListAction");
18 timeList = new NodeListWithReminders(NodeList.PAST_REMINDERS_TEXT_WINDOW_TITLE,
19 true, "allmaps.timelistwindow.configuration");
20 }
21
22 @Override
23 public void actionPerformed(final ActionEvent e) {
24 long currentTimeMillis = System.currentTimeMillis();
25 timeList.startup((node, reminder) -> reminder != null && reminder.getRemindUserAt() <= currentTimeMillis);
26 }
27 }
0 package org.freeplane.view.swing.features.time.mindmapmode.nodelist;
1
2 import java.awt.event.ActionEvent;
3
4 import org.freeplane.core.ui.AFreeplaneAction;
5
6 public class ReminderListAction extends AFreeplaneAction {
7 /**
8 *
9 */
10 private static final long serialVersionUID = 1L;
11 /**
12 *
13 */
14 private final NodeList timeList;
15
16 public ReminderListAction() {
17 super("ReminderListAction");
18 timeList = new NodeListWithReminders(NodeList.REMINDER_TEXT_WINDOW_TITLE,
19 false, "timelistwindow.configuration");
20 }
21
22 @Override
23 public void actionPerformed(final ActionEvent e) {
24 timeList.startup((node, reminder) -> reminder != null);
25 }
26 }
0 /*
1 * Freeplane - mind map editor
2 * Copyright (C) 2009 Dimitry Polivaev
3 *
4 * This file author is Dimitry Polivaev
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 package org.freeplane.view.swing.features.time.mindmapmode.nodelist;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import javax.swing.JOptionPane;
25 import javax.swing.SwingUtilities;
26
27 import org.freeplane.core.ui.components.OptionalDontShowMeAgainDialog;
28 import org.freeplane.features.map.NodeModel;
29 import org.freeplane.features.mode.Controller;
30
31
32 /**
33 * @author Dimitry Polivaev
34 * Feb 20, 2009
35 */
36 public class ShowPastRemindersOnce {
37 private static final long UNDEFINED = - 1;
38 private boolean listIsShown;
39 private long timeLimit = UNDEFINED;
40 private final List<NodeModel> nodes = new ArrayList<NodeModel>();
41
42 /**
43 * @param b
44 */
45 public ShowPastRemindersOnce() {
46 super();
47 reset();
48 }
49
50 public void addNode(NodeModel node) {
51 if(hasNoUserInterface())
52 return;
53
54 nodes.add(node);
55 SwingUtilities.invokeLater(new Runnable() {
56
57 @Override
58 public void run() {
59 if(! listIsShown){
60 listIsShown = true;
61 final int showResult = OptionalDontShowMeAgainDialog.show("OptionPanel.reminder.showPastRemindersOnStart", "confirmation",
62 "reminder.showPastRemindersOnStart",
63 OptionalDontShowMeAgainDialog.BOTH_OK_AND_CANCEL_OPTIONS_ARE_STORED);
64 if (showResult != JOptionPane.OK_OPTION) {
65 SwingUtilities.invokeLater(new Runnable() {
66 @Override
67 public void run() {
68 reset();
69 }
70 });
71 return;
72 }
73 NodeListWithReminders timeList = new NodeListWithReminders(NodeList.PAST_REMINDERS_TEXT_WINDOW_TITLE,
74 true, "allmaps.timelistwindow.configuration") {
75
76 @Override
77 protected void disposeDialog() {
78 super.disposeDialog();
79 reset();
80 }
81
82 };
83 timeList.startup(nodes);
84 nodes.clear();
85 }
86 }
87 });
88 }
89
90 private boolean hasNoUserInterface() {
91 return Controller.getCurrentController().getMapViewManager().isHeadless();
92 }
93
94 public boolean alreadyExecuted(){
95 return listIsShown;
96 }
97
98 public long timeLimit() {
99 if(timeLimit == UNDEFINED)
100 timeLimit = System.currentTimeMillis();
101 return timeLimit;
102 }
103
104 private void reset() {
105 listIsShown = false;
106 nodes.clear();
107 timeLimit = UNDEFINED;
108 }
109 }
2323 import javax.swing.JComponent;
2424
2525 import org.apache.commons.lang.StringEscapeUtils;
26 import org.freeplane.features.map.MapController;
2726 import org.freeplane.features.map.NodeModel;
2827 import org.freeplane.features.mode.ModeController;
2928 import org.freeplane.features.text.TextController;
8584 holder.coordinates.width = content.getWidth();
8685 holder.coordinates.height = content.getHeight();
8786 area.add(holder);
88 MapController r = mapView.getModeController().getMapController();
8987 for (final NodeModel child: node.getChildren()) {
9088 createArea(child);
9189 }
0 package org.freeplane.view.swing.map;
1
2 import java.awt.Component;
3 import java.awt.Dimension;
4 import java.awt.GraphicsConfiguration;
5 import java.awt.Rectangle;
6 import java.io.File;
7 import java.net.URI;
8 import java.net.URISyntaxException;
9 import java.net.URL;
10
11 import javax.swing.JComponent;
12 import javax.swing.JToolTip;
13
14 import org.freeplane.core.resources.ResourceController;
15 import org.freeplane.features.mode.Controller;
16 import org.freeplane.view.swing.features.filepreview.IViewerFactory;
17 import org.freeplane.view.swing.features.filepreview.ImageRendererFactory;
18 import org.freeplane.view.swing.features.filepreview.ViewerController;
19
20 @SuppressWarnings("serial")
21 public class FreeplaneTooltip extends JToolTip {
22 public static final String TEXT_HTML = "text/html";
23
24 private GraphicsConfiguration graphicsConfiguration;
25 private String contentType;
26 private URL baseUrl;
27
28 public FreeplaneTooltip(GraphicsConfiguration graphicsConfiguration, String contentType){
29 this.graphicsConfiguration = graphicsConfiguration;
30 this.contentType = contentType;
31 }
32
33 @Override
34 public void setTipText(String tipText) {
35 final Dimension tooltipSize = tooltipSize(graphicsConfiguration);
36 try {
37 final URI uri = new URI(tipText);
38 final ViewerController viewerController = Controller.getCurrentModeController().getExtension(ViewerController.class);
39 if(viewerController != null) {
40 final IViewerFactory viewerFactory = viewerController.getViewerFactory();
41 if (viewerFactory.accept(uri)) {
42 final URI absoluteUri = uri.isAbsolute() ? uri : baseUrl.toURI().resolve(uri);
43 if(! absoluteUri.getScheme().equals("file") || new File(absoluteUri).canRead()) {
44 final JComponent imageViewer = new ImageRendererFactory().createRenderer(viewerFactory, absoluteUri, tooltipSize);
45 add(imageViewer);
46 return;
47 }
48 }
49 }
50 }
51 catch (URISyntaxException e) {
52 // fall through
53 }
54 final TextualTooltipRendererFactory tooltipScrollPaneFactory = new TextualTooltipRendererFactory(graphicsConfiguration, contentType, baseUrl, tipText, getComponent(), tooltipSize);
55 add(tooltipScrollPaneFactory.getTooltipRenderer());
56 }
57
58 private Dimension tooltipSize(GraphicsConfiguration graphicsConfiguration) {
59 final Rectangle screenBounds = graphicsConfiguration.getBounds();
60 final int screenHeigth = screenBounds.height - 80;
61 final int screenWidth = screenBounds.width - 80;
62 final int maximumHeight = Math.min(screenHeigth, getIntProperty("toolTipManager.max_tooltip_height"));
63 int maximumWidth = Math.min(screenWidth, getIntProperty("toolTipManager.max_tooltip_width"));
64 final Dimension maximumSize = new Dimension(maximumWidth, maximumHeight);
65 return maximumSize;
66 }
67 private int getIntProperty(String propertyName) {
68 return ResourceController.getResourceController().getIntProperty(propertyName, Integer.MAX_VALUE);
69 }
70
71 @Override
72 public Dimension getPreferredSize() {
73 final Component renderer = getComponent(0);
74 return renderer.getPreferredSize();
75 }
76
77 @Override
78 public void layout() {
79 final Component renderer = getComponent(0);
80 renderer.setSize(getPreferredSize());
81 super.layout();
82 }
83
84 public void setBase(URL url) {
85 this.baseUrl = url;
86 }
87
88 }
568568
569569 @Override
570570 public JToolTip createToolTip() {
571 NodeTooltip tip = new NodeTooltip(this.getGraphicsConfiguration());
571 FreeplaneTooltip tip = new FreeplaneTooltip(this.getGraphicsConfiguration(), FreeplaneTooltip.TEXT_HTML);
572572 tip.setComponent(this);
573573 final URL url = getMap().getModel().getURL();
574574 if (url != null) {
10421042 /**
10431043 * @param differentSubtrees
10441044 * @return an ArrayList of MindMapNode objects. If both ancestor and
1045 * descandant node are selected, only the ancestor ist returned
1045 * descendant node are selected, only the ancestor ist returned
10461046 */
10471047 ArrayList<NodeModel> getSelectedNodesSortedByY(final boolean differentSubtrees) {
10481048 validateSelecteds();
13051305 if (uriString != null) {
13061306 final URI uri = assignAbsoluteURI(uriString);
13071307 final ViewerController vc = getModeController().getExtension(ViewerController.class);
1308 final IViewerFactory factory = vc.getCombiFactory();
1308 final IViewerFactory factory = vc.getViewerFactory();
13091309 if (uri != null) {
13101310 assignViewerToBackgroundComponent(factory, uri);
13111311 }
13451345 LogUtils.warn("no viewer created for " + uri);
13461346 return;
13471347 }
1348 ((ScalableComponent) backgroundComponent).setCenter(true);
13491348 }
13501349 catch (final FileNotFoundException e1) {
13511350 LogUtils.warn(e1);
2020
2121 import java.awt.Color;
2222 import java.awt.Component;
23 import java.awt.Container;
2324 import java.awt.Dimension;
2425 import java.awt.EventQueue;
2526 import java.awt.Font;
2930 import java.awt.Rectangle;
3031 import java.awt.RenderingHints;
3132 import java.awt.SystemColor;
33 import java.awt.Window;
3234 import java.awt.image.BufferedImage;
3335 import java.awt.image.RenderedImage;
36 import java.beans.PropertyChangeEvent;
3437 import java.io.File;
3538 import java.net.MalformedURLException;
3639 import java.net.URL;
8285 * (the controller observes changes to the map mapViews here).
8386 */
8487 public class MapViewController implements IMapViewManager , IMapViewChangeListener, IFreeplanePropertyListener, IMapLifeCycleListener {
88
8589 private String lastModeName;
8690 /** reference to the current mapmapView; null is allowed, too. */
8791 private MapView selectedMapView;
136140 }) ;
137141 final String antialiasProperty = resourceController.getProperty(ViewController.RESOURCE_ANTIALIAS);
138142 changeAntialias(antialiasProperty);
143 KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusedWindow",this::focusSelectedNode);
144 }
145
146 private void focusSelectedNode(PropertyChangeEvent evt) {
147 final Window newWindow = (Window) evt.getNewValue();
148 if(newWindow == null)
149 return;
150 focusSelectedNode(newWindow, 2);
151 }
152
153 private void focusSelectedNode(final Window newWindow, int counter) {
154 if(counter > 0) {
155 SwingUtilities.invokeLater(() -> focusSelectedNode(newWindow, counter - 1));
156 return;
157 }
158 final MapView mapView = getMapView();
159 if(mapView == null || SwingUtilities.getWindowAncestor(mapView) != newWindow)
160 return;
161 final NodeView selectedNode = mapView.getSelected();
162 if(selectedNode == null)
163 return;
164 final Component focusOwner = newWindow.getFocusOwner();
165 if(focusOwner == null)
166 return;
167 final Container nodeView = SwingUtilities.getAncestorOfClass(NodeView.class, focusOwner);
168 if (nodeView != null && nodeView != selectedNode)
169 selectedNode.requestFocusInWindow();
139170 }
140171
141172 /* (non-Javadoc)
567598 @Override
568599 public Component getSelectedComponent() {
569600 final MapView mapView = getMapView();
570 return mapView == null ? null : mapView.getSelected();
601 return mapView == null ? null : mapView.getSelected().getMainView();
571602 }
572603
573604 /* (non-Javadoc)
753784 final String name = r.getModel().getTitle();
754785 addToOrChangeInMapViews(name, getMapView());
755786 changeToMapView(getMapView());
787 setMapTitles();
756788 }
757789
758790 @Override
+0
-171
freeplane/src/main/java/org/freeplane/view/swing/map/NodeTooltip.java less more
0 package org.freeplane.view.swing.map;
1
2 import java.awt.Component;
3 import java.awt.Cursor;
4 import java.awt.Dimension;
5 import java.awt.GraphicsConfiguration;
6 import java.awt.Insets;
7 import java.awt.Rectangle;
8 import java.awt.event.MouseAdapter;
9 import java.awt.event.MouseEvent;
10 import java.awt.event.MouseMotionListener;
11 import java.net.URI;
12 import java.net.URL;
13 import java.security.AccessControlException;
14
15 import javax.swing.JEditorPane;
16 import javax.swing.JScrollPane;
17 import javax.swing.JToolTip;
18 import javax.swing.SwingUtilities;
19 import javax.swing.text.html.HTMLDocument;
20 import javax.swing.text.html.HTMLEditorKit;
21 import javax.swing.text.html.StyleSheet;
22
23 import org.freeplane.core.resources.ResourceController;
24 import org.freeplane.core.ui.components.JRestrictedSizeScrollPane;
25 import org.freeplane.core.ui.components.UITools;
26 import org.freeplane.core.ui.components.html.SynchronousScaledEditorKit;
27 import org.freeplane.core.util.Compat;
28 import org.freeplane.core.util.HtmlUtils;
29 import org.freeplane.core.util.LogUtils;
30 import org.freeplane.features.link.LinkController;
31 import org.freeplane.features.mode.Controller;
32
33 @SuppressWarnings("serial")
34 public class NodeTooltip extends JToolTip {
35 class LinkMouseListener extends MouseAdapter implements MouseMotionListener{
36 public void mouseMoved(final MouseEvent ev) {
37 final String link = HtmlUtils.getURLOfExistingLink((HTMLDocument) tip.getDocument(), tip.viewToModel(ev.getPoint()));
38 boolean followLink = link != null;
39 Controller currentController = Controller.getCurrentController();
40 final int requiredCursor;
41 if(followLink){
42 currentController.getViewController().out(link);
43 requiredCursor = Cursor.HAND_CURSOR;
44 }
45 else{
46 requiredCursor = Cursor.DEFAULT_CURSOR;
47 }
48 if (tip.getCursor().getType() != requiredCursor) {
49 tip.setCursor(requiredCursor != Cursor.DEFAULT_CURSOR ? new Cursor(requiredCursor) : null);
50 }
51 }
52
53 public void mouseClicked(final MouseEvent ev) {
54 if (Compat.isPlainEvent(ev)) {
55 final String linkURL = HtmlUtils.getURLOfExistingLink((HTMLDocument) tip.getDocument(), tip.viewToModel(ev.getPoint()));
56 if (linkURL != null) {
57 try {
58 NodeView nodeView = (NodeView) SwingUtilities.getAncestorOfClass(NodeView.class, getComponent());
59 LinkController.getController().loadURI(nodeView.getModel(), new URI(linkURL));
60 } catch (Exception e) {
61 LogUtils.warn(e);
62 }
63 }
64 }
65 }
66
67 public void mouseDragged(MouseEvent e) {
68 }
69 }
70
71 final private JEditorPane tip;
72 private int maximumWidth;
73
74 public NodeTooltip(GraphicsConfiguration graphicsConfiguration){
75 tip = new JEditorPane();
76 tip.setContentType("text/html");
77 tip.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, false);
78 final HTMLEditorKit kit = SynchronousScaledEditorKit.create();
79 tip.setEditorKit(kit);
80 tip.setEditable(false);
81 tip.setMargin(new Insets(0, 0, 0, 0));
82 final LinkMouseListener linkMouseListener = new LinkMouseListener();
83 tip.addMouseListener(linkMouseListener);
84 tip.addMouseMotionListener(linkMouseListener);
85 final HTMLDocument document = (HTMLDocument) tip.getDocument();
86 final StyleSheet styleSheet = document.getStyleSheet();
87 styleSheet.removeStyle("p");
88 styleSheet.removeStyle("body");
89 styleSheet.addRule("p {margin-top:0;}\n");
90
91 final JRestrictedSizeScrollPane scrollPane = new JRestrictedSizeScrollPane(tip);
92 scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
93 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
94 final Rectangle screenBounds = graphicsConfiguration.getBounds();
95 final int screenHeigth = screenBounds.height - 80;
96 final int screenWidth = screenBounds.width - 80;
97 final int maximumHeight = Math.min(screenHeigth, getIntProperty("toolTipManager.max_tooltip_height"));
98 final int scrollBarWidth = scrollPane.getVerticalScrollBar().getPreferredSize().width;
99 scrollPane.setMaximumSize(new Dimension(screenWidth, maximumHeight));
100 maximumWidth = Math.min(screenWidth, getIntProperty("toolTipManager.max_tooltip_width")) - scrollBarWidth;
101 UITools.setScrollbarIncrement(scrollPane);
102 add(scrollPane);
103 tip.setOpaque(true);
104 }
105
106 private int getIntProperty(String propertyName) {
107 return ResourceController.getResourceController().getIntProperty(propertyName, Integer.MAX_VALUE);
108 }
109
110 @Override
111 public void setTipText(String tipText) {
112 try{
113 setTipTextUnsafe(tipText);
114 }
115 catch (Exception e1) {
116 if(e1 instanceof AccessControlException)
117 LogUtils.warn(e1.getMessage());
118 else
119 LogUtils.severe(e1);
120 final String localizedMessage = e1.getLocalizedMessage();
121 final String htmlEscapedText = HtmlUtils.plainToHTML(localizedMessage + '\n' + tipText);
122 try{
123 setTipTextUnsafe(htmlEscapedText);
124 }
125 catch (Exception e2){
126 }
127 }
128 }
129
130 private void setTipTextUnsafe(String tipText) throws Exception{
131 tip.setSize(0, 0);
132 tip.setPreferredSize(null);
133 tip.setText(tipText);
134 Dimension preferredSize = tip.getPreferredSize();
135 if (preferredSize.width > maximumWidth) {
136 final HTMLDocument document = (HTMLDocument) tip.getDocument();
137 document.getStyleSheet().addRule("body { width: " + maximumWidth + "}");
138 // bad hack: call "setEditable" only to update view
139 tip.setEditable(true);
140 tip.setEditable(false);
141 preferredSize = tip.getPreferredSize();
142 }
143 tip.setSize(preferredSize);
144 preferredSize = tip.getPreferredSize();
145 tip.setPreferredSize(preferredSize);
146
147 }
148
149 @Override
150 public Dimension getPreferredSize() {
151 final Component scrollPane = getComponent(0);
152 return scrollPane.getPreferredSize();
153 }
154
155 @Override
156 public void layout() {
157 final Component scrollPane = getComponent(0);
158 scrollPane.setSize(getPreferredSize());
159 super.layout();
160 }
161
162 void scrollUp() {
163 tip.scrollRectToVisible(new Rectangle(1, 1));
164 }
165
166 public void setBase(URL url){
167 ((HTMLDocument)tip.getDocument()).setBase(url);
168 }
169
170 }
33 import java.awt.Component;
44 import java.awt.GridLayout;
55 import java.awt.KeyboardFocusManager;
6 import java.awt.Point;
67 import java.awt.Window;
78 import java.awt.event.ActionEvent;
89 import java.awt.event.ActionListener;
9 import java.awt.event.ComponentAdapter;
10 import java.awt.event.ComponentEvent;
1110 import java.awt.event.MouseAdapter;
1211 import java.awt.event.MouseEvent;
1312 import java.awt.event.MouseMotionListener;
2726 import org.freeplane.core.resources.IFreeplanePropertyListener;
2827 import org.freeplane.core.resources.ResourceController;
2928 import org.freeplane.core.ui.MouseInsideListener;
29 import org.freeplane.core.ui.components.UITools;
3030 import org.freeplane.features.map.IMapChangeListener;
3131 import org.freeplane.features.map.INodeSelectionListener;
3232 import org.freeplane.features.map.MapController;
155155 if (insideComponent == null || !insideComponent.isShowing() || focusOwner == null)
156156 return;
157157 tip = insideComponent.createToolTip();
158 tip.addComponentListener(new ComponentAdapter() {
159
160 @Override
161 public void componentResized(ComponentEvent e) {
162 final NodeTooltip component = (NodeTooltip) e.getComponent();
163 component.scrollUp();
164 component.removeComponentListener(this);
165 }
166
167 });
168
169158 tip.setTipText(toolTipText);
170159 final JComponent nearComponent = insideComponent;
171160 focusOwnerRef = new WeakReference<Component>(focusOwner);
173162 tipPopup.setLayout(new GridLayout(1, 1));
174163 tipPopup.add(tip);
175164 mouseInsideTooltipListener = new MouseInsideListener(tipPopup);
176 tipPopup.show(nearComponent, 0, nearComponent.getHeight());
165 final Component placedComponent = tipPopup;
166 Point location = UITools.findBestLocation(placedComponent, nearComponent);
167 SwingUtilities.convertPointFromScreen(location, nearComponent);
168 tipPopup.show(nearComponent, location.x, location.y);
177169 focusOwner.requestFocusInWindow();
178170 exitTimer.start();
179171 }
6464 import org.freeplane.features.map.FreeNode;
6565 import org.freeplane.features.map.HistoryInformationModel;
6666 import org.freeplane.features.map.INodeView;
67 import org.freeplane.features.map.MapChangeEvent;
68 import org.freeplane.features.map.MapController;
6967 import org.freeplane.features.map.MapModel;
7068 import org.freeplane.features.map.NodeChangeEvent;
7169 import org.freeplane.features.map.NodeDeletionEvent;
7270 import org.freeplane.features.map.NodeModel;
7371 import org.freeplane.features.map.NodeModel.NodeChangeType;
74 import org.freeplane.features.map.NodeMoveEvent;
7572 import org.freeplane.features.map.SummaryNode;
7673 import org.freeplane.features.mode.Controller;
7774 import org.freeplane.features.mode.ModeController;
799796 if(isFolded)
800797 return;
801798 int index = 0;
802 MapController r = getMap().getModeController().getMapController();
803799 for (NodeModel child : getModel().getChildren()) {
804800 if(isChildHidden(child))
805801 return;
859855 /* fc, 25.1.2004: Refactoring necessary: should call the model. */
860856 public boolean isSiblingOf(final NodeView myNodeView) {
861857 return getParentView() == myNodeView.getParentView();
862 }
863
864 @Override
865 public void mapChanged(final MapChangeEvent event) {
866858 }
867859
868860 @Override
978970 addChildView(child, index);
979971 numberingChanged(index + 1);
980972 revalidate();
981 }
982
983 @Override
984 public void onNodeMoved(NodeMoveEvent nodeMoveEvent) {
985 }
986
987 @Override
988 public void onPreNodeDelete(NodeDeletionEvent nodeDeletionEvent) {
989973 }
990974
991975 // updates children, starting from firstChangedIndex, if necessary.
12721256 if (mainView == null) {
12731257 return false;
12741258 }
1275 if (super.requestFocusInWindow() && mainView.requestFocusInWindow()) {
1259 if (mainView.requestFocusInWindow()) {
12761260 getMap().scrollNodeToVisible(this);
12771261 Controller.getCurrentController().getViewController().addObjectTypeInfo(getModel().getUserObject());
12781262 return true;
12871271 }
12881272 getMap().scrollNodeToVisible(this);
12891273 Controller.getCurrentController().getViewController().addObjectTypeInfo(getModel().getUserObject());
1290 super.requestFocus();
12911274 mainView.requestFocus();
12921275 }
12931276
15741557 }
15751558
15761559 @Override
1577 public void onPreNodeMoved(NodeMoveEvent nodeMoveEvent) {
1578 }
1579
1580 @Override
15811560 protected void validateTree() {
15821561 super.validateTree();
15831562 }
0 package org.freeplane.view.swing.map;
1
2 import java.awt.Cursor;
3 import java.awt.Dimension;
4 import java.awt.GraphicsConfiguration;
5 import java.awt.Insets;
6 import java.awt.Rectangle;
7 import java.awt.event.ComponentAdapter;
8 import java.awt.event.ComponentEvent;
9 import java.awt.event.MouseAdapter;
10 import java.awt.event.MouseEvent;
11 import java.awt.event.MouseMotionListener;
12 import java.net.URI;
13 import java.net.URL;
14 import java.security.AccessControlException;
15
16 import javax.swing.JComponent;
17 import javax.swing.JEditorPane;
18 import javax.swing.JScrollPane;
19 import javax.swing.SwingUtilities;
20 import javax.swing.text.html.HTMLDocument;
21 import javax.swing.text.html.HTMLEditorKit;
22 import javax.swing.text.html.StyleSheet;
23
24 import org.freeplane.core.ui.components.JRestrictedSizeScrollPane;
25 import org.freeplane.core.ui.components.UITools;
26 import org.freeplane.core.ui.components.html.SynchronousScaledEditorKit;
27 import org.freeplane.core.util.Compat;
28 import org.freeplane.core.util.HtmlUtils;
29 import org.freeplane.core.util.LogUtils;
30 import org.freeplane.features.link.LinkController;
31 import org.freeplane.features.mode.Controller;
32
33 class TextualTooltipRendererFactory {
34 private class LinkMouseListener extends MouseAdapter implements MouseMotionListener{
35 @Override
36 public void mouseMoved(final MouseEvent ev) {
37 final String link = HtmlUtils.getURLOfExistingLink((HTMLDocument) tip.getDocument(), tip.viewToModel(ev.getPoint()));
38 boolean followLink = link != null;
39 Controller currentController = Controller.getCurrentController();
40 final int requiredCursor;
41 if(followLink){
42 currentController.getViewController().out(link);
43 requiredCursor = Cursor.HAND_CURSOR;
44 }
45 else{
46 requiredCursor = Cursor.DEFAULT_CURSOR;
47 }
48 if (tip.getCursor().getType() != requiredCursor) {
49 tip.setCursor(requiredCursor != Cursor.DEFAULT_CURSOR ? new Cursor(requiredCursor) : null);
50 }
51 }
52
53 @Override
54 public void mouseClicked(final MouseEvent ev) {
55 if (Compat.isPlainEvent(ev)) {
56 final String linkURL = HtmlUtils.getURLOfExistingLink((HTMLDocument) tip.getDocument(), tip.viewToModel(ev.getPoint()));
57 if (linkURL != null) {
58 try {
59 NodeView nodeView = (NodeView) SwingUtilities.getAncestorOfClass(NodeView.class, component);
60 LinkController.getController().loadURI(nodeView.getModel(), new URI(linkURL));
61 } catch (Exception e) {
62 LogUtils.warn(e);
63 }
64 }
65 }
66 }
67
68 @Override
69 public void mouseDragged(MouseEvent e) {
70 }
71 }
72
73 final private JEditorPane tip;
74 private int maximumWidth;
75 private final String contentType;
76 private final JRestrictedSizeScrollPane scrollPane;
77 private JComponent component;
78 private URL baseUrl;
79 TextualTooltipRendererFactory(GraphicsConfiguration graphicsConfiguration, String contentType, URL baseUrl, String tipText, JComponent component, Dimension tooltipSize){
80 this.contentType = contentType;
81 this.baseUrl = baseUrl;
82 this.component = component;
83 tip = new JEditorPane();
84 tip.setContentType(contentType);
85 tip.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, false);
86 if(contentType.equals(FreeplaneTooltip.TEXT_HTML)) {
87 final HTMLEditorKit kit = SynchronousScaledEditorKit.create();
88 tip.setEditorKit(kit);
89 final HTMLDocument document = (HTMLDocument) tip.getDocument();
90 final StyleSheet styleSheet = document.getStyleSheet();
91 styleSheet.removeStyle("p");
92 styleSheet.removeStyle("body");
93 styleSheet.addRule("p {margin-top:0;}\n");
94 }
95 tip.setEditable(false);
96 tip.setMargin(new Insets(0, 0, 0, 0));
97 final LinkMouseListener linkMouseListener = new LinkMouseListener();
98 tip.addMouseListener(linkMouseListener);
99 tip.addMouseMotionListener(linkMouseListener);
100
101 scrollPane = new JRestrictedSizeScrollPane(tip);
102 scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
103 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
104 final int scrollBarWidth = scrollPane.getVerticalScrollBar().getPreferredSize().width;
105 tooltipSize.width -= scrollBarWidth;
106 scrollPane.setMaximumSize(tooltipSize);
107 maximumWidth = tooltipSize.width;
108 UITools.setScrollbarIncrement(scrollPane);
109 tip.setOpaque(true);
110 scrollPane.addComponentListener(new ComponentAdapter() {
111
112 @Override
113 public void componentResized(ComponentEvent e) {
114 scrollUp();
115 scrollPane.removeComponentListener(this);
116 }
117
118 });
119 setTipText(tipText);
120
121 }
122
123 private void setTipText(String tipText) {
124 try{
125 setTipTextUnsafe(tipText);
126 }
127 catch (Exception e1) {
128 if(e1 instanceof AccessControlException)
129 LogUtils.warn(e1.getMessage());
130 else
131 LogUtils.severe(e1);
132 final String localizedMessage = e1.getLocalizedMessage();
133 final String htmlEscapedText = HtmlUtils.plainToHTML(localizedMessage + '\n' + tipText);
134 try{
135 setTipTextUnsafe(htmlEscapedText);
136 }
137 catch (Exception e2){
138 }
139 }
140 }
141
142 private void setTipTextUnsafe(String tipText) throws Exception{
143 tip.setSize(0, 0);
144 tip.setPreferredSize(null);
145 tip.setText(tipText);
146 ((HTMLDocument)tip.getDocument()).setBase(baseUrl);
147 Dimension preferredSize = tip.getPreferredSize();
148 if (preferredSize.width > maximumWidth && contentType.equals(FreeplaneTooltip.TEXT_HTML)) {
149 final HTMLDocument document = (HTMLDocument) tip.getDocument();
150 document.getStyleSheet().addRule("body { width: " + maximumWidth + "}");
151 // bad hack: call "setEditable" only to update view
152 tip.setEditable(true);
153 tip.setEditable(false);
154 preferredSize = tip.getPreferredSize();
155 if (preferredSize.width > maximumWidth) {
156
157 }
158 }
159 tip.setSize(preferredSize);
160 preferredSize = tip.getPreferredSize();
161 tip.setPreferredSize(preferredSize);
162
163 }
164
165 JComponent getTooltipRenderer() {
166 return scrollPane;
167 }
168 private void scrollUp() {
169 tip.scrollRectToVisible(new Rectangle(1, 1));
170 }
171
172 }
88 import java.awt.RenderingHints;
99 import java.awt.geom.AffineTransform;
1010 import java.beans.PropertyChangeEvent;
11
1112 import javax.swing.Icon;
1213 import javax.swing.JComponent;
1314 import javax.swing.JLabel;
5253 private Rectangle textR = new Rectangle();
5354 private Rectangle viewR = new Rectangle();
5455 private LayoutData layoutData = new LayoutData(iconR, textR);
55
56
5657 public static class LayoutData{
5758 final public Rectangle iconR;
5859 final public Rectangle textR;
6162 this.iconR = iconR;
6263 this.textR = textR;
6364 }
64
65
6566 }
6667
6768
106107 viewR.height = (int)(height / zoom) - (insets.top + insets.bottom);
107108 if(viewR.width < 0)
108109 viewR.width = 0;
109 }
110 }
110111 else {
111112 if(zLabel.getMaximumWidth() != Integer.MAX_VALUE){
112113 final int maximumWidth = (int) (zLabel.getMaximumWidth() / zoom);
116117 viewR.width = 0;
117118 ScaledHTML.Renderer v = (ScaledHTML.Renderer) label.getClientProperty(BasicHTML.propertyKey);
118119 if (v != null) {
119 v.resetSize();
120 float preferredWidth = v.getPreferredSpan(View.X_AXIS);
120 int availableTextWidth = viewR.width;
121 if(icon != null)
122 availableTextWidth -= icon.getIconWidth() + label.getIconTextGap();
121123 float minimumWidth = v.getMinimumSpan(View.X_AXIS);
122 int textWidth = viewR.width;
123 if(icon != null)
124 textWidth -= icon.getIconWidth() + label.getIconTextGap();
125 if(preferredWidth > textWidth){
126 if(minimumWidth > textWidth){
127 viewR.width += minimumWidth - textWidth;
128 textWidth = (int) minimumWidth;
124 if(minimumWidth > availableTextWidth){
125 viewR.width += minimumWidth - availableTextWidth;
126 availableTextWidth = (int) minimumWidth;
127 }
128 int currentWidth = v.getWidth();
129 if(currentWidth != availableTextWidth) {
130 float viewPreferredWidth = v.getPreferredWidth();
131
132 if(viewPreferredWidth > availableTextWidth){
133 v.setWidth(availableTextWidth);
134 super.layoutCL(zLabel, zLabel.getFontMetrics(), text, icon, viewR, iconR, textR);
135 return text;
129136 }
130 v.setSize(textWidth, 1);
131 super.layoutCL(zLabel, zLabel.getFontMetrics(), text, icon, viewR, iconR, textR);
132 v.setSize(textR.width, textR.height);
133 return text;
137 else if(currentWidth != viewPreferredWidth)
138 v.resetWidth();
134139 }
135140 }
136141 }
147152 static private void layoutLabelWithTextIcon(final Icon textRenderingIcon, final Icon icon,
148153 final Rectangle viewR, final Rectangle iconR,
149154 final Rectangle textR, final ZoomableLabel zLabel) {
150 JComponent c = (JComponent) zLabel;
155 JComponent c = zLabel;
151156 int horizontalAlignment = zLabel.getHorizontalAlignment();
152157 int horizontalTextPosition = zLabel.getHorizontalTextPosition();
153158 boolean orientationIsLeftToRight = true;
154159 int hAlign = horizontalAlignment;
155160 int hTextPos = horizontalTextPosition;
156
161
157162 if (c != null) {
158163 if (!(c.getComponentOrientation().isLeftToRight())) {
159164 orientationIsLeftToRight = false;
160165 }
161166 }
162
167
163168 // Translate LEADING/TRAILING values in horizontalAlignment
164169 // to LEFT/RIGHT values depending on the components orientation
165170 switch (horizontalAlignment) {
166 case SwingUtilities.LEADING:
171 case SwingUtilities.LEADING:
167172 hAlign = (orientationIsLeftToRight) ? SwingUtilities.LEFT : SwingUtilities.RIGHT;
168173 break;
169 case SwingUtilities.TRAILING:
174 case SwingUtilities.TRAILING:
170175 hAlign = (orientationIsLeftToRight) ? SwingUtilities.RIGHT : SwingUtilities.LEFT;
171176 break;
172177 }
173
178
174179 // Translate LEADING/TRAILING values in horizontalTextPosition
175180 // to LEFT/RIGHT values depending on the components orientation
176181 switch (horizontalTextPosition) {
177 case SwingUtilities.LEADING:
182 case SwingUtilities.LEADING:
178183 hTextPos = (orientationIsLeftToRight) ? SwingUtilities.LEFT : SwingUtilities.RIGHT;
179184 break;
180 case SwingUtilities.TRAILING:
185 case SwingUtilities.TRAILING:
181186 hTextPos = (orientationIsLeftToRight) ? SwingUtilities.RIGHT : SwingUtilities.LEFT;
182187 break;
183188 }
190195 else {
191196 iconR.width = iconR.height = 0;
192197 }
193
198
194199 /* Initialize the text bounds rectangle textR. If a null
195200 * or and empty String was specified we substitute "" here
196201 * and use 0,0,0,0 for textR.
197202 */
198
203
199204 int lsb = 0;
200205 int rsb = 0;
201206 /* Unless both text and icon are non-null, we effectively ignore
202207 * the value of textIconGap.
203208 */
204209 int gap;
205
210
206211 int availTextWidth;
207212 gap = (icon == null) ? 0 : zLabel.getIconTextGap();
208
213
209214 if (hTextPos == SwingUtilities.CENTER) {
210215 availTextWidth = viewR.width;
211216 }
214219 }
215220 textR.width = Math.min(availTextWidth, textRenderingIcon.getIconWidth());
216221 textR.height = textRenderingIcon.getIconHeight();
217
218
222
223
219224 /* Compute textR.x,y given the verticalTextPosition and
220225 * horizontalTextPosition properties
221226 */
222
227
223228 if (verticalTextPosition == SwingUtilities.TOP) {
224229 if (hTextPos != SwingUtilities.CENTER) {
225230 textR.y = 0;
239244 textR.y = (iconR.height + gap);
240245 }
241246 }
242
247
243248 if (hTextPos == SwingUtilities.LEFT) {
244249 textR.x = -(textR.width + gap);
245250 }
249254 else { // (horizontalTextPosition == RIGHT)
250255 textR.x = (iconR.width + gap);
251256 }
252
257
253258 /* labelR is the rectangle that contains iconR and textR.
254259 * Move it to its proper position given the labelAlignment
255260 * properties.
263268 int labelR_y = Math.min(iconR.y, textR.y);
264269 int labelR_height = Math.max(iconR.y + iconR.height,
265270 textR.y + textR.height) - labelR_y;
266
271
267272 int dx, dy;
268
273
269274 if (verticalAlignment == SwingUtilities.TOP) {
270275 dy = viewR.y - labelR_y;
271276 }
275280 else { // (verticalAlignment == BOTTOM)
276281 dy = (viewR.y + viewR.height) - (labelR_y + labelR_height);
277282 }
278
283
279284 if (hAlign == SwingUtilities.LEFT) {
280285 dx = viewR.x - labelR_x;
281286 }
286291 dx = (viewR.x + (viewR.width / 2)) -
287292 (labelR_x + (labelR_width / 2));
288293 }
289
294
290295 /* Translate textR and glypyR by dx,dy.
291296 */
292
297
293298 textR.x += dx;
294299 textR.y += dy;
295
300
296301 iconR.x += dx;
297302 iconR.y += dy;
298
303
299304 if (lsb < 0) {
300305 // lsb is negative. Shift the x location so that the text is
301306 // visually drawn at the right location.
302307 textR.x -= lsb;
303
308
304309 textR.width += lsb;
305310 }
306311 if (rsb > 0) {
366371 super.paint(g, label);
367372 } catch (ClassCastException e) {
368373 SwingUtilities.invokeLater(new Runnable() {
374 @Override
369375 public void run() {
370376 label.setText(TextUtils.format("html_problem", label.getText()));
371377 }
388394 @Override
389395 public void propertyChange(PropertyChangeEvent e) {
390396 String name = e.getPropertyName();
391 if (name == "text" || "font" == name || "foreground" == name
397 if (name == "text" || "font" == name || "foreground" == name
392398 || "ancestor" == name || "graphicsConfiguration" == name) {
393399 JLabel lbl = ((JLabel) e.getSource());
394400 if(getTextRenderingIcon(lbl) != null){
417423 private Icon getTextRenderingIcon(JLabel lbl) {
418424 return (Icon) lbl.getClientProperty(ZoomableLabel.TEXT_RENDERING_ICON);
419425 }
420
426
421427 @Override
422428 protected void installComponents(JLabel c) {
423429 ScaledHTML.updateRenderer(c, c.getText());
433439 layout(label);
434440 return textR;
435441 }
436
442
437443 public LayoutData getLayoutData(ZoomableLabel label) {
438444 layout(label);
439445 return layoutData;
440446 }
441
447
442448 private void layout(ZoomableLabel label) {
443449 String text = label.getText();
444450 Icon icon = (label.isEnabled()) ? label.getIcon() :
450456 textR.x = textR.y = textR.width = textR.height = 0;
451457 layoutCL(label, label.getFontMetrics(), text, icon, viewR, iconR,textR);
452458 final float zoom = label.getZoom();
453 iconR.x = (int)(iconR.x * zoom);
454 iconR.y = (int)(iconR.y * zoom);
455 iconR.width = (int)(iconR.width * zoom);
456 iconR.height = (int)(iconR.height * zoom);
457 textR.x = (int)(textR.x * zoom);
458 textR.y = (int)(textR.y * zoom);
459 textR.width = (int)(textR.width * zoom);
460 textR.height = (int)(textR.height * zoom);
459 iconR.x = (int)(iconR.x * zoom);
460 iconR.y = (int)(iconR.y * zoom);
461 iconR.width = (int)(iconR.width * zoom);
462 iconR.height = (int)(iconR.height * zoom);
463 textR.x = (int)(textR.x * zoom);
464 textR.y = (int)(textR.y * zoom);
465 textR.width = (int)(textR.width * zoom);
466 textR.height = (int)(textR.height * zoom);
461467 }
462468 finally{
463469 isPainting = wasPainting;
464470 }
465471 }
466
467
472
473
468474 }
5454 import org.freeplane.features.map.NodeModel;
5555 import org.freeplane.features.mode.Controller;
5656 import org.freeplane.features.mode.ModeController;
57 import org.freeplane.view.swing.map.NodeView;
57 import org.freeplane.view.swing.map.MainView;
5858
5959 /**
6060 * @author Dimitry Polivaev
8787 @Override
8888 public void onSelect(NodeModel node) {
8989 removeOldView();
90 final NodeView nodeView = (NodeView) Controller.getCurrentController()
90 final MainView mainView = (MainView) Controller.getCurrentController()
9191 .getMapViewManager().getSelectedComponent();
92 if (nodeView == null)
92 if (mainView == null)
9393 return;
9494 AttributeController.getController(modeController).createAttributeTableModel(node);
95 attributeView = new AttributeView(nodeView, false);
95 attributeView = new AttributeView(mainView.getNodeView(), false);
9696 Box buttonBox = new Box(axis);
9797 buttonBox.setAlignmentX(0.5f);
9898 tablePanel.add(buttonBox);
00 package org.freeplane.view.swing.map.attribute;
11
2 import org.freeplane.features.attribute.*;
2 import java.awt.Component;
3 import java.awt.EventQueue;
4 import java.beans.PropertyChangeEvent;
5 import java.beans.PropertyChangeListener;
6 import java.util.ArrayList;
7 import java.util.List;
8
9 import javax.swing.ListSelectionModel;
10 import javax.swing.SwingUtilities;
11
12 import org.freeplane.features.attribute.Attribute;
13 import org.freeplane.features.attribute.AttributeRegistry;
14 import org.freeplane.features.attribute.AttributeSelection;
15 import org.freeplane.features.attribute.NodeAttribute;
316 import org.freeplane.features.map.NodeModel;
417 import org.freeplane.view.swing.map.MapView;
518 import org.freeplane.view.swing.map.NodeView;
6
7 import javax.swing.*;
8 import java.awt.*;
9 import java.beans.PropertyChangeEvent;
10 import java.beans.PropertyChangeListener;
1119
1220 class AttributeSelectionChangeListener implements PropertyChangeListener, AttributeSelection {
1321 AttributeTable selectedTable;
8290 }
8391
8492 @Override
85 public NodeAttribute getSelectedAttribute() {
93 public List<SelectedAttribute> getSelectedAttributes() {
8694 if(selectedTable == null)
87 return null;
88 int selectedRow = selectedTable.getSelectedRow();
89 if(selectedRow == -1)
90 return null;
95 return AttributeSelection.EMPTY.getSelectedAttributes();
96 final ListSelectionModel selectionModel = selectedTable.getSelectionModel();
97 int minSelectedRow = selectionModel.getMinSelectionIndex();
98 if(minSelectedRow == -1)
99 return AttributeSelection.EMPTY.getSelectedAttributes();
91100 AttributeTableModel attributeTableModel = selectedTable.getAttributeTableModel();
92 NodeAttributeTableModel attributes = attributeTableModel.getNodeAttributeModel();
93101 NodeModel node = attributeTableModel.getNode();
94 Attribute attribute = attributes.getAttribute(selectedRow);
95 return new NodeAttribute(node, attribute);
102 int maxSelectedRow = selectionModel.getMaxSelectionIndex();
103 final ArrayList<SelectedAttribute> selectedAttributes = new ArrayList<>(maxSelectedRow - minSelectedRow + 1);
104 for(int rowIndex = minSelectedRow; rowIndex <= maxSelectedRow; rowIndex++) {
105 if(selectionModel.isSelectedIndex(rowIndex)) {
106 final SelectedAttribute.SelectedPart selectedPart;
107 selectedPart = selectedTable.isCellSelected(rowIndex, 0) ?
108 selectedTable.isCellSelected(rowIndex, 1) ?
109 SelectedAttribute.SelectedPart.BOTH : SelectedAttribute.SelectedPart.NAME : SelectedAttribute.SelectedPart.VALUE;
110 Attribute attribute = attributeTableModel.getAttribute(rowIndex);
111 if(attribute != null) {
112 final NodeAttribute nodeAttrribute = new NodeAttribute(node, attribute);
113 selectedAttributes.add(new SelectedAttribute(nodeAttrribute, selectedPart)) ;
114 }
115 }
116 }
117 return selectedAttributes;
96118 }
97119 }
3535 import java.awt.event.MouseAdapter;
3636 import java.awt.event.MouseEvent;
3737 import java.awt.event.MouseListener;
38 import java.net.MalformedURLException;
3839 import java.net.URI;
40 import java.net.URL;
3941 import java.util.EventObject;
40
42 import java.util.Set;
43 import java.util.stream.Collectors;
44 import java.util.stream.Stream;
45
46 import javax.swing.AbstractAction;
4147 import javax.swing.AbstractCellEditor;
48 import javax.swing.Action;
49 import javax.swing.ActionMap;
4250 import javax.swing.BorderFactory;
4351 import javax.swing.ComboBoxEditor;
4452 import javax.swing.ComboBoxModel;
4553 import javax.swing.DefaultCellEditor;
4654 import javax.swing.DefaultComboBoxModel;
4755 import javax.swing.Icon;
56 import javax.swing.InputMap;
4857 import javax.swing.JComboBox;
4958 import javax.swing.JComponent;
5059 import javax.swing.JFrame;
5160 import javax.swing.JOptionPane;
61 import javax.swing.JScrollPane;
5262 import javax.swing.JTable;
63 import javax.swing.JToolTip;
64 import javax.swing.JViewport;
5365 import javax.swing.KeyStroke;
5466 import javax.swing.ListSelectionModel;
5567 import javax.swing.SwingUtilities;
68 import javax.swing.ToolTipManager;
69 import javax.swing.TransferHandler;
5670 import javax.swing.border.Border;
5771 import javax.swing.event.ChangeEvent;
5872 import javax.swing.event.ListSelectionEvent;
89103 import org.freeplane.features.text.mindmapmode.EditNodeBase.IEditControl;
90104 import org.freeplane.features.text.mindmapmode.MTextController;
91105 import org.freeplane.features.ui.ViewController;
106 import org.freeplane.view.swing.map.FreeplaneTooltip;
92107 import org.freeplane.view.swing.map.MapView;
108 import org.freeplane.view.swing.map.NodeTooltipManager;
93109 import org.freeplane.view.swing.map.NodeView;
94110
95111
100116 private static final String EDITING_STOPPED = AttributeTable.class.getName() + ".editingStopped";
101117 private static int CLICK_COUNT_TO_START = 2;
102118
119 private static final class EditCellAction extends AbstractAction {
120 @Override
121 public void actionPerformed(ActionEvent e) {
122 AttributeTable table = (AttributeTable) e.getSource();
123 final int selectedRow = table.getSelectedRow();
124 final int selectedColumn = table.getSelectedColumn();
125 if(selectedColumn >= 0 && selectedRow >= 0)
126 table.editCellAt(selectedRow, selectedColumn, e);
127 }
128 }
103129 private static final class TableHeaderRendererImpl implements TableCellRenderer {
104130 final private TableCellRenderer delegate;
105131 TableHeaderRendererImpl(TableCellRenderer renderer){
134160 public void mouseReleased(final MouseEvent e) {
135161 final JTableHeader header = (JTableHeader) e.getSource();
136162 final AttributeTable table = (AttributeTable) header.getTable();
137 final float zoom = table.attributeView.getMapView().getZoom();
138 final AttributeTableModel model = (AttributeTableModel) table
139 .getModel();
140 for (int col = 0; col < table.getColumnCount(); col++) {
141 final int modelColumnWidth = model.getColumnWidth(col).toBaseUnitsRounded();
142 final int currentColumnWidth = Math.round(table.getColumnModel().getColumn(col).getWidth() / zoom);
143 if (modelColumnWidth != currentColumnWidth) {
144 model.setColumnWidth(col, LengthUnits.pixelsInPt(currentColumnWidth));
163 if(table.getNodeViewAncestor() != null) {
164 final float zoom = table.attributeView.getMapView().getZoom();
165 final AttributeTableModel model = (AttributeTableModel) table
166 .getModel();
167 for (int col = 0; col < table.getColumnCount(); col++) {
168 final int modelColumnWidth = model.getColumnWidth(col).toBaseUnitsRounded();
169 final int currentColumnWidth = Math.round(table.getColumnModel().getColumn(col).getWidth() / zoom);
170 if (modelColumnWidth != currentColumnWidth) {
171 model.setColumnWidth(col, LengthUnits.pixelsInPt(currentColumnWidth));
172 }
145173 }
146174 }
147175 }
179207 private int highRowIndex = 0;
180208 private static DefaultCellEditor dce;
181209
210 private static final Set<String> editingActions = Stream.of((String)TransferHandler.getCopyAction().getValue(Action.NAME),
211 (String)TransferHandler.getPasteAction().getValue(Action.NAME), (String)TransferHandler.getCutAction().getValue(Action.NAME))
212 .collect(Collectors.toSet());
213
182214 AttributeTable(final AttributeView attributeView) {
183215 super();
184216 this.attributeView = attributeView;
217 initializeTooltipManager(attributeView);
185218 addMouseListener(AttributeTable.cursorUpdater);
186219 addMouseMotionListener(AttributeTable.cursorUpdater);
187220 if (attributeView.getMapView().getModeController().canEdit()) {
194227 setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
195228 getTableHeader().setReorderingAllowed(false);
196229 setCellSelectionEnabled(true);
197 getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
230 getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
198231 putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);
232 adaptActionMap(this);
199233 setShowGrid(true);
234 }
235
236 private static void adaptActionMap(AttributeTable table) {
237 InputMap ancestorInputMap = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
238 KeyStroke f2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
239 KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
240 InputMap focusedComponentInputMap = table.getInputMap(JTable.WHEN_FOCUSED);
241 final Object editKey = ancestorInputMap.get(f2);
242 focusedComponentInputMap.put(enter, editKey);
243 final ActionMap actionMap = table.getActionMap();
244 if(defaultParentActionMap == null || defaultParentActionMap != actionMap.getParent()) {
245 defaultParentActionMap = actionMap.getParent();
246 newDefaultParentActionMap = new ActionMap() {
247
248 @Override
249 public Action get(Object key) {
250 if(editingActions.contains(key))
251 return null;
252 else
253 return super.get(key);
254 }
255
256 };
257 newDefaultParentActionMap.setParent(defaultParentActionMap);
258 EditCellAction action = new EditCellAction();
259 newDefaultParentActionMap.put(editKey, action);
260 }
261 actionMap.setParent(newDefaultParentActionMap);
262 }
263
264
265
266 private void initializeTooltipManager(AttributeView attributeView) {
267 ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
268 toolTipManager.unregisterComponent(this);
269 NodeTooltipManager.getSharedInstance(attributeView.getMapView().getModeController()).registerComponent(this);
270
200271 }
201272
202273 @Override
205276 }
206277
207278 private void changeSelectedRowHeight(final int rowIndex) {
208 if (highRowIndex != rowIndex) {
209 if (highRowIndex < getRowCount()) {
210 final int h = getRowHeight(highRowIndex);
211 setRowHeight(highRowIndex, h - AttributeTable.EXTRA_HEIGHT);
212 }
213 final int h = getRowHeight(rowIndex);
214 setRowHeight(rowIndex, h + AttributeTable.EXTRA_HEIGHT);
215 highRowIndex = rowIndex;
216 assert highRowIndex >= 0;
217 }
279 highRowIndex = rowIndex;
280 updateRowHeights();
218281 }
219282
220283 @Override
264327 if(column == 1 && e instanceof MouseEvent){
265328 final MouseEvent me = (MouseEvent) e;
266329 final Object value = getValueAt(row, column);
267 if(value instanceof URI){
268 final URI uri = (URI) value;
330 URI uri = toUri(value);
331 if(uri != null){
269332 final Icon linkIcon = getLinkIcon(uri);
270333 final int xmax = linkIcon != null ? linkIcon.getIconWidth() : 0;
271334 final int x = me.getX() - getColumnModel().getColumn(0).getWidth();
282345 if(isEditing() && cellEditor instanceof DialogTableCellEditor){
283346 ((JComponent)editorComp).paintImmediately(0, 0, editorComp.getWidth(), editorComp.getHeight());
284347 ((DialogTableCellEditor)cellEditor).startEditing();
285 return false;
348 }
349 else {
350 final Component editorComponent = getEditorComponent();
351 if (editorComponent instanceof JComboBox) {
352 startEditing(e, (JComboBox) editorComponent);
353 }
286354 }
287355 return true;
288356 }
292360 putClientProperty("AttributeTable.EditEvent", null);
293361 }
294362 }
363
364 URI toUri(final Object value) {
365 return TextController.getController().toUri(value, attributeView.getNode(), null);
366 }
367
368 private void startEditing(EventObject e, final JComboBox comboBox) {
369 final ComboBoxEditor editor = comboBox.getEditor();
370 if (comboBox.isEditable()) {
371 editor.selectAll();
372 if(e instanceof KeyEvent) {
373 final KeyEvent keyEvent = (KeyEvent)e;
374 final char keyChar = keyEvent.getKeyChar();
375 if(keyChar != KeyEvent.CHAR_UNDEFINED) {
376 KeyEvent keyTypedEvent = new KeyEvent(editor.getEditorComponent(), KeyEvent.KEY_TYPED, keyEvent.getWhen(),
377 keyEvent.getModifiers(), KeyEvent.VK_UNDEFINED, keyChar, KeyEvent.KEY_LOCATION_UNKNOWN);
378 SwingUtilities.processKeyBindings(keyTypedEvent);
379 }
380 }
381 }
382 else {
383 comboBox.requestFocusInWindow();
384 SwingUtilities.invokeLater(new Runnable() {
385 @Override
386 public void run() {
387 comboBox.showPopup();
388 }
389 });
390 }
391 }
295392
296393 Icon getLinkIcon(final URI uri) {
297394 NodeModel nodeModel = ((AttributeTableModel)getModel()).getNode();
384481 }
385482 if(col == 1){
386483 final MTextController textController = (MTextController) TextController.getController();
387 if(e instanceof KeyEvent){
388 final KeyEvent kev = (KeyEvent) e;
389 textController.getEventQueue().setFirstEvent(kev);
390 }
484 textController.getEventQueue().setFirstEvent((e instanceof KeyEvent) ? ((KeyEvent) e) : null);
391485 final AttributeTableModel model = (AttributeTableModel) getModel();
392486 final String text = getValueForEdit(row, col);
393487 final DialogTableCellEditor dialogTableCellEditor = new DialogTableCellEditor();
461555 validate();
462556 }
463557 final Dimension dimension = super.getPreferredSize();
464 NodeView nodeView = (NodeView) SwingUtilities.getAncestorOfClass(NodeView.class, this);
558 NodeView nodeView = getNodeViewAncestor();
465559 if(nodeView != null){
466560 final MapView map = nodeView.getMap();
467561 final ModeController modeController = map.getModeController();
470564 dimension.height = Math.min(map.getZoomed(AttributeTable.MAX_HEIGTH) - getTableHeaderHeight(), dimension.height);
471565 }
472566 else{
473 dimension.width = Math.min(MAX_WIDTH, dimension.width);
474 dimension.height = Math.min(MAX_HEIGTH, dimension.height);
567 // dimension.width = Math.min(MAX_WIDTH, dimension.width);
568 // dimension.height = Math.min(MAX_HEIGTH, dimension.height);
475569 }
476570 return dimension;
571 }
572
573 NodeView getNodeViewAncestor() {
574 return (NodeView) SwingUtilities.getAncestorOfClass(NodeView.class, this);
477575 }
478576
479577 int getTableHeaderHeight() {
593691 row, column);
594692 }
595693
694
695 @Override
696 public JToolTip createToolTip() {
697 FreeplaneTooltip tip = new FreeplaneTooltip(this.getGraphicsConfiguration(), "text/html");
698
699 final URL url = attributeView.getNode().getMap().getURL();
700 if (url != null) {
701 tip.setBase(url);
702 }
703 else {
704 try {
705 tip.setBase(new URL("file: "));
706 }
707 catch (MalformedURLException e) {
708 }
709 }
710 tip.setComponent(this);
711 return tip;
712 }
713
596714 @Override
597715 protected boolean processKeyBinding(final KeyStroke ks, final KeyEvent e, final int condition, final boolean pressed) {
598716 if (ks.getKeyCode() == KeyEvent.VK_TAB && e.getModifiers() == 0 && pressed && getSelectedColumn() == 1
609727 return super.processKeyBinding(ks, e, condition, pressed);
610728
611729 }
612 boolean retValue = super.processKeyBinding(ks, e, condition, pressed);
613 if (!retValue && condition == JComponent.WHEN_FOCUSED && isFocusOwner() && ks.getKeyCode() != KeyEvent.VK_TAB
730 if(super.processKeyBinding(ks, e, condition, pressed))
731 return true;
732 if (condition == JComponent.WHEN_FOCUSED)
733 return editCell(ks, e);
734 return false;
735 }
736
737 private boolean editCell(final KeyStroke ks, final KeyEvent e) {
738 if (isFocusOwner() && ks.getKeyCode() != KeyEvent.VK_TAB
614739 && e != null && e.getID() == KeyEvent.KEY_PRESSED && !e.isActionKey()
615740 && e.getKeyChar() != KeyEvent.CHAR_UNDEFINED
616741 && 0 == (e.getModifiers() & (InputEvent.CTRL_MASK | InputEvent.ALT_MASK))) {
617742 final int leadRow = getSelectionModel().getLeadSelectionIndex();
618743 final int leadColumn = getColumnModel().getSelectionModel().getLeadSelectionIndex();
619 if (leadRow != -1 && leadColumn != -1 && !isEditing()) {
620 if (!editCellAt(leadRow, leadColumn, e)) {
744 if (leadRow == -1 || leadColumn == -1 || isEditing() || !editCellAt(leadRow, leadColumn, e)) {
621745 return false;
622 }
623 }
624 final Component editorComponent = getEditorComponent();
625 if (editorComponent instanceof JComboBox) {
626 final JComboBox comboBox = (JComboBox) editorComponent;
627 if (comboBox.isEditable()) {
628 final ComboBoxEditor editor = comboBox.getEditor();
629 editor.selectAll();
630 KeyEvent keyEv;
631 keyEv = new KeyEvent(editor.getEditorComponent(), KeyEvent.KEY_TYPED, e.getWhen(),
632 e.getModifiers(), KeyEvent.VK_UNDEFINED, e.getKeyChar(), KeyEvent.KEY_LOCATION_UNKNOWN);
633 retValue = SwingUtilities.processKeyBindings(keyEv);
634 }
635 else {
636 editorComponent.requestFocusInWindow();
637 retValue = true;
638 }
639 }
640 }
641 if (ks.getKeyCode() == KeyEvent.VK_SPACE) {
746 }
642747 return true;
643748 }
644 return retValue;
749 return false;
645750 }
646751
647752 @Override
687792 Component comp = null;
688793 int maxCellWidth = 2 * (int) (Math.ceil(getFont().getSize2D() / UITools.FONT_SCALE_FACTOR + EXTRA_HEIGHT));
689794 int rowCount = getRowCount();
795 boolean isInsideNodeView = getNodeViewAncestor() != null;
690796 if(rowCount > 0) {
691797 for (int col = 0; col < 2; col++) {
692798 for (int row = 0; row < rowCount; row++) {
693799 comp = AttributeTable.dtcr.getTableCellRendererComponent(this, getValueAt(row, col), false, false, row,
694800 col);
695801 final Dimension preferredSize = comp.getPreferredSize();
696 int cellWidth = preferredSize.width + preferredSize.height + EXTRA_HEIGHT + CURSOR_WIDTH;
802 int cellWidth = preferredSize.width + preferredSize.height + EXTRA_HEIGHT + CURSOR_WIDTH + 1;
697803 maxCellWidth = Math.max(cellWidth, maxCellWidth);
698804 }
699 getAttributeTableModel().setColumnWidth(col, LengthUnits.pixelsInPt(maxCellWidth + 1));
805 getAttributeTableModel().setColumnWidth(col, LengthUnits.pixelsInPt(maxCellWidth));
700806 }
701807 }
702808 }
766872 }
767873
768874 private Color gridColor = null;
875 private static ActionMap defaultParentActionMap;
876 private static ActionMap newDefaultParentActionMap;
769877 public void setGridAndBorderColor(Color gridColor) {
770878 this.gridColor = gridColor;
771879 if(gridColor != null) {
772880 if(! gridColor.equals(getGridColor())) {
773 AttributeViewScrollPane scrollPane = (AttributeViewScrollPane) SwingUtilities.getAncestorOfClass(AttributeViewScrollPane.class, this);
774881 final Border border = BorderFactory.createLineBorder(gridColor);
775 scrollPane.setBorder(border);
776 scrollPane.setViewportBorder(border);
882 final JComponent parent = (JComponent) getParent();
883 if(parent instanceof JViewport) {
884 JScrollPane scrollPane = (JScrollPane) parent.getParent();
885 scrollPane.setBorder(border);
886 scrollPane.setViewportBorder(border);
887 }
888 else {
889 parent.setBorder(border);
890 }
777891 super.setGridColor(gridColor);
778892 }
779893 }
827941 if (rowCount == 0) {
828942 return;
829943 }
830 final int constHeight = getTableHeaderHeight() + AttributeTable.EXTRA_HEIGHT;
944 final float fontSize = (float) getFont().getMaxCharBounds(((Graphics2D)getGraphics()).getFontRenderContext()).getHeight();
831945 final float zoom = getZoom();
832 final float fontSize = (float) getFont().getMaxCharBounds(((Graphics2D)getGraphics()).getFontRenderContext()).getHeight();
833 final float tableRowHeight = fontSize + zoom * EXTRA_HEIGHT;
834 int newHeight = (int) ((tableRowHeight * rowCount + (zoom - 1) * constHeight) / rowCount);
835 if (newHeight < 1) {
836 newHeight = 1;
837 }
838 final int highRowsNumber = (int) ((tableRowHeight - newHeight) * rowCount);
839 for (int i = 0; i < highRowsNumber; i++) {
840 setRowHeight(i, 1 + newHeight + (i == highRowIndex ? AttributeTable.EXTRA_HEIGHT : 0));
841 }
842 for (int i = highRowsNumber; i < rowCount; i++) {
843 setRowHeight(i, newHeight + (i == highRowIndex ? AttributeTable.EXTRA_HEIGHT : 0));
946 final int extraHeight = (int)(zoom * EXTRA_HEIGHT + 0.7f);
947 int rowHeight = Math.max(1, (int)fontSize + extraHeight);
948 for (int i = 0; i < rowCount; i++) {
949 setRowHeight(i, rowHeight + (i == highRowIndex ? AttributeTable.EXTRA_HEIGHT : 0));
844950 }
845951 }
846952
859965 final Object value = editor.getCellEditorValue();
860966 if (value != null) {
861967 final String pattern = extractPatternIfAvailable(getValueAt(editingRow, editingColumn));
862 final Object newValue = enforceFormattedObjectForIdentityPattern(value, pattern);
968 final MTextController textController = (MTextController) TextController.getController();
969 final Object object = textController.guessObject(value, pattern);
970 final Object newValue = enforceFormattedObjectForIdentityPattern(object, pattern);
863971 setValueAt(newValue, editingRow, editingColumn);
864972 }
865973 removeEditor();
878986 // unfortunately we have to handle IDENTITY_PATTERN explicitely since (only) attributes
879987 // have no place for the format except for the value itself - so we need a FormattedObject here
880988 private Object enforceFormattedObjectForIdentityPattern(Object value, final String pattern) {
881 final MTextController textController = (MTextController) TextController.getController();
882 return PatternFormat.IDENTITY_PATTERN.equals(pattern) ? new FormattedObject(value, pattern) : textController
883 .guessObjectOrURI(value, pattern);
989 return PatternFormat.IDENTITY_PATTERN.equals(pattern) ? new FormattedObject(value, pattern) : value;
884990 }
885991
886992 @Override
1818 */
1919 package org.freeplane.view.swing.map.attribute;
2020
21 import java.awt.*;
21 import java.awt.Color;
22 import java.awt.Component;
23 import java.awt.Graphics;
24 import java.awt.Graphics2D;
2225 import java.awt.geom.AffineTransform;
2326 import java.net.URI;
2427
25 import javax.swing.*;
28 import javax.swing.BorderFactory;
29 import javax.swing.Icon;
30 import javax.swing.JTable;
2631 import javax.swing.table.DefaultTableCellRenderer;
2732
2833 import org.freeplane.core.ui.LengthUnits;
3338 import org.freeplane.features.attribute.NodeAttributeTableModel;
3439 import org.freeplane.features.filter.FilterController;
3540 import org.freeplane.features.icon.factory.IconFactory;
41 import org.freeplane.features.mode.Controller;
3642 import org.freeplane.features.text.HighlightedTransformedObject;
3743 import org.freeplane.features.text.TextController;
44 import org.freeplane.view.swing.features.filepreview.ViewerController;
3845 import org.freeplane.view.swing.map.MapView;
3946
4047 class AttributeTableCellRenderer extends DefaultTableCellRenderer {
7784 String text = originalText;
7885 Icon icon;
7986 Color color = null;
87 URI uri = null;
8088 if (column == 1 && isAttributeHighlighted(attributeTable, row))
8189 color = FilterController.HIGHLIGHT_COLOR;
8290 if (column == 1 && value != null) {
93101 text = TextUtils.format("MainView.errorUpdateText", originalText, e.getLocalizedMessage());
94102 color = HighlightedTransformedObject.FAILURE_COLOR;
95103 }
96 if(value instanceof URI){
97 icon = ((AttributeTable)table).getLinkIcon((URI) value);
104 uri = attributeTable.toUri(value);
105 if(uri != null){
106 icon = (attributeTable).getLinkIcon(uri);
98107 }
99108 else{
100109 icon = null;
116125 setIcon(scaledIcon);
117126 }
118127 setText(text);
119 if(text != originalText){
120 final String toolTip = HtmlUtils.isHtmlNode(originalText) ? text : HtmlUtils.plainToHTML(originalText);
121 setToolTipText(toolTip);
122 }
123 else{
124 final int prefWidth = getPreferredSize().width;
125 final int width = table.getColumnModel().getColumn(column).getWidth();
126 if (prefWidth > width) {
127 final String toolTip = HtmlUtils.isHtmlNode(text) ? text : HtmlUtils.plainToHTML(text);
128 setToolTipText(toolTip);
128 String toolTip = null;
129 if(uri != null) {
130 final ViewerController viewerController = Controller.getCurrentModeController().getExtension(ViewerController.class);
131 if (viewerController != null && viewerController.getViewerFactory().accept(uri)) {
132 toolTip = uri.toString();
133 }
134 }
135 if(toolTip == null) {
136 if (text != originalText) {
137 toolTip = HtmlUtils.plainToHTML(originalText);
129138 }
130139 else {
131 setToolTipText(null);
132 }
133 }
140 final int prefWidth = getPreferredSize().width;
141 final int width = table.getColumnModel().getColumn(column).getWidth();
142 if (prefWidth > width) {
143 toolTip = HtmlUtils.plainToHTML(text);
144 }
145 }
146 }
147 setToolTipText(toolTip);
134148 setOpaque(isSelected);
135149 return rendererComponent;
136150 }
1818 */
1919 package org.freeplane.view.swing.map.attribute;
2020
21 import java.awt.BorderLayout;
2122 import java.awt.Color;
23 import java.awt.Component;
2224 import java.awt.EventQueue;
2325
26 import javax.swing.BorderFactory;
2427 import javax.swing.JComponent;
28 import javax.swing.JPanel;
2529 import javax.swing.JScrollPane;
2630 import javax.swing.UIManager;
31 import javax.swing.border.Border;
2732 import javax.swing.event.AncestorEvent;
2833 import javax.swing.event.ChangeEvent;
2934 import javax.swing.event.ChangeListener;
4853 private static final Color HEADER_BACKGROUND = UIManager.getColor("TableHeader.background");
4954 static private AttributePopupMenu tablePopupMenu;
5055 private AttributeTable attributeTable;
51 private JScrollPane attributeViewScrollPane;
56 private JComponent attributeTableContainer;
5257 private AttributeTableModel currentAttributeTableModel;
5358 private ExtendedAttributeTableModelDecorator extendedAttributeTableModel = null;
5459 final private NodeView nodeView;
5560 final private ReducedAttributeTableModelDecorator reducedAttributeTableModel;
5661 private JTableHeader tableHeader;
5762 private ListSelectionListener tableSelectionListener;
63 private boolean belongsToNodeView;
5864
5965 public AttributeView(final NodeView nodeView, final boolean addToNodeView) {
6066 super();
6167 this.nodeView = nodeView;
68 this.belongsToNodeView = addToNodeView;
6269 if(addToNodeView){
6370 reducedAttributeTableModel = new ReducedAttributeTableModelDecorator(this);
6471 currentAttributeTableModel = reducedAttributeTableModel;
6673 else{
6774 reducedAttributeTableModel = null;
6875 currentAttributeTableModel = extendedAttributeTableModel = new ExtendedAttributeTableModelDecorator(this);
69
76
7077 }
7178 setViewType(getAttributeRegistry().getAttributeViewType());
7279 addListeners();
164171 return attributeTable != null && AttributeView.tablePopupMenu != null
165172 && (AttributeView.tablePopupMenu.getTable() == attributeTable);
166173 }
167
168 static private int VIEWER_POSITION = 3;
174
175 static private int VIEWER_POSITION = 3;
169176
170177 private void provideAttributeTable() {
171178 if (attributeTable == null) {
174181 tableHeader = attributeTable.getTableHeader();
175182 tableHeader.setBackground(AttributeView.HEADER_BACKGROUND);
176183 addTableListeners();
177 attributeViewScrollPane = new AttributeViewScrollPane(attributeTable);
178 attributeViewScrollPane.setAlignmentX(AttributeViewScrollPane.LEFT_ALIGNMENT);
184 if (belongsToNodeView) {
185 attributeTableContainer = new AttributeViewScrollPane(attributeTable);
186 }
187 else {
188 attributeTableContainer = new JPanel();
189 attributeTableContainer.setLayout(new BorderLayout());
190 attributeTableContainer.add(attributeTable.getTableHeader(), BorderLayout.PAGE_START, 0);
191 attributeTableContainer.add(attributeTable, BorderLayout.CENTER, 1);
192 final Border border = BorderFactory.createLineBorder(attributeTable.getGridColor());
193 attributeTableContainer.setBorder(border);
194 }
195 attributeTableContainer.setAlignmentX(Component.LEFT_ALIGNMENT);
179196 if(isReduced()){
180 getNodeView().addContent(attributeViewScrollPane, VIEWER_POSITION);
197 getNodeView().addContent(attributeTableContainer, VIEWER_POSITION);
181198 }
182199 setViewType(getAttributeRegistry().getAttributeViewType());
183200 }
194211 }
195212 if (attributeTable != null) {
196213 getAttributes().getLayout().removeColumnWidthChangeListener(attributeTable);
197 attributeTable.getParent().remove(attributeTable);
198214 attributeTable.getModel().removeTableModelListener(attributeTable);
199215 attributeTable.removeMouseListener(AttributeView.tablePopupMenu);
200216 tableHeader.removeMouseListener(AttributeView.tablePopupMenu);
217233 if (attributeTable != null) {
218234 attributeTable.setModel(currentAttributeTableModel);
219235 attributeTable.setTableHeader(currentColumnHeaderView);
220 attributeViewScrollPane.setColumnHeaderView(currentColumnHeaderView);
221 attributeViewScrollPane.invalidate();
236 if(belongsToNodeView) {
237 ((JScrollPane) attributeTableContainer).setColumnHeaderView(currentColumnHeaderView);
238 }
239 else {
240 attributeTableContainer.remove(0);
241 attributeTableContainer.add(attributeTable.getTableHeader(), BorderLayout.PAGE_START, 0);
242 }
243 attributeTableContainer.invalidate();
222244 }
223245 }
224246
229251 setViewType(AttributeTableLayoutModel.SHOW_ALL);
230252 }
231253 EventQueue.invokeLater(new Runnable() {
254 @Override
232255 public void run() {
233256 startEditingTable();
234257 }
245268 }
246269 }
247270
271 @Override
248272 public void stateChanged(final ChangeEvent event) {
249273 setViewType(getAttributeRegistry().getAttributeViewType());
250274 if(isReduced()){
271295 }
272296 }
273297
298 @Override
274299 public void tableChanged(final TableModelEvent e) {
275300 final NodeModel node = getNode();
276301 getMapView().getModeController().getMapController().nodeChanged(node);
305330 }
306331
307332 JComponent getContainer() {
308 if(attributeViewScrollPane == null){
333 if(attributeTableContainer == null){
309334 provideAttributeTable();
310335 }
311 return attributeViewScrollPane;
336 return attributeTableContainer;
312337 }
313338
314339 public void addRow() {
315340 attributeTable.insertRow(attributeTable.getRowCount());
316341 }
317
342
318343 public void setOptimalColumnWidths() {
319344 syncronizeAttributeView();
320345 if(attributeTable != null)
3434 */
3535 class CursorUpdater extends MouseAdapter implements MouseMotionListener{
3636
37 @Override
3738 public void mouseDragged(MouseEvent e) {
3839 }
3940
41 @Override
4042 public void mouseMoved(MouseEvent e) {
4143 updateCursor(e);
4244 }
5052 public void mouseExited(MouseEvent e) {
5153 updateCursor(e.getComponent(), Cursor.DEFAULT_CURSOR);
5254 }
53
54
55
56
5557 private void updateCursor(MouseEvent e) {
5658 final int cursor = getCursor(e);
5759 updateCursor(e.getComponent(), cursor);
58
60
5961 }
6062
6163 private int getCursor(MouseEvent e) {
7072 return Cursor.DEFAULT_CURSOR;
7173 }
7274 Object value = table.getValueAt(row, col);
73 if(!(value instanceof URI)){
75 URI uri = table.toUri(value);
76 if(uri == null){
7477 return Cursor.DEFAULT_CURSOR;
7578 }
76 final Icon linkIcon = table.getLinkIcon((URI) value);
79 final Icon linkIcon = table.getLinkIcon(uri);
7780 if (linkIcon == null)
7881 return Cursor.DEFAULT_CURSOR;
7982 final int leftColumnWidth = table.getColumnModel().getColumn(0).getWidth();
142142 super.tableChanged(e);
143143 fireTableChanged(new TableModelEvent(this, e.getFirstRow(), e.getLastRow(), e.getColumn(), e.getType()));
144144 }
145
146 @Override
147 public Attribute getAttribute(int row) {
148 if (row < newRow) {
149 return getNodeAttributeModel().getAttribute(row);
150 }
151 if (row == newRow) {
152 return null;
153 }
154 return getNodeAttributeModel().getAttribute(row);
155
156 }
145157 }
8282 return getNodeAttributeModel().getValueAt(calcRow(row), col);
8383 }
8484
85 @Override
86 public Attribute getAttribute(final int row) {
87 if(index == null)
88 return null;
89 return getNodeAttributeModel().getAttribute(calcRow(row));
90 }
8591 /*
8692 * (non-Javadoc)
8793 * @see freeplane.modes.attributes.AttributeTableModel#insertRow(int,
4040 super(node, text, editControl);
4141 }
4242
43 @Override
4344 public void show(RootPaneContainer frame) {
4445 new Thread() {
4546 @Override
4849 try {
4950 final File temporaryFile = File.createTempFile("tmm", ".html");
5051 writer = new FileWriter(temporaryFile);
51 writer.write(EditNodeExternalApplication.this.text);
52 writer.write(getText());
5253 writer.close();
5354 final String htmlEditingCommand = ResourceController.getResourceController().getProperty(
5455 "html_editing_command");
119119 /* (non-Javadoc)
120120 * @see javax.swing.text.NavigationFilter#moveDot(javax.swing.text.NavigationFilter.FilterBypass, int, javax.swing.text.Position.Bias)
121121 */
122 public void moveDot(final FilterBypass fb, int dot, final Bias bias) {
122 @Override
123 public void moveDot(final FilterBypass fb, int dot, final Bias bias) {
123124 dot = getValidPosition(dot);
124125 super.moveDot(fb, dot, bias);
125126 }
127128 /* (non-Javadoc)
128129 * @see javax.swing.text.NavigationFilter#setDot(javax.swing.text.NavigationFilter.FilterBypass, int, javax.swing.text.Position.Bias)
129130 */
130 public void setDot(final FilterBypass fb, int dot, final Bias bias) {
131 @Override
132 public void setDot(final FilterBypass fb, int dot, final Bias bias) {
131133 dot = getValidPosition(dot);
132134 super.setDot(fb, dot, bias);
133135 }
142144 return position;
143145 }
144146 }
145
147
146148 private static class InputMethodInUseListener implements InputMethodListener {
147149 private boolean imeInUse = false;
148150
151 @Override
149152 public void inputMethodTextChanged(InputMethodEvent event) {
150153 updateImeInUseState(event);
151154 }
152155
156 @Override
153157 public void caretPositionChanged(InputMethodEvent event) {
154158 updateImeInUseState(event);
155159 }
157161 public boolean isIMEInUse(){
158162 return imeInUse;
159163 }
160
164
161165 private void updateImeInUseState(InputMethodEvent event) {
162166 AttributedCharacterIterator aci = event.getText();
163167 if(aci != null) {
170174 }
171175
172176 }
173
177
174178 private int extraWidth;
175179 final private boolean layoutMapOnTextChange;
176180
177181 private final class MyDocumentListener implements DocumentListener {
178182 private boolean updateRunning = false;
183 @Override
179184 public void changedUpdate(final DocumentEvent e) {
180185 onUpdate();
181186 }
185190 return;
186191 }
187192 EventQueue.invokeLater(new Runnable() {
193 @Override
188194 public void run() {
189195 updateRunning = true;
190196 layout();
193199 });
194200 }
195201
202 @Override
196203 public void insertUpdate(final DocumentEvent e) {
197204 onUpdate();
198205 }
199206
207 @Override
200208 public void removeUpdate(final DocumentEvent e) {
201209 onUpdate();
202210 }
229237 }
230238 }
231239 else {
232 preferredSize.width = Math.max(maxWidth, preferredSize.width);
240 preferredSize.width = Math.max(maxWidth, preferredSize.width);
233241 }
234242 if(preferredSize.width != lastWidth){
235243 preferredSize.height = lastHeight;
236244 SwingUtilities.invokeLater(new Runnable() {
245 @Override
237246 public void run() {
238247 layout();
239248 }
264273 if(null != textfield.getClientProperty("EditNodeTextField.linewrap") || inputMethodInUseListener.isIMEInUse()){
265274 return;
266275 }
267
276
268277 final HTMLDocument document = (HTMLDocument) textfield.getDocument();
269278 document.getStyleSheet().addRule("body { width: " + (maxWidth - 1) + "}");
270279 // bad hack: call "setEditable" only to update view
305314 e.consume();
306315 }
307316 }
308
309
310
317
318
319
320 @Override
311321 public void focusGained(final FocusEvent e) {
312322 popupShown = false;
313323 }
314324
325 @Override
315326 public void focusLost(final FocusEvent e) {
316327 if (textfield == null || !textfield.isVisible() || eventSource == CANCEL || popupShown) {
317328 return;
337348 getEditControl().ok(output);
338349 }
339350
351 @Override
340352 public void keyPressed(final KeyEvent e) {
341353 if (eventSource == CANCEL||textfield==null) {
342354 return;
402414 if (keyCode == SPLIT_KEY_CODE && keyCode != -1 && e.isAltDown()&& !e.isAltGraphDown()&& !e.isControlDown() && ! Compat.isMacOsX())
403415 return true;
404416 final KeyStroke splitNodeHotKey = ResourceController.getResourceController().getAcceleratorManager().getAccelerator("SplitNode");
405 return splitNodeHotKey != null && splitNodeHotKey.getKeyCode() == keyCode &&
417 return splitNodeHotKey != null && splitNodeHotKey.getKeyCode() == keyCode &&
406418 (e.getModifiersEx() & KEYSTROKE_MODIFIERS) == (splitNodeHotKey.getModifiers() & KEYSTROKE_MODIFIERS);
407419 }
408420
421 @Override
409422 public void keyReleased(final KeyEvent e) {
410423 }
411424
425 @Override
412426 public void keyTyped(final KeyEvent e) {
413427 }
414428
429 @Override
415430 public void mouseClicked(final MouseEvent ev) {
416431 if (textfield != null && (ev.getModifiers() & MouseEvent.CTRL_MASK) != 0) {
417432 final String linkURL = HtmlUtils.getURLOfExistingLink((HTMLDocument) textfield.getDocument(), textfield.viewToModel(ev.getPoint()));
425440 }
426441 }
427442
443 @Override
428444 public void mouseEntered(final MouseEvent e) {
429445 }
430446
447 @Override
431448 public void mouseExited(final MouseEvent e) {
432449 }
433450
451 @Override
434452 public void mousePressed(final MouseEvent e) {
435453 conditionallyShowPopup(e);
436454 }
437455
456 @Override
438457 public void mouseReleased(final MouseEvent e) {
439458 conditionallyShowPopup(e);
440459 }
441460 }
442
461
443462 private class MapViewChangeListener implements IMapViewChangeListener{
463 @Override
444464 public void afterViewChange(Component oldView, Component newView) {
445465 }
446466
467 @Override
447468 public void afterViewClose(Component oldView) {
448469 }
449470
471 @Override
450472 public void afterViewCreated(Component mapView) {
451473 }
452474
475 @Override
453476 public void beforeViewChange(Component oldView, Component newView) {
454477 final String output = getNewText();
455478 hideMe();
456479 getEditControl().ok(output);
457480 }
458481 }
459
482
460483 private JEditorPane textfield;
461484 final private InputMethodInUseListener inputMethodInUseListener;
462485 private final DocumentListener documentListener;
488511 }
489512 }
490513 };
491
514
492515 boldAction = new StyledEditorKit.BoldAction();
493516 boldAction.putValue(Action.NAME, TextUtils.getText("BoldAction.text"));
494517 boldAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control B"));
495
518
496519 italicAction = new StyledEditorKit.ItalicAction();
497520 italicAction.putValue(Action.NAME, TextUtils.getText("ItalicAction.text"));
498521 italicAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control I"));
499
522
500523 underlineAction = new StyledEditorKit.UnderlineAction();
501524 underlineAction.putValue(Action.NAME, TextUtils.getText("UnderlineAction.text"));
502525 underlineAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control U"));
503
526
504527 redAction = new ForegroundAction(TextUtils.getText("red"), Color.RED);
505528 redAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control R"));
506
529
507530 greenAction = new ForegroundAction(TextUtils.getText("green"), new Color(0, 0x80, 0));
508531 greenAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control G"));
509
532
510533 blueAction = new ForegroundAction(TextUtils.getText("blue"), new Color(0, 0, 0xc0));
511534 blueAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control L"));
512
535
513536 blackAction = new ForegroundAction(TextUtils.getText("black"), Color.BLACK);
514537 blackAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control K"));
515
538
516539 defaultColorAction = new ExtendedEditorKit.RemoveStyleAttributeAction(StyleConstants.Foreground, TextUtils.getText("DefaultColorAction.text"));
517540 defaultColorAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control D"));
518
541
519542 removeFormattingAction = new ExtendedEditorKit.RemoveStyleAttributeAction(null, TextUtils.getText("simplyhtml.clearFormatLabel"));
520543 removeFormattingAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control T"));
521
544
522545 inputMethodInUseListener = new InputMethodInUseListener();
523546 if(editControl != null ){
524547 final ModeController modeController = Controller.getCurrentModeController();
586609 @Override
587610 protected JPopupMenu createPopupMenu(Component component) {
588611 JPopupMenu menu = super.createPopupMenu(component);
589 JMenu formatMenu = new JMenu(TextUtils.getText("simplyhtml.formatLabel"));
612 JMenu formatMenu = new JMenu(TextUtils.getText("simplyhtml.formatLabel"));
590613 menu.add(formatMenu);
591614 if (textfield.getSelectionStart() == textfield.getSelectionEnd()){
592615 formatMenu.setEnabled(false);
637660 final InputMap inputMap = textfield.getInputMap();
638661 final ActionMap actionMap = textfield.getActionMap();
639662 actionMap.put(DefaultEditorKit.pasteAction, pasteAction);
640
663
641664 inputMap.put((KeyStroke) boldAction.getValue(Action.ACCELERATOR_KEY), "boldAction");
642665 actionMap.put("boldAction",boldAction);
643
666
644667 inputMap.put((KeyStroke) italicAction.getValue(Action.ACCELERATOR_KEY), "italicAction");
645668 actionMap.put("italicAction", italicAction);
646
669
647670 inputMap.put((KeyStroke) underlineAction.getValue(Action.ACCELERATOR_KEY), "underlineAction");
648671 actionMap.put("underlineAction", underlineAction);
649
672
650673 inputMap.put((KeyStroke) redAction.getValue(Action.ACCELERATOR_KEY), "redAction");
651674 actionMap.put("redAction", redAction);
652
675
653676 inputMap.put((KeyStroke) greenAction.getValue(Action.ACCELERATOR_KEY), "greenAction");
654677 actionMap.put("greenAction", greenAction);
655
678
656679 inputMap.put((KeyStroke) blueAction.getValue(Action.ACCELERATOR_KEY), "blueAction");
657680 actionMap.put("blueAction", blueAction);
658
681
659682 inputMap.put((KeyStroke) blackAction.getValue(Action.ACCELERATOR_KEY), "blackAction");
660683 actionMap.put("blackAction", blackAction);
661
684
662685 inputMap.put((KeyStroke) defaultColorAction.getValue(Action.ACCELERATOR_KEY), "defaultColorAction");
663686 actionMap.put("defaultColorAction", defaultColorAction);
664
687
665688 inputMap.put((KeyStroke) removeFormattingAction.getValue(Action.ACCELERATOR_KEY), "removeFormattingAction");
666689 actionMap.put("removeFormattingAction", removeFormattingAction);
667
690
668691 final Color nodeTextColor = parent.getForeground();
669692 textfield.setCaretColor(nodeTextColor);
670693 final StringBuilder ruleBuilder = new StringBuilder(100);
679702 final HTMLDocument document = (HTMLDocument) textfield.getDocument();
680703 final StyleSheet styleSheet = document.getStyleSheet();
681704 styleSheet.addRule(ruleBuilder.toString());
682 textfield.setText(text);
705 textfield.setText(getText());
683706 final MapView mapView = nodeView.getMap();
684707 if(! mapView.isValid())
685708 mapView.validate();
723746 Rectangle iconR = layoutData.iconR;
724747 final Rectangle textR = layoutData.textR;
725748 int textFieldX = parentInsets.left - textFieldBorderWidth + (iconR.width > 0 ? textR.x - iconR.x : 0);
726
727
749
750
728751 final EventBuffer eventQueue = MTextController.getController().getEventQueue();
729752 KeyEvent firstEvent = eventQueue.getFirstEvent();
730
753
731754 Point mouseEventPoint = null;
732755 if (firstEvent == null) {
733756 MouseEvent currentEvent = eventQueue.getMouseEvent();
734757 if(currentEvent != null){
735 MouseEvent mouseEvent = (MouseEvent) currentEvent;
758 MouseEvent mouseEvent = currentEvent;
736759 if(mouseEvent.getComponent().equals(parent)){
737760 mouseEventPoint = mouseEvent.getPoint();
738761 mouseEventPoint.x -= textR.x;
741764 }
742765 }
743766
744
767
745768 textFieldMinimumSize.width = Math.max(textFieldMinimumSize.width, nodeWidth - textFieldX - (parentInsets.right - textFieldBorderWidth));
746769 textFieldMinimumSize.height = Math.max(textFieldMinimumSize.height, textR.height);
747770 textfield.setSize(textFieldMinimumSize.width, textFieldMinimumSize.height);
751774 verticalSpace = 2 * textY;
752775 final int widthAddedToParent = newParentSize.width - parent.getWidth();
753776 final Point location = new Point(textR.x - textFieldBorderWidth, textY);
754
777
755778 final int widthAddedToTextField = textFieldMinimumSize.width - (textR.width + 2 * textFieldBorderWidth);
756779 if(widthAddedToTextField > 0){
757780 switch(labelHorizontalAlignment){
767790 break;
768791 }
769792 }
770
771 keepNodePosition();
793
794 keepNodePosition();
772795 parent.setPreferredSize(newParentSize);
773796 parent.setText("");
774797 parent.setHorizontalAlignment(JLabel.LEFT);
777800 mapView.doLayout();
778801 UITools.convertPointToAncestor(parent, location, mapView);
779802 }
780
803
781804 textfield.setBounds(location.x, location.y, textFieldMinimumSize.width, textFieldMinimumSize.height);
782805 if(layoutMapOnTextChange)
783806 parent.add(textfield, 0);
784807 else
785808 mapView.add(textfield, 0);
786
809
787810 redispatchKeyEvents(textfield, firstEvent);
788811 if (firstEvent == null) {
789812 int pos = document.getLength();
7777 if(iconController.onIconClicked(node, uiIcon))
7878 return;
7979 }
80 else if (component.isClickableLink(e.getX())) {
80 if (component.isClickableLink(e.getX())) {
8181 LinkController.getController(mc).loadURL(node, e);
8282 e.consume();
8383 return;
131131 }
132132 Controller controller = Controller.getCurrentController();
133133 controller.getMapViewManager().addMapSelectionListener(new IMapSelectionListener() {
134 @Override
134135 public void afterMapChange(final MapModel oldMap, final MapModel newMap) {
135136 if (modeController.equals(Controller.getCurrentModeController())) {
136137 final RecursiveMenuStructureProcessor recursiveMenuStructureProcessor = new RecursiveMenuStructureProcessor();
154155 }
155156 }
156157
157 public void beforeMapChange(final MapModel oldMap, final MapModel newMap) {
158 }
159158 });
160159
161160 addUiBuilder(Phase.ACTIONS, "navigate_maps", new BuilderDestroyerPair(new EntryVisitor() {
204203 return new List[4];
205204 }
206205
206 @Override
207207 public void addToolBar(final String name, final int position, final JComponent toolBar) {
208208 toolBars.put(name, toolBar);
209209 toolbarLists[position].add(toolBar);
210210 }
211211
212 @Override
212213 public void addMouseWheelEventHandler(final IMouseWheelEventHandler handler) {
213214 mRegisteredMouseWheelEventHandler.add(handler);
214215 }
215216
217 @Override
216218 public IMouseListener getMapMouseListener() {
217219 if (mapMouseListener == null) {
218220 mapMouseListener = new DefaultMapMouseListener();
220222 return mapMouseListener;
221223 }
222224
225 @Override
223226 public MouseWheelListener getMapMouseWheelListener() {
224227 if (mapMouseWheelListener == null) {
225228 mapMouseWheelListener = new DefaultMouseWheelListener();
227230 return mapMouseWheelListener;
228231 }
229232
233 @Override
230234 public JPopupMenu getMapPopup() {
231235 return mapsPopupMenu;
232236 }
233237
238 @Override
234239 public FreeplaneMenuBar getMenuBar() {
235240 if (menuBar == null) {
236241 menuBar = new FreeplaneMenuBar(delegateProcessor);
238243 return menuBar;
239244 }
240245
246 @Override
241247 public Set<IMouseWheelEventHandler> getMouseWheelEventHandlers() {
242248 return Collections.unmodifiableSet(mRegisteredMouseWheelEventHandler);
243249 }
244250
251 @Override
245252 public DragGestureListener getNodeDragListener() {
246253 return nodeDragListener;
247254 }
248255
256 @Override
249257 public DropTargetListener getNodeDropTargetListener() {
250258 return nodeDropTargetListener;
251259 }
252260
261 @Override
253262 public KeyListener getNodeKeyListener() {
254263 if (nodeKeyListener == null) {
255264 nodeKeyListener = new DefaultNodeKeyListener(null);
261270 return nodeMotionListener;
262271 }
263272
273 @Override
264274 public IMouseListener getNodeMouseMotionListener() {
265275 if (nodeMouseMotionListener == null) {
266276 nodeMouseMotionListener = new DefaultNodeMouseMotionListener();
268278 return nodeMouseMotionListener;
269279 }
270280
281 @Override
271282 public MouseWheelListener getNodeMouseWheelListener() {
272283 if (nodeMouseWheelListener == null) {
273284 nodeMouseWheelListener = new DefaultNodeMouseWheelListener(getMapMouseWheelListener());
275286 return nodeMouseWheelListener;
276287 }
277288
289 @Override
278290 public JPopupMenu getNodePopupMenu() {
279291 return nodePopupMenu;
280292 }
281293
294 @Override
282295 public JComponent getToolBar(final String name) {
283296 return toolBars.get(name);
284297 }
285298
299 @Override
286300 public Iterable<JComponent> getToolBars(final int position) {
287301 return toolbarLists[position];
288302 }
289303
304 @Override
290305 public void removeMouseWheelEventHandler(final IMouseWheelEventHandler handler) {
291306 mRegisteredMouseWheelEventHandler.remove(handler);
292307 }
362377 this.nodePopupMenu = nodePopupMenu;
363378 }
364379
380 @Override
365381 public void updateMapList() {
366382 for (Entry entry : mapMenuEntries.keySet())
367383 rebuildMenu(entry);
421437 mapMenuEntries.put(menuEntry, null);
422438 }
423439
440 @Override
424441 public void rebuildMenu(Entry entry){
425442 if (subtreeBuilder != null)
426443 subtreeBuilder.rebuildChildren(entry);
427444 }
428445
446 @Override
429447 public void rebuildMenus(String name) {
430448 if(genericMenuStructure != null) {
431449 final List<Entry> entries = genericMenuStructure.findEntries(name);
434452 }
435453 }
436454
455 @Override
437456 public void updateMenus(String menuStructureResource, Set<String> plugins) {
438457 mapsPopupMenu = new JPopupMenu();
439458 mapsPopupMenu.setName(TextUtils.getText("mindmaps"));
440
459
441460 final URL genericStructure = ResourceController.getResourceController().getResource(
442461 menuStructureResource);
443462 try {
515534 sb.append(key).append('\n');
516535 }
517536 LogUtils.info(sb.toString());
518
519 }
520
537
538 }
539
540 @Override
521541 public void addUiBuilder(Phase phase, String name, BuilderDestroyerPair builderDestroyerPair) {
522542 customBuilders.get(phase.ordinal()).put(name, builderDestroyerPair);
523543 }
524
544
545 @Override
525546 public void addBuildPhaseListener(BuildPhaseListener listener) {
526547 buildPhaseListeners.add(listener);
527548 }
2525 import java.awt.event.MouseEvent;
2626
2727 import javax.swing.JScrollBar;
28 import javax.swing.JTable;
2829 import javax.swing.SwingUtilities;
2930
3031 import org.freeplane.core.ui.IMouseListener;
4243 class GlassPaneNodeSelector extends MouseAdapter implements IMouseListener{
4344
4445 /**
45 *
46 *
4647 */
4748 private final INodeSelector nodeSelector;
4849 private Component activeComponent;
5354 this.nodeSelector = nodeSelector;
5455 }
5556
57 @Override
5658 public void mouseMoved(MouseEvent e) {
5759 }
5860
59 public void mouseDragged(MouseEvent e) {
61 @Override
62 public void mouseDragged(MouseEvent e) {
6063 final Component component = findMapComponent(e);
6164 if(canRedispatchEventFor(component)){
6265 redispatchMouseEvent(e, component);
6366 }
6467 }
6568
66 public void mouseClicked(MouseEvent e) {
69 @Override
70 public void mouseClicked(MouseEvent e) {
6771 if(e.getButton() != 1){
6872 return;
6973 }
7074 final Component component = findMapComponent(e);
71 if(! (component instanceof MainView)){
72 return;
73 }
74 MainView mainView = (MainView) component;
75 NodeView nodeView = mainView.getNodeView();
75
76 if(component instanceof JTable) {
77 mouseClickedOnTable((JTable)component, e);
78 }
79
80 else if(component instanceof MainView){
81 mouseClickedOnNode(e, (MainView) component);
82 }
83 }
84
85 private void mouseClickedOnNode(MouseEvent e, MainView mainView) {
86 NodeView nodeView = mainView.getNodeView();
7687 final NodeModel node = nodeView.getModel();
7788 switch(e.getClickCount()){
7889 case 1:
8394 nodeSelector.nodeSelected(node);
8495 break;
8596 }
86 }
97 }
98
99 private void mouseClickedOnTable(JTable table, MouseEvent e) {
100 if(e.getClickCount() != 2)
101 return;
102 NodeView nodeView = (NodeView) SwingUtilities.getAncestorOfClass(NodeView.class, table);
103 if(nodeView == null)
104 return;
105 Point pointAtTable = getPointAtComponent(e, table);
106 final int selectedRow = table.rowAtPoint(pointAtTable );
107 if(selectedRow < 0 || selectedRow >= table.getRowCount())
108 return;
109 String rowName = (String) table.getValueAt(selectedRow, 0);
110 final NodeModel node = nodeView.getModel();
111 nodeSelector.tableRowSelected(node, rowName);
112 }
87113
88114 public boolean canRedispatchEventFor(final Component component) {
89115 if (component instanceof MapView)
93119 return false;
94120 }
95121
96 public void mouseEntered(MouseEvent e) {
97 }
98
99 public void mouseExited(MouseEvent e) {
100 }
101
102 public void mousePressed(MouseEvent e) {
122 @Override
123 public void mouseEntered(MouseEvent e) {
124 }
125
126 @Override
127 public void mouseExited(MouseEvent e) {
128 }
129
130 @Override
131 public void mousePressed(MouseEvent e) {
103132 if(e.getButton() != 1){
104133 return;
105134 }
110139 }
111140 }
112141
113 public void mouseReleased(MouseEvent e) {
142 @Override
143 public void mouseReleased(MouseEvent e) {
114144 if(e.getButton() != 1){
115145 return;
116146 }
129159 glassPane,
130160 glassPanePoint,
131161 container);
132 Component component =
162 Component component =
133163 SwingUtilities.getDeepestComponentAt(
134164 container,
135165 containerPoint.x,
136166 containerPoint.y);
137 if(component instanceof MainView || component instanceof MapView || component instanceof JScrollBar){
167 if(component instanceof MainView
168 || component instanceof JTable
169 || component instanceof MapView
170 || component instanceof JScrollBar){
138171 return component;
139172 }
173 Container table = SwingUtilities.getAncestorOfClass(JTable.class, component);
174 if(table != null)
175 return table;
140176 return SwingUtilities.getAncestorOfClass(MapView.class, component);
141177 }
142 public void redispatchMouseEvent(MouseEvent e, final Component component) {
143 final Component glassPane = e.getComponent();
144 final Point glassPanePoint = e.getPoint();
145 Point componentPoint = SwingUtilities.convertPoint(
146 glassPane,
147 glassPanePoint,
148 component);
149 component.dispatchEvent(new MouseEvent(component,
150 e.getID(),
151 e.getWhen(),
152 e.getModifiers(),
153 componentPoint.x,
154 componentPoint.y,
155 e.getClickCount(),
156 e.isPopupTrigger()));
157 }
178 private void redispatchMouseEvent(MouseEvent e, final Component component) {
179 final MouseEvent componentEvent = convertToComponentEvent(e, component);
180 component.dispatchEvent(componentEvent);
181 }
182
183 private MouseEvent convertToComponentEvent(MouseEvent e, final Component component) {
184 Point componentPoint = getPointAtComponent(e, component);
185 final MouseEvent componentEvent = new MouseEvent(component,
186 e.getID(),
187 e.getWhen(),
188 e.getModifiers(),
189 componentPoint.x,
190 componentPoint.y,
191 e.getClickCount(),
192 e.isPopupTrigger());
193 return componentEvent;
194 }
195
196 private Point getPointAtComponent(MouseEvent e, final Component component) {
197 final Component glassPane = e.getComponent();
198 final Point glassPanePoint = e.getPoint();
199 Point componentPoint = SwingUtilities.convertPoint(
200 glassPane,
201 glassPanePoint,
202 component);
203 return componentPoint;
204 }
158205
159206 }
2525 * Mar 3, 2011
2626 */
2727 public interface INodeSelector {
28 void nodeSelected(final NodeModel model);
28 void nodeSelected(final NodeModel node);
29 default void tableRowSelected(final NodeModel node, String rowName) {
30
31 }
2932 }
1212 import java.awt.dnd.DragSourceListener;
1313 import java.awt.dnd.InvalidDnDOperationException;
1414 import java.awt.event.InputEvent;
15 import org.freeplane.features.clipboard.ClipboardController;
16 import org.freeplane.features.clipboard.MindMapNodesSelection;
15
1716 import org.freeplane.features.map.NodeModel;
17 import org.freeplane.features.map.clipboard.MapClipboardController;
18 import org.freeplane.features.map.clipboard.MindMapNodesSelection;
1819 import org.freeplane.features.mode.Controller;
1920 import org.freeplane.view.swing.map.MainView;
2021 import org.freeplane.view.swing.map.MapView;
5657 else {
5758 dragActionName = "MOVE";
5859 }
59 final Transferable t = ClipboardController.getController().copy(Controller.getCurrentController().getSelection());
60 final Transferable t = MapClipboardController.getController().copy(Controller.getCurrentController().getSelection());
6061 ((MindMapNodesSelection) t).setDropAction(dragActionName);
6162 try {
6263 e.startDrag(cursor, t, new DragSourceListener() {
3939 import org.freeplane.core.ui.components.UITools;
4040 import org.freeplane.core.util.LogUtils;
4141 import org.freeplane.core.util.TextUtils;
42 import org.freeplane.features.clipboard.ClipboardController;
43 import org.freeplane.features.clipboard.MindMapNodesSelection;
44 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
4542 import org.freeplane.features.link.LinkController;
4643 import org.freeplane.features.link.mindmapmode.MLinkController;
4744 import org.freeplane.features.map.NodeModel;
45 import org.freeplane.features.map.clipboard.MapClipboardController;
46 import org.freeplane.features.map.clipboard.MindMapNodesSelection;
4847 import org.freeplane.features.map.mindmapmode.MMapController;
48 import org.freeplane.features.map.mindmapmode.clipboard.MMapClipboardController;
4949 import org.freeplane.features.mode.Controller;
5050 import org.freeplane.features.mode.ModeController;
5151 import org.freeplane.view.swing.map.MainView;
240240 final boolean isLeft = mainView.dropLeft(dtde.getLocation().getX());
241241 if (!dtde.isLocalTransfer()) {
242242 dtde.acceptDrop(DnDConstants.ACTION_COPY);
243 ((MClipboardController) ClipboardController.getController()).paste(t, targetNode, dropAsSibling, isLeft, dropAction);
243 ((MMapClipboardController) MapClipboardController.getController()).paste(t, targetNode, dropAsSibling, isLeft, dropAction);
244244 dtde.dropComplete(true);
245245 return;
246246 }
272272 controller.getSelection().selectAsTheOnlyOneSelected(targetNode);
273273 }
274274 else if (DnDConstants.ACTION_COPY == dropAction || DnDConstants.ACTION_MOVE == dropAction) {
275 ((MClipboardController) ClipboardController.getController()).paste(t, targetNode, dropAsSibling,
275 ((MMapClipboardController) MapClipboardController.getController()).paste(t, targetNode, dropAsSibling,
276276 isLeft);
277277 controller.getSelection().selectAsTheOnlyOneSelected(targetNode);
278278 }
157157 TextAlignAction.CENTER.icon=/images/algnCtr16.png
158158 TextAlignAction.LEFT.icon=/images/algnLft16.png
159159 TextAlignAction.RIGHT.icon=/images/algnRt16.png
160 TimeListAction.icon=/images/TimeListAction.png
160 ReminderListAction.icon=/images/TimeListAction.png
161 OldReminderListAction.icon=/images/TimeListAction.png
161162 TimeManagementAction.icon=/images/TimeManagementAction.png
162163 UndoAction.icon=/images/undo.png
163164 UndoFilterAction.icon=/images/undo_filter.png
235236 foldingsymbolwidth=10
236237 statesymbolwidth=10
237238 format_locale=automatic
238 freeplane_copyright=(C)2000-2018
239 freeplane_copyright=(C)2000-2019
239240 freeplane_description=Free mind mapping and knowledge management software
240241 fullscreen_enabled=true
241242 goto_note_end_on_edit=true
592593 compile_only_changed_script_files=true
593594 ignore_unassigned_f_keys=false
594595 unfold_on_navigation=true
595 handbook_url=https\://www.freeplane.org/handbook
596 handbook_url=https\://www.freeplane.org/handbook
597 reminder.showPastRemindersOnStart=ask
227227 ColorProperty.ResetColor=Reset color
228228 combined=Combined
229229 condition=Condition
230 ConfigureNodeReferenceAction.text=Configure node reference
231230 confirmation=Confirmation
232231 connector=Connector
233232 connector_arrows=Connector arrows
244243 CopyIDAction.text=Copy node ID
245244 CopyMapStylesAction.text=Copy map style from...
246245 CopyNodeURIAction.text=Copy node URI
247 copyright=Copyright \u00A9 2000-2018 Freeplane team and others
246 copyright=Copyright \u00A9 2000-2019 Freeplane team and others
248247 CopySingleAction.text=Copy node (single)
249248 CopySingleAction.tooltip=Copy only the selected node
250249 CopyStyleExtensionsAction.text=Copy extensions from style node
515514 formats_not_loaded=Formats could not be loaded, file corrupted
516515 formula.ClearDependenciesAction.text=Clear dependencies
517516 formula.error.attributeValueIsNull=Attribute value ''{0}'' is null after evaluation.
518 formula.error.circularReference=Circular reference: The formula in node ''{0}'' references itself.
517 formula.error.circularReference=Circular reference: The formula in node {0} ''{1}'' references itself.
519518 formula.EvaluateAllAction.text=Evaluate all
520519 formula.EvaluateAllAction.tooltip=Evaluate all formulas in the current map
521520 formula.menuname=Formulas
774773 ManageAddOnsDialog.cannot.activate=Cannot activate: {0} is already active.
775774 ManageAddOnsDialog.cannot.configure=Cannot configure {0}.
776775 ManageAddOnsDialog.cannot.deactivate=Cannot deactivate: {0} is not active.
777 ManageAddOnsDialog.cannot.deinstall=Cannot deinstall {0}.
776 ManageAddOnsDialog.cannot.deinstall=Cannot uninstall {0}.
778777 ManageAddOnsDialog.configure=Configure
779778 ManageAddOnsDialog.deactivate=Deactivate
780779 ManageAddOnsDialog.deactivation.success={0} will be deactivated after a restart.
781 ManageAddOnsDialog.deinstall=Deinstall
782 ManageAddOnsDialog.deinstallation.success={0} will be deinstalled after a restart.
780 ManageAddOnsDialog.deinstall=Uninstall
781 ManageAddOnsDialog.deinstallation.success={0} will be uninstalled after a restart.
783782 ManageAddOnsDialog.error=Error on installation: {0}.
784783 ManageAddOnsDialog.install=&Install
785784 ManageAddOnsDialog.install.from.known.location=Install add-on from a known location
786785 ManageAddOnsDialog.install.tooltip=Insert an URL of an add-on installation file here
787786 ManageAddOnsDialog.map.not.opened=Map {0} does not seem to be opened.
788 ManageAddOnsDialog.really.deinstall=Really deinstall {0}?
787 ManageAddOnsDialog.really.deinstall=Really uninstall {0}?
789788 ManageAddOnsDialog.search=Search add-ons
790789 ManageAddOnsDialog.search.file=Search
791790 ManageAddOnsDialog.select.tooltip=Select file
956955 NotificationOptions.SELECT_NODE=Go to reminder
957956 ok=&OK
958957 OKAction.text=OK
958 OldReminderListAction.text=Show past reminders...
959 OldReminderListAction.tooltip=Shows past reminder times and the corresponding nodes on all open maps.
959960 OnlineReference.text=Documentation Maps Online
960961 open_asMindMap=Mind Map
961962 OpenAction.text=Open saved map...
963 OpenApiDocumentationAction.text=Freeplane API...
962964 OpenFreeplaneSiteAction.text=Freeplane's Homepage
963965 OpenMapsAddLocation.text=Add OpenMaps Location...
964966 OpenMapsRemoveLocation.text=Remove OpenMaps Location
978980 OptionPanel.addons=Add-ons
979981 OptionPanel.af=Afrikaans
980982 OptionPanel.always_fold_all_after_load=Fold all
981 OptionPanel.always_load_last_maps=Load last and new maps
982 OptionPanel.always_load_last_maps.tooltip=Open last files set by above options, even starting FP with a selected map file.
983 OptionPanel.always_load_last_maps=Load last maps in addition to new maps
984 OptionPanel.always_load_last_maps.tooltip=Open last files set by above options, even starting FP with another map given as argument.
983985 OptionPanel.always_save_folding=Always
984986 OptionPanel.always_save_folding_state=Always save folding state changes
985987 OptionPanel.always_save_folding_state.tooltip=If checked, each folding action makes the map dirty and reminds you to save it.
12821284 OptionPanel.relative=Relative
12831285 OptionPanel.remind_type_of_new_nodes.tooltip=<html>"Ask" will ask you (use in doubt).<br>"Yes" displays the rich text editor.<br>"No" displays the plain text editor.</html>
12841286 OptionPanel.remind_use_rich_text_in_new_nodes=Use rich text for pasted nodes
1287 OptionPanel.reminder.showPastRemindersOnStart=Show past reminders
12851288 OptionPanel.remindersBlink=Reminders blink
12861289 OptionPanel.remindersShowNotifications=Reminders show notification popups
12871290 OptionPanel.remindersStandardDelay=Reminder delay
15591562 plugins/ScriptEditor/window.Result=Result:
15601563 plugins/ScriptEditor/window.title=Edit script
15611564 plugins/ScriptingEngine.illegalAccessToInternalAPI=Illegal access to the internal API (package {0}). - Please contact the Freeplane team if the scripting API is not powerful enough.
1562 plugins/TimeList.xml_Created=Created
1563 plugins/TimeList.xml_Date=Date
1564 plugins/TimeList.xml_Details=Details
1565 plugins/TimeList.xml_Icons=Icons
1566 plugins/TimeList.xml_Modified=Modified
1567 plugins/TimeList.xml_Notes=Notes
1568 plugins/TimeList.xml_Text=Text
1569 plugins/TimeManagement.xml_appendButton=Insert Date in Selection
1570 plugins/TimeManagement.xml_Cancel=Cancel
1571 plugins/TimeManagement.xml_cancelButton=Cancel
1572 plugins/TimeManagement.xml_closeButton=Close
1573 plugins/TimeManagement.xml_Export=Export selected nodes
1574 plugins/TimeManagement.xml_Find=Find
1575 plugins/TimeManagement.xml_Goto=Goto
1576 plugins/TimeManagement.xml_hour=Hour:
1577 plugins/TimeManagement.xml_menu_actions=Actions
1578 plugins/TimeManagement.xml_minute=Minute:
1579 plugins/TimeManagement.xml_reminderButton=Remind me at this date
1580 plugins/TimeManagement.xml_reminderButton.tooltip=<html>When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.<br> If you close the map, the timers are reactivated the next time, the map is opened.</html>
1581 plugins/TimeManagement.xml_reminderNode.tooltip=Reminder scheduled at {0,date} {0,time}.
1582 plugins/TimeManagement.xml_reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current reminder is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
1583 plugins/TimeManagement.xml_remindLaterButton=Remind later
1584 plugins/TimeManagement.xml_remindLaterButton.tooltip=Remind later
1585 plugins/TimeManagement.xml_removeReminderButton=Remove reminder
1586 plugins/TimeManagement.xml_removeReminderButton.tooltip=Remove all reminders associated with the selected nodes.
1587 plugins/TimeManagement.xml_Replace=Replace
1588 plugins/TimeManagement.xml_Replace_All=Replace all
1589 plugins/TimeManagement.xml_Replace_Selected=Replace selected
1590 plugins/TimeManagement.xml_Select=Select
1591 plugins/TimeManagement.xml_todayButton=Reset calendar
1592 plugins/TimeManagement.xml_WindowTitle=Manage time
1593 plugins/TimeManagement.xml_WindowTitle_All_Nodes=Search & replace
15941565 preferences=Preferences
15951566 presentation=Presentation
15961567 presentation.combineAll=Combine all presentations
16201591 RedoAction.text=Redo
16211592 RedoFilterAction.text=Redo filter action
16221593 regular_expressions=Regular expressions
1594 reminder.appendButton=Insert Date in Selection
1595 reminder.Cancel=Cancel
1596 reminder.cancelButton=Cancel
1597 reminder.closeButton=Close
1598 reminder.Created=Created
1599 reminder.Details=Details
1600 reminder.Export=Export selected nodes
1601 reminder.Find=Find
1602 reminder.Goto=Goto
1603 reminder.hour=Hour:
1604 reminder.Icons=Icons
1605 reminder.Map=Map
1606 reminder.menu_actions=Actions
1607 reminder.minute=Minute:
1608 reminder.Modified=Modified
1609 reminder.Notes=Notes
1610 reminder.Reminder=Reminder
1611 reminder.reminderButton=Remind me at this date
1612 reminder.reminderButton.tooltip=<html>When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.<br> If you close the map, the timers are reactivated the next time, the map is opened.</html>
1613 reminder.reminderNode.tooltip=Reminder scheduled at {0,date} {0,time}.
1614 reminder.reminderNode_onlyOneDate=<html>Currently, there may only be one reminder per node. <br>The current reminder is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}. <br><br>Do you want to change the node's reminder time (YES) <br>or do you want to keep the old one (NO)?</html>
1615 reminder.remindLaterButton=Remind later
1616 reminder.remindLaterButton.tooltip=Remind later
1617 reminder.Remove_All=Remove all reminders
1618 reminder.Remove_Selected=Remove selected reminders
1619 reminder.removeReminderButton=Remove reminder
1620 reminder.removeReminderButton.tooltip=Remove all reminders associated with the selected nodes.
1621 reminder.Replace=Replace
1622 reminder.Replace_All=Replace all
1623 reminder.Replace_Selected=Replace selected
1624 reminder.Run_All=Run all scripts
1625 reminder.Run_Selected=Run selected scripts
1626 reminder.Select=Select
1627 reminder.Text=Text
1628 reminder.todayButton=Reset calendar
1629 reminder.WindowTitle=Manage reminders
1630 reminder.WindowTitle_All_Nodes=Search & replace
1631 reminder.WindowTitle_pastReminders=Past reminders
1632 reminder_script_error=Error {0} in reminder script on map {1} node {2}
16231633 ReminderHookAction.text=Remove reminder
16241634 ReminderHookAction.tooltip=Removes a reminder from a node.
1635 ReminderListAction.text=Manage tasks and reminders...
1636 ReminderListAction.tooltip=Shows all scheduled reminders and the corresponding nodes.
16251637 reminderNotification=Reminder notification
16261638 remove_file_from_list_on_error=File {0} not opened. Remove it from the last opened file list?
16271639 remove_shortcut_question=Replace shortcut?
17051717 SetLinkAnchorAction.tooltip_anchored=<html>set selected node as anchor for future<br/>creation of local or global links. Current anchor:<br/>{0}
17061718 SetLinkByFileChooserAction.text=Add hyperlink (choose)...
17071719 SetLinkByTextFieldAction.text=Add or modify hyperlink (type)...
1720 SetNodeAliasAction.text=Set node alias
17081721 SetNodeLink.text=Set Node Link...
17091722 SetNoteWindowPosition.bottom.text=Bottom
17101723 SetNoteWindowPosition.left.text=Left
19001913 simplyhtml.thisCellRangeLabel=this cell
19011914 simplyhtml.thisColRangeLabel=this column
19021915 simplyhtml.thisRowRangeLabel=this row
1903 simplyhtml.toggleBulletsLabel=Bulleted list on/off
1904 simplyhtml.toggleBulletsTip=bulleted list on/off
1916 simplyhtml.toggleBulletsLabel=Bullet list on/off
1917 simplyhtml.toggleBulletsTip=bullet list on/off
19051918 simplyhtml.toggleNumbersLabel=Numbered list on/off
19061919 simplyhtml.toggleNumbersTip=numbered list on/off
19071920 simplyhtml.topLabel=top:
19591972 split=&Split
19601973 SplitConditionAction.text=Split
19611974 SplitNode.text=Split node
1962 SplitNode.tooltip=<html>Node is splitted</html>
1975 SplitNode.tooltip=<html>Node is split</html>
19631976 SplitToWordsAction.text=Split with {0} words in line
19641977 STANDARD_FORMAT=Standard
19651978 StartPresentationAction.text=Run presentation
20102023 TextAlignAction.RIGHT.text=Right aligned text
20112024 textalignment=Text alignment
20122025 TextChangeHotKeyAction.text=Set text change hot key
2013 TimeListAction.text=Manage tasks ...
2014 TimeListAction.tooltip=Shows all scheduled times and the corresponding nodes.
20152026 TimeManagementAction.text=Manage time...
20162027 TimeManagementAction.tooltip=<html>Shows the calendar module by Kai Toedter.</html>
20172028 TimePeriodUnits.days=days
0 freeplane_version=1.7.2
0 freeplane_version=1.7.5
11 freeplane_version_status=
freeplane_ant/out/production/classes/org/freeplane/ant/FormatTranslation$1.class less more
Binary diff not shown
freeplane_ant/out/production/classes/org/freeplane/ant/FormatTranslation.class less more
Binary diff not shown
freeplane_ant/out/production/classes/org/freeplane/ant/FormatTranslationCheck.class less more
Binary diff not shown
freeplane_ant/out/production/classes/org/freeplane/ant/TaskUtils$IncludeFileFilter.class less more
Binary diff not shown
freeplane_ant/out/production/classes/org/freeplane/ant/TaskUtils.class less more
Binary diff not shown
freeplane_ant/out/test/classes/org/freeplane/ant/FormatTranslationTest.class less more
Binary diff not shown
5858 * <tr><td>&lt;file&gt;: drop one of two of equal quality (revisit!):keep: &lt;line&gt;</td><td>keep line</td>
5959 * <td>for one key two manual translations were found. This one (arbitrarily chosen) will be kept.
6060 * Printout of the complete line allows to correct an action of FormatTranslation via Copy and Past
61 * if it chose the wrong tranlation.
61 * if it chose the wrong translation.
6262 * </td>
6363 * </tr>
6464 * <tr><td>&lt;file&gt;: drop one of two of equal quality (revisit!):drop: &lt;line&gt;</td><td>drop line</td>
372372 putEncodedNonAsciiCharacter(c, result, resultOffset);
373373 replacedNonAsciiCharacterCount++;
374374 }
375
375
376376 }
377377 return new String(result);
378378 }
freeplane_api/out/production/classes/org/freeplane/api/AttributeCondition.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Attributes.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/AttributesRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Cloud.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Connector.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ConnectorRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Controller.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ControllerRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ConversionException.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Convertible.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Dependencies$Element.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Dependencies.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/DependencyLookup.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Edge.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/EdgeRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/EdgeStyle.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ExternalObject.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ExternalObjectRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Font.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/FontRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/FreeplaneVersion.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/HeadlessLoader.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/HeadlessMapCreator.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Icons.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/IconsRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Link.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/LinkRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Loader.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Map.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/MapRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Node.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/NodeCondition.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/NodeRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/NodeStyle.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/NodeStyleRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/NodeToComparableMapper.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Properties.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Reminder.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/ReminderRO.class less more
Binary diff not shown
freeplane_api/out/production/classes/org/freeplane/api/Script.class less more
Binary diff not shown
1616 * @since 1.2 */
1717 Object getFirst(final String name);
1818
19 /** returns true if there is any attribute with key <a>name</a>.
19 /** @return true if there is any attribute with key <a>name</a>.
2020 * @since 1.4 */
2121 boolean containsKey(final String name);
2222
23 /** returns all values for the attribute name. */
23 /** @return all values for the attribute name. */
2424 List<Object> getAll(final String name);
2525
2626 /** returns all attribute names in the proper sequence. The number of names returned
7373 * <pre>{@code
7474 * = attributes.findValues{key, val -> key != 'TOTAL'}.sum(0){it.num0}
7575 * }</pre>
76 * @param closure A closure that accepts two arguments (String key, Object value) and returns boolean/Boolean.
76 * @param condition A closure that accepts two arguments (String key, Object value) and returns boolean/Boolean.
7777 * @since 1.2 */
7878 List<? extends Convertible> findValues(AttributeCondition condition);
7979
5959 * println("all available icon keys: " + FreeplaneIconUtils.listStandardIconKeys())
6060 * c.setStatusInfo("standard", "hi there!", "button_ok");
6161 * </pre>
62 * @see FreeplaneIconFactory
62 * @see org.freeplane.core.ui.svgicons.FreeplaneIconFactory
6363 * @since 1.2 */
6464 void setStatusInfo(String infoPanelKey, String info, String iconKey);
6565
6767 @Deprecated
6868 void setStatusInfo(String infoPanelKey, Icon icon);
6969
70 /** @deprecated since 1.7.5 - use {@link #mapLoader(File)} */
71 @Override
72 @Deprecated
73 Loader load(File file);
74
75 /** @deprecated since 1.7.5 - use {@link #mapLoader(URL)} */
76 @Override
77 @Deprecated
78 Loader load(URL url);
79
80 /** @deprecated since 1.7.5 - use {@link #mapLoader(String)} */
81 @Override
82 @Deprecated
83 Loader load(String input);
84
7085 /**
71 * Returns {@link Loader} for accessing or loading map from file.
86 * Returns {@link Loader} for accessing or loading mind map from file.
7287 *
73 * @since 1.7.1
88 * @since 1.7.5
7489 */
7590 @Override
76 Loader load(File file);
91 Loader mapLoader(File file);
7792
7893 /**
79 * Returns {@link Loader} for accessing or loading map from URL.
94 * Returns {@link Loader} for accessing or loading mind map from URL.
8095 *
81 * @since 1.7.1
96 * @since 1.7.5
8297 */
8398 @Override
84 Loader load(URL file);
99 Loader mapLoader(URL file);
85100
86101 /**
87 * Returns {@link Loader} for accessing or loading map from file.
102 * Returns {@link Loader} for accessing or loading mind map from file.
88103 *
89 * @since 1.7.1
104 * @since 1.7.5
90105 */
91106 @Override
92 Loader load(String file);
107 Loader mapLoader(String file);
93108
94109
95110 /**
97112 * @since 1.2 */
98113 Map newMap();
99114
100 /** @deprecated since 1.6.16 - use {@link #load(URL)}
115 /** @deprecated since 1.6.16 - use {@link #mapLoader(URL)}
101116 * @since 1.2 */
102117 @Deprecated
103118 Map newMap(URL url);
104119
105 /** @deprecated since 1.6.16 - use {@link #load(file)}
120 /** @deprecated since 1.6.16 - use {@link #mapLoader(File)}
106121 * @since 1.5 */
107122 @Deprecated
108123 public Map newMapFromTemplate(File templateFile);
2424 * returns Freeplane version.
2525 * Use it like this:
2626 * <pre>{@code
27 *
28 *
27 *
28 *
2929 *
3030 * def required = FreeplaneVersion.getVersion("1.1.2");
3131 * if (c.freeplaneVersion < required)
5757 * print "node texts containing numbers:\n " + texts.join("\n ")
5858 * </pre>
5959 * See {@link Node#find(NodeCondition)} for searches on subtrees.
60 * @param closure a lambda that returns a boolean value. The closure will receive
60 * @param condition a lambda that returns a boolean value. The closure will receive
6161 * a NodeModel as an argument which can be tested for a match.
6262 * @return all nodes for which <code>closure.call(NodeModel)</code> returns true.
6363 */
6464 List<? extends Node> find(NodeCondition condition);
65
66 /** Starting from this node, recursively searches for nodes for which <code>condition.check(node)</code>
67 * returns true and adds their ancestor or descendant nodes if required.
68 *
69 * @since 1.7.4
70 *
71 * See {@link Controller#find(NodeCondition)} for details. */
72 List<? extends Node> find(boolean withAncestors, boolean withDescendants, final NodeCondition condition);
6573
6674 /**
6775 * Returns all nodes of the map in breadth-first order, that is, for the following map,
3232 public String getText();
3333
3434 /** Removes HTML markup if necessary.
35 * @return The result of {@link HtmlUtils#htmlToPlain(String)} */
35 * @return The result of {@link org.freeplane.core.util.HtmlUtils#htmlToPlain(String)} */
3636 public String getPlain();
3737
3838 /** Converts to Date if possible. The valid date patterns are "yyyy-MM-dd HH:dd:ss.SSSZ"
6262 * @return Object - the type that fits best. */
6363 public Object getObject();
6464
65 /**
66 * Returns original object
67 * @return the original object
68 * @since 1.7.4
69 */
70 public Object getRaw();
71
6572
6673 /** Type check.
6774 * @return true if the text is convertible to number. */
3838 /**
3939 * Creates and returns a map or selects and returns a previously loaded map.
4040 *
41 * @since 1.7.5
42 */
43 Map load();
44
45 /**
46 * Creates and returns a map or selects and returns a previously loaded map.
47 *
48 * Same as {@link #load()}
49 *
4150 * @since 1.7.1
4251 */
4352 Map getMap();
44
4553 }
88 */
99 public interface HeadlessMapCreator {
1010 /**
11 * Load mind map from file.
12 * @since 1.7.1
11 * Returns {@link HeadlessLoader} for accessing or loading mind map from file.
12 * @since 1.7.5
1313 */
14 HeadlessLoader mapLoader(File file);
15
16 /**
17 * Returns {@link HeadlessLoader} for accessing or loading mind map from URL.
18 * @since 1.7.5
19 */
20 HeadlessLoader mapLoader(URL url);
21
22 /**
23 * Returns {@link HeadlessLoader} for accessing or loading mind map from string input.
24 * @since 1.7.5
25 */
26 HeadlessLoader mapLoader(String input);
27
28 /** @deprecated since 1.7.5 - use {@link #mapLoader(File)} */
29 @Deprecated
1430 HeadlessLoader load(File file);
1531
16 /**
17 * Load mind map from URL.
18 * @since 1.7.1
19 */
32 /** @deprecated since 1.7.5 - use {@link #mapLoader(URL)} */
33 @Deprecated
2034 HeadlessLoader load(URL url);
2135
22 /**
23 * Load mind map from string input.
24 * @since 1.7.1
25 */
36 /** @deprecated since 1.7.5 - use {@link #mapLoader(String)} */
37 @Deprecated
2638 HeadlessLoader load(String input);
2739
2840 /**
1212 * println("all available icon keys: " + FreeplaneIconUtils.listStandardIconKeys())
1313 * node.icons.addIcon("button_ok")
1414 * </pre>
15 * @see FreeplaneIconFactory */
15 * @see org.freeplane.core.ui.svgicons.FreeplaneIconFactory */
1616 void add(String name);
1717
1818 /** @since 1.4 */
2727
2828 /**
2929 * saves the map to disk. Note that there is <em>no undo</em> for this method.
30 * @param allowInteraction if a saveAs dialog should be opened if the map has no assigned URL so far.
30 * @param file the location of the file to be saved.
3131 * @return false if the saveAs was cancelled by the user and true otherwise.
3232 * @throws RuntimeException if the map has no assigned URL and parameter allowInteraction is false.
3333 * @since 1.2
4848 * @since 1.2 */
4949 void setBackgroundColorCode(String rgbString);
5050
51 /** install a lambda as the current filter in this map. If <code>closure</code> is null then filtering will
51 /** With {@link #filter(boolean, boolean, NodeCondition)} neither ancestors not descendants of the visible nodes are shown.
52 * @see #filter(boolean, boolean, NodeCondition)
53 * @since 1.2 */
54 public void filter(final NodeCondition condition);
55
56 /** alias for {@link #filter(NodeCondition)}. Enables assignment to the <code>filter</code> property.
57 * @since 1.2 */
58 public void setFilter(final NodeCondition condition);
59
60 /** install a lambda as the current filter in this map. If <code>condition</code> is null then filtering will
5261 * be disabled. The filter state of a node can be checked by {@link Node#isVisible()}. <br>
5362 * To undo filtering use <em>Tools &rarr; Undo</em>. After execution of the following you have to use it seven times to
5463 * return to the initial filter state.
7180 * // remove filter
7281 * node.map.filter = null
7382 * </pre>
74 * @since 1.2 */
75 public void filter(final NodeCondition condition);
76
77 /** alias for {@link #filter(Closure)}. Enables assignment to the <code>filter</code> property.
78 * @since 1.2 */
79 public void setFilter(final NodeCondition condition);
80
81 /** With {@link #filter(Closure)} neither ancestors not descendants of the visible nodes are shown. Use this
82 * method to control these options.
83 * @see #filter(Closure)
83 * @param showAncestors whether to show ancestors or not.
84 * @param showDescendants whether to show descendant or not.
85 * @param condition filter the map using this lamda.
8486 * @since 1.2 */
8587 public void filter(final boolean showAncestors, final boolean showDescendants, final NodeCondition condition);
8688
87 /** alias for {@link #setFilter(boolean, boolean, Closure)}
88 * @see #filter(Closure)
89 /** alias for {@link #filter(boolean, boolean, NodeCondition)}
90 * @see #filter(boolean, boolean, NodeCondition)
8991 * @since 1.2 */
9092 public void setFilter(final boolean showAncestors, final boolean showDescendants, final NodeCondition condition);
9193
169169 * methods will be able to convert the string properly to the wanted type.
170170 * <p>
171171 * Special support is provided for numbers, dates and calendars that are stored unconverted. For display of
172 * them a standard formatter is used (use #setFormat() to change it). You may also pass {@link IFormattedObject}
173 * instances ({@link FormattedDate}, {@link FormattedNumber} or {@link FormattedObject}) directly to determine
174 * the format in one pass.
172 * them a standard formatter is used (use #setFormat() to change it). You may also pass
173 * {@link org.freeplane.features.format.IFormattedObject} instances ({@link org.freeplane.features.format.FormattedDate},
174 * {@link org.freeplane.features.format.FormattedNumber} or {@link org.freeplane.features.format.FormattedObject})
175 * directly to determine the format in one pass.
175176 * <p>
176177 * All other types are converted via value.toString().
177178 * <p><b>Numbers</b>
334335 * // sort numerically
335336 * node.sortChildrenBy{ it.to.num0 }
336337 * </pre>
337 * @param closure a lambda that returns a Comparable value like a String. The closure will receive
338 * @param comparable a lambda that returns a Comparable value like a String. The closure will receive
338339 * a NodeModel as an argument.
339340 * @since 1.4.1
340341 */
348349 void setAlias(String alias);
349350
350351 /**
351 * Sets if the node can be accessed using global accessor, see {@link NodeRO#call()}
352 * Sets if the node can be accessed using global accessor, see {@link NodeRO#at(String)}
352353 *
353354 * @since 1.7.1 */
354355 void setIsGlobal(boolean value);
102102 * if (node["unknown attribute"])
103103 * // surprise: the node has an attribute with key "unknown attribute"
104104 * </pre>
105 * @throws ExecuteScriptException
105 * @throws org.freeplane.plugin.script.ExecuteScriptException
106106 * @since 1.2
107107 */
108108 Convertible getAt(String attributeName);
180180 * </ul>
181181 * @return Convertible getString(), getText() and toString() will return plain text instead of the HTML.
182182 * Use {@link #getNoteText()} to get the HTML text.
183 * @throws ExecuteScriptException
183 * @throws org.freeplane.plugin.script.ExecuteScriptException
184184 * @since 1.2
185185 */
186186 Convertible getNote();
187187
188188 /** Returns the HTML text of the node. (Notes always contain HTML text.)
189 * @throws ExecuteScriptException */
189 * @throws org.freeplane.plugin.script.ExecuteScriptException */
190190 String getNoteText();
191191
192192 /** @since 1.2 */
203203 String getAlias();
204204
205205 /**
206 * True if the node can be accessed using global accessor, see {@link #call()}
206 * True if the node can be accessed using global accessor, see {@link #at(String)}
207207 *
208208 * @since 1.7.1 */
209209 boolean getIsGlobal();
248248 * <p>
249249 * See
250250 * <ul>
251 * <li> {@link #getPlainText()} for plain text or use {@link HtmlUtils#htmlToPlain(String)}.
252 * <li> {@link #getHtmlText()} for HTML text or use {@link HtmlUtils#plainToHTML(String)}.
251 * <li> {@link #getPlainText()} for plain text or use {@link org.freeplane.core.util.HtmlUtils#htmlToPlain(String)}.
252 * <li> {@link #getHtmlText()} for HTML text or use {@link org.freeplane.core.util.HtmlUtils#plainToHTML(String)}.
253253 * <li> {@link #getTransformedText()} or {@link #getValue()} for text after formula evaluation.
254254 * <li> {@link #getObject()} for possible typed content.
255255 * <li> {@link #getTo()} for text/object conversions.
267267 @Deprecated
268268 String getPlainTextContent();
269269
270 /** The node text as HTML markup. Returns the same as {@link NodeProxy#getText()} if the node text
270 /** The node text as HTML markup. Returns the same as {@link #getText()} if the node text
271271 * already is HTML or converts the plain text to HTML otherwise.
272272 * @since 1.2 */
273273 String getHtmlText();
289289 /** The object that's displayed as the node text - normally the raw text of this node (then this method is
290290 * equivalent to {@link #getText()}).
291291 * But in case of typed content (for numbers, dates and calendars) {@link #getObject()} returns
292 * a proper {@link IFormattedObject}. Use {@link #getPlainText()} to remove HTML.
292 * a proper {@link org.freeplane.features.format.IFormattedObject}. Use {@link #getPlainText()} to remove HTML.
293293 * See {@link Node#setObject(Object)} for details.
294294 * @since 1.2 */
295295 Object getObject();
308308 * <dt>node.to.object <dd>returns what fits best, see {@link Convertible#getObject()}.
309309 * </dl>
310310 * @return ConvertibleObject
311 * @throws ExecuteScriptException on formula evaluation errors
311 * @throws org.freeplane.plugin.script.ExecuteScriptException on formula evaluation errors
312312 * @since 1.2
313313 */
314314 Convertible getTo();
315315
316316 /** an alias for {@link #getTo()}.
317 * @throws ExecuteScriptException on formula evaluation errors
317 * @throws org.freeplane.plugin.script.ExecuteScriptException on formula evaluation errors
318318 * @since 1.2 */
319319 Convertible getValue();
320320
389389 * returns true. See {@link Controller#find(NodeCondition)} for details. */
390390 List<? extends Node> find(final NodeCondition condition);
391391
392 /** Starting from this node, recursively searches for nodes for which <code>condition.check(node)</code>
393 * returns true and adds their ancestor or descendant nodes if required.
394 *
395 * @since 1.7.4
396 *
397 * See {@link Controller#find(NodeCondition)} for details. */
398 List<? extends Node> find(boolean withAncestors, boolean withDescendants, final NodeCondition condition);
399
392400 /** Returns all nodes of the branch that starts with this node in breadth-first order.
393401 * See {@link Controller#findAll()} for map-global searches.
394402 * @since 1.2 */
1515 * node.reminder.setScript("loadUri(new URI('${node.map.file.toURI()}#${node.id}'))")
1616 * }
1717 * // a click on the node opens time management dialog
18 * node.link.text = 'menuitem:_$TimeListAction$0'
18 * node.link.text = 'menuitem:_$ReminderListAction$0'
1919 * </pre> */
2020 public interface Reminder extends ReminderRO {
2121 // /** Creates a new reminder. Removes existing reminders for the same node if they exist.
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
2 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
3 <listEntry value="/freeplane_framework/src/main/java/org/freeplane/launcher/Launcher.java"/>
4 </listAttribute>
5 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
6 <listEntry value="1"/>
7 </listAttribute>
8 <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
9 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/avalon-framework-api-4.3.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/avalon-framework-impl-4.3.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-anim-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-awt-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-bridge-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-constants-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-css-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-dom-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-ext-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-extension-1.8.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-gui-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-gvt-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-i18n-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-parser-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-script-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-svg-dom-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-svggen-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-swing-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-transcoder-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-xml-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/commons-logging-1.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/framework-8.0.4.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/freeplane_plugin_svg-1.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/plugin-1.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xml-apis-1.3.04.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xml-apis-ext-1.3.04.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xmlgraphics-commons-2.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/fop-2.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/home/dimitry/.gradle/caches/modules-2/files-2.1/org.codehaus.groovy/groovy-all/2.3.1/d1c808e43b08c23ed31fac7085791398f951a85c/groovy-all-2.3.1-sources.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.externalArchive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_formula&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane/lib\/commons-lang-2.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_bugreport&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_help&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_help/\/freeplane_plugin_help\/lib\/jhall.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_latex&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_latex/lib\/HotEqn.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_latex_2&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_script&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_script/lib\/groovy-all-1.5.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_svg&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
10 <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
11 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.freeplane.launcher.Launcher"/>
12 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="freeplane_debughelper"/>
13 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xdock:icon=${workspace_loc:/freeplane_framework/mac-appbundler/freeplane.icns} -Xdock:name=Freeplane -Xmx512m &quot;-Dorg.freeplane.basedirectory=${workspace_loc:freeplane_debughelper}/../BIN&quot; &quot;-Djava.security.policy=${workspace_loc:freeplane_debughelper/security/freeplane.policy}&quot; -Dorg.freeplane.main.application.FreeplaneSecurityManager.disable=false -Dorg.freeplane.main.application.FreeplaneStarter.headless=false -Dorg.osgi.framework.bundle.parent=app -Dorg.freeplane.nosplash=false &quot;-Dorg.freeplane.builtin.scripts.dir=${workspace_loc:freeplane_plugin_script/scripts}&quot; &quot;-Dorg.freeplane.globalresourcedir=${workspace_loc:freeplane/src/external/resources}&quot;"/>
14 <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:freeplane_debughelper}/../BIN"/>
15 <stringAttribute key="yk-options" value="&#13;&#10;additional-options2=onexit\=snapshot&#13;&#10;startup=0&#13;&#10;"/>
16 </launchConfiguration>
77 </listAttribute>
88 <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
99 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/avalon-framework-api-4.3.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/avalon-framework-impl-4.3.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-anim-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-awt-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-bridge-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-constants-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-css-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-dom-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-ext-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-extension-1.8.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-gui-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-gvt-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-i18n-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-parser-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-script-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-svg-dom-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-svggen-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-swing-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-transcoder-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-util-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/batik-xml-1.9.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/commons-logging-1.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/framework-8.0.4.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/freeplane_plugin_svg-1.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/plugin-1.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xml-apis-1.3.04.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xml-apis-ext-1.3.04.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/xmlgraphics-commons-2.2.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/freeplane_plugin_svg/build/libs/fop-2.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.archive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;archive detectRoot=&amp;quot;true&amp;quot; path=&amp;quot;/home/dimitry/.gradle/caches/modules-2/files-2.1/org.codehaus.groovy/groovy-all/2.3.1/d1c808e43b08c23ed31fac7085791398f951a85c/groovy-all-2.3.1-sources.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.externalArchive&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_formula&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane/lib\/commons-lang-2.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_bugreport&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_help&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_help/\/freeplane_plugin_help\/lib\/jhall.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_latex&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_latex/lib\/HotEqn.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_latex_2&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_script&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=freeplane_plugin_script/lib\/groovy-all-1.5.6.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;freeplane_plugin_svg&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
10 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/>
1110 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.freeplane.launcher.Launcher"/>
1211 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="freeplane_debughelper"/>
13 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m &quot;-Dorg.freeplane.basedirectory=${workspace_loc:freeplane_debughelper}/../BIN&quot; &quot;-Djava.security.policy=${workspace_loc:freeplane_debughelper/security/freeplane.policy}&quot; -Dorg.freeplane.main.application.FreeplaneSecurityManager.disable=false -Dorg.freeplane.main.application.FreeplaneStarter.headless=false -Dorg.osgi.framework.bundle.parent=app -Dorg.freeplane.nosplash=false &quot;-Dorg.freeplane.builtin.scripts.dir=${workspace_loc:freeplane_plugin_script/scripts}&quot;"/>
12 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m &quot;-Dorg.freeplane.basedirectory=${workspace_loc:freeplane_debughelper}/../BIN&quot; &quot;-Djava.security.policy=${workspace_loc:freeplane_debughelper/security/freeplane.policy}&quot; -Dorg.freeplane.main.application.FreeplaneSecurityManager.disable=false -Dorg.freeplane.main.application.FreeplaneStarter.headless=false -Dorg.osgi.framework.bundle.parent=app -Dorg.freeplane.nosplash=false &quot;-Dorg.freeplane.builtin.scripts.dir=${workspace_loc:freeplane_plugin_script/scripts}&quot; &quot;-Dorg.freeplane.globalresourcedir=${workspace_loc:freeplane/src/external/resources}&quot;"/>
1413 <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:freeplane_debughelper}/../BIN"/>
1514 <stringAttribute key="yk-options" value="&#13;&#10;additional-options2=onexit\=snapshot&#13;&#10;startup=0&#13;&#10;"/>
1615 </launchConfiguration>
1313 permission java.security.AllPermission;
1414 };
1515
16 // Allow to use javac from tools.jar
17 grant codeBase "file:${java.home}/../lib/tools.jar" {
18 permission java.security.AllPermission;
19 };
20
21 grant codeBase "file:/usr/share/java/java-atk-wrapper.jar" {
22 permission java.security.AllPermission;
23 };
24
1625 grant codeBase "file:/usr/lib64/java-atk-wrapper/java-atk-wrapper.jar" {
1726 permission java.security.AllPermission;
1827 };
00 import org.apache.tools.ant.filters.*
1 import org.apache.tools.ant.taskdefs.condition.Os
12
23 configurations{
34 mergedApiDependency
4243 filter(FixCrLfFilter.class, eol:FixCrLfFilter.CrLf.newInstance("lf"))
4344 }
4445
46 ext {launch4jDir = 'C:/Program Files (x86)/Launch4j'}
47
48 task createExeFiles {
49 dependsOn 'makeKnopflerfischPermissionDirs'
50 onlyIf { Os.isFamily(Os.FAMILY_WINDOWS) && file(launch4jDir).exists()}
51 inputs.dir('launch4j')
52 outputs.files("${globalBin}/freeplane.exe", "${globalBin}/freeplaneConsole.exe")
53 doLast {
54 ant.taskdef(name: 'launch4j',
55 classname: 'net.sf.launch4j.ant.Launch4jTask',
56 classpath: "${launch4jDir}/launch4j.jar:${launch4jDir}/lib/xstream.jar")
57 ant.launch4j (
58 configFile: 'launch4j/freeplaneGui.lj4.xml',
59 outfile: "${globalBin}/freeplane.exe"
60 )
61 ant.launch4j (
62 configFile: 'launch4j/freeplaneConsole.lj4.xml',
63 outfile: "${globalBin}/freeplaneConsole.exe"
64 )
65 }
66 }
67
4568 task copyLauncherStuff(type: Copy) {
46 dependsOn 'copyFreeplaneShellScript'
69 dependsOn 'copyFreeplaneShellScript', 'createExeFiles'
4770 from('script/') {
4871 include('*')
4972 exclude('freeplane.sh')
1717 <path>%FREEPLANE_JAVA_HOME%</path>
1818 <bundledJre64Bit>false</bundledJre64Bit>
1919 <bundledJreAsFallback>false</bundledJreAsFallback>
20 <minVersion>1.7.0</minVersion>
20 <minVersion>1.8.0</minVersion>
2121 <maxVersion></maxVersion>
2222 <jdkPreference>preferJre</jdkPreference>
2323 <runtimeBits>64/32</runtimeBits>
1717 <path>%FREEPLANE_JAVA_HOME%</path>
1818 <bundledJre64Bit>false</bundledJre64Bit>
1919 <bundledJreAsFallback>false</bundledJreAsFallback>
20 <minVersion>1.7.0</minVersion>
20 <minVersion>1.8.0</minVersion>
2121 <maxVersion></maxVersion>
2222 <jdkPreference>preferJre</jdkPreference>
2323 <runtimeBits>64/32</runtimeBits>
freeplane_framework/out/production/classes/org/freeplane/launcher/Launcher$1.class less more
Binary diff not shown
freeplane_framework/out/production/classes/org/freeplane/launcher/Launcher$2.class less more
Binary diff not shown
freeplane_framework/out/production/classes/org/freeplane/launcher/Launcher.class less more
Binary diff not shown
freeplane_framework/out/production/classes/org/freeplane/launcher/Utils.class less more
Binary diff not shown
freeplane_framework/out/test/classes/org/freeplane/launcher/TestApp.class less more
Binary diff not shown
33
44 grant codeBase "file:${org.freeplane.os.lib.ext}/*" {
55 permission java.security.AllPermission;
6 };
7
8 // Allow to use javac from tools.jar
9 grant codeBase "file:${java.home}/../lib/tools.jar" {
10 permission java.security.AllPermission;
11 };
12
13 grant codeBase "file:/usr/share/java/java-atk-wrapper.jar" {
14 permission java.security.AllPermission;
615 };
716
817 grant codeBase "file:/usr/lib64/java-atk-wrapper/java-atk-wrapper.jar" {
174174
175175
176176 /**
177 * This method can be used to shutdown embedded Freeplane instance.
177 * The method should be call on application exit to shutdown embedded Freeplane instance.
178 *
179 * No Freeplane objects may be used after the shutdown is called.
180 * It destroys some class loaders and invalidates all related classes and objects.
178181 */
179182 public void shutdown(){
180183 if(framework != null)
1919 private static void createNewMindMap(File freeplaneInstallationDirectory, final File newMapFile) {
2020 final Launcher launcher = Launcher.createForInstallation(freeplaneInstallationDirectory).disableSecurityManager();
2121 HeadlessMapCreator mapCreator = launcher.launchHeadless();
22 final Map map = mapCreator.load(TestApp.class.getResource("/templateFile.mm")).unsetMapLocation().getMap();
22 final Map map = mapCreator.mapLoader(TestApp.class.getResource("/templateFile.mm")).unsetMapLocation().load();
2323 final Node childNode = map.getRoot().createChild();
2424 String value = "hello world";
2525 childNode.setText(value);
1010 ; Predrag Cuklin 18/06/2009 - Universial Version
1111 ;****************************************************************************
1212
13 #define MyVersion "1.7.2"
13 #define MyVersion "1.7.5"
1414 #define MyStatus ""
1515 #define MyAppName "Freeplane"
1616 #define MyAppPublisher "Open source"
2222 ; Do not use the same AppId value in installers for other applications.
2323 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
2424 AppId={{D3941722-C4DD-4509-88C4-0E87F675A859}
25 AppCopyright=Copyright © 2000-2018 Freeplane team and others
25 AppCopyright=Copyright © 2000-2019 Freeplane team and others
2626 AppName={#MyAppName}
2727 AppPublisher={#MyAppPublisher}
2828 AppPublisherURL={#MyAppURL}
2020 EULAVersion=1
2121
2222 [Version]
23 PackageVersion=1.7.2.1
24 DisplayVersion=1.7.2
23 PackageVersion=1.7.5.1
24 DisplayVersion=1.7.5
2525
2626 [SpecialPaths]
2727 Plugins=NONE
00 import org.apache.tools.ant.taskdefs.condition.Os;
1
2 repositories {
3 maven {url 'http://devel.uji.es/nexus/content/repositories/releases/'}
4 }
15
26 dependencies {
37 compile (project(':freeplane')) {
48 transitive = false
59 }
10
11 compileOnly 'com.apple:applejavaextensions:1.5.4'
612 }
7 targetCompatibility='1.7'
8 sourceCompatibility='1.7'
913
10 compileJava.onlyIf { Os.isFamily(Os.FAMILY_MAC) && Boolean.getBoolean('compileMacChanges')}
14 compileJava.onlyIf { Boolean.getBoolean('compileMacChanges')}
128128 System.setProperty("org.freeplane.param" + loadedMapCounter, filePath);
129129 } else {
130130 // Direct loading
131 getModeController().getMapController().newMap(Compat.fileToUrl(new File(filePath)));
131 getModeController().getMapController().openMap(Compat.fileToUrl(new File(filePath)));
132132 }
133133 } catch (Exception e) {
134134 LogUtils.warn(e);
146146 action.actionPerformed(null);
147147
148148 }
149 }
149 }
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/Activator$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/Activator.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/BugFormatter.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/BugReportDialogManager.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/IBugReportListener.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ManualBugReporter$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ManualBugReporter.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$2$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$2.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$3.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$4$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$4.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$LogOpener.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$SubmitRunner$1.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator$SubmitRunner.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportGenerator.class less more
Binary diff not shown
freeplane_plugin_bugreport/out/production/classes/org/freeplane/plugin/bugreport/ReportRegistry.class less more
Binary diff not shown
3030 import javax.swing.JOptionPane;
3131
3232 import org.freeplane.core.resources.ResourceController;
33 import org.freeplane.core.ui.components.resizer.UIComponentVisibilityDispatcher;
3334 import org.freeplane.core.util.FreeplaneVersion;
3435 import org.freeplane.core.util.HtmlUtils;
3536 import org.freeplane.core.util.LogUtils;
3637 import org.freeplane.core.util.TextUtils;
3738 import org.freeplane.features.mode.Controller;
38 import org.freeplane.features.ui.UIComponentVisibilityDispatcher;
3939 import org.freeplane.features.ui.ViewController;
4040
4141 public class ReportGenerator extends StreamHandler {
6060 }
6161 }
6262
63 private final static String BUG_TRACKER_REFERENCE_URL = "http://freeplane.sourceforge.net/info/bugtracker.ref.txt";
63 private final static String BUG_TRACKER_REFERENCE_URL = "https://www.freeplane.org/info/bugtracker.ref.txt";
6464 private static String BUG_TRACKER_URL = null;
6565 static boolean isDisabled = false;
6666 private static int errorCounter = 0;
256256 logButton.setText(TextUtils.format("errornumber", errorCounter));
257257 final JComponent statusBar = viewController.getStatusBar();
258258 if (!statusBar.isVisible())
259 UIComponentVisibilityDispatcher.dispatcher(statusBar).setVisible(true);
259 UIComponentVisibilityDispatcher.of(statusBar).setVisible(true);
260260 }
261261 }
262262 catch (Exception e) {
344344 final ResourceController resourceController = ResourceController.getResourceController();
345345 String option = resourceController.getProperty(OPTION, BugReportDialogManager.ASK);
346346 if (option.equals(BugReportDialogManager.ASK)) {
347 if (resourceController.getBooleanProperty("org.freeplane.plugin.bugreport.dialog.disabled"))
347 if (resourceController.getBooleanProperty("org.freeplane.plugin.bugreport.dialog.disabled") || isHeadlessMode())
348348 return BugReportDialogManager.DENIED;
349349 String question = TextUtils.getText("org.freeplane.plugin.bugreport.question");
350350 if (!question.startsWith("<html>")) {
381381 return option;
382382 }
383383
384 private boolean isHeadlessMode() {
385 return Controller.getCurrentController().getViewController().isHeadless();
386 }
387
384388 private String sendReport(final Map<String, String> reportFields) {
385389 try {
386390 // Construct data
398402 final URLConnection conn = url.openConnection();
399403 conn.setDoOutput(true);
400404 final OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
401 wr.write(data.toString());
405 final String report = data.toString();
406 wr.write(report);
402407 wr.flush();
403408 // Get the response
404409 final BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/Activator$1.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/Activator$FormulaPluginRegistration.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/Activator.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/EvaluateAllAction.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/FormulaEditor.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/FormulaPluginUtils.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/FormulaTextTransformer.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/FormulaUpdateChangeListener.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/dependencies/ActionFactory.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/dependencies/ClearDependenciesAction.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/dependencies/FormulaDependencyTracer.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/dependencies/TraceDependentsAction.class less more
Binary diff not shown
freeplane_plugin_formula/out/production/classes/org/freeplane/plugin/formula/dependencies/TracePrecedentsAction.class less more
Binary diff not shown
+0
-3
freeplane_plugin_formula/out/production/resources/org/freeplane/plugin/formula/defaults.properties less more
0 formula_disable_plugin = false
1 formula_disable_caching = false
2 formula.EvaluateAllAction.icon = /images/formula.png
+0
-17
freeplane_plugin_formula/out/production/resources/org/freeplane/plugin/formula/preferences.xml less more
0 <?xml version="1.0" encoding="UTF-8"?><preferences_structure xmlns="http://freeplane.sf.net/ui/preferences/1.0">
1 <!--
2
3 This file was generated automatically from a mindmap.
4 Do not edit this file, edit the original mindmap instead.
5
6 -->
7 <tabbed_pane>
8 <tab name="plugins">
9 <separator name="formula">
10 <boolean name="formula_disable_plugin"/>
11 <boolean name="formula_disable_caching"/>
12 <boolean name="highlight_formulas"/>
13 </separator>
14 </tab>
15 </tabbed_pane>
16 </preferences_structure>
1818 */
1919 package org.freeplane.plugin.formula;
2020
21 import java.awt.BorderLayout;
22 import java.awt.Color;
23 import java.awt.Dimension;
24 import java.awt.Font;
25 import java.awt.Rectangle;
2126 import java.awt.event.KeyEvent;
27 import java.io.PrintWriter;
28 import java.io.StringWriter;
2229
30 import javax.swing.Box;
31 import javax.swing.JDialog;
2332 import javax.swing.JEditorPane;
33 import javax.swing.JScrollPane;
34 import javax.swing.JTextArea;
2435 import javax.swing.RootPaneContainer;
2536
37 import org.freeplane.core.ui.components.UITools;
38 import org.freeplane.core.ui.components.resizer.JResizer.Direction;
2639 import org.freeplane.features.explorer.MapExplorerController;
2740 import org.freeplane.features.map.NodeModel;
2841 import org.freeplane.features.text.mindmapmode.EditNodeDialog;
42 import org.freeplane.plugin.script.ExecuteScriptException;
43 import org.freeplane.plugin.script.FormulaUtils;
2944 import org.freeplane.view.swing.ui.mindmapmode.GlassPaneManager;
3045 import org.freeplane.view.swing.ui.mindmapmode.INodeSelector;
3146
6075 }
6176
6277 @Override
78 protected void configureDialog(JDialog dialog) {
79 addPreviewPane(dialog);
80 }
81
82 private void addPreviewPane(JDialog dialog) {
83 String content = getText();
84 try {
85 FormulaUtils.evalIfScript(getNode(), content);
86 }
87 catch (ExecuteScriptException e) {
88 final StringWriter out = new StringWriter();
89 try(PrintWriter writer = new PrintWriter(out)) {
90 e.printStackTrace(writer);
91 }
92 final JTextArea exceptionView = new JTextArea(out.toString());
93 exceptionView.setBackground(Color.LIGHT_GRAY);
94 exceptionView.setForeground(Color.RED.darker());
95 final Font font = textEditor.getFont();
96 exceptionView.setFont(font.deriveFont(font.getSize2D() * 0.8f));
97 exceptionView.setEditable(false);
98 final JScrollPane scrollPane = new JScrollPane(exceptionView, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
99 final Rectangle availableScreenBounds = UITools.getAvailableScreenBounds(UITools.getCurrentRootComponent());
100 final Dimension maximumSize = new Dimension(availableScreenBounds.width * 3 / 4, Integer.MAX_VALUE);
101 final Dimension preferredSize = scrollPane.getPreferredSize();
102 preferredSize.width = Math.min(preferredSize.width, maximumSize.width);
103 scrollPane.setPreferredSize(preferredSize);
104 final Box resisablePreview = Direction.RIGHT.createBox(scrollPane);
105 dialog.add(resisablePreview, BorderLayout.EAST);
106 }
107 }
108
109 @Override
63110 public void nodeSelected(final NodeModel node) {
111 final String replacement;
112 if(isCaretInsideStringToken())
113 replacement = mapExplorer.getNodeReferenceSuggestion(node);
114 else
115 replacement = createReference(node);
116 textEditor.replaceSelection(replacement);
117 textEditor.requestFocus();
118 }
119
120 private String createReference(final NodeModel node) {
121 if(node == getNode())
122 return "node";
123 else if(! mapExplorer.isGlobal(node))
124 return node.getID();
125 final String alias = mapExplorer.getAlias(node);
126 if(alias.isEmpty())
127 return node.getID();
128 else
129 return "at(':~" + alias + "')";
130 }
131
132 @Override
133 public void tableRowSelected(NodeModel node, String rowName) {
134 if(isCaretInsideStringToken())
135 return;
136 final String replacement = createReference(node) + "['" + rowName + "']";
137 textEditor.replaceSelection(replacement);
138 textEditor.requestFocus();
139 }
140
141 private boolean isCaretInsideStringToken() {
64142 final int caretPosition = textEditor.getCaretPosition();
65143 SyntaxDocument document = (SyntaxDocument) textEditor.getDocument();
66144 final Token token = document.getTokenAt(caretPosition);
67 final String replacement;
68 if(TokenType.isString(token))
69 replacement = mapExplorer.getNodeReferenceSuggestion(node);
70 else
71 replacement = node.getID();
72 textEditor.replaceSelection(replacement);
73 textEditor.requestFocus();
74 }
145 final boolean caretInsideStringToken = TokenType.isString(token);
146 return caretInsideStringToken;
147 }
148
149
75150 }
1010 import org.freeplane.core.extension.IExtension;
1111 import org.freeplane.core.util.Pair;
1212 import org.freeplane.features.attribute.AttributeController;
13 import org.freeplane.features.attribute.AttributeSelection;
1314 import org.freeplane.features.attribute.NodeAttribute;
1415 import org.freeplane.features.filter.FilterController;
1516 import org.freeplane.features.link.ConnectorArrows;
6061 tracedValues = highlighedElements.getElements();
6162 searchStrategy = strategy;
6263 connectors = Connectors.of(configurable);
63 if (tracedValues == null) {
64 final boolean dependenciesFoundInFirstSearchIteration;
65 final boolean isFirstSearchIteration = tracedValues == null;
66 if (isFirstSearchIteration) {
6467 highlighedElements.clear();
6568 configurable.computeIfAbsent(Connectors.class, Connectors::new).clear();
66 final NodeAttribute attribute = AttributeController.getSelectedAttribute();
67 if (attribute != null) {
68 highlighedElements.add(attribute.attribute);
69 accessedValues = findDependencies(attribute);
69 final AttributeSelection attributeSelection = AttributeController.getAttributeSelection();
70 if (! attributeSelection.isEmpty()) {
71 attributeSelection.nodeAttributeStream().map(NodeAttribute::attribute).forEach(highlighedElements::add);
72 accessedValues = attributeSelection.nodeAttributeStream().map(this::findDependencies).flatMap(Collection::stream).collect(Collectors.toSet());
7073 } else {
7174 final NodeModel node = Controller.getCurrentController().getSelection().getSelected();
7275 highlighedElements.add(node);
7376 accessedValues = findDependencies(node);
7477 }
78 dependenciesFoundInFirstSearchIteration = ! accessedValues.isEmpty();
7579 } else {
7680 accessedValues = tracedValues.stream().map(this::findDependencies).flatMap(Collection::stream).collect(Collectors.toSet());
81 dependenciesFoundInFirstSearchIteration = true;
7782 }
7883 saveAccessedValuesForNextIteration(accessedValues);
7984 highlightAttributes(accessedValues);
8085 showConnectors(accessedValues);
8186 configurable.refresh();
87 if(! dependenciesFoundInFirstSearchIteration)
88 tracedValues = null;
8289 highlighedElements = null;
8390 connectors = null;
8491 }
freeplane_plugin_jsyntaxpane/out/production/classes/jsyntaxpane/lexers/LaTeXLexer.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/jsyntaxpane/syntaxkits/LaTeXSyntaxKit.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/Activator$1.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/Activator.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/NodeIdHighLighter$1$1.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/NodeIdHighLighter$1.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/NodeIdHighLighter$Status.class less more
Binary diff not shown
freeplane_plugin_jsyntaxpane/out/production/classes/org/freeplane/plugin/jsyntaxpane/NodeIdHighLighter.class less more
Binary diff not shown
+0
-27
freeplane_plugin_jsyntaxpane/out/production/resources/META-INF/services/jsyntaxpane/kitsfortypes.properties less more
0 # This file contains the default content types and the SyntaxKit class names
1 # that will be used for them.
2 # The keys are content types, and the values are the fully qualified class
3 # names
4 text/c=jsyntaxpane.syntaxkits.CSyntaxKit
5 text/cpp=jsyntaxpane.syntaxkits.CppSyntaxKit
6 text/java=jsyntaxpane.syntaxkits.JavaSyntaxKit
7 text/groovy=jsyntaxpane.syntaxkits.GroovySyntaxKit
8 text/javascript=jsyntaxpane.syntaxkits.JavaScriptSyntaxKit
9 text/js=jsyntaxpane.syntaxkits.JavaScriptSyntaxKit
10 text/json=jsyntaxpane.syntaxkits.JavaScriptSyntaxKit
11 text/xml=jsyntaxpane.syntaxkits.XmlSyntaxKit
12 text/sql=jsyntaxpane.syntaxkits.SqlSyntaxKit
13 text/properties=jsyntaxpane.syntaxkits.PropertiesSyntaxKit
14 text/python=jsyntaxpane.syntaxkits.PythonSyntaxKit
15 text/tal=jsyntaxpane.syntaxkits.TALSyntaxKit
16 text/jflex=jsyntaxpane.syntaxkits.JFlexSyntaxKit
17 text/ruby=jsyntaxpane.syntaxkits.RubySyntaxKit
18 text/scala=jsyntaxpane.syntaxkits.ScalaSyntaxKit
19 text/clojure=jsyntaxpane.syntaxkits.ClojureSyntaxKit
20 text/dosbatch=jsyntaxpane.syntaxkits.DOSBatchSyntaxKit
21 text/bash=jsyntaxpane.syntaxkits.BashSyntaxKit
22 text/xpath=jsyntaxpane.syntaxkits.XPathSyntaxKit
23 text/xhtml=jsyntaxpane.syntaxkits.XHTMLSyntaxKit
24 text/lua=jsyntaxpane.syntaxkits.LuaSyntaxKit
25 text/plain=jsyntaxpane.syntaxkits.PlainSyntaxKit
26 text/latex=jsyntaxpane.syntaxkits.LaTeXSyntaxKit
+0
-68
freeplane_plugin_jsyntaxpane/out/production/resources/META-INF/services/jsyntaxpane/syntaxkits/groovysyntaxkit/combocompletions.txt less more
0 // @ExecutionModes(on_single_node)
1 // @ExecutionModes(on_selected_node)
2 // @ExecutionModes(on_selected_node_recursively)
3 addConnectorTo(|)
4 appendBranch(|)
5 appendChild(|)
6 attributes
7 children
8 children.collect{ | }
9 children.each{ | }
10 children.sum(|){ }
11 connectorsIn
12 connectorsIn.collect{ | }
13 connectorsIn.each{ | }
14 connectorsIn.sum(|){ }
15 connectorsOut
16 connectorsOut.collect{ | }
17 connectorsOut.each{ | }
18 connectorsOut.sum(|){ }
19 createChild(|)
20 createdAt
21 dateTime
22 def
23 delete(|)
24 details
25 detailsText
26 externalObject
27 find(|)
28 findAll(|)
29 findAllDepthFirst(|)
30 folded
31 format
32 getAt(|)
33 getChildPosition(|)
34 getNodeLevel(|)
35 hasStyle(|)
36 hideDetails
37 htmlUtils
38 icons
39 id
40 import
41 isDescendantOf(|)
42 lastModifiedAt
43 leaf
44 left
45 link
46 logger
47 map
48 moveTo(|)
49 node
50 nodeID
51 note
52 noteText
53 object
54 parent
55 parentNode
56 plainText
57 plainTextContent
58 putAt(|)
59 removeConnector(|)
60 root
61 style
62 text
63 textUtils
64 to
65 ui
66 value
67 visible
+0
-29
freeplane_plugin_jsyntaxpane/out/production/resources/META-INF/services/jsyntaxpane/syntaxkits/latexsyntaxkit/config.properties less more
0 Action.toggle-comments = jsyntaxpane.actions.ToggleCommentsAction, control SLASH
1 Action.toggle-comments.LineComments = "% "
2
3 Components = jsyntaxpane.components.PairsMarker, \
4 jsyntaxpane.components.LineNumbersRuler, \
5 jsyntaxpane.components.TokenMarker
6
7 TokenMarker.TokenTypes = IDENTIFIER, TYPE, TYPE2, TYPE3
8 TokenMarker.Color = #FFFFAA
9
10 #Style.COMMENT = 0x666666, 2
11 #Style.COMMENT2 = 0x666666, 3
12 #Style.WARNING = 0x000000, 2
13
14 Style.IDENTIFIER = 0x0000CC, 0
15 # IDENTIFIER in math mode:
16 Style.TYPE = 0x0000CC, 2
17 Style.OPERATOR = 0xFF0000, 1
18 # OPERATOR in math mode:
19 Style.TYPE3 = 0xFF0000, 2
20 Style.KEYWORD = 0x0000CC, 1
21 # KEYWORD in math mode:
22 Style.KEYWORD2 = 0x0000CC, 3
23 Style.DEFAULT = 0x202020, 0
24 # DEFAULT in math mode:
25 Style.TYPE2 = 0x202020, 2
26 Style.NUMBER = 0x20CC20, 0
27 # NUMBER in math mode:
28 Style.STRING = 0x20CC20, 2
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/Activator$1.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/Activator.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/DeleteLatexAction.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/EditLatexAction.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/InsertLatexAction.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexEditor.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexExtension.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexFormat.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexNodeHook$1.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexNodeHook.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexRenderer$TargetMode.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexRenderer.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexViewer$1.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LatexViewer.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LegacyLatexEditor$1.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LegacyLatexEditor$DialogCloser.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/LegacyLatexEditor.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/TeXText.class less more
Binary diff not shown
freeplane_plugin_latex/out/production/classes/org/freeplane/plugin/latex/UnparsedLatexFormat.class less more
Binary diff not shown
+0
-12
freeplane_plugin_latex/out/production/resources/org/freeplane/plugin/latex/preferences.xml less more
0 <?xml version="1.0" encoding="UTF-8"?><preferences_structure xmlns="http://freeplane.sf.net/ui/preferences/1.0">
1 <tabbed_pane>
2 <tab name="plugins">
3 <separator name="latex">
4 <textbox name="latex_macros" lines="5"/>
5 <font name="latex_editor_font"/>
6 <number name="latex_editor_font_size" min="4" max="216"/>
7 <boolean name="latex_disable_editor"/>
8 </separator>
9 </tab>
10 </tabbed_pane>
11 </preferences_structure>
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/Activator$1.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/Activator.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/LocationChoosenListener.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsExtension.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsLocation.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsNodeHook$1.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsNodeHook$2.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsNodeHook.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsRegistration$1.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/OpenMapsRegistration.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/actions/InsertOpenMapsAction.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/actions/RemoveOpenMapsAction.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/actions/ViewOpenMapsAction.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/mapelements/OpenMapsController.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/mapelements/OpenMapsDialog.class less more
Binary diff not shown
freeplane_plugin_openmaps/out/production/classes/org/freeplane/plugin/openmaps/mapelements/OpenMapsViewer.class less more
Binary diff not shown
1313 private static final int WIDTH = 800;
1414
1515 public OpenMapsViewer () {
16 super(new MemoryTileCache(), 4);
16 super(new MemoryTileCache());
1717 this.setPreferredSize(new Dimension(WIDTH, HEIGHT));
1818 }
1919
1414 exclude group:'org.codehaus.groovy', module:'groovy-cli-picocli'
1515 }
1616 runtime 'org.codehaus.groovy:groovy-dateutil:2.5.4'
17 runtime 'org.apache.ivy:ivy:2.4.0'
1718
1819 }
1920
7071
7172 javadoc {
7273 enabled = true
74
75 title = "Freeplane API ${project.version}"
7376
7477 source = fileTree(dir: 'src/main/java')
7578 .include('**/Proxy.java')
freeplane_plugin_script/out/production/classes/groovy/runtime/metaclass/java/lang/StringMetaClass.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/Activator$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/Activator.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/CachedResult.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/CompileTimeStrategy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/CompiledFiles.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ConcurrentCache$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ConcurrentCache.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/CyclicScriptReferenceException.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/DependencyHighlighter$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/DependencyHighlighter.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ExecuteScriptAction$ExecutionMode.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ExecuteScriptAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ExecuteScriptException.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ExecuteScriptForAllNodes.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ExecuteScriptForSelectionAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FileScriptSpecification.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FormulaCache.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FormulaDependencies.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FormulaThreadLocalStack$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FormulaThreadLocalStack.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FormulaUtils.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FreeplaneScriptBaseClass$ConfigProperties.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/FreeplaneScriptBaseClass.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GenericScript$ScriptSource.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GenericScript.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyScript$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyScript$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyScript.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyShell$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyShell$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/GroovyShell.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/IFreeplaneScriptErrorHandler.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/IScript.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/InternationalizedSecurityManager.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/MyGroovyClassLoader$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/MyGroovyClassLoader$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/MyGroovyClassLoader$MyInnerLoader.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/MyGroovyClassLoader.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/NodeArithmeticsCategory.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/NodeScript.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptClassLoader$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptClassLoader$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptClassLoader$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptClassLoader.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptComboBoxEditor$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptComboBoxEditor.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptCompiler.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptContext.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditor$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditor$AttributeHolder.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditor$NodeScriptModel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditor.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$5.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$CancelAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$ExitAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$IScriptModel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$NewScriptAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$ResultFieldStream.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$RunAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$ScriptHolder.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel$SignAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorPanel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorProperty.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptEditorWindowConfigurationStorage.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptRenderer.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptResources$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptResources.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptRunner.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptSecurity.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptSpecification.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingConfiguration$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingConfiguration.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingEngine.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingGuiConfiguration$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingGuiConfiguration$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingGuiConfiguration$ScriptMetaData.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingGuiConfiguration.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingMenuEntryVisitor$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingMenuEntryVisitor$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingMenuEntryVisitor.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingMenuUtils.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingPermissions.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingPolicy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$5.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$6.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration$ScriptModel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingRegistration.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/ScriptingSecurityManager.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/SignedScriptHandler$ScriptContents.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/SignedScriptHandler.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/StringScriptSpecification.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/UniqueStack.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnDetailsPanel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnInstallerPanel$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnInstallerPanel$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnInstallerPanel$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnInstallerPanel$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddOnInstallerPanel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/AddonRenderer.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ButtonsInCellRenderer.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsAction.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsDialog$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsDialog$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsDialog.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$5.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel$AddOnTableModel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ManageAddOnsPanel.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ScriptAddOnProperties$Script.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/addons/ScriptAddOnProperties.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/DependenciesBuilder.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/DependencySearchStrategy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/DependentsSearchStrategy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/EvaluationDependencies$Access.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/EvaluationDependencies$DependentNodeReferences.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/EvaluationDependencies.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/PrecedentsSearchStrategy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/dependencies/RelatedElements.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/filter/ScriptCondition.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/filter/ScriptConditionController.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/AbstractProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/AttributesProxy$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/AttributesProxy$2$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/AttributesProxy$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/AttributesProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/CloudProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConnectorInListProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConnectorIterator.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConnectorOutListProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConnectorProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ControllerProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConversionException.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Convertible.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleDate.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleHtmlText.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleNodeText.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleNoteText.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleNumber.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ConvertibleText.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/DependencyLookupProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/EdgeProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ExternalObjectProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/FileScriptProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/FontProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/IconsProxy$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/IconsProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/LinkProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/LoaderProxy$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/LoaderProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/MapProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy$5.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/NodeStyleProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/PropertiesProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Attributes.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$AttributesRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Cloud.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Connector.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$ConnectorRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Controller.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$ControllerRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$DependencyLookup.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Edge.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$EdgeRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$ExternalObject.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$ExternalObjectRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Font.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$FontRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Icons.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$IconsRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Link.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$LinkRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Loader.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Map.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$MapRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Node.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$NodeRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$NodeStyle.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$NodeStyleRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Properties.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$Reminder.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy$ReminderRO.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/Proxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyFactory$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyFactory.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils$2.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils$3.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils$4.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils$5.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ProxyUtils.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ReminderProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ScriptApiTest$1.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ScriptApiTest$TestException.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ScriptApiTest.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ScriptProxy.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/ScriptUtils.class less more
Binary diff not shown
freeplane_plugin_script/out/production/classes/org/freeplane/plugin/script/proxy/StringScriptProxy.class less more
Binary diff not shown
+0
-10
freeplane_plugin_script/out/production/resources/org/freeplane/plugin/script/defaults.properties less more
0 execute_scripts_without_asking =
1 execute_scripts_without_file_restriction = false
2 execute_scripts_without_write_restriction = false
3 execute_scripts_without_network_restriction = false
4 execute_scripts_without_exec_restriction = false
5 signed_script_are_trusted = true
6 script_user_key_name_for_signing = FreeplaneScriptKey
7 script_directories =
8 script_classpath =
9 compiled_script_cache_size=200
+0
-22
freeplane_plugin_script/out/production/resources/org/freeplane/plugin/script/preferences.xml less more
0 <?xml version="1.0" encoding="UTF-8"?><preferences_structure xmlns="http://freeplane.sf.net/ui/preferences/1.0">
1 <tabbed_pane>
2 <tab name="plugins">
3 <separator name="scripting">
4 <remind_value name="execute_scripts_without_asking"/>
5 <boolean name="execute_scripts_without_file_restriction"/>
6 <boolean name="execute_scripts_without_write_restriction"/>
7 <boolean name="execute_scripts_without_network_restriction"/>
8 <boolean name="execute_scripts_without_exec_restriction"/>
9 <boolean name="signed_script_are_trusted"/>
10 <string name="script_user_key_name_for_signing"/>
11 <string name="script_compilation_disabled_extensions"/>
12 <string name="script_directories"/>
13 <string name="script_classpath"/>
14 <number name = "compiled_script_cache_size" min = "0"/>
15 <boolean name="compile_only_changed_script_files"/>
16 <font name="groovy_editor_font"/>
17 <number name="groovy_editor_font_size" min="4" max="216"/>
18 </separator>
19 </tab>
20 </tabbed_pane>
21 </preferences_structure>
freeplane_plugin_script/out/test/classes/org/freeplane/plugin/script/CompiledFilesSpec$1.class less more
Binary diff not shown
freeplane_plugin_script/out/test/classes/org/freeplane/plugin/script/CompiledFilesSpec.class less more
Binary diff not shown
2323 URI getApiLink(String path) {
2424 try {
2525 def apiBase = path.startsWith('org/freeplane') ? freeplaneApiBase
26 : 'http://groovy.codehaus.org/groovy-jdk'
26 : 'http://docs.groovy-lang.org/latest/html/groovy-jdk'
2727 return new URI(apiBase + '/' + path)
2828 } catch (Exception e) {
2929 logger.severe("could not create link for class ${path}", e)
6262 classNode.style.font.bold = true
6363 clazz.getMethods().findAll {
6464 it.declaringClass == clazz || it.declaringClass.simpleName.endsWith('RO') ||
65 it.declaringClass.getPackage().name == org.freeplane.api.Node.class.getPackage().name
65 it.declaringClass.getPackage().name == org.freeplane.api.Node.class.getPackage().name
6666 }.each {
6767 if (!addProperty(memberMap, it))
6868 addMethod(memberMap, it);
106106 // property
107107 def mode = (attribs['type_read'] ? 'r' : '') + (attribs['type_write'] ? 'w' : '')
108108 def type = attribs['type_read'] ? attribs['type_read'] : attribs['type_write']
109 // if (mode == 'rw' && attribs['type_read'] != attribs['type_write']) {
110 // logger.severe("property ${memberName} has differing getter and setter types")
111 // }
109 // if (mode == 'rw' && attribs['type_read'] != attribs['type_write']) {
110 // logger.severe("property ${memberName} has differing getter and setter types")
111 // }
112112 memberNode = classNode.createChild(formatProperty(memberName, formatReturnType(type), mode))
113113 memberNode.icons.add('wizard')
114114 [ 'method_read', 'method_write' ].each {
118118 }
119119 }
120120 }
121 if (attribs['deprecated']) {
122 memberNode.icons.add('closed')
123 }
121124 return memberNode
122125 }
123126
133136 propertyMap['type_read'] = method.returnType
134137 propertyMap['method_read'] = method
135138 propertyMap['return_type'] = method.returnType
139 propertyMap['deprecated'] = isDeprecated(method)
136140 }
137141 else if (isSetter(method) && method.parameterTypes.size() == 1) {
138142 def propertyMap = getOrCreatePropertiesMap(memberMap, getPropertyName(method))
148152 propertyMap['types'] = method.parameterTypes
149153 propertyMap['method'] = formatMethod(method)
150154 propertyMap['return_type'] = method.returnType
155 propertyMap['deprecated'] = isDeprecated(method)
151156 }
152157
153158 def formatProperty(String property, String type, String mode) {
154159 return "<html><body><b>${property}</b>: ${type} (${mode})"
155160 // Plain text:
156 // return "${property}: ${type} (${mode})"
161 // return "${property}: ${type} (${mode})"
157162 }
158163
159164 def formatMethodKey(Method method) {
160 return method.name +
161 '(' + method.parameterTypes.collect{ typeToString(it) }.join(', ') + ')'
165 return method.name +
166 '(' + method.parameterTypes.collect{ typeToString(it) }.join(', ') + ')'
162167
163168 }
164169
170175
171176
172177 def formatParameter(parameter) {
173 def parameterType = formatParameterType(parameter.type)
174 if(parameterType)
175 parameterType + ' ' + parameter.name;
176 else
177 parameter.name;
178 def parameterType = formatParameterType(parameter.type)
179 if(parameterType)
180 parameterType + ' ' + parameter.name;
181 else
182 parameter.name;
178183 }
179184
180185 def formatReturnType(Class clazz) {
181 def parameterType = formatParameterType(clazz)
182 if(parameterType)
183 parameterType;
184 else
185 clazz.simpleName;
186 def parameterType = formatParameterType(clazz)
187 if(parameterType)
188 parameterType;
189 else
190 clazz.simpleName;
186191 }
187192
188193 def formatMethod(Method method) {
189 def parameters = method.metaClass.respondsTo(method, "getParameters") ? method.getParameters().collect{ formatParameter(it) } : method.parameterTypes.collect{ formatParameterType(it) }
194 def parameters = method.metaClass.respondsTo(method, "getParameters") ? method.getParameters().collect{ formatParameter(it) } : method.parameterTypes.collect{ formatParameterType(it) }
190195 return '<html><body>' + formatReturnType(method.returnType) +
191196 ' <b>' + method.name + '</b>' +
192197 '(' + parameters.join(', ') + ')'
198203
199204 def isSetter(Method method) {
200205 return method.name =~ '^set[A-Z].*'
206 }
207
208 def isDeprecated(Method method) {
209 return method.isAnnotationPresent(Deprecated.class)
201210 }
202211
203212 /** returns null if this is not a proper bean method name (get/set/is). */
287296
288297 def legend = newMap.root.createChild(LEGEND_NODE)
289298 initHeading(legend)
290 def methodLegend = legend.createChild("normal methods have a 'bookmark' icon")
299 def methodLegend = legend.createChild("Normal methods have a 'bookmark' icon")
291300 methodLegend.icons.add('bookmark')
292301 methodLegend.folded = true
293302 def propertyLegend = legend.createChild("Groovy properties have a 'wizard' icon")
301310 createChild('if (node.leaf)\n println "the id of this leaf node is " + node.id')
302311 propertyLegend.createChild("write-only and read-write properties are indicated by a trailing (w) or (rw)").
303312 createChild('node.text += " some suffix"')
304 propertyLegend.createChild("properties with differing type of setter and getter have two nodes")
305 legend.folded = true
313 propertyLegend.createChild("Properties with differing type of setter and getter have two nodes")
314 propertyLegend.folded = true
315 def deprecatedLegend = legend.createChild("Deprecated methods have a 'closed' icon.")
316 deprecatedLegend.createChild("Follow the class' link to the detailed API description to find out what to use instead.")
317 deprecatedLegend.icons.add('closed')
318 deprecatedLegend.folded = true
306319
307320 c.deactivateUndo()
308321 newMap.saved = true
0 package groovy.runtime.metaclass.groovy.grape;
1
2 import java.security.AccessController;
3 import java.security.PrivilegedAction;
4 import java.util.Map;
5
6 import groovy.lang.DelegatingMetaClass;
7 import groovy.lang.MetaClass;
8 import org.codehaus.groovy.reflection.ReflectionUtils;
9
10 public class GrapeMetaClass extends DelegatingMetaClass {
11 public GrapeMetaClass(MetaClass delegate) {
12 super(delegate);
13 }
14
15 @Override
16 public Object invokeStaticMethod(Object object, String methodName, Object[] arguments) {
17 if (methodName.equals("grab")
18 && arguments.length > 1
19 && (arguments[0] instanceof Map)) {
20 return AccessController.doPrivileged(new PrivilegedAction<Object>() {
21 @Override
22 public Object run() {
23 final Map map = (Map) arguments[0];
24 if (map.get("refObject") == null && map.get("classLoader") == null) {
25 final Class callingClass = ReflectionUtils.getCallingClass(2);
26 final ClassLoader classLoader = callingClass.getClassLoader();
27 map.put("classLoader", classLoader);
28 }
29 return GrapeMetaClass.super.invokeStaticMethod(object, methodName, arguments);
30 }
31 });
32 }
33 else
34 return GrapeMetaClass.super.invokeStaticMethod(object, methodName, arguments);
35 }
36 }
3232 final Controller controller = Controller.getCurrentController();
3333 if (controller.getMap() != nodeScript.node.getMap())
3434 return;
35 final List<NodeScript> cycle = FormulaThreadLocalStack.INSTANCE.findCycle(nodeScript);
35 final List<NodeScript> cycle = FormulaThreadLocalStacks.INSTANCE.findCycle(nodeScript);
3636 if (cycle.isEmpty())
3737 return;
3838 showCycle(cycle);
2626 import org.freeplane.core.ui.AFreeplaneAction;
2727 import org.freeplane.core.util.LogUtils;
2828 import org.freeplane.features.map.IMapSelection;
29 import org.freeplane.features.map.MapController;
3029 import org.freeplane.features.map.NodeModel;
3130 import org.freeplane.features.mode.Controller;
32 import org.freeplane.features.mode.ModeController;
3331 import org.freeplane.features.mode.mindmapmode.MModeController;
3432
3533 /**
5957 super(ExecuteScriptAction.makeMenuItemKey(scriptName, mode), menuItemName, null);
6058 this.scriptFile = new File(scriptFile);
6159 this.mode = mode;
60 this.setIcon(getIconKey());
6261 final IScript script = ScriptingEngine.createScript(this.scriptFile, permissions, true);
6362 scriptRunner = new ScriptRunner(script);
6463 }
124123 }
125124
126125 private void executeScriptRecursive(final NodeModel node) {
127 ModeController modeController = Controller.getCurrentModeController();
128 MapController r = modeController.getMapController();
129126 final NodeModel[] children = node.getChildren()
130127 .toArray(new NodeModel[] {});
131128 for (final NodeModel child : children) {
+0
-53
freeplane_plugin_script/src/main/java/org/freeplane/plugin/script/FormulaThreadLocalStack.java less more
0 package org.freeplane.plugin.script;
1
2 import java.util.ArrayList;
3 import java.util.List;
4
5 import org.apache.commons.lang.StringUtils;
6 import org.freeplane.core.util.HtmlUtils;
7 import org.freeplane.core.util.LogUtils;
8 import org.freeplane.features.map.NodeModel;
9
10 public class FormulaThreadLocalStack {
11
12 private FormulaThreadLocalStack() {
13
14 }
15 private final ThreadLocal<UniqueStack<NodeScript>> stack =
16 new ThreadLocal<UniqueStack<NodeScript>>() {
17 @Override protected UniqueStack<NodeScript> initialValue() {
18 return new UniqueStack<NodeScript>();
19 }
20 };
21 public static final FormulaThreadLocalStack INSTANCE = new FormulaThreadLocalStack();
22
23 private UniqueStack<NodeScript> stack() {
24 return stack.get();
25 }
26
27 public boolean push(NodeScript nodeScript) {
28 final boolean success = stack().push(nodeScript);
29 if (!success) {
30 LogUtils.warn("Circular reference detected! Traceback (innermost last):\n " //
31 + stackTrace(nodeScript));
32 }
33 return success;
34 }
35
36 public void pop() {
37 stack().pop();
38 }
39
40 private String stackTrace(NodeScript nodeScript) {
41 ArrayList<String> entries = new ArrayList<String>(stack().size());
42 for (NodeScript node : stack()) {
43 entries.add(node.format(nodeScript));
44 }
45 entries.add(nodeScript.format(nodeScript));
46 return StringUtils.join(entries.iterator(), "\n -> ");
47 }
48
49 public List<NodeScript> findCycle(NodeScript nodeScript) {
50 return stack().findCycle(nodeScript);
51 }
52 }
0 package org.freeplane.plugin.script;
1
2 import java.util.ArrayList;
3 import java.util.List;
4 import java.util.function.Supplier;
5
6 import org.apache.commons.lang.StringUtils;
7 import org.freeplane.core.util.LogUtils;
8
9 public class FormulaThreadLocalStacks {
10
11 private FormulaThreadLocalStacks() {
12
13 }
14
15 private final ThreadLocal<UniqueStack> stack = new ThreadLocal<UniqueStack>() {
16 @Override
17 protected UniqueStack initialValue() {
18 return new UniqueStack();
19 }
20 };
21 public static final FormulaThreadLocalStacks INSTANCE = new FormulaThreadLocalStacks();
22
23 private UniqueStack stack() {
24 return stack.get();
25 }
26
27 public ScriptContext getCurrentContext() {
28 return stack().getCurrentContext();
29 }
30
31 public boolean push(final ScriptContext scriptContext) {
32 final boolean success = stack().push(scriptContext);
33 if (!success && ! ignoresCycles()) {
34 LogUtils.warn("Circular reference detected! Traceback (innermost last):\n " //
35 + stackTrace(scriptContext.getNodeScript()));
36 }
37 return success;
38 }
39
40 public void pop() {
41 stack().pop();
42 }
43
44 private String stackTrace(final NodeScript nodeScript) {
45 final ArrayList<String> entries = new ArrayList<String>(stack().size());
46 for (final NodeScript node : stack()) {
47 entries.add(node.format(nodeScript));
48 }
49 entries.add(nodeScript.format(nodeScript));
50 return StringUtils.join(entries.iterator(), "\n -> ");
51 }
52
53 public List<NodeScript> findCycle(final NodeScript nodeScript) {
54 return stack().findCycle(nodeScript);
55 }
56
57 public <T> T ignoreCycles(final Supplier<T> closure) {
58 return stack().ignoreCycles(closure);
59 }
60
61 public boolean ignoresCycles() {
62 return stack().ignoreCycles();
63 }
64 }
2323 public static Object evalIfScript(final NodeModel nodeModel, final String text){
2424 if (textContainsFormula(text)) {
2525 final String script = scriptOf(text);
26 return eval(nodeModel, script);
26 return executeScript(nodeModel, script);
2727 }
2828 else {
2929 return text;
7373 /** evaluate text as a script.
7474 * @return the evaluation result.
7575 * @throws ExecuteScriptException */
76 private static Object eval(final NodeModel nodeModel, final String script) {
76 public static Object executeScript(final NodeModel nodeModel, final String script) {
7777 final NodeScript nodeScript = new NodeScript(nodeModel, script);
7878 final ScriptContext scriptContext = new ScriptContext(nodeScript);
7979 final ScriptingPermissions restrictedPermissions = ScriptingPermissions.getFormulaPermissions();
8282 Object value = formulaCache.getOrThrowCachedResult(nodeScript);
8383 if (value == null) {
8484 try {
85 value = evaluateLoggingExceptions(nodeScript, scriptContext, restrictedPermissions);
85 value = evaluateLoggingExceptions(scriptContext, restrictedPermissions);
8686 formulaCache.put(nodeScript, new CachedResult(value, scriptContext.getRelatedElements()));
8787 }
8888 catch (final ExecuteScriptException e) {
9393 return value;
9494 }
9595 else {
96 return evaluateLoggingExceptions(nodeScript, scriptContext, restrictedPermissions);
96 return evaluateLoggingExceptions(scriptContext, restrictedPermissions);
9797 }
9898 }
9999
100 private static Object evaluateLoggingExceptions(final NodeScript nodeScript, final ScriptContext scriptContext,
101 final ScriptingPermissions restrictedPermissions) {
100 private static Object evaluateLoggingExceptions(final ScriptContext scriptContext,
101 final ScriptingPermissions restrictedPermissions) {
102102 try {
103 return evaluateCheckingForCyclesAndNonNullResult(nodeScript, scriptContext, restrictedPermissions);
103 return evaluateCheckingForCyclesAndNonNullResult(scriptContext, restrictedPermissions);
104104 }
105105 catch (final ExecuteScriptException e) {
106 final NodeScript nodeScript = scriptContext.getNodeScript();
106107 final NodeModel node = nodeScript.node;
107108 final URL url = node.getMap().getURL();
108109 String nodeLocation = url != null ? url.toString() : "Unsaved map ";
113114 }
114115 }
115116
116 private static Object evaluateCheckingForCyclesAndNonNullResult(final NodeScript nodeScript,
117 final ScriptContext scriptContext,
117 private static Object evaluateCheckingForCyclesAndNonNullResult(final ScriptContext scriptContext,
118118 final ScriptingPermissions restrictedPermissions) {
119 if (!FormulaThreadLocalStack.INSTANCE.push(nodeScript)) {
119 final NodeScript nodeScript = scriptContext.getNodeScript();
120 if (!FormulaThreadLocalStacks.INSTANCE.push(scriptContext)) {
121 if(FormulaThreadLocalStacks.INSTANCE.ignoresCycles())
122 return 0;
120123 showCyclicDependency(nodeScript);
121124 final String message = TextUtils.format("formula.error.circularReference",
125 nodeScript.node.getID(),
122126 HtmlUtils.htmlToPlain(nodeScript.script));
123 Controller.getCurrentController().getViewController().out(message);
127 Controller.getCurrentController().getViewController().out(TextUtils.getShortText(message, 80, "..."));
124128 throw new ExecuteScriptException(new CyclicScriptReferenceException(message));
125129 }
126130 try {
131135 return value;
132136 }
133137 finally {
134 FormulaThreadLocalStack.INSTANCE.pop();
138 FormulaThreadLocalStacks.INSTANCE.pop();
135139 }
136140 }
137141
139143 final Controller controller = Controller.getCurrentController();
140144 if (controller.getMap() != nodeScript.node.getMap())
141145 return;
142 final List<NodeScript> cycle = FormulaThreadLocalStack.INSTANCE.findCycle(nodeScript);
146 final List<NodeScript> cycle = FormulaThreadLocalStacks.INSTANCE.findCycle(nodeScript);
143147 final Configurable configurable = controller.getMapViewManager().getMapViewConfiguration();
144148 final DependencyHighlighter dependencyHighlighter = new DependencyHighlighter(LinkController.getController(),
145149 configurable);
148152 }
149153
150154 public static RelatedElements getRelatedElements(final NodeModel node, final Object object) {
151 if (FormulaUtils.containsFormula(object)) {
155 if (FormulaCache.ENABLE_CACHING && FormulaUtils.containsFormula(object)) {
152156 final RelatedElements accessedValues = FormulaCache.of(node.getMap()).getAccessedValues(node,
153157 scriptOf((String) object));
154158 if (accessedValues != null)
171175 }
172176
173177 public static void evaluateOutdatedFormulas(MapModel map) {
174 evaluateAllRecursively(map.getRootNode());
178 cacheAllRecursively(map.getRootNode());
175179 }
176180
177 static private void evaluateAllRecursively(NodeModel node) {
178 evaluateObject(node, node.getUserObject());
181 static private void cacheAllRecursively(NodeModel node) {
182 cacheIfFormula(node, node.getUserObject());
179183 NodeAttributeTableModel attributeTableModel = node.getExtension(NodeAttributeTableModel.class);
180184 if(attributeTableModel != null)
181 attributeTableModel.getAttributes().stream().forEach(a -> evaluateObject(node, a.getValue()));
182 node.getChildren().stream().forEach(FormulaUtils::evaluateAllRecursively);
185 attributeTableModel.getAttributes().stream().forEach(a -> cacheIfFormula(node, a.getValue()));
186 node.getChildren().stream().forEach(FormulaUtils::cacheAllRecursively);
183187 }
184188
185 static private void evaluateObject(NodeModel node, Object userObject) {
189 public static void cacheIfFormula(NodeModel node, Object maybeFormula) {
186190 try {
187 if (FormulaUtils.containsFormula(userObject)){
188 FormulaUtils.evalIfScript(node, (String) userObject);
191 if (maybeFormula instanceof String){
192 FormulaUtils.evalIfScript(node, (String) maybeFormula);
189193 }
190194 } catch (Exception e) {
191195 }
192196 }
197
193198 }
66 import java.util.ResourceBundle;
77 import java.util.regex.Pattern;
88
9 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
9 import groovy.lang.*;
1010 import org.codehaus.groovy.runtime.InvokerHelper;
1111 import org.freeplane.api.ControllerRO;
1212 import org.freeplane.api.NodeRO;
2424 import org.freeplane.features.map.NodeModel;
2525 import org.freeplane.plugin.script.proxy.AbstractProxy;
2626 import org.freeplane.plugin.script.proxy.Convertible;
27
28 import groovy.lang.MetaClass;
29 import groovy.lang.MissingMethodException;
30 import groovy.lang.MissingPropertyException;
31 import groovy.lang.Script;
3227
3328 /** All methods of this class are available as "global" methods in every script.
3429 * Only documented methods are meant to be used in scripts.
109104 public FreeplaneScriptBaseClass() {
110105 super();
111106 nodeMetaClass = InvokerHelper.getMetaClass(NodeRO.class);
112 DefaultGroovyMethods.mixin(Number.class, NodeArithmeticsCategory.class);
113 }
114
115 void updateBoundVariables() {
107 updateBoundVariables();
108 }
109
110 @Override
111 public void setBinding(Binding binding) {
112 super.setBinding(binding);
113 updateBoundVariables();
114 }
115
116
117 private void updateBoundVariables() {
116118 boundVariables = getBinding().getVariables();
117119 final Object boundScript = boundVariables.remove("script");
118120 if(boundScript != null)
2323 import java.io.OutputStream;
2424 import java.io.OutputStreamWriter;
2525 import java.io.PrintStream;
26 import java.security.AccessController;
27 import java.security.PrivilegedAction;
2628 import java.util.List;
2729
2830 import javax.script.Bindings;
161163 final PrintStream oldOut = System.out;
162164 ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
163165 try {
164 final ScriptingSecurityManager scriptingSecurityManager = createScriptingSecurityManager(outStream);
165 scriptClassLoader.setSecurityManager(scriptingSecurityManager);
166 AccessController.doPrivileged(new PrivilegedAction<Void>() {
167
168 @Override
169 public Void run() {
170 final ScriptingSecurityManager scriptingSecurityManager = createScriptingSecurityManager(outStream);
171 scriptClassLoader.setSecurityManager(scriptingSecurityManager);
172 return null;
173 }
174 });
166175 Thread.currentThread().setContextClassLoader(scriptClassLoader);
167176 final SimpleScriptContext context = createScriptContext(node, scriptContext, outStream);
168177 if (compilationEnabled && engine instanceof Compilable) {
3232 import org.codehaus.groovy.ast.ASTNode;
3333 import org.codehaus.groovy.ast.ModuleNode;
3434 import org.codehaus.groovy.control.CompilerConfiguration;
35 import org.codehaus.groovy.control.customizers.ImportCustomizer;
3536 import org.codehaus.groovy.runtime.InvokerHelper;
3637 import org.freeplane.features.map.IMapSelection;
3738 import org.freeplane.features.map.NodeModel;
4142 import groovy.lang.Binding;
4243 import groovy.lang.GroovyRuntimeException;
4344 import groovy.lang.Script;
45 import org.freeplane.plugin.script.proxy.ScriptUtils;
4446
4547 /**
4648 * Special scripting implementation for Groovy.
139141 }
140142
141143 private void trustedCompileAndCache(PrintStream outStream) throws Throwable {
142 final ScriptingSecurityManager scriptingSecurityManager = createScriptingSecurityManager(outStream);
143 AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
144 AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
144145
145146 @Override
146147 public Void run() throws PrivilegedActionException {
147148 try {
149 final ScriptingSecurityManager scriptingSecurityManager = createScriptingSecurityManager(outStream);
148150 compileAndCache(scriptingSecurityManager);
149151 } catch (Exception e) {
150152 throw new PrivilegedActionException(e);
220222 for (Entry<String, Object> entry : ScriptingConfiguration.getStaticProperties().entrySet()) {
221223 binding.setProperty(entry.getKey(), entry.getValue());
222224 }
223 compiledScript.updateBoundVariables();
225 compiledScript.setBinding(binding);
224226 }
225227
226228 private Binding createBindingForCompilation() {
252254 if (!(ScriptResources.getClasspath() == null || ScriptResources.getClasspath().isEmpty())) {
253255 config.setClasspathList(ScriptResources.getClasspath());
254256 }
257 final ImportCustomizer importCustomizer = new ImportCustomizer();
258 importCustomizer.addStaticImport(ScriptUtils.class.getName(), "ignoreCycles");
259 config.addCompilationCustomizers(importCustomizer);
255260 return config;
256261 }
257262
1818
1919 import java.io.File;
2020 import java.io.IOException;
21 import java.security.AccessController;
22 import java.security.CodeSource;
23 import java.security.PermissionCollection;
24 import java.security.Permissions;
25 import java.security.PrivilegedAction;
21 import java.security.*;
2622
2723 import org.codehaus.groovy.control.CompilationFailedException;
2824 import org.codehaus.groovy.control.CompilationUnit;
2925 import org.codehaus.groovy.control.CompilerConfiguration;
3026 import org.codehaus.groovy.control.SourceUnit;
27 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
3128 import org.codehaus.groovy.runtime.InvokerHelper;
3229
33 import groovy.lang.Binding;
34 import groovy.lang.GroovyClassLoader;
35 import groovy.lang.GroovyCodeSource;
36 import groovy.lang.GroovyObjectSupport;
37 import groovy.lang.GroovyRuntimeException;
38 import groovy.lang.Script;
30 import groovy.lang.*;
3931
4032 /**
4133 * Represents a groovy shell capable of running arbitrary groovy scripts
4638 * @version $Revision$
4739 */
4840 class GroovyShell extends GroovyObjectSupport {
41 static {
42 DefaultGroovyMethods.mixin(Number.class, NodeArithmeticsCategory.class);
43 }
44
4945 private static final String DEFAULT_CODE_BASE = "/groovy/shell";
50 private Binding binding;
46 private final Binding binding;
5147 private int counter;
52 private CompilerConfiguration config;
53 private GroovyClassLoader loader;
48 private final CompilerConfiguration config;
49 private final GroovyClassLoader loader;
5450
55 GroovyShell(ClassLoader parent, Binding binding, final CompilerConfiguration config) {
51 GroovyShell(final ClassLoader parent, final Binding binding, final CompilerConfiguration config) {
5652 if (binding == null) {
5753 throw new IllegalArgumentException("Binding must not be null.");
5854 }
6056 throw new IllegalArgumentException("Compiler configuration must not be null.");
6157 }
6258 final ClassLoader parentLoader = (parent != null) ? parent : GroovyShell.class.getClassLoader();
63 this.loader = AccessController.doPrivileged(new PrivilegedAction<GroovyClassLoader>() {
59 loader = AccessController.doPrivileged(new PrivilegedAction<GroovyClassLoader>() {
6460 @Override
6561 public GroovyClassLoader run() {
6662 return new MyGroovyClassLoader(parentLoader, config);
7268
7369
7470 @Override
75 public Object getProperty(String property) {
71 public Object getProperty(final String property) {
7672 Object answer = getVariable(property);
7773 if (answer == null) {
7874 answer = super.getProperty(property);
8177 }
8278
8379 @Override
84 public void setProperty(String property, Object newValue) {
80 public void setProperty(final String property, final Object newValue) {
8581 setVariable(property, newValue);
8682 try {
8783 super.setProperty(property, newValue);
8884 }
89 catch (GroovyRuntimeException e) {
85 catch (final GroovyRuntimeException e) {
9086 // ignore, was probably a dynamic property
9187 }
9288 }
9389
94 private Object getVariable(String name) {
90 private Object getVariable(final String name) {
9591 return binding.getVariables().get(name);
9692 }
9793
98 private void setVariable(String name, Object value) {
94 private void setVariable(final String name, final Object value) {
9995 binding.setVariable(name, value);
10096 }
10197
124120 *
125121 * @param file is the file of the script (which is used to create the class name of the script)
126122 */
127 Script parse(File file) throws CompilationFailedException, IOException {
123 Script parse(final File file) throws CompilationFailedException, IOException {
128124 return parse(new GroovyCodeSource(file, config.getSourceEncoding()));
129125 }
130126
133129 *
134130 * @param scriptText the text of the script
135131 */
136 Script parse(String scriptText) throws CompilationFailedException {
132 Script parse(final String scriptText) throws CompilationFailedException {
137133 return parse(scriptText, generateScriptName());
138134 }
139135
140136 private Script parse(final String scriptText, final String fileName) throws CompilationFailedException {
141 GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
137 final GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
142138 @Override
143139 public GroovyCodeSource run() {
144140 return new GroovyCodeSource(scriptText, fileName, DEFAULT_CODE_BASE);
153149 }
154150
155151 class MyGroovyClassLoader extends GroovyClassLoader {
156 MyGroovyClassLoader(ClassLoader loader, CompilerConfiguration config) {
152 MyGroovyClassLoader(final ClassLoader loader, final CompilerConfiguration config) {
157153 super(loader, config);
158154 }
159155
160156 class MyInnerLoader extends InnerLoader {
161157 private final MyGroovyClassLoader delegate;
162158
163 MyInnerLoader(MyGroovyClassLoader delegate) {
159 MyInnerLoader(final MyGroovyClassLoader delegate) {
164160 super(delegate);
165161 this.delegate = delegate;
166162 }
167163
168164 @Override
169 protected PermissionCollection getPermissions(CodeSource codeSource) {
165 protected PermissionCollection getPermissions(final CodeSource codeSource) {
170166 return delegate.getPermissions(codeSource);
171167 }
172168 }
173169
174170 @Override
175 protected PermissionCollection getPermissions(CodeSource codeSource) {
176 PermissionCollection perms = new Permissions();
171 protected PermissionCollection getPermissions(final CodeSource codeSource) {
172 final PermissionCollection perms = new Permissions();
177173 perms.setReadOnly();
178174 return perms;
179175 }
185181 * @return the ClassCollector
186182 */
187183 @Override
188 protected ClassCollector createCollector(CompilationUnit unit, SourceUnit su) {
189 InnerLoader loader = AccessController.doPrivileged(new PrivilegedAction<InnerLoader>() {
184 protected ClassCollector createCollector(final CompilationUnit unit, final SourceUnit su) {
185 final InnerLoader loader = AccessController.doPrivileged(new PrivilegedAction<InnerLoader>() {
190186 @Override
191187 public InnerLoader run() {
192188 return new MyInnerLoader(MyGroovyClassLoader.this);
44 import java.net.URL;
55 import java.net.URLClassLoader;
66 import java.security.AccessController;
7 import java.security.AllPermission;
78 import java.security.Permission;
89 import java.security.PrivilegedAction;
910 import java.security.PrivilegedActionException;
1213 import java.util.Enumeration;
1314 import java.util.List;
1415
16 import groovy.lang.GroovyClassLoader;
1517 import org.freeplane.api.Script;
1618 import org.freeplane.core.util.ClassLoaderFactory;
1719
18 public final class ScriptClassLoader extends URLClassLoader {
20 public final class ScriptClassLoader extends GroovyClassLoader {
21 private static final Permission ALL_PERMISSION = new AllPermission();
1922 private ScriptingSecurityManager securityManager = null;
2023
2124 public static ScriptClassLoader createClassLoader() {
3942 }
4043
4144 private ScriptClassLoader(URL[] urls, ClassLoader parent) {
42 super(urls, parent);
45 super(parent);
46 for(URL url :urls)
47 addURL(url);
4348 }
49
4450
4551 @Override
4652 public URL getResource(final String name) {
47 return AccessController.doPrivileged(
48 new PrivilegedAction<URL>() {
53 return AccessController.doPrivileged(new PrivilegedAction<URL>() {
4954 @Override
5055 public URL run(){
5156 return superGetResource(name);
8186 @Override
8287 protected Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
8388 try {
84 return AccessController.doPrivileged(
85 new PrivilegedExceptionAction<Class<?>>() {
89 return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<?>>() {
8690 @Override
8791 public Class<?> run() throws ClassNotFoundException{
8892 return superLoadClass(name, resolve);
99103 }
100104
101105 public void setSecurityManager(ScriptingSecurityManager securityManager) {
102 if(this.securityManager != null && ! this.securityManager.equals(securityManager))
103 throw new IllegalStateException("Security manager is already set");
106 if(System.getSecurityManager() != null)
107 AccessController.checkPermission(ALL_PERMISSION);
104108 this.securityManager = securityManager;
105109 }
106110
2727 private final GroovyClassLoader compilerClassLoader;
2828 private CompiledFiles oldCompiledFiles;
2929 private boolean compileOnlyChangedScriptFiles;
30
30
3131
3232
3333 public ScriptCompiler() {
5454 compileOnlyChangedScriptFiles = ResourceController.getResourceController().getBooleanProperty(COMPILE_ONLY_CHANGED_SCRIPT_FILES);
5555 for (String pathElement : pathElements) {
5656 final File dir = new File(pathElement);
57 if (dir.isDirectory()) {
57 if (dir.isDirectory() && ! compiledScriptsDir.equals(dir)) {
5858 final Collection<File> compiledScripts = compileScriptsInDirectory(dir);
5959 newCompiledFiles.addAll(compiledScripts);
6060 }
1717
1818 public ScriptContext(NodeScript nodeScript) {
1919 this.nodeScript = nodeScript;
20 this.relatedElements = new RelatedElements(nodeScript.node);
20 this.relatedElements = nodeScript != null ? new RelatedElements(nodeScript.node) : null;
21 }
22
23 public NodeScript getNodeScript() {
24 return nodeScript;
2125 }
2226
2327 public URL getBaseUrl() {
5256 return new URL(baseUrl, path);
5357 }
5458 else
55 throw new IllegalStateException("Can not use relative URL without base URL");
59 return file.getAbsoluteFile().toURL();
5660 }
5761 }
5862 catch (MalformedURLException e) {
2828 import org.freeplane.core.ui.components.UITools;
2929 import org.freeplane.core.util.TextUtils;
3030 import org.freeplane.features.attribute.NodeAttributeTableModel;
31 import org.freeplane.features.map.MapController;
3231 import org.freeplane.features.map.NodeModel;
33 import org.freeplane.features.mode.Controller;
34 import org.freeplane.features.mode.ModeController;
3532
3633 /**
3734 * @author foltin
129126 }
130127
131128 static void performScriptOperationRecursive(final NodeModel node) {
132 ModeController modeController = Controller.getCurrentModeController();
133 MapController r = modeController.getMapController();
134129 for (final NodeModel child : node.getChildren()) {
135130 performScriptOperationRecursive(child);
136131 }
5858 class ScriptingGuiConfiguration {
5959 private static final ExecutionMode DEFAULT_EXECUTION_MODE = ExecutionMode.ON_SELECTED_NODE;
6060 static class ScriptMetaData {
61 static private final Pattern EXECUTION_MODE_ANNOTATION ;
62 static private final Pattern EXECUTION_MODE_DEFINITIONS ;
63 static {
64 final String modeName = StringUtils.join(ExecutionMode.values(), "|");
65 final String modeDef = "(?:ExecutionMode\\.)?(" + modeName + ")(?:=\"([^]\"]+)(?:\\[([^]\"]+)\\])?\")?";
66 final String modeDefs = "(?:" + modeDef + ",?)+";
67 EXECUTION_MODE_ANNOTATION = makeCaseInsensitivePattern("@ExecutionModes\\(\\{(" + modeDefs + ")\\}\\)");
68 EXECUTION_MODE_DEFINITIONS = makeCaseInsensitivePattern(modeDef);
69
70 }
6171 private final TreeMap<ExecutionMode, String> executionModeLocationMap = new TreeMap<ExecutionMode, String>();
6272 private final TreeMap<ExecutionMode, String> executionModeTitleKeyMap = new TreeMap<ExecutionMode, String>();
6373 private final String scriptName;
6474 private ScriptingPermissions permissions;
6575
76 ScriptMetaData(String scriptName, String content) {
77 this(scriptName);
78 configure(content);
79 }
80
6681 ScriptMetaData(final String scriptName) {
6782 this.scriptName = scriptName;
6883 }
84
85 private void configure(final String content) {
86
87 final Matcher mOuter = EXECUTION_MODE_ANNOTATION.matcher(content.replaceAll("\\s+", ""));
88 if (!mOuter.find()) {
89 addExecutionMode(DEFAULT_EXECUTION_MODE, null, null);
90 return;
91 }
92 final String[] locations = mOuter.group(1).split(",");
93 for (String match : locations) {
94 final Matcher m = EXECUTION_MODE_DEFINITIONS.matcher(match);
95 if (m.matches()) {
96 // System.err.println(getScriptName() + ":" + m.group(1) + "->" + m.group(2) + "->" + m.group(3));
97 addExecutionMode(ExecutionMode.valueOf(m.group(1).toUpperCase(Locale.ENGLISH)), m.group(2),
98 m.group(3));
99 }
100 else {
101 LogUtils.severe("script " + getScriptName() + ": not a menu location: '" + match + "'");
102 continue;
103 }
104 }
105 }
106
69107
70108 public Set<ExecutionMode> getExecutionModes() {
71109 return executionModeLocationMap.keySet();
301339
302340 private ScriptMetaData createMetaData(final File file, final String scriptName,
303341 final Script scriptConfig) throws IOException {
304 return scriptConfig == null ? analyseScriptContent(FileUtils.slurpFile(file), scriptName) //
342 return scriptConfig == null ? new ScriptMetaData(scriptName, FileUtils.slurpFile(file)) //
305343 : createMetaData(scriptName, scriptConfig);
306344 }
307
308 // not private to enable tests
309 ScriptMetaData analyseScriptContent(final String content, final String scriptName) {
310 final ScriptMetaData metaData = new ScriptMetaData(scriptName);
311 setExecutionModes(content, metaData);
312 return metaData;
313 }
314345
315346 private ScriptMetaData createMetaData(final String scriptName, final Script scriptConfig) {
316347 final ScriptMetaData metaData = new ScriptMetaData(scriptName);
317348 metaData.addExecutionMode(scriptConfig.executionMode, scriptConfig.menuLocation, scriptConfig.menuTitleKey);
318349 metaData.setPermissions(scriptConfig.permissions);
319350 return metaData;
320 }
321
322 public static void setExecutionModes(final String content, final ScriptMetaData metaData) {
323 final String modeName = StringUtils.join(ExecutionMode.values(), "|");
324 final String modeDef = "(?:ExecutionMode\\.)?(" + modeName + ")(?:=\"([^]\"]+)(?:\\[([^]\"]+)\\])?\")?";
325 final String modeDefs = "(?:" + modeDef + ",?)+";
326 final Pattern pOuter = makeCaseInsensitivePattern("@ExecutionModes\\(\\{(" + modeDefs + ")\\}\\)");
327 final Matcher mOuter = pOuter.matcher(content.replaceAll("\\s+", ""));
328 if (!mOuter.find()) {
329 metaData.addExecutionMode(DEFAULT_EXECUTION_MODE, null, null);
330 // System.err.println(metaData.getScriptName() + ": '" + pOuter + "' did not match "
331 // + content.replaceAll("\\s+", ""));
332 return;
333 }
334 final Pattern pattern = makeCaseInsensitivePattern(modeDef);
335 final String[] locations = mOuter.group(1).split(",");
336 for (String match : locations) {
337 final Matcher m = pattern.matcher(match);
338 if (m.matches()) {
339 // System.err.println(metaData.getScriptName() + ":" + m.group(1) + "->" + m.group(2) + "->" + m.group(3));
340 metaData.addExecutionMode(ExecutionMode.valueOf(m.group(1).toUpperCase(Locale.ENGLISH)), m.group(2),
341 m.group(3));
342 }
343 else {
344 LogUtils.severe("script " + metaData.getScriptName() + ": not a menu location: '" + match + "'");
345 continue;
346 }
347 }
348351 }
349352
350353 /** some beautification: remove directory and suffix + make first letter uppercase. */
2626
2727 /** menuTitle may either be a scriptName or a translation key. */
2828 public static String scriptNameToMenuItemTitle(final String scriptName) {
29 final String translation = TextUtils.getText(scriptName, null);
29 final String translation = TextUtils.getText(scriptName, TextUtils.getText("addons." + scriptName, null));
3030 if (translation != null) {
3131 return translation;
3232 }
6161 import org.freeplane.plugin.script.addons.ManageAddOnsDialog;
6262 import org.freeplane.plugin.script.addons.ScriptAddOnProperties;
6363 import org.freeplane.plugin.script.filter.ScriptConditionController;
64 import org.freeplane.plugin.script.help.OpenApiDocumentationAction;
6465
6566 class ScriptingRegistration {
6667 final private class ScriptModel implements IScriptModel {
188189 modeController.addAction(new ScriptEditor());
189190 modeController.addAction(new ExecuteScriptForAllNodes());
190191 modeController.addAction(new ExecuteScriptForSelectionAction());
192 modeController.addAction(new OpenApiDocumentationAction());
191193 final ManageAddOnsAction manageAddOnsAction = new ManageAddOnsAction();
192194 modeController.addAction(manageAddOnsAction);
193195 modeController.addExtension(AddOnInstaller.class, new AddOnInstaller() {
00 package org.freeplane.plugin.script;
11
22 import java.util.*;
3 import java.util.function.Supplier;
34
45 /** A minimal implementation of a stack that may contain an element only once - not threadsafe.
56 * The stack may contains null but note that null is used by {@link #pop()} to signal an empty stack. */
6 public class UniqueStack<T> implements Iterable<T> {
7 private final ArrayList<T> stack = new ArrayList<T>(8);
8 private final HashSet<T> set = new HashSet<T>(8);
7 public class UniqueStack implements Iterable<NodeScript> {
8 private final ArrayList<NodeScript> nodeScriptStack = new ArrayList<>(8);
9 private final ArrayList<ScriptContext> scriptContextStack = new ArrayList<>(8);
10 private final HashSet<NodeScript> set = new HashSet<>(8);
11 private boolean ignoreCycles;
912
1013 /** creates an empty stack. */
11 public UniqueStack() {
12 }
13
14 /** initializes the stack with a single element. */
15 public UniqueStack(final T t) {
16 push(t);
14 UniqueStack() {
1715 }
1816
1917 /** returns true only if the element was actually added. */
20 public boolean push(final T t) {
21 if (set.add(t)) {
22 stack.add(t);
18 boolean push(final ScriptContext scriptContext) {
19 final NodeScript nodeScript = scriptContext.getNodeScript();
20 if (set.add(nodeScript)) {
21 nodeScriptStack.add(nodeScript);
22 scriptContextStack.add(scriptContext);
2323 return true;
2424 }
2525 return false;
2626 }
2727
2828 /** returns the last element in the stack or null if it is empty. */
29 public T pop() {
30 if (stack.isEmpty()) {
31 return null;
32 }
33 else {
34 final T last = stack.remove(stack.size() - 1);
29 void pop() {
30 if (!scriptContextStack.isEmpty()) {
31 scriptContextStack.remove(scriptContextStack.size() - 1);
32 final NodeScript last = nodeScriptStack.remove(nodeScriptStack.size() - 1);
3533 set.remove(last);
36 return last;
3734 }
3835 }
3936
40 public T first() {
41 return stack.isEmpty() ? null : stack.get(0);
42 }
43
44 public T last() {
45 return stack.isEmpty() ? null : stack.get(stack.size() - 1);
37 ScriptContext getCurrentContext() {
38 return scriptContextStack.isEmpty() ? null : scriptContextStack.get(scriptContextStack.size() - 1);
4639 }
4740
4841 @Override
49 public Iterator<T> iterator() {
50 return stack.iterator();
42 public Iterator<NodeScript> iterator() {
43 return nodeScriptStack.iterator();
5144 }
5245
53 public int size() {
54 return stack.size();
46 int size() {
47 return nodeScriptStack.size();
5548 }
5649
5750 @Override
5851 public String toString() {
59 return stack.toString();
52 return nodeScriptStack.toString();
6053 }
6154
62 public List<T> findCycle(final T element) {
55 List<NodeScript> findCycle(final NodeScript element) {
6356 if (set.contains(element)) {
64 final int cycleBegin = stack.lastIndexOf(element);
65 final ArrayList<T> cycle = new ArrayList<>(stack.size() - cycleBegin + 1);
66 cycle.addAll(stack.subList(cycleBegin, stack.size()));
57 final int cycleBegin = nodeScriptStack.lastIndexOf(element);
58 final ArrayList<NodeScript> cycle = new ArrayList<>(nodeScriptStack.size() - cycleBegin + 1);
59 cycle.addAll(nodeScriptStack.subList(cycleBegin, nodeScriptStack.size()));
6760 cycle.add(element);
6861 return cycle;
6962 }
7063 else
7164 return Collections.emptyList();
7265 }
66
67 <V> V ignoreCycles(final Supplier<V> closure) {
68 final boolean oldSuppressWarningsOnCyclicDependencies = ignoreCycles;
69 ignoreCycles = true;
70 try {
71 return closure.get();
72 }
73 finally {
74 ignoreCycles = oldSuppressWarningsOnCyclicDependencies;
75 }
76 }
77
78 boolean ignoreCycles() {
79 return ignoreCycles;
80 }
7381 }
77 class PrecedentsSearchStrategy implements DependencySearchStrategy {
88 @Override
99 public RelatedElements find(final NodeModel node) {
10 return FormulaUtils.getRelatedElements(node, node.getUserObject());
10 final Object object = node.getUserObject();
11 return getRelatedElements(node, object);
1112 }
1213
1314 @Override
1415 public RelatedElements find(final NodeModel node, final Attribute attribute) {
15 return FormulaUtils.getRelatedElements(node, attribute.getValue());
16 final Object object = attribute.getValue();
17 return getRelatedElements(node, object);
1618 }
1719
20 private RelatedElements getRelatedElements(NodeModel node, Object maybeFormula) {
21 FormulaUtils.cacheIfFormula(node, maybeFormula);
22 return FormulaUtils.getRelatedElements(node, maybeFormula);
23 }
1824
1925 @Override
2026 public Pair<NodeModel, NodeModel> inConnectionOrder(Pair<NodeModel, NodeModel> nodePair) {
8888 public boolean checkNodeInFormulaContext(NodeModel node){
8989 NodeScript nodeScript = new NodeScript(node, source);
9090 final ScriptContext scriptContext = new ScriptContext(nodeScript);
91 if (! FormulaThreadLocalStack.INSTANCE.push(nodeScript))
91 if (! FormulaThreadLocalStacks.INSTANCE.push(scriptContext))
9292 return false;
9393 scriptRunner.setScriptContext(scriptContext);
9494 try {
9696 return checkNode;
9797 }
9898 finally {
99 FormulaThreadLocalStack.INSTANCE.pop();
99 FormulaThreadLocalStacks.INSTANCE.pop();
100100 scriptRunner.setScriptContext(null);
101101 }
102102 }
0 package org.freeplane.plugin.script.help;
1
2 import java.io.File;
3
4 import org.freeplane.core.resources.ResourceController;
5 import org.freeplane.features.help.OpenURLAction;
6
7 @SuppressWarnings("serial")
8 public class OpenApiDocumentationAction extends OpenURLAction {
9
10 public OpenApiDocumentationAction() {
11 super("OpenApiDocumentationAction", uri());
12 }
13
14 private static String uri() {
15 return new File(ResourceController.getResourceController().getInstallationBaseDir()).toURI().toString() + "/doc/api/index.html";
16 }
17 }
212212 return ProxyUtils.find(condition, currentMapRootNode(), scriptContext);
213213 }
214214
215 @Override
216 public List<? extends Node> find(boolean withAncestors, boolean withDescendants, NodeCondition condition) {
217 reportArbitraryNodeAccess();
218 return ProxyUtils.find(withAncestors, withDescendants, condition, currentMapRootNode(), scriptContext);
219 }
220
215221 private NodeModel currentMapRootNode() {
216222 return Controller.getCurrentController().getMap().getRootNode();
217223 }
219225 public List<? extends Node> find(final Closure<Boolean> closure) {
220226 reportArbitraryNodeAccess();
221227 return ProxyUtils.find(closure, currentMapRootNode(), scriptContext);
228 }
229 @Override
230 public List<? extends Node> find(boolean withAncestors, boolean withDescendants, final Closure<Boolean> closure) {
231 reportArbitraryNodeAccess();
232 return ProxyUtils.find(withAncestors, withDescendants, closure, currentMapRootNode(), scriptContext);
222233 }
223234
224235 // NodeRO: R
304315 }
305316
306317 @Override
318 public Proxy.Loader mapLoader(File file) {
319 return LoaderProxy.of(file, scriptContext);
320 }
321
322 @Override
307323 public Proxy.Loader load(File file) {
308 return LoaderProxy.of(file, scriptContext);
324 return mapLoader(file);
325 }
326
327 @Override
328 public Proxy.Loader mapLoader(URL url) {
329 return LoaderProxy.of(url, scriptContext);
309330 }
310331
311332 @Override
312333 public Proxy.Loader load(URL url) {
313 return LoaderProxy.of(url, scriptContext);
334 return mapLoader(url);
314335 }
315336
316337 @Override
319340 }
320341
321342 @Override
343 public Proxy.Loader mapLoader(String file) {
344 return mapLoader(file);
345 }
346
347 @Override
322348 public Map newMap(URL url) {
323 return load(url).withView().getMap();
349 return mapLoader(url).withView().load();
324350 }
325351
326352 @Override
327353 public Map newMapFromTemplate(File templateFile) {
328 return load(templateFile).withView().saveAfterLoading().getMap();
354 return mapLoader(templateFile).withView().saveAfterLoading().load();
329355 }
330356
331357 @Override
77
88 import org.apache.commons.lang.NotImplementedException;
99 import org.codehaus.groovy.runtime.InvokerHelper;
10 import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
1011 import org.freeplane.core.util.HtmlUtils;
1112 import org.freeplane.core.util.TextUtils;
1213 import org.freeplane.features.format.FormattedDate;
14 import org.freeplane.features.link.LinkController;
1315
1416 import groovy.lang.GroovyObjectSupport;
1517 import groovy.lang.MissingMethodException;
2224 // instead of just calling equals, which is correctly defined
2325 public class Convertible extends GroovyObjectSupport /*implements Comparable<Object>*/ implements org.freeplane.api.Convertible {
2426 private final String text;
27 private final Object object;
2528
2629 /** Use the {@code text} unchanged, i. e. oesn't evaluate formulas since this would require
2730 * a calculation rule or NodeModel.
2831 * @param text the String to convert. */
2932 public Convertible(String text) {
3033 this.text = text;
34 this.object = text;
3135 }
3236
3337 /** Use {@link Convertible#toString(Object)} to convert to String, i.e. conversion is done properly.
34 * @param text the Object to convert */
35 public Convertible(Object text) {
36 this.text = toString(text);
38 * @param object the Object to convert */
39 public Convertible(Object object) {
40 this.object = object;
41 this.text = toString(object);
3742 }
3843
3944 /** Convert to Number. All Java number literals are allowed as described by {@link Long#decode(String)}
121126 if (text == null)
122127 return null;
123128 try {
124 if (TextUtils.matchUriPattern(text))
125 return new URI(text);
129 return LinkController.createURI(text);
126130 }
127131 catch (URISyntaxException e) {
128132 // throw below
274278 return text == null ? 0 : text.hashCode();
275279 }
276280
277 /** note: if obj is a String the result is true if String.equals(text). */
278281 @Override
279282 public boolean equals(Object obj) {
280283 if (this == obj)
281284 return true;
282285 if (obj == null)
283 return text == null;
284 if (obj.getClass() == String.class && text != null)
285 return text.equals(obj);
286 return object == null;
287 if(ScriptBytecodeAdapter.compareEqual(this.object, obj))
288 return true;
286289 if (!(obj instanceof Convertible))
287290 return false;
288291 Convertible other = (Convertible) obj;
289 if (text == null) {
290 if (other.text != null)
291 return false;
292 }
293 else if (!text.equals(other.text))
294 return false;
295 return true;
292 return ScriptBytecodeAdapter.compareEqual(this.object, other.object);
296293 }
297294
298295 @Override
318315 public boolean asBoolean() {
319316 return text != null && text.length() > 0;
320317 }
318
319 @Override
320 public Object getRaw() {
321 return object;
322 }
321323 }
101101 }
102102
103103 @Override
104 public Proxy.Map getMap() {
104 public Proxy.Map load() {
105105 MapModel newMap = mapLoader.getMap();
106106 return new MapProxy(newMap, scriptContext);
107107 }
108
109 @Override
110 public Proxy.Map getMap() {
111 return load();
112 }
108113 }
3030 import org.freeplane.core.util.LogUtils;
3131 import org.freeplane.core.util.Quantity;
3232 import org.freeplane.core.util.TextUtils;
33 import org.freeplane.features.clipboard.ClipboardController;
34 import org.freeplane.features.clipboard.mindmapmode.MClipboardController;
3533 import org.freeplane.features.encrypt.Base64Coding;
3634 import org.freeplane.features.encrypt.EncryptionController;
3735 import org.freeplane.features.encrypt.PasswordStrategy;
5149 import org.freeplane.features.map.MapModel;
5250 import org.freeplane.features.map.MapNavigationUtils;
5351 import org.freeplane.features.map.NodeModel;
52 import org.freeplane.features.map.clipboard.MapClipboardController;
5453 import org.freeplane.features.map.mindmapmode.MMapController;
54 import org.freeplane.features.map.mindmapmode.clipboard.MMapClipboardController;
5555 import org.freeplane.features.mode.Controller;
5656 import org.freeplane.features.nodelocation.LocationController;
5757 import org.freeplane.features.nodelocation.mindmapmode.MLocationController;
133133 }
134134
135135 private Node appendBranchImpl(final NodeRO node, final boolean withChildren) {
136 final MClipboardController clipboardController = (MClipboardController) ClipboardController.getController();
136 final MMapClipboardController clipboardController = (MMapClipboardController) MapClipboardController.getController();
137137 final NodeModel newNodeModel = clipboardController.duplicate(((NodeProxy) node).getDelegate(), withChildren);
138138 getMapController().insertNode(newNodeModel, getDelegate());
139139 return new NodeProxy(newNodeModel, getScriptContext());
682682 return ProxyUtils.find(closure, delegate, getScriptContext());
683683 }
684684
685 // NodeRO: R
686 @Override
687 public List<? extends Node> find(boolean withAncestors, boolean withDescendants, final Closure<Boolean> closure) {
688 final NodeModel delegate = getDelegate();
689 reportBranchAccess(delegate);
690 return ProxyUtils.find(withAncestors, withDescendants, closure, delegate, getScriptContext());
691 }
692
685693 @Override
686694 public List<? extends Node> find(final NodeCondition condition) {
687695 final NodeModel delegate = getDelegate();
688696 reportBranchAccess(delegate);
689697 return ProxyUtils.find(condition, delegate, getScriptContext());
698 }
699
700 @Override
701 public List<? extends Node> find(boolean withAncestors, boolean withDescendants, final NodeCondition condition) {
702 final NodeModel delegate = getDelegate();
703 reportBranchAccess(delegate);
704 return ProxyUtils.find(withAncestors, withDescendants, condition, delegate, getScriptContext());
690705 }
691706
692707 // NodeRO: R
872887 @Override
873888 public void encrypt(final String password) {
874889 if (!isEncrypted())
875 getEncryptionController().toggleCryptState(getDelegate(), makePasswordStrategy(password));
890 getEncryptionController().toggleLock(getDelegate(), makePasswordStrategy(password));
876891 }
877892
878893 @Override
879894 public void decrypt(final String password) {
880895 if (isEncrypted())
881 getEncryptionController().toggleCryptState(getDelegate(), makePasswordStrategy(password));
896 getEncryptionController().toggleLock(getDelegate(), makePasswordStrategy(password));
882897 }
883898
884899 @Override
889904 private PasswordStrategy makePasswordStrategy(final String password) {
890905 return new PasswordStrategy() {
891906 @Override
892 public StringBuilder getPassword() {
907 public StringBuilder getPassword(NodeModel node) {
893908 return new StringBuilder(password);
894909 }
895910
896911 @Override
897 public StringBuilder getPasswordWithConfirmation() {
898 return getPassword();
912 public StringBuilder getPasswordWithConfirmation(NodeModel node) {
913 return getPassword(node);
899914 }
900915
901916 @Override
10921107
10931108 @Override
10941109 public void pasteAsClone() {
1095 final MClipboardController clipboardController = (MClipboardController) ClipboardController
1110 final MMapClipboardController clipboardController = (MMapClipboardController) MapClipboardController
10961111 .getController();
10971112 clipboardController.addClone(clipboardController.getClipboardContents(), getDelegate());
10981113 }
3333 */
3434 public interface Proxy {
3535 interface AttributesRO extends org.freeplane.api.AttributesRO{
36 /** returns the values of all attributes for which the closure returns true. The fact that the values are
36 /**
37 * returns the values of all attributes for which the closure returns true. The fact that the values are
3738 * returned as a list of {@link Convertible} enables conversion. The following formula sums all attributes
3839 * whose names are not equal to 'TOTAL':
3940 * <pre>{@code
4041 * = attributes.findValues{key, val -> key != 'TOTAL'}.sum(0){it.num0}
4142 * }</pre>
4243 * @param closure A closure that accepts two arguments (String key, Object value) and returns boolean/Boolean.
44 * @return the values of all attributes for which the closure returns true.
4345 * @since 1.2 */
4446 List<? extends Convertible> findValues(Closure<Boolean> closure);
4547 }
4749 interface Cloud extends org.freeplane.api.Cloud { }
4850
4951 interface ConnectorRO extends org.freeplane.api.ConnectorRO {
50 /**@deprecated since 1.2 - use {@link #hasEndArrow()} instead */
52 /**
53 * @return the end {@link ArrowType}
54 * @deprecated since 1.2 - use {@link #hasEndArrow()} instead */
5155 @Deprecated
5256 ArrowType getEndArrow();
5357
54 /** @deprecated since 1.2 - use {@link #hasStartArrow()} instead */
58 /**
59 * @return the start {@link ArrowType}
60 * @deprecated since 1.2 - use {@link #hasStartArrow()} instead */
5561 @Deprecated
5662 ArrowType getStartArrow();
5763 }
5864
5965 interface Connector extends ConnectorRO, org.freeplane.api.Connector {
60 /** @deprecated since 1.2 - use {@link #setEndArrow(boolean)} instead */
66 /**
67 * @param arrowType type of arrow
68 * @deprecated since 1.2 - use {@link #setEndArrow(boolean)} instead */
6169 @Deprecated
6270 void setEndArrow(ArrowType arrowType);
6371
64 /** @deprecated since 1.2 - use {@link #setStartArrow(boolean)} instead */
72 /**
73 * @param arrowType type of arrow
74 * @deprecated since 1.2 - use {@link #setStartArrow(boolean)} instead */
6575 @Deprecated
6676 void setStartArrow(ArrowType arrowType);
6777 }
90100 */
91101 List<? extends org.freeplane.api.Node> find(Closure<Boolean> closure);
92102
103 /** Starting from root node, recursively searches for nodes for which <code>condition.check(node)</code>
104 * returns true and adds their ancestor or descendant nodes if required.
105 *
106 * @since 1.7.4
107 *
108 * See {@link Controller#find(NodeCondition)} for details. */
109
110 List<? extends org.freeplane.api.Node> find(boolean withAncestors, boolean withDescendants, Closure<Boolean> closure);
111
93112 /** Starting from the root node, recursively searches for nodes for which
94113 * <code>condition.checkNode(node)</code> returns true.
114 * @param condition condition to match the search.
115 * @return the nodes which match the condition.
95116 * @deprecated since 1.2 use {@link #find(NodeCondition)} instead. */
96117 @Deprecated
97118 List<? extends org.freeplane.api.Node> find(ICondition condition);
116137
117138 @Override
118139 List<? extends org.freeplane.api.Node> find(NodeCondition condition);
140
141 @Override
142 List<? extends org.freeplane.api.Node> find(boolean withAncestors, boolean withDescendants, NodeCondition condition);
119143
120144 @Override
121145 List<? extends org.freeplane.api.Node> findAll();
137161 boolean overwriteExisting);
138162
139163 @Override
140 Proxy.Loader load(File file);
141
142 @Override
143 Proxy.Loader load(URL file);
144
145 @Override
146 Proxy.Loader load(String file);
164 Proxy.Loader mapLoader(File file);
165
166 @Override
167 Proxy.Loader mapLoader(URL file);
168
169 @Override
170 Proxy.Loader mapLoader(String file);
147171 }
148172
149173 interface Loader extends org.freeplane.api.Loader{
150174 @Override
151 Proxy.Map getMap();
175 Proxy.Map load();
152176 }
153177
154178
185209 interface NodeRO extends org.freeplane.api.NodeRO {
186210
187211 /** Starting from this node, recursively searches for nodes for which <code>closure.call(node)</code>
188 * returns true. See {@link Controller#find(Closure)} for details. */
212 * returns true.
213 *
214 * See {@link Controller#find(Closure)} for details. */
189215 List<? extends org.freeplane.api.Node> find(Closure<Boolean> closure);
216
217 /** Starting from this node, recursively searches for nodes for which <code>closure.call(node)</code>
218 * returns true.
219 *
220 * @since 1.7.4
221 *
222 * See {@link Controller#find(Closure)} for details. */
223 List<? extends org.freeplane.api.Node> find(boolean withAncestors, boolean withDescendants, Closure<Boolean> closure);
190224
191225 /** Starting from this node, recursively searches for nodes for which
192226 * <code>condition.checkNode(node)</code> returns true.
227 *
193228 * @deprecated since 1.2 use {@link #find(NodeCondition)} instead. */
194229 @Deprecated
195230 List<? extends org.freeplane.api.Node> find(ICondition condition);
1111 import java.util.Iterator;
1212 import java.util.List;
1313 import java.util.NoSuchElementException;
14 import java.util.stream.Collectors;
1415
1516 import org.freeplane.api.Node;
1617 import org.freeplane.api.NodeCondition;
18 import org.freeplane.features.filter.Filter;
1719 import org.freeplane.features.filter.condition.ASelectableCondition;
1820 import org.freeplane.features.filter.condition.ICondition;
1921 import org.freeplane.features.format.FormatController;
5759 return ProxyUtils.find(createCondition(closure, scriptContext), node, scriptContext);
5860 }
5961
62 static List<? extends Node> find(boolean withAncestors, boolean withDescendants, final Closure<Boolean> closure, final NodeModel node, final ScriptContext scriptContext) {
63 return ProxyUtils.find(withAncestors, withDescendants, createCondition(closure, scriptContext), node, scriptContext);
64 }
65
66 private static List<? extends Node> find(boolean withAncestors, boolean withDescendants, ICondition createCondition,
67 NodeModel node, ScriptContext scriptContext) {
68 final Filter filter = Filter.createOneTimeFilter(createCondition, withAncestors, withDescendants, false);
69 filter.calculateFilterResults(node);
70 final List<NodeModel> allNodes = ProxyUtils.findImpl(null, node, true);
71 return ProxyUtils.createNodeList(allNodes.stream().filter(filter::isVisible)
72 .collect(Collectors.toList()), scriptContext);
73 }
74
6075 static ICondition createCondition(final Closure<Boolean> closure, final ScriptContext scriptContext) {
6176 final ICondition condition = closure == null ? null : new ASelectableCondition() {
6277 @Override
90105
91106 static List<? extends Node> find(final NodeCondition condition, final NodeModel node, final ScriptContext scriptContext) {
92107 return ProxyUtils.find(createCondition(condition, scriptContext), node, scriptContext);
108 }
109
110 static List<? extends Node> find(boolean withAncestors, boolean withDescendants, final NodeCondition condition, final NodeModel node, final ScriptContext scriptContext) {
111 return ProxyUtils.find(withAncestors, withDescendants, createCondition(condition, scriptContext), node, scriptContext);
93112 }
94113
95114 static ICondition createCondition(final NodeCondition condition, final ScriptContext scriptContext) {
258277 }
259278
260279 private static Object createFormattedObjectIfPossible(Object object, String pattern) {
261 if (object instanceof String)
262 object = ((MTextController) TextController.getController()).guessObjectOrURI(object, pattern);
263 else if (pattern != null)
280 if (object instanceof String) {
281 final Object object1 = object;
282 final String oldFormat = pattern;
283 object = ((MTextController) TextController.getController()).guessObject(object1, oldFormat);
284 }
285 else if (pattern != null)
264286 object = FormatController.format(object, pattern);
265287 return object;
266288 }
00 package org.freeplane.plugin.script.proxy;
11
2 import java.util.function.Supplier;
3
24 import org.freeplane.features.mode.Controller;
5 import org.freeplane.plugin.script.FormulaThreadLocalStacks;
6 import org.freeplane.plugin.script.ScriptContext;
37
48 /** Various utilities for use in scripting, especially in utility scripts. */
59 public class ScriptUtils {
711 * <a href="http://freeplane.sourceforge.net/wiki/index.php?title=Your_own_utility_script_library">utility scripts</a>.
812 * @since 1.3.2_03 */
913 public static Proxy.Controller c() {
10 return new ControllerProxy(null);
14 return new ControllerProxy(getCurrentContext());
1115 }
1216
1317 /** a substitute for the binding variable 'node' in
1418 * <a href="http://freeplane.sourceforge.net/wiki/index.php?title=Your_own_utility_script_library">utility scripts</a>.
1519 * @since 1.3.2_03 */
1620 public static Proxy.Node node() {
17 return new NodeProxy(Controller.getCurrentController().getSelection().getSelected(), null);
18 }
21 return new NodeProxy(Controller.getCurrentController().getSelection().getSelected(), getCurrentContext());
22 }
23
24 private static ScriptContext getCurrentContext() {
25 return FormulaThreadLocalStacks.INSTANCE.getCurrentContext();
26 }
27
28 /**
29 * Executes given closure.
30 *
31 * If there are any cyclic dependencies formulas are skipped and no warnings or exceptions are thrown.
32 *
33 * Statically imported by default
34 *
35 * @since 1.7.4
36 */
37 public static <T> T ignoreCycles(final Supplier<T> closure) {
38 return FormulaThreadLocalStacks.INSTANCE.ignoreCycles(closure);
39 }
1940 }
0 execute_scripts_without_asking =
1 execute_scripts_without_file_restriction = false
2 execute_scripts_without_write_restriction = false
3 execute_scripts_without_network_restriction = false
4 execute_scripts_without_exec_restriction = false
5 signed_script_are_trusted = true
6 script_user_key_name_for_signing = FreeplaneScriptKey
7 script_directories =
8 script_classpath =
0 execute_scripts_without_asking=ask
1 execute_scripts_without_file_restriction= false
2 execute_scripts_without_write_restriction= false
3 execute_scripts_without_network_restriction= false
4 execute_scripts_without_exec_restriction= false
5 signed_script_are_trusted= true
6 script_user_key_name_for_signing= FreeplaneScriptKey
7 script_directories=
8 script_classpath=
99 compiled_script_cache_size=200
11 <tabbed_pane>
22 <tab name="plugins">
33 <separator name="scripting">
4 <remind_value name="execute_scripts_without_asking"/>
4 <maybe_boolean name="execute_scripts_without_asking"/>
55 <boolean name="execute_scripts_without_file_restriction"/>
66 <boolean name="execute_scripts_without_write_restriction"/>
77 <boolean name="execute_scripts_without_network_restriction"/>
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/Activator$1.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/Activator.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/ExportPdf.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/ExportSvg.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/ExportVectorGraphic.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/GradientExtensionHandler$1.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/GradientExtensionHandler.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$1.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$2.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$3.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$ViewerComponent$1.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$ViewerComponent$2.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory$ViewerComponent.class less more
Binary diff not shown
freeplane_plugin_svg/out/production/classes/org/freeplane/plugin/svg/SvgViewerFactory.class less more
Binary diff not shown
3131
3232 import org.apache.batik.dom.GenericDOMImplementation;
3333 import org.apache.batik.svggen.SVGGeneratorContext;
34 import org.apache.batik.svggen.SVGGeneratorContext.GraphicContextDefaults;
3435 import org.apache.batik.svggen.SVGGraphics2D;
35 import org.apache.batik.svggen.SVGGeneratorContext.GraphicContextDefaults;
3636 import org.apache.batik.util.SVGConstants;
3737 import org.freeplane.features.export.mindmapmode.IExportEngine;
38 import org.freeplane.features.mode.Controller;
3938 import org.freeplane.view.swing.map.MapView;
4039 import org.w3c.dom.DOMImplementation;
4140 import org.w3c.dom.Document;
4443 * @author foltin
4544 */
4645 abstract class ExportVectorGraphic implements IExportEngine {
47 /**
48 *
49 */
50 private static final long serialVersionUID = 1L;
5146
5247 /**
5348 */
00 package org.freeplane.plugin.svg;
11
2 import java.awt.Color;
23 import java.awt.Dimension;
4 import java.awt.Font;
5 import java.awt.Graphics;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
38 import java.io.IOException;
49 import java.net.MalformedURLException;
510 import java.net.URI;
11
12 import javax.swing.SwingUtilities;
13 import javax.swing.Timer;
614
715 import org.apache.batik.swing.JSVGCanvas;
816 import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
917 import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
1018 import org.apache.batik.util.SVGConstants;
1119 import org.freeplane.core.resources.ResourceController;
20 import org.freeplane.core.ui.components.UITools;
1221 import org.freeplane.core.util.TextUtils;
1322 import org.freeplane.view.swing.features.filepreview.ExternalResource;
1423 import org.freeplane.view.swing.features.filepreview.IViewerFactory;
15 import org.freeplane.view.swing.features.filepreview.ImageLoadingListener;
1624 import org.freeplane.view.swing.features.filepreview.ScalableComponent;
1725 import org.freeplane.view.swing.features.filepreview.ViewerLayoutManager;
1826 import org.w3c.dom.svg.SVGDocument;
2028 import org.w3c.dom.svg.SVGSVGElement;
2129
2230 public class SvgViewerFactory implements IViewerFactory {
31 private static final String HOURGLASS = "\u29D6";
32 private static final Font HOURGLASS_FONT = UITools.scaleUI(new Font(Font.DIALOG, Font.PLAIN, 36));
2333
2434
2535 private final class ViewerComponent extends JSVGCanvas implements ScalableComponent {
2636 private static final long serialVersionUID = 1L;
2737 private Dimension originalSize = null;
2838 private Dimension maximumSize = null;
29
39 private boolean showHourGlass;
40
41 @Override
3042 public Dimension getOriginalSize() {
3143 return new Dimension(originalSize);
3244 }
3345
46 @Override
3447 public void setFinalViewerSize(final Dimension size) {
3548 Dimension sizeWithScaleCorrection = fitToMaximumSize(size);
36 setRenderingTransform(initialTransform);
37 setPreferredSize(sizeWithScaleCorrection);
3849 setMySize(sizeWithScaleCorrection);
3950 setSize(sizeWithScaleCorrection);
4051 }
5263 return maximumSize.getWidth() >= size.width || maximumSize.getHeight() >= size.height;
5364 }
5465
66 @Override
5567 public void setDraftViewerSize(final Dimension size) {
5668 setFinalViewerSize(size);
5769 }
5870
71 @Override
5972 public void setFinalViewerSize(final float zoom) {
6073 if (originalSize != null) {
6174 int scaledWidth = (int) (originalSize.width * zoom);
6578 }
6679
6780 public ViewerComponent(final URI uri) {
81 this(uri, new Dimension(1, 1));
82 }
83
84 public ViewerComponent(final URI uri, Dimension size) {
6885 super(null, false, false);
6986 setDocumentState(ALWAYS_STATIC);
70 setSize(1, 1);
87 setSize(size);
88 final Timer timer = new Timer(500, new ActionListener() {
89 @Override
90 public void actionPerformed(ActionEvent e) {
91 showHourGlass = image == null && getWidth() > 1;
92 if(showHourGlass)
93 repaint();
94 ((Timer)e.getSource()).stop();
95 }
96 });
97 timer.start();
7198 addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
7299 @Override
73100 public void gvtRenderingStarted(final GVTTreeRendererEvent e) {
91118 }
92119 removeGVTTreeRendererListener(this);
93120 }
121
94122 });
95123 setURI(uri.toString());
96124 }
103131 return super.getPreferredSize();
104132 }
105133
134 @Override
106135 public void setMaximumComponentSize(Dimension size) {
107136 this.maximumSize = size;
108137 }
109138
110 public void setCenter(boolean center) {
111 }
112
113 public void setImageLoadingListener(final ImageLoadingListener listener) {
114 addGVTTreeRendererListener(new GVTTreeRendererAdapter(){
115 @Override
116 public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
117 listener.imageLoaded();
118 }
119 });
120 }
121 }
122
139 @Override
140 public void paintComponent(Graphics g) {
141 super.paintComponent(g);
142 if(showHourGlass && image == null) {
143 g.setFont(HOURGLASS_FONT);
144 g.setColor(Color.GRAY);
145 g.drawString(HOURGLASS, getWidth() / 2 - HOURGLASS_FONT.getSize() * 1 / 3, getHeight() / 2);
146 }
147 }
148
149
150 }
151
152 @Override
123153 public boolean accept(final URI uri) {
124 return uri.getRawPath().endsWith(".svg");
125 }
126
154 String path = uri.isOpaque() ? uri.getSchemeSpecificPart() : uri.getRawPath();
155 return path.toLowerCase().endsWith(".svg");
156 }
157
158 @Override
127159 public String getDescription() {
128160 return TextUtils.getText("svg");
129161 };
130162
163 @Override
131164 public ScalableComponent createViewer(final ExternalResource resource, final URI uri, final int maximumWidth) {
132165 final ViewerComponent canvas = new ViewerComponent(uri);
133166 canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
141174 if(r == -1){
142175 r = resource.setZoom(originalWidth, maximumWidth);
143176 }
177 canvas.resetRenderingTransform();
144178 canvas.setFinalViewerSize(originalSize);
145179 canvas.setPreferredSize(viewerLayoutManager.calculatePreferredSize());
146180 canvas.revalidate();
150184 return canvas;
151185 }
152186
187 @Override
153188 public ScalableComponent createViewer(final URI uri, final Dimension preferredSize) {
154189 final ViewerComponent canvas = new ViewerComponent(uri);
155 canvas.setFinalViewerSize(preferredSize);
190 canvas.setSize(preferredSize);
156191 canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
157192 @Override
158193 public void gvtRenderingCompleted(final GVTTreeRendererEvent e) {
159 canvas.setFinalViewerSize(canvas.getSize());
194 canvas.resetRenderingTransform();
195 canvas.setFinalViewerSize(canvas.getOriginalSize());
196 canvas.setPreferredSize(preferredSize);
197 SwingUtilities.invokeLater(new Runnable() {
198 @Override
199 public void run() {
200 canvas.setSize(preferredSize);
201 }
202 });
160203 canvas.revalidate();
204 canvas.repaint();
161205 canvas.removeGVTTreeRendererListener(this);
162206 }
163207 });
164208 return canvas;
165209 }
166210
211 @Override
167212 public ScalableComponent createViewer(URI uri, final float zoom) throws MalformedURLException, IOException {
168213 final ViewerComponent canvas = new ViewerComponent(uri);
169214 canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
0 git-revision=263428480efd0904e8802deba201bd1985bc2c9a Dimitry Polivaev 2018-11-18T19:11:44Z
0 git-revision=f68d5ebaa68ad1f790431a3f18edc43ad05279bb Dimitry Polivaev 2019-02-03T10:12:52Z
0 git-revision=263428480efd0904e8802deba201bd1985bc2c9a Dimitry Polivaev 2018-11-18T19:11:44Z
0 git-revision=f68d5ebaa68ad1f790431a3f18edc43ad05279bb Dimitry Polivaev 2019-02-03T10:12:52Z
1818 }
1919
2020 def buildFiles() {
21 return ['*/build/**', '**/bin/**', '*/apt_generated/**']
21 return ['*/build/**', '**/bin/**', '*/apt_generated/**', '*/out/**']
2222 }
2323
2424 def miscExcludedFilesSpec() {
0 task wrapper(type: Wrapper, overwrite: true) {
1 gradleVersion = '5.1.1'
2 }