freemind-0.9.0/0000755000000000000000000000000011532143331012003 5ustar rootrootfreemind-0.9.0/freemind/0000755000000000000000000000000011532143332013575 5ustar rootrootfreemind-0.9.0/freemind/Resources_nl.properties0000644000000000000000000022202311527433212020362 0ustar rootroot# by Koen Roggemans, Patrick Holthuizen, Walter Huwels about = Info add= Voeg toe about_text = FreeMind - gratis mind map software \n\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, en anderen.\nDit programma is gratis software, onder de GNU General Public Licence.\n\nHome: http://freemind.sourceforge.net/\nVersion: antialias_all = Alles verzachten antialias_edges = Randen verzachten antialias_none = Niets verzachten apply = Toepassen background = Achtergrond bezier = Bocht blend_color = Mengkleur bold = Vet boldify_branch = Vet maken branch = Tak bubble = Kader cancel = Annuleer cannot_join_nodes_with_children = Er kunnen geen knopen met zijtakken samengevoegd worden center = Centreren cloud = Wolk cloud_color = Wolkkleur close = Sluiten copy = Kopi\u00eber copy_single = Kopie zonder zijtakken cut = Knippen decrease_branch_font_size = Lettertype verkleinen decrease_node_font_size = Lettertype verkleinen delete = Verwijderen documentation = Documentatie edge = Rand edge_color = Randkleur... edge_width_parent = Hoofdtak edge_width_thin = Dun edit = Bewerken edit_link_manually = Link handmatig bewerken... edit_long_node = Lange knoop bewerken... enter_base_url = Ik ga relatieve links plakken. Geef uw basis URL op. enter_confirms = Entertoets bevestigt #export_branch = Exporteer volledige tak... export_branch_to_html = Volledige tak naar HTML export_to_html = Naar HTML extension_menu = Markeer als... file = Bestand file_not_found = Bestand $1 niet gevonden find = Zoeken... find_what = Wat wil je zoeken? find_next = Volgende zoeken fold = Opvouwen follow_link = Volg link font = Lettertype fork = Geen kader help = Help html_export_based_on_headings = HTML-export - Gebaseerd op koppen html_export_no_folding = HTML-export - Alle takken openvouwen html_export_fold_currently_folded = HTML-export - Alleen openvouwen wat nu op de mindmap opengevouwd is html_export_fold_all = HTML-export - Enkel hoofdtakken tonen, andere takken dichtvouwen # Daniel Polansky: This way of maintaining icon text # will ultimately lead to unbearable overheads. icon_menu = Icoontjes icon_help = Vraag icon_messagebox_warning = Belangrijk icon_idea = Idee icon_button_ok = OK icon_button_cancel = Niet OK icon_back = Terug icon_forward = Vooruit icon_attach = Kijk hier icon_ksmiletris = Ik ben gelukkig icon_clanbomber = Gevaarlijk icon_desktop_new = Niet vergeten icon_gohome = Thuis icon_kaddressbook = Telefoon icon_knotify = Muziek icon_korn = Postbus icon_Mail = Post icon_password = Sleutel icon_pencil = Verder uitwerken icon_stop = Rood licht icon_wizard = Magie icon_xmag = Discussie nodig icon_bell = Onthouden icon_bookmark = Uitstekend icon_penguin = Linux icon_licq = Leuk import = Importeer import_branch = Volledige tak... import_explorer_favorites = Explorer-favorieten... import_folder_structure = Mapstructuur... import_linked_branch = Gekoppelde tak import_linked_branch_without_root= (gekoppelde tak) Zonder stam... increase_branch_font_size = Lettertype vergroten increase_node_font_size = Lettertype vergroten italic = Cursief italicise_branch = Zet cursief join_nodes = Knopen samenvoegen license = Licentie license_text = FreeMind - Een programma om mindmaps te maken en te bekijken\nCopyright (C) 2000-2010 Joerg Mueller \nBekijk COPYING voor details\n\nDit programma is gratis software; U kunt het opnieuw distribueren en- of\naanpassen onder de voorwaarden van de GNU General Public License\nzoals gepubliceerd door de Free Software Foundation; versie 2\nvan de licentie, of (naar eigen keuze) een latere versie.\n\nDit programma is verstrekt in de hoop dat het bruikbaar is ,\nmaar zonder enige garantie te geven over de\nverhandelbaarheid of geschiktheid voor een specifiek doel. Zie de \nGNU General Public License voor meer details.\n\nU moet een kopie van de GNU General Public License\nhebben ontvangen bij dit programma; Als dat niet zo is, schrijf naar de Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. linear = Lijn load = laden locking_failed_by_open = De mindmap $1 is in gebruik en wordt daarom als alleen-lezen geopend. locking_failed_by_save_as = De mindmap $1 is in gebruik en daarom wordt de actie opslaan-als afgebroken. locking_old_lock_removed = De mindmap $1 was geblokkeerd omdat ze in gebruik was door gebruiker $2. De blokkering is nu ongedaan gemaakt. map_already_exists = De mindmap bestaat al. Wilt u deze overschrijven? map_corrupted = De mindmap is beschadigd. Details bekijken? map_locked_by_open = De mindmap $1 wordt al bewerkt door gebruiker $2 en wordt als alleen-lezen geopend. map_locked_by_save_as = De mindmap $1 wordt al bewerkt door gebruiker $2. De actie opslaan-als is afgebroken. mindmap = Mindmap mindmaps = Mindmaps mindmaps_desc = Mindmaps (*.mm) mindmaps_filter_desc = Filters (*.mmfilter) mode_na = Modus is niet beschikbaar modes = Modus move_to_root = Ga naar stam new = Nieuw new_child = Nieuwe onderliggende knoop new_mindmap = Nieuwe mindmap new_node = Nieuwe knoop new_sibling_behind = Nieuwe knoop onder de huidige new_sibling_before = Nieuwe knoop boven de huidige next_map = Volgende mindmap no = Nee node = Knoop node_changed_discard_changes = U heeft de knoop veranderd. Wilt u de wijzigingen annuleren? long_node_changed_submit = U heeft de knoop veranderd. Wilt u de wijzigingen opslaan? long_node_changed_cancel = U heeft de knoop veranderd. Wilt u de wijzigingen annuleren? node_color = Knoopkleur... node_down = Knoop naar beneden node_up = Knoop naar boven nonboldify_branch = Vet uitschakelen nonitalicise_branch = Cursief uitschakelen normal = Normaal no_found_from = Geen "$1" gevonden van "$2". no_more_found_from = Niet meer "$1" van "$2" gevonden. no_previous_find = Geen vorige gevonden not_saved_for_link_error = De mindmap moet bewaard worden voor je een link kunt plaatsen met de bestandskiezer open = Open... page = Printinstellingen... paste = Plakken new_node_as_sibling_not_possible_for_the_root = Nieuwe knoop op dit niveau (stam) is niet mogelijk preferences = Voorkeuren previous_map = Vorige mindmap print = Printen print_dialog = Printen... print_preview = Afdrukvoorbeeld... print_preview_title = Afdrukvoorbeeld quit = Afsluiten read_only = Alleen lezen remove_node = Knoop verwijderen rename = Hernoem repair_link = Herstel de link repair_link_question = Kan de gekoppelde mindmap niet laden. Wilt u de link handmatig herstellen? replace = Vervang save = Opslaan save_as = Opslaan als... save_failed = Bewaren van mindmap $1 is mislukt. save_unsaved = Volgende mindmap bewaren? : saved = Bewaard scheme_evaluate = Evalueer! select_favorites_folder = Selecteer de map waarin je favorieten staan select_folder_for_importing = Selecteer de map om te importeren set_image_by_filechooser = Afbeelding (bestand of link kiezen)... set_link_by_filechooser = Link naar bestand... set_link_by_textfield = Link (tekstveld) sharp_bezier = Scherpe boog sharp_linear = Rechte lijn split = Splits style = Stijl #toggle_bold_branch = Wijzig Vet toggle_children_folded = Zijtakken open-/dichtvouwen toggle_folded = Open-/dichtvouwen #toggle_italic_branch = Wijzig cursief underline = Onderstrepen unfold = Uitvouwen url_error = Deze URL is onjuist! width = Breedte yes = Ja zoom_in = Inzoomen zoom_out = Uitzoomen remove_last_icon = Verwijder laatste icoontje remove_all_icons = Verwijder alle icoontjes lots_of_links_warning = Je gaat veel links naar dezelfde knoop maken. Wilt je deze links werkelijk aanmaken? remove_arrow_link = De pijl verwijderen arrow_link_color = Wijzig de kleur van de pijl... # removed: follow_link = Ga naar: user_defined_zoom = Door gebruiker gedefinieerd. user_defined_zoom_status_bar = De zoom wijzigen naar de door de gebruiker opgegeven zoom van {0}%. # new from 14.12.2003, fc FAQ = FAQ # new from 09.12.2006, Dimitri webDocu = Web Documentatie # new from 20.12.2003, fc printing_settings = Printinstellingen fit_to_page = Op \u00e9\u00e9n pagina laten passen user_zoom = Print zoomfactor (0.0 - 2.0): ok = OK # changed from 23.1.2004, fc. selection_method_by_click = Enkele klik om te selecteren selection_method_direct = Aanwijzen om te selecteren #new from 30.08.2004, Dimitri combined = Gecombineerd as_parent = Bovenliggend # added at 2.5.2004, fc: undo = Ongedaan maken redo = Opnieuw delete_child = Verwijder knoop # added at 22.5.2004, fc: most_recent_files = Recente bestanden menu_view = Beeld menu_navigate = Navigatie menu_format = Opmaak menu_extras = Gereedschap menu_insert = Invoegen menu_attributes = Attributen # Beware: "Edge Width " and "Edge Style " must end with space. edge_width = Randbreedte edge_style = Randstijl menu_file_import = Importeer menu_file_export = Exporteer edit_node = Knoop bewerken # added at 5.6.2004, fc: node_background_color = Achtergrondkleur knoop... # added at 25.8.2004, fc: choose_edge_color = Kies randkleur # added at 27.8.2004, fc: underlined = Onderstreept font_size = grootte lettertype font_family = familie lettertype # add at 16.9.2004, fc: import_linked_branch_no_link = De geselecteerde knoop heeft geen link om van te importeren. # added at 09.10.2004 add_link = Koppel geselecteerde knopen met een pijl less_than_two_selected_nodes = Je moet minstens twee knopen selecteren om een link te maken. choose_node_background_color = Kies een achtergrondkleur voor de knoop: choose_node_color = Kies knoopkleur: choose_background_color = Kies achtergrondkleur: choose_cloud_color = Kies wolkkleur: change_arrows_in_arrow_link = Wissel de pijlen van de pijlvormige link add_local_link = Koppel geselecteerde knopen met een hyperlink link_not_available_any_more = De link werkt niet meer. De knoop is ondertussen verwijderd. file_already_exists = Het bestand {0} bestaat al. Wil je het overschrijven? error_creating_directory = Kan geen map voor export maken. export_svg_text = Scalable Vector Graphic (SVG) export_pdf_text = Portable Document Format (PDF) goto_link_node_action = Ga naar link #fc, 14.11.2004: undefined_error = Er is een onverwachte fout gebeurt. Probeer er een foutmelding van te maken. cannot_add_parent_diff_parents = Alle knopen moeten dezelfde bovenliggende knoop hebben om deze functie te gebruiken. cannot_delete_root = De stam kan niet verwijderd of weggeknipt worden. cannot_add_parent_to_root = De stam kan niet bij een nieuwe bovenliggende knoop gevoegd worden. no_format_copy_before_format_paste = Je kunt geen opmaak plakken voor je opmaak gekopi\u00eberd hebt. #fc, 15.11.2004: accessories/plugins/AutomaticLayout.properties_documentation = Herstelt de layout van de mindmap.
Het eerste niveau is zwart, het tweede blauw enz. accessories/plugins/AutomaticLayout.properties_name = Automatische opmaak accessories/plugins/BlinkingNodeHook.properties_documentation = Dit laat de knoop knipperen. Maar wees voorzichtig: pas dit niet op teveel knopen toe, en niet samen met andere automatische opmaakmogelijkheden op dezelfde knoop accessories/plugins/BlinkingNodeHook.properties_name = Knipperende knoop accessories/plugins/CreationModificationPlugin.properties_documentation=Deze functie houdt bij wanneer knopen gemaakt en gewijzigd zijn. accessories/plugins/CreationModificationPlugin.properties_name = Toon wanneer gewijzigd accessories/plugins/ExportToImage_PNG.properties_documentation = Exporteert de mindmap zoals ze nu getoond wordt naar een PNG-bestand. accessories/plugins/ExportToImage_PNG.properties_name = Als PNG... accessories/plugins/ExportToImage_JPEG.properties_documentation = Exporteert de mindmap zoals ze nu getoond wordt naar een JPEG-bestand. accessories/plugins/ExportToImage_JPEG.properties_name = Als JPEG... accessories/plugins/ExportWithXSLT.properties_documentation = Exporteert de mindmap met XSLT scripts. accessories/plugins/ExportWithXSLT.properties_name = XSLT gebruiken... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= Exporteert de mindmap als XHTML met Javascript accessories/plugins/ExportWithXSLT_HTML.properties_name = Als XHTML (JavaScript versie)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= Exporteert de mindmap als XHTML met een klikbare map accessories/plugins/ExportWithXSLT_HTML3.properties_name = Als XHTML (klikbare mapversie)... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_name = Als MindManager mindmap... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_documentation= accessories/plugins/FitToPage.properties_documentation = Grootte van de mindmap aanpassen aan de huidige venstergrootte. accessories/plugins/FitToPage.properties_name = Zoom passend op de pagina accessories/plugins/FormatCopy.properties_documentation = Hiermee kopieer je alleen de opmaak van een knoop. accessories/plugins/FormatCopy.properties_name = Kopi\u00eber opmaak accessories/plugins/FormatPaste.properties_documentation = Hiermee plak je de opmaak van een knoop. accessories/plugins/FormatPaste.properties_name = Plak opmaak accessories/plugins/FormularEditor.properties_documentation = Koppelt een eenvoudige formule-editor aan de huidige knoop. accessories/plugins/FormularEditor.properties_name= Formule-editor accessories/plugins/IconSelectionPlugin.properties_documentation = Hier kun je een icoontje selecteren.. accessories/plugins/IconSelectionPlugin.properties_name = Kies icoontje... accessories/plugins/NewParentNode.properties_documentation = Alles wat geselecteerd is wordt naar een nieuwe bovenliggende knoop verplaatst. accessories/plugins/NewParentNode.properties_name = Nieuwe bovenliggende knoop accessories/plugins/NodeNote.properties_documentation = Koppelt een eenvoudige kladblok aan de huidige knoop. accessories/plugins/NodeNote.properties_name = Kladblok accessories/plugins/PMCalculation.properties_documentation = Hiermee bereken je de nodige inspanningen voor verschillende taken. accessories/plugins/PMCalculation.properties_name = PMBerekening accessories/plugins/RemoveNote.properties_name = Verwijder notities accessories/plugins/RemoveNote.properties_documentation = Verwijdert inhoud van wellicht meerdere notities. accessories/plugins/RevisionPlugin.properties_documentation = Markeert de achtergrond voor elke gewijzigde knoop. accessories/plugins/RevisionPlugin.properties_name = Toon wijzigingen in het geel accessories/plugins/SplitNode.properties_documentation = Knoop is gesplitst accessories/plugins/SplitNode.properties_name = Splits knoop accessories/plugins/UnfoldAll.properties_documentation = Opent de geselecteerde knopen en alle onderliggende knopen. accessories/plugins/UnfoldAll.properties_name = Plooi open accessories/plugins/FoldAll.properties_documentation = Sluit de geselecteerde knopen en alle onderliggende knopen. accessories/plugins/FoldAll.properties_name = Plooi dicht accessories/plugins/UnfoldOneLevel.properties_documentation = Opent de knopen van \u00e9\u00e9n niveau. accessories/plugins/UnfoldOneLevel.properties_name = Plooi \u00e9\u00e9n niveau open accessories/plugins/FoldOneLevel.properties_documentation = Sluit de knopen van \u00e9\u00e9n niveau. accessories/plugins/FoldOneLevel.properties_name = Plooi \u00e9\u00e9n niveau dicht plugins/FreemindHelp.xml_documentation = FreeMind uitgebreide hulp op het internet. plugins/FreemindHelp.xml_name = Online hulp... plugins/ExportPdf.xml_documentation = Exporteer naar PDF plugins/ExportPdf.xml_name = Als PDF... plugins/ExportSvg.xml_documentation = Exporteer naar SVG plugins/ExportSvg.xml_name = Als SVG... # fc, 28.11.2004: cannot_move_to_child = Je kan een knoop niet naar \u00e9\u00e9n van de onderliggende knopen verplaatsen. # fc, 14.12.2004 accessories/plugins/EnterPassword.properties_name = Schakel tussen encryptie / geen encryptie accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EncryptNode.properties_name = Voeg een ge\u00ebncrypteerde knoop toe ... accessories/plugins/EncryptNode.properties_documentation = Voegt een nieuwe knoop, die ge\u00ebncrypteerd is, toe. accessories/plugins/EncryptNode.properties_0 = Kies een wachtwoord voor de ge\u00ebncrypteerde knoop. accessories/plugins/EncryptNode.properties_1 = De wachtwoorden verschillen of zijn te kort. accessories/plugins/EncryptNode.properties_2 = Geef een wachtwoord: accessories/plugins/EncryptNode.properties_3 = Geef het nog eens: accessories/plugins/EncryptNode.properties_4 = Geef je wachtwoord. accessories/plugins/EncryptNode.properties_5 = Let op: de sterkte van de encryptie
hangt nagenoeg volledig af van de kwaliteit van je wachtwoord. accessories/plugins/EncryptNode.properties_6 = OK accessories/plugins/EncryptNode.properties_7 = Annuleer accessories/plugins/EncryptNode.properties_wrong_password = Het wachtwoord is verkeerd. accessories/plugins/NewEncryptedMap.properties_documentation = Maak een nieuwe ge\u00c3\u00abncrypteerde mindmap accessories/plugins/NewEncryptedMap.properties_name = Maak een ge\u00ebncrypteerde mindmap ... accessories/plugins/EncryptNode.properties_select_me = Kies mij om verder te gaan! accessories/plugins/EncryptNode.properties_insert_encrypted_node_first = Je kunt de encryptie alleen van een ge\u00ebncrypteerde knoop in- en uitschakelen. Voeg zo een knoop toe via het gereedschap-menu. # fc, 2.2.05: selection_method_delayed=Uitgestelde automatische selectie # fc, 4.2.05: plugins/TimeManagement.xml_documentation=Start de kalendermodule. plugins/TimeManagement.xml_name= Toon kalender... plugins/TimeManagement.xml_appendButton= Voeg een datum toe aan de geselecteerde knopen plugins/TimeManagement.xml_reminderButton= Herinner me op deze datum plugins/TimeManagement.xml_cancelButton=Annuleer plugins/TimeManagementReminder.xml_documentation=Interne haak voor het plannen van taken. plugins/TimeManagementReminder.xml_name=Interne haak voor het plannen van taken. plugins/TimeManagement.xml_reminderNode_tooltip=Herinnering gepland op {0,date} {0,time}. plugins/TimeManagement.xml_reminderNode_showNode=De tijd voor knoop " {0} " is verstreken. Wil je 10 minuten uitstel? plugins/TimeManagement.xml_reminderNode_onlyOneDate=Nu kan er maar \u00e9\u00e9n herinnering per knoop ingesteld worden.
De herinnering voor deze knoop is al ingesteld op {0,date} {0,time}, jouw keuze was {1,date} {1,time}.

Wil je de herinneringstijd van de knoop wijzigen (JA)
of wil je de vorige instelling behouden (NEE)? plugins/TimeManagement.xml_removeReminderButton = Verwijder herinnering plugins/TimeManagement.xml_removeReminderButton_tooltip = Wis alle herinneringen die gekoppeld zijn aan de geselecteerde knopen. plugins/TimeManagement.xml_minute= Minuten: plugins/TimeManagement.xml_hour= Uren: plugins/TimeManagement.xml_WindowTitle=Tijdbeheer plugins/latex/LatexNodeHook.properties_documentation = LaTex formule plugins/latex/LatexNodeHook.properties_name = LaTex plugins/latex/LatexNodeHook.editorTitle = Editor, sluit om te accepteren # fc, 18.2.2005: accessories/plugins/HierarchicalIcons.properties_documentation=Als \u00e9\u00e9n van mijn onderliggende mappen een icoontje heeft, dan zal ik dat ook in het klein tonen accessories/plugins/HierarchicalIcons.properties_name=Toon de iconen hi\u00ebrarchisch # fc, 1.3.2005: icon_full-1 = Prioriteit 1 icon_full-2 = Prioriteit 2 icon_full-3 = Prioriteit 3 icon_full-4 = Prioriteit 4 icon_full-5 = Prioriteit 5 icon_full-6 = Prioriteit 6 icon_full-7 = Prioriteit 7 # fc, 11.3.2005: RevertAction=Ongedaan maken # the prefix for the reconstructed map (revert + undo). freemind_reverted=Freemind_Ongedaangemaakt_ # fc, 5.4.2005 plugins/TimeManagement.xml_todayButton=Vandaag plugins/TimeList.xml_documentation=Toont alle geplande activiteiten en de bijhorende knopen. plugins/TimeList.xml_name=Toon lijst met geplande activiteiten ... remove_node_background_color=Verwijder de achtergrondkleur van de knoop plugins/NodeList.xml_documentation=Toont alle knopen met gemaakte/gewijzigde gegevens. plugins/NodeList.xml_name=Toon geschiedenis van de map ... plugins/TimeList.xml_Modified=Gewijzigd plugins/TimeList.xml_Created=Gemaakt plugins/TimeList.xml_Date=Datum plugins/TimeList.xml_Text=Tekst plugins/TimeList.xml_Icons=Icoontjes #fc, 26.4.2005: select_branch=Selecteer zichtbare tak select_all=Selecteer al het zichtbare change_link_arrows=Wijzig link pijlen # fc, 27.4.2005: reset_node_position=Herstel positie # fc, 2.5.2005: plugins/RemoveReminder.xml_documentation=Verwijder herinnering van een knoop. plugins/RemoveReminder.xml_name=Verwijder herinnering # fc, 3.5.2005: plugins/TimeManagement.xml_reminderButton_tooltip=Wanneer je hier klikt, wordt er een timer ingeschakeld op de gegeven datum. Dan zullen knipperende icoontjes je aandacht trekken.
Als je deze map sluit, dan zullen de timers opnieuw geactiveerd worden als je de volgende keer deze map opent. #dimitri, 8.05.05 filter_toolbar=Filter filter_dialog=Filter Bouwen filter_no_filtering=Niet filteren filter_selected_node_view=Geselecteerde knopen filter_conditions = Filters filter_edit=Bewerk filter filter_edit_description=Bewerk filterlijst filter_unfold_ancestors=Gefilterde knopen uitvouwen filter_icon=Icoontje filter_node=Knooptekst filter_exist=Bestaat filter_does_not_exist=Bestaat niet filter_contains=Bevat filter_is_equal_to=Is gelijk aan filter_is_not_equal_to=Is niet gelijk aan filter_ignore_case=Hou geen rekening met hoofdletter/kleine letter filter_enter_value=Geef een waarde in filter_add=Voeg toe filter_delete=Wis filter_select=Selecteer filter_not=Niet filter_and=En filter_or=Of filter_show_ancestors=Weergeven bovenliggende filter_show_descendants=Weergeven onderliggende #dimitri, 10.07.2005 attributes_visible_tooltip=Toon geselecteerde attributen attributes_visible=Toon geselecteerde attributen attributes_skip_root=Sla de basisknoop over attributes_show_selected =Toon geselecteerde attributen attributes_show_all =Toon alle attributen attributes_show=Toon attributes_select_all_tooltip=Selecteer/Deselecteer alle attributen attributes_select_all=Selecteer alle attributen attributes_restriction=Beperkte set attributes_restricted_values_tooltip=Beperkte set waarden voor het actuele attribuut attributes_restricted_attributes_tooltip=Beperkte set attributen attributes_refresh=Vernieuw attributes_popup_up=Naar boven attributes_popup_optimal_width=Optimale breedte attributes_popup_new=Nieuw attribuut attributes_popup_hide=Verberg attributes_popup_edit=Bewerk attributes_popup_down=Naar beneden attributes_popup_delete=Wis attributes_no_import_candidates_found=Geen nieuwe attributen gevonden attributes_import_tooltip=Importeer attributen van de andere geladen mindmaps attributes_import=Importeer attributes_hide_all =Verberg alle attributen attributes_for_visible=Alle zichtbare knopen attributes_for_selected=Geselecteerde knopen attributes_edit_tooltip=Bewerk de set attributes_edit_in_place=Bewerk attributen attributes_edit=Bewerk attributes_dialog_title=Attribuut beheerder attributes_dialog=Attribuut beheerder attributes_deselect_all=Niets attributes_close=Sluiten attributes_attribute=Attributen attributes_assign_dialog=Wijs attributen toe... attributes_all=Alle attributen attributes_adding_empty_attribute_error=Kan geen lege tekst als attribuut gebruiken attribute_top=Alle gekende attributen voor de geladen mindmaps attribute_replace=Vervang door attribute_list_box_label_text=Bestaande waarden attribute_font_size_tooltip=Attribuut teken grootte attribute_delete_value=Wis deze waarde attribute_delete=Wis alle waarden # fc, 10.5.2005: property_dialog=Instellingen ... OptionPanel.automatic=Automatisch OptionPanel.de=De OptionPanel.dk=Dk OptionPanel.en=En OptionPanel.es=Es OptionPanel.fr=Fr OptionPanel.gl=Gl OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.ko=Ko OptionPanel.nl=Nl OptionPanel.pl=Pl OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.ru=Ru OptionPanel.sl=Sl OptionPanel.zh=Zh OptionPanel.zh_CN=Zh CN OptionPanel.fork=Geen kader OptionPanel.bubble=Kader OptionPanel.as_parent=Bovenliggend OptionPanel.combined=Gecombineerd OptionPanel.bezier=Boog OptionPanel.linear=Lineair OptionPanel.default=Standaard OptionPanel.metal=Metaal OptionPanel.windows=Vensters OptionPanel.motif=Motief OptionPanel.gtk=Gtk OptionPanel.nothing=Niets OptionPanel.relative=Relatief OptionPanel.absolute=Absoluut OptionPanel.first=Eerste OptionPanel.last=Laatste OptionPanel.selection_method_direct=Onmiddellijk OptionPanel.selection_method_delayed=Uitgesteld OptionPanel.selection_method_by_click=Bij klikken OptionPanel.html_export_no_folding=Alle takken openvouwen OptionPanel.html_export_fold_currently_folded=Alleen openvouwen wat nu op de mindmap opengevouwd is OptionPanel.html_export_fold_all=Enkel hoofdtakken tonen, andere takken dichtvouwen OptionPanel.html_export_based_on_headings=Gebaseerd op koppen OptionPanel.Environment=Omgeving OptionPanel.Files=Bestanden OptionPanel.language=Taal OptionPanel.language.tooltip=Dit is de taal die het programma zou moeten gebruiken. 'Automatisch' probeert de huidige taal van de gebruiker te laden. OptionPanel.experimental_file_locking_on=Experimenteel bestanden blokkeren OptionPanel.experimental_file_locking_on.tooltip= Experimenteke functie OptionPanel.draganddrop=Klik en sleep OptionPanel.draganddrop.tooltip=Als klikken en slepen is ingeschakeld. OptionPanel.userproperties=Gebruikerseigenschappen OptionPanel.patternsfile=Patronenbestand OptionPanel.docmapurl_since_version_0_7_0=Docmapurl OptionPanel.browsemode_initial_map=Bladermethode eerste map OptionPanel.browsemode_initial_map.tooltip=De URL van de map die geladen wordt wanneer de bladermodus start OptionPanel.last_opened_list_length=Lengte van de lijst van recent geopende bestanden OptionPanel.time_for_automatic_save=Tijdsinterval voor automatisch bewaren OptionPanel.time_for_automatic_save.tooltip= tussentijd voor automatisch bewaren in miliseconden; Om automatisch bewaren uit te schakelen, zet je dit getal op 2000000000. OptionPanel.delete_automatic_saves_at_exit=Verwijder reservekopie bij afsluiten OptionPanel.delete_automatic_saves_at_exit.tooltip= Als de reservebestanden tijdens het normaal afsluiten van Freemind zouden moeten verwijderd worden, zet deze instelling dan op ja OptionPanel.number_of_different_files_for_automatic_save=Aantal verschillende reservebestanden voor automatisch bewaren OptionPanel.number_of_different_files_for_automatic_save.tooltip= aantal n verschillende reservebestanden om de mappen in te bewaren. De eerste keer automatisch bewaren wordt in het eerste bestand gedaan, de tweede keer in het tweede bestand enzovoort. Wanneer n+1 bereikt is, wordt het eerste bestand terug overschreven (cyclisch) OptionPanel.path_to_automatic_saves=Pad voor reservebestanden OptionPanel.path_to_automatic_saves.tooltip= om het standaardpad (dit is 'java.io.tmpdir' of java), te wijzigen kun je hier een andere pad ingeven. Andere mogelijkheden: * freemind_home is de map waarin auto.properties staat, * default verwijst naar java.io.tmpdir OptionPanel.Defaults=Standaardinstellingen OptionPanel.standardnodestyle=Standaard knoopstijl OptionPanel.standardnodestyle.tooltip=De nieuwe knoopstijl als standaard. 'Geen kader', 'Kader' 'Als bovenliggend' en 'gecombineerd' worden ondersteund OptionPanel.standardrootnodestyle=Standaard stamstijl OptionPanel.standardrootnodestyle.tooltip=De stijl van de stam als er geen andere stijl opgegeven is. 'Geen kader', 'Kader' 'Als bovenliggend' en 'gecombineerd' worden ondersteund OptionPanel.standardnodetextcolor=Standaard knoopkleur OptionPanel.standardnodetextcolor.tooltip=De standaard knoopkleur. In html-notatie (#RRGGBB in hex waarden) OptionPanel.standardselectednodecolor=Standaard geselecteerde knoopkleur OptionPanel.standardselectednodecolor.tooltip=De standaard knoopkleur indien geselecteerd. In html-notatie (#RRGGBB in hex waarden) OptionPanel.standardselectednoderectanglecolor=Geslecteerde belkleur OptionPanel.standardselectednoderectanglecolor.tooltip=De kleur van de belmarkering voor de geselecteerde knopen. In html notatie (#RRGGBB in hex waarden) OptionPanel.standarddrawrectangleforselection=Toon de geselecteerde knopen in Bellen OptionPanel.standarddrawrectangleforselection.tooltip=Markeer geselecteerde knopen met een bel er rond. OptionPanel.standardedgecolor=Standaard randkleur OptionPanel.standardedgecolor.tooltip=De standaard randkleur in html-notatie OptionPanel.standardlinkcolor=Standaard linkkleur OptionPanel.standardlinkcolor.tooltip=The standaard linkkleur in html-notatie OptionPanel.standardbackgroundcolor=Standaard achtergrondkleur OptionPanel.standardbackgroundcolor.tooltip=De standaard achtergrondkleur in html-notatie OptionPanel.printonwhitebackground=Witte achtergrond bij het printen OptionPanel.printonwhitebackground.tooltip=Altijd een witte achtergrond bij het printen OptionPanel.standardcloudcolor=Standaard wolkkleur OptionPanel.standardcloudcolor.tooltip=De standaard wolkkleur in html-notatie OptionPanel.defaultfont=Standaard lettertype OptionPanel.defaultfont.tooltip=Het standaard lettertype. Dit zal alleen werken als het lettertype (TrueTypeFont) op het systeem geïnstalleerd is OptionPanel.defaultfontstyle=Standaard lettertypestijl OptionPanel.defaultfontsize=Standaard lettertypegrootte OptionPanel.max_node_width=Maximum knoopbreedte OptionPanel.max_node_width.tooltip=De standaard maximum knoopbreedte in pixels OptionPanel.standardedgestyle=Standaard randstijl OptionPanel.standardedgestyle.tooltip=De standaard randstijl.'lineair' en 'boog' zijn de mogelijkheden OptionPanel.standardcloudestyle=Standaard wolkstijl OptionPanel.standardcloudestyle.tooltip=De standaard wolkstijl. Op dit moment is enkel 'boog' mogelijk OptionPanel.standardlinkestyle=Standard Linkstijl OptionPanel.standardlinkestyle.tooltip=De standaard linkstijl. Op dit ogenblik is alleen 'boog' ondersteund OptionPanel.Appearance=Uiterlijk OptionPanel.lookandfeel=Gebruiksomgeving OptionPanel.lookandfeel.tooltip=De gebruiksomgeving waarin je wil werken. 'metaal, 'windows', 'motief' en 'gtk' worden ondersteund, 'mac' kan enkel gebruikt worden oo MacOS. Standaard betekent dat de standaard gebruikersomgeving wordt gebruikt. Als je hier je eigen gebruikersomgeving wil gebruiken, vul dan heir de class name in en zorg er voor dat de daarvoor nodige jar-bestanden geladen worden. Als er problemen zijn met de gebruikersomgeving, kies hier dan 'niets'. Dat werkt voor applets OptionPanel.mapxsize=Map-X-grootte OptionPanel.mapxsize.tooltip=De startgrootte van elke map OptionPanel.mapysize=Map-Y-grootte OptionPanel.links=Links OptionPanel.links.tooltip=Stel links in als relatief of absoluut OptionPanel.el__buttons_position=Positie van knoppen OptionPanel.el__buttons_position.tooltip= boven / onder OptionPanel.el__position_window_below_node=Positie venster onder knoop OptionPanel.el__min_default_window_height=Minimum standaard venster hoogte OptionPanel.el__max_default_window_height=Maximum standaard venster hoogte OptionPanel.el__min_default_window_width=Minimum standaard venster breedte OptionPanel.el__max_default_window_width=Maximum standaard venster breedte OptionPanel.el__enter_confirms_by_default=Entertoets dient standaard als bevestiging OptionPanel.el__show_icon_for_attributes=Toon icoontje voor attributen OptionPanel.Keystrokes=Sneltoetsen OptionPanel.keystroke_newMap=Nieuwe map OptionPanel.keystroke_open=Open OptionPanel.keystroke_save=Bewaren OptionPanel.keystroke_saveAs=Bewaren als OptionPanel.keystroke_print=Afdrukken OptionPanel.keystroke_close=Sluiten OptionPanel.keystroke_quit=Afsluiten OptionPanel.keystroke_export_to_html=Exporteer naar HTML OptionPanel.keystroke_export_branch_to_html=Exporteer volledige tak naar HTML OptionPanel.keystroke_open_first_in_history=Open eerste in geschiedenis OptionPanel.keystroke_previousMap=Vorige map OptionPanel.keystroke_nextMap=Volgende map OptionPanel.keystroke_mode_MindMap=Mindmapmodus OptionPanel.keystroke_mode_Browse=Bladermodus OptionPanel.keystroke_mode_File=Bestandsmodus OptionPanel.keystroke_node_toggle_italic=Schakel knoop cursief OptionPanel.keystroke_node_toggle_boldface=Schakel knoop vet OptionPanel.keystroke_node_toggle_underlined=Schakel knoop onderlijnd OptionPanel.keystroke_node_toggle_cloud=Schakel knoop als wolk OptionPanel.keystroke_undo=Ongedaan maken OptionPanel.keystroke_redo=Opnieuw OptionPanel.keystroke_delete_child=Verwijder onderliggende knoop OptionPanel.keystroke_select_all=Selecteer alles OptionPanel.keystroke_select_branch=Selecteer tak OptionPanel.keystroke_zoom_out=Zoom uit OptionPanel.keystroke_zoom_in=Zoom in OptionPanel.keystroke_cut=Knippen OptionPanel.keystroke_copy=Kopi\u00ebren OptionPanel.keystroke_copy_single=Kopi\u00eber enkelvoudig OptionPanel.keystroke_paste=Plakken OptionPanel.keystroke_remove=Verwijderen OptionPanel.keystroke_add_arrow_link_action=Voeg een pijlvormige link toe OptionPanel.keystroke_add_local_link_action=Voeg een lokale link toe OptionPanel.keystroke_moveToRoot=Verplaats naar stam OptionPanel.keystroke_move_up=Verplaats naar boven OptionPanel.keystroke_move_down=Verplaats naar beneden OptionPanel.keystroke_move_left=Verplaats naar links OptionPanel.keystroke_move_right=Verplaats naar rechts OptionPanel.keystroke_follow_link=Open hyperlink OptionPanel.keystroke_add=Voeg toe OptionPanel.keystroke_add_child=Voeg onderliggende knoop toe OptionPanel.keystroke_add_child_mac=Voeg onderliggende knoop toe Mac OptionPanel.keystroke_add_sibling_before=Voeg nieuwe knoop voor vorige toe OptionPanel.keystroke_edit=Bewerk OptionPanel.keystroke_edit_long_node=Bewerk lange knoop OptionPanel.keystroke_join_nodes=Knopen samenvoegen OptionPanel.keystroke_toggle_folded=Schakel dichtvouwen OptionPanel.keystroke_toggle_children_folded=Schakel onderliggende takken dichtvouwen OptionPanel.keystroke_set_link_by_filechooser=Maak een link naar een bestand OptionPanel.keystroke_set_link_by_textfield=Maak een link met een tekstveld OptionPanel.keystroke_set_image_by_filechooser=Plaats een afbeelding vanuit een bestand OptionPanel.keystroke_node_up=Knoop hoger OptionPanel.keystroke_node_down=Knoop lager OptionPanel.keystroke_node_increase_font_size=Lettergrootte knoop vergroten OptionPanel.keystroke_node_decrease_font_size=Lettergrootte knoop verkleinen OptionPanel.keystroke_export_branch=Exporteer tak OptionPanel.keystroke_node_color=Knoopkleur OptionPanel.keystroke_node_color_blend=knoop mengkleur OptionPanel.keystroke_edge_color=Randkleur OptionPanel.keystroke_find=Zoeken OptionPanel.keystroke_find_next=Volgende zoeken OptionPanel.keystroke_apply_pattern_1=Toepassen patroon 1 OptionPanel.keystroke_apply_pattern_2=Toepassen patroon 2 OptionPanel.keystroke_apply_pattern_3=Toepassen patroon 3 OptionPanel.keystroke_apply_pattern_4=Toepassen patroon 4 OptionPanel.keystroke_apply_pattern_5=Toepassen patroon 5 OptionPanel.keystroke_apply_pattern_6=Toepassen patroon 6 OptionPanel.keystroke_apply_pattern_7=Toepassen patroon 7 OptionPanel.keystroke_apply_pattern_8=Toepassen patroon 8 OptionPanel.keystroke_apply_pattern_9=Toepassen patroon 9 OptionPanel.keystroke_apply_pattern_10=Toepassen patroon 10 OptionPanel.keystroke_apply_pattern_11=Toepassen patroon 11 OptionPanel.keystroke_apply_pattern_12=Toepassen patroon 12 OptionPanel.keystroke_apply_pattern_13=Toepassen patroon 13 OptionPanel.keystroke_apply_pattern_14=Toepassen patroon 14 OptionPanel.keystroke_apply_pattern_15=Toepassen patroon 15 OptionPanel.keystroke_apply_pattern_16=Toepassen patroon 16 OptionPanel.keystroke_apply_pattern_17=Toepassen patroon 17 OptionPanel.keystroke_apply_pattern_18=Toepassen patroon 18 OptionPanel.Behaviour=Gedrag OptionPanel.placenewbranches=Nieuwe takken maken OptionPanel.placenewbranches.tooltip=Waar nieuwe takken gemaakt moeten worden. Geldige waarden zijn 'eerst' en 'laatst' OptionPanel.disable_cursor_move_paper=Blad verschuivende cursor uitschakelen OptionPanel.disable_cursor_move_paper.tooltip=De 'verschuiven'-cursor niet tonen tijdens het verslepen van de pagina OptionPanel.enable_leaves_folding=Bladeren dichtvouwen inschakelen OptionPanel.enable_leaves_folding.tooltip=Bladeren dichtvouwen inschakelen == schakelen kader/geen kader voor het dichtvouwen (zelfs als dit uitgeschakeld is, kun je nog altijd de knoopstijl gebruiken om dit te wijzigen) OptionPanel.foldingsymbolwidth=Breedte van het symbool voor dichtvouwen OptionPanel.foldingsymbolwidth.tooltip=Breedte van de cirkel die het dichtvouwen markeert OptionPanel.disable_key_type=Typen uitschakelen OptionPanel.disable_key_type.tooltip=Typen: Als dit ingeschakeld is, kun je de knopen bewerken OptionPanel.key_type_adds_new=Typen voegt nieuwe knoop toe OptionPanel.key_type_adds_new.tooltip=Typen: Inhoud overschrijven (nee) / nieuwe knoop maken (ja) ( disable_key_type = nee moet ingesteld zijn) OptionPanel.selection_method=Selectiemethode OptionPanel.selection_method.tooltip= Met volgende schakelaar kun je het vertraagde selectieschema inschakelen/uitschakelen. Automatische opties. Wijzig deze niet omdat ze toch in auto.properties bewaard zullen worden. OptionPanel.time_for_delayed_selection=Tijd voor vertraagde selectie OptionPanel.time_for_delayed_selection.tooltip= Tijd voor de vertraagde selectie van knopen wanneer de muis er over gaat (in msec). Wijzig deze waarde naar 1 wanneer je onmiddellijke selectie wil wanneer de muis over een knoop gaat. OptionPanel.HTML=HTML OptionPanel.default_browser_command_windows_nt=Standaard browsercommando Windows Nt OptionPanel.default_browser_command_windows_nt.tooltip=Voor Windows (de "" tekens zijn noodzakelijk voor links die een "=" in de URL hebben). OptionPanel.default_browser_command_windows_9x=Standaard browsercommando Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=Voor Windows (de "" tekens zijn noodzakelijk voor links die een "=" in de URL hebben). OptionPanel.default_browser_command_other_os=Standaard browsercommando andere OS OptionPanel.default_browser_command_other_os.tooltip= Dit is typisch voor Linux: OptionPanel.default_browser_command_mac=Standaard browsercommando Mac OptionPanel.default_browser_command_mac.tooltip=Standaard browsercommando voor Mac OS OptionPanel.html_export_folding=HTML-export dichtvouwen OptionPanel.export_icons_in_html=Exporteer Icoontjes in HTML OptionPanel.export_icons_in_html.tooltip= Aangeven of de HTML uit Freemind ge\u00ebxporteerd ook icoontjes moet bevatten. Het probleem met icoontjes is dat de links naar icoontjes in de ge\u00ebxporteerde HTML dikwijls niet werken. OptionPanel.Cancel=Annuleren OptionPanel.OK=Bewaren option_changes_may_require_restart=Om de gewijzigde instellingen te laten werken, zul je waarschijnlijk Freemind moeten sluiten en opnieuw starten. # fc, 12.5.2005: GrabKeyDialog.grab-key.title=Nieuwe toets invoeren GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=Clear GrabKeyDialog.grab-key.assigned-to.none=Nog niet toegewezen GrabKeyDialog.grab-key.assigned-to=Toegewezen aan GrabKeyDialog.common.ok=OK GrabKeyDialog.grab-key.remove=Verwijderen GrabKeyDialog.common.cancel=Annuleren GrabKeyDialog.grab-key.remove-ask=Weet je zeker dat je deze toets wil verwijderen? OptionPanel.separator.language=Taal OptionPanel.separator.files=Bestanden OptionPanel.separator.automatic_save=Automatisch bewaren OptionPanel.separator.default_styles=Standaard stijlen OptionPanel.separator.default_colors=Standaard kleuren OptionPanel.separator.selection_colors=Kleurselectie OptionPanel.separator.default_fonts=Standaard lettertypes OptionPanel.separator.other_defaults=Andere standaardinstellingen OptionPanel.separator.look_and_feel=Gebruikersomgeving OptionPanel.separator.anti_alias=Verzachten OptionPanel.separator.initial_map_size=Initi\u00eble mapgrootte OptionPanel.separator.hyperlink_types=Hyperlinktypes OptionPanel.separator.edit_long_node_window=Venster om lange knopen te bewerken OptionPanel.separator.commands_for_the_program=Commando's voor het programma OptionPanel.separator.node_editing_commands=Commando's voor het bewerken van knopen OptionPanel.separator.node_navigation_commands=Commando's voor navigatie OptionPanel.separator.new_node_commands=Commando's voor nieuwe knopen OptionPanel.separator.patterns=Patronen OptionPanel.separator.behaviour=Gedrag OptionPanel.separator.key_typing=Typen OptionPanel.separator.selection_method=Selectiemethode OptionPanel.separator.browser=Browser OptionPanel.separator.html_export=HTML-export OptionPanel.separator.attributes=Attributen OptionPanel.separator.icons=Icons in "Select Icon..." OptionPanel.keystroke_edit_attributes=Bewerk attributen OptionPanel.keystroke_show_all_attributes=Toon alle attributen OptionPanel.keystroke_show_selected_attributes=Toon geselecteerde attributen OptionPanel.keystroke_hide_all_attributes=Verberg alle attributen OptionPanel.keystroke_show_attribute_manager=Toon attributenbeheer OptionPanel.keystroke_assign_attributes=Attributen toewijzen ... # fc, 2.6.2005: OptionPanel.antialias.tooltip=Bepaalt de kwaliteit van de map. Meer verzachten duurt langer. OptionPanel.antialias=Verzachten OptionPanel.antialias_edges=Randen verzachten OptionPanel.antialias_all=Alles verzachten OptionPanel.antialias_none=Niets verzachten OptionPanel.cs=Cs OptionPanel.nb=Nee # fc, 12.6.2005: correction, please remove the other translation of "follow_link" above follow_link = Open hyperlink: OptionPanel.ColorProperty.ResetColor=Kleur terugzetten # fc, 16.6.2005: OptionPanel.keystroke_option_dialog=Voorkeuren format_menu_edge_styles=Randstijl format_menu_edge_widths=Randbreedte # fc, 3.7.2005: accessories/plugins/ImportMindmanagerFiles.properties_name=MindManager X5 Map... # fc, 5.7.2005: accessories/plugins/ExportToOoWriter.properties_documentation=Opengevouwde knopen vormen de structuur, dichtgevouwde knopen vormen de inhoud van het document. accessories/plugins/ExportToOoWriter.properties_name= Als Open Office Writer Document... # fc, 10.7.2005: OptionPanel.separator.undo=Ongedaan maken OptionPanel.undo_levels=Aantal stappen OptionPanel.undo_levels.tooltip=Bepaalt hoeveel stappen bewaard worden en zo ongedaan kunnen gemaakt worden met de "Ongedaan maken" knop. # fc, 13.8.2005 OptionPanel.lt=Lt # fc, 12.1.2006: if you create a translation of the documentation file, change this value (see german translation): browsemode_initial_map = ./doc/freemind.mm # fc, 1.2.06 link_not_found = Link $1 niet gevonden. # fc, 15.2.06 icon_smily_bad = Ik vind het niet leuk OptionPanel.hr=Hr OptionPanel.nn=Nn OptionPanel.se=Se OptionPanel.unfold_on_paste=Knoop ontvouwen bij plakken OptionPanel.unfold_on_paste.tooltip=Vouw de knoop open bij plakken of slepen # fc, 16.2.06 accessories/plugins/ExportWithXSLT_Flash.properties_name=Als Flash... accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Exporteer de mindmap als een flash toepassing. accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Web pagina accessories/plugins/ExportWithXSLT_Applet.properties_name=Als Java Applet... accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Exporteer de mindmap als een Java applet. # fc, 21.2.06 accessories/plugins/ChangeNodeLevelAction_right.properties_name=Knoop rechts accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=Rechts van de stam zullen knopen naar beneden worden verplaatst. Deze komen onder de huidige knoop. Links van de basis zullen knopen naar boven worden verplaatst. Direct bij de basis zullen de knopen van zijde verwisselen. accessories/plugins/ChangeNodeLevelAction_left.properties_name=Knoop links accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=Links van de stam zullen knopen naar beneden worden verplaatst. Deze komen onder de huidige knoop. Rechts van de basis zullen knopen naar boven worden verplaatst. Direct bij de basis zullen de knopen van zijde verwisselen. # fc, 27.2.06: PatternDialog.ColorProperty.ResetColor=Kleur herstellen PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_parent=Als bovenliggende PatternDialog.EdgeWidth_thin=dun PatternDialog.as_parent=Als bovenliggende PatternDialog.bezier=bocht PatternDialog.bubble=Wolk PatternDialog.combined=Gecombineerd PatternDialog.edgecolor.tooltip=Eigenschap van de rand van de bovenliggende knoop (wordt ook toegepast op alle onderliggende knopen) PatternDialog.edgecolor=Randkleur PatternDialog.edgestyle.tooltip=Eigenschap van de rand van de bovenliggende knoop (wordt ook toegepast op alle onderliggende knopen) PatternDialog.edgestyle=Randstijl PatternDialog.edgewidth.tooltip=Eigenschap van de rand van de bovenliggende knoop (wordt ook toegepast op alle onderliggende knopen) PatternDialog.edgewidth=Randbreedte PatternDialog.fork=Splitsing PatternDialog.linear=lineair PatternDialog.nodebackgroundcolor=Achtergrondkleur van de knoop PatternDialog.nodecolor=Knoopkleur PatternDialog.nodestyle=Knoopstijl PatternDialog.nodetext=Knooptekst PatternDialog.separator.EdgeControls=Randen PatternDialog.separator.NodeColors=Knoopkleuren PatternDialog.separator.NodeStyles=Knoopstijlen PatternDialog.sharp_bezier=scherpe boog PatternDialog.sharp_linear=scherp lineair PatternDialog.undefined_font=Onbepaald lettertype accessories/plugins/ApplyFormatPlugin.properties_documentation=Geeft een dialoog weer waarin knoop- en randattributen mee gewijzigd kunnen worden. accessories/plugins/ApplyFormatPlugin.properties_name=Wijzig opmaak accessories/plugins/ApplyFormatPlugin.dialog.title=Wijzig opmaak van knopen OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Verplaats naar links OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Verplaats naar rechts OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Icoontje invoegen OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Stijlen beheren OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Knopen laten inspringen OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Notitievenster Weergeven/Verbergen OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Optie voor Wijzigen Notitie OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Notitie Leegmaken OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=Knoop splitsen OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Alles openvouwen OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Alles dichtvouwen OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Een niveau openvouwen OptionPanel.separator.others=Andere sneltoetsen PatternDialog.separator.General=Algemeen PatternDialog.clear_all_setters=Aan/Uitzetten PatternDialog.clear_all_setters.tooltip=Aan/Uitzetten van alle wijzigingsindicaties # fc, 1.3.06: accessories/plugins/ManagePatterns.dialog.title=Beheer Patronen... accessories/plugins/ManagePatterns.not_found=Bestand met patronen kan niet geladen worden. accessories/plugins/ManagePatterns.properties_documentation=Wijzig de patronen in patterns.xml met een editor. Het resultaat wordt automatisch bewaard. accessories/plugins/ManagePatterns.properties_name=Beheer Patronen... # fc, 14.3.06: PatternDialog.nodefontbold=Vet PatternDialog.nodefontitalic=Cursief PatternDialog.separator.NodeFont=Lettertype knoop # fc, 19.3.06: ManagePatternsPopupDialog.remove=Verwijder patroon ManagePatternsPopupDialog.add=Voeg nieuw patroon toe PatternDialog.patternname=Naam PatternDialog.patternname.tooltip=Unieke patroonnaam PatternNewNameProperty=Nieuw patroon ManagePatternsPopupDialog.DuplicateNameMessage=Deze naam is niet uniek. Wijzig dit voor je dit dialoogvenster verlaat. PatternDialog.childpattern.tooltip=Het geselecteerde patroon wordt toegepast op alle onderliggende knopen. PatternDialog.childpattern=Patroon onderliggende ManagePatternsPopupDialog.Save=Bewaar en keer terug PatternDialog.icon.tooltip=Indien toegepast zal de knoop dit icoontje hebben. PatternDialog.icon=Icoontje PatternDialog.set_property_text=Wijzig PatternDialog.set_property_text.tooltip=Leeg: niet wijzigen; Min: verwijder eigenschap (standaardwaarden herstellen); Plus: wijzig eigenschap accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Wijzig OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Automatisch opmaakpatroon OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Patronen PatternToString.color=Kleur PatternToString.backgroundColor=Achtergrondkleur #OptionPanel.automaticFormat_level1=Stam opmaak #OptionPanel.automaticFormat_level2=1. Niveau knoopopmaak PatternToString.NodeFontSize=Lettergrootte OptionPanel.level1=Opmaak van de stam OptionPanel.level2=1. Niveau knoopopmaak OptionPanel.level3=2. Niveau knoopopmaak OptionPanel.level4=3. Niveau knoopopmaak OptionPanel.level5=Andere knoopopmaak OptionPanel.automaticFormat_level=Automatische opmaakstijlen # fc, 13.4.06: ManagePatternsPopupDialog.duplicate=Dubbel patroon ManagePatternsPopupDialog.from_nodes=Maak patroon van geselecteerde knopen # fc, 25.5.2006: accessories/plugins/SaveAll.properties_documentation=Bewaar alle open mindmaps. accessories/plugins/SaveAll.properties_name=Bewaar alles accessories/plugins/SaveAll.properties_save_all_cancelled=Bewerking is mislukt. # fc, 23.7.06 OptionPanel.loadLastMap=Open automatisch laatste mindmap OptionPanel.loadLastMap.tooltip=FreeMind opent automatisch de laatst geopende mindmap bij opstarten als dit geselecteerd is. # dan, whenever use_rich_formatting = Opmaak use_plain_text = Platte tekst # fc, 30.7.06: FreeMind.progress.gettingPreferenceDirectories=Bestandsmappen van voorkeuren Bepalen... FreeMind.progress.gettingPreferences=Voorkeuren Ophalen... FreeMind.progress.updateLookAndFeel=Look And Feel Bijwerken... FreeMind.progress.createController=Aanmaken Controller... FreeMind.progress.settingPreferences=Instellen Voorkeuren... FreeMind.progress.propageteLookAndFeel=Doorvoeren Look And Feel... FreeMind.progress.createInitialMode=Aanmaken Initi\u00eble Modus FreeMind.progress.startCreateController=Start Aanmaken Controller... FreeMind.progress.loadMaps=Laad mindmaps... FreeMind.progress.buildScreen=Scherm Opbouwen... FreeMind.progress.endStartup=Opstarten Afronden. OptionPanel.tr=Tr OptionPanel.level=Niveau # fc, 13.8.06: map_not_saved=De mindmap werd niet bewaard # fc, 27.8.06: plugins/TimeManagement.xml_Find=Zoek plugins/TimeManagement.xml_Replace=Vervang plugins/TimeManagement.xml_Select=Selecteer plugins/TimeManagement.xml_Export=Exporteer geselecteerd knopen plugins/TimeManagement.xml_Replace_All=Vervang alles plugins/TimeManagement.xml_Replace_Selected=Vervang geselecteerd plugins/TimeManagement.xml_Goto=Ga naar plugins/TimeManagement.xml_Cancel=Annuleer # fc, 2.9.06: automatically_save_message=Mindmap werd automatisch bewaard (onder bestandsnaam {0}) ... plugins/ScriptingEngine.xml_documentation=Evalueert alle ingesloten scripts (recursief, bladeren eerst) plugins/ScriptingEngine.xml_name=Evalueer # fc, 4.9.06 OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Evalueer # fc, 6.9.06: error_applying_template=Fout bij het toepassen van het XSL-sjabloon # fc, 11.10.06: accessories/plugins/NodeNote_jumpto.properties_name=Notitie wijzigen accessories/plugins/NodeNote_jumpto.properties_documentation=Schakel tussen het van of naar notitievenster #accessories/plugins/NodeNote_jumpfrom.properties_documentation=Schakel van notities naar mindmap #accessories/plugins/NodeNote_jumpfrom.properties_name=Leave note # fc, 12.10.06 OptionPanel.max_tooltip_width=ToolTip-breedte OptionPanel.max_tooltip_width.tooltip=De standaard tooltip-breedte in pixels. # fc, 13.10.06: renamed: plugins/NodeList.xml_documentation=Toont alle knopen als een doorzoekbare lijst met filtereigenschappen. # fc, 10.11.2006: OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Aan/uit notitie bewerken OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Toon/verberg notitievenster # Dimitry 25.10 OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Notitie wissen # aki 19.10.06: (TJI support) accessories/plugins/ExportWithXSLT_Applet.properties_tji=Benodigde Bestanden TaskJuggler accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Taken van de TASKS-knoop in TaskJuggler-bestand... accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Taken van de TASKS-knoop exporteren naar TaskJuggler-module. accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name=Gegevens van RESOURCES-knoop naar TaskJuggler-bestand... accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation=Gegevens van de RESOURCES-knoop exporteren naar TaskJuggler-module. # fc, 14.12.2006: renamed: plugins/NodeList.xml_name=Zoeken en vervangen... plugins/TimeManagement.xml_menu_actions=Acties # fc, 23.12.06: plugins/TimeList.xml_Notes=Notities # fc, 30.12.06: accessories/plugins/SortNodes.properties_documentation=Sorteer alles wat onder een knoop licht alfabetisch accessories/plugins/SortNodes.properties_name=Sorteer onderliggende # fc, 3.1.07: OptionPanel.ar=Ar # fc, 10.1.07: plugins/TimeManagement.xml_WindowTitle_All_Nodes=Zoeken & vervangen plugins/ScriptEditor.xml_documentation=Maakt het mogelijk om grotere scripts te maken binnen Freemind. plugins/ScriptEditor.xml_name=Script Editor... # fc, 24.1.07: plugins/ScriptEditor/window.title=Script Editor plugins/ScriptEditor.menu_actions=Acties plugins/ScriptEditor.run=Start plugins/ScriptEditor/window.Result=Resultaat: # SimplyHTML.properties # # resource bundle with strings for application SimplyHTML # - English Language (default) - # edit menu definition simplyhtml.editLabel=Bewerk # edit menu items simplyhtml.undoLabel=Ongedaan maken simplyhtml.undoTip=ongedaan maken simplyhtml.redoLabel=Herstellen simplyhtml.redoTip=herstellen simplyhtml.cutLabel=Knippen simplyhtml.cutTip=knippen simplyhtml.copyLabel=Kopi\u00ebren simplyhtml.copyTip=kopi\u00ebren simplyhtml.pasteLabel=Plakken simplyhtml.pasteTip=plakken simplyhtml.selectAllLabel=Selecteer alles simplyhtml.findReplaceLabel=Zoeken & vervangen simplyhtml.findReplaceTip=zoeken & vervangen #insert menu definition simplyhtml.insertTableLabel=Tabel... # format menu definition simplyhtml.formatLabel=Opmaak # format menu items simplyhtml.fontLabel=Lettertype... simplyhtml.fontTip=Lettertype opmaak... simplyhtml.clearFormatLabel=Verwijder opmaak simplyhtml.clearFormatTip=Verwijder opmaak simplyhtml.fontBoldLabel=Vet simplyhtml.fontBoldImage=resources/bold.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontBoldTip=Vet aan/uit simplyhtml.fontColorTip=Tekstkleur simplyhtml.fontColorLabel=Tekstkleur simplyhtml.fontColorImage=resources/fontColor.gif simplyhtml.fontItalicLabel=Cursief simplyhtml.fontItalicImage=resources/italic.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontItalicTip=Cursief aan/uit simplyhtml.fontUnderlineLabel=Onderstreep simplyhtml.fontUnderlineImage=resources/uline.gif simplyhtml.fontUnderlineTip=schakel onderstrepen aan/uit simplyhtml.formatTableLabel=Tabel... simplyhtml.formatTableTip=Opmaak tabel simplyhtml.toggleBulletsLabel=Opsommingstekens aan/uit simplyhtml.toggleBulletsTip=opsommingstekens aan/uit simplyhtml.toggleNumbersLabel=Nummering aan/uit simplyhtml.toggleNumbersTip=nummering aan/uit simplyhtml.formatListLabel=Lijst... simplyhtml.formatListTip=wijzig lijstopmaak simplyhtml.formatParaLabel=Alinea... simplyhtml.formatParaTip=Wijzig alineaopmaak simplyhtml.paraAlignLeftLabel=Links uitlijnen simplyhtml.paraAlignLeftTip=Alinea links uitlijnen simplyhtml.paraAlignCenterLabel=Centreer alinea simplyhtml.paraAlignCenterTip=Alinea in het midden uitlijnen simplyhtml.paraAlignRightLabel=Rechts uitlijnen simplyhtml.paraAlignRightTip=Alinea rechts uitlijnen # table menu definition # table menu items simplyhtml.tableLabel=Tabel simplyhtml.nextTableCellLabel=Volgende cel simplyhtml.prevTableCellLabel=Vorige cel simplyhtml.insertTableRowLabel=Rij invoegen simplyhtml.insertTableColLabel=Kolom invoegen simplyhtml.appendTableRowLabel=Rij onderaan toevoegen simplyhtml.appendTableColLabel=Kolom onderaan toevoegen simplyhtml.deleteTableRowLabel=Rij verwijderen simplyhtml.deleteTableColLabel=Kolom verwijderen # help menu items simplyhtml.helpLabel=Help simplyhtml.aboutLabel=Over SimplyHTML... # About frame simplyhtml.aboutFrameTitle=Over deze toepassing # Font Dialog simplyhtml.fontDialogTitle=Opmaak lettertype # Font panel simplyhtml.uLineLabel=Onderstreep simplyhtml.strikeLabel=Doorhalen simplyhtml.previewLabel=Voorbeeld simplyhtml.previewText=Voorbeeldtekst simplyhtml.familyLabel=Familie simplyhtml.sizeLabel=Grootte simplyhtml.plainName=geen opmaak simplyhtml.boldName=vet simplyhtml.italicName=cursief simplyhtml.boldItalicName=vet cursief simplyhtml.styleLabel=Stijl simplyhtml.effectLabel=Effect simplyhtml.colorLabel=Kleur simplyhtml.foregroundLabel=Voorgrond: simplyhtml.backgroundLabel=Achtergrond: simplyhtml.noLineLabel=geen # Paragraph style panel simplyhtml.textIndentLabel=Inspringen simplyhtml.alignLabel=Uitlijning: simplyhtml.alignLeft=links simplyhtml.alignCenter=midden simplyhtml.alignRight=rechts simplyhtml.valignLabel=Vert. uitlijning: simplyhtml.valignTop=boven simplyhtml.valignMiddle=midden simplyhtml.valignBottom=onder simplyhtml.valignBaseline=basis # Margin panel simplyhtml.marginLabel=Buitenkant simplyhtml.paddingLabel=Binnenkant # Table dialog simplyhtml.tableDialogTitle=Tabelopmaak simplyhtml.tablePanelTitle=Tabelopmaak simplyhtml.cellPanelTitle=Celopmaak simplyhtml.tableWidthLabel=Breedte: simplyhtml.tableBgColLabel=Achtergrondkleur: simplyhtml.cellMarginTabLabel=Marge simplyhtml.cellBorderTabLabel=Randen simplyhtml.borderWidthLabel=Breedte simplyhtml.borderColorLabel=Kleur: simplyhtml.thisCellRangeLabel=deze cel simplyhtml.thisColRangeLabel=deze kolom simplyhtml.thisRowRangeLabel=deze rij simplyhtml.allCellsRangeLabel=alle cellen simplyhtml.applyCellAttrLabel=Toepassen op simplyhtml.cellGenTabLabel=Algemeen # Paragraph style dialog simplyhtml.paraStyleDialogTitle=Alineastijl simplyhtml.fontTabLabel=Lettertype simplyhtml.paraTabLabel=Alinea # Tag names simplyhtml.cTagNamePara=Alinea simplyhtml.cTagNameHead1=Koptekst 1 simplyhtml.cTagNameHead2=Koptekst 2 simplyhtml.cTagNameHead3=Koptekst 3 simplyhtml.cTagNameHead4=Koptekst 4 simplyhtml.cTagNameHead5=Koptekst 5 simplyhtml.cTagNameHead6=Koptekst 6 simplyhtml.cTagNameLink=Link simplyhtml.cTagNameUL=Ongeordende lijst simplyhtml.cTagNameOL=Geordende lijst # List dialog simplyhtml.listDialogTitle=Lijstopmaak simplyhtml.listTypeLabel=Type: simplyhtml.listPositionLabel=Positie: simplyhtml.listIndentTitle=Inspringen: simplyhtml.listTypeNone=geen simplyhtml.listTypeDecimal=1.,2.,3.,4. simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. simplyhtml.listTypeDisc=bestandssymbool als opsommingsteken simplyhtml.listTypeCircle=rond opsommingsteken simplyhtml.listTypeSquare=vierkant opsommingsteken simplyhtml.listPosInside=binnen simplyhtml.listPosOutside=buiten # Find & replace dialog simplyhtml.findReplaceDialogTitle=Zoeken en vervangen simplyhtml.findNext=Zoek volgende simplyhtml.searchFromStart=Zoeken vanaf het begin simplyhtml.searchDown=Neerwaarts zoeken simplyhtml.wholeWordsOnly=Enkel volledige woorden simplyhtml.searchUp=Opwaarts zoeken simplyhtml.matchCase=Hoofdlettergevoelig simplyhtml.replaceWith=Vervangen met: simplyhtml.textToFind=Te zoeken tekst: simplyhtml.replace=Vervangen... simplyhtml.noMoreOccurrencesFound=niet (meer) gevonden simplyhtml.allOccurrencesReplaced=Alles vervangen simplyhtml.replaceThisQuery=vervang dit simplyhtml.replaceYes=Ja simplyhtml.replaceNo=Nee simplyhtml.replaceAll=Alles simplyhtml.replaceDone=Klaar # Error messages simplyhtml.unableToUndoError=Kan niet ongedaan maken: simplyhtml.unableToRedoError=Kan niet herstellen: simplyhtml.unableToOpenFileError=Bestand kan niet geopend worden # Miscellaneous text simplyhtml.imageFileDesc=Afbeeldingsbestanden simplyhtml.defaultDocName=Geen titel simplyhtml.cancelBtnName=Annuleer simplyhtml.closeBtnName=Sluit simplyhtml.okBtnName=OK simplyhtml.leftLabel=links: simplyhtml.rightLabel=rechts: simplyhtml.topLabel=boven: simplyhtml.bottomLabel=onder: simplyhtml.insertTableTitle=Tabel invoegen simplyhtml.insertTableMsg=Hoeveel kolommen? simplyhtml.close=Sluit simplyhtml.standardStyleName=standaard simplyhtml.styleNameInputTitle=Bewaar titel simplyhtml.styleNameInputText=Naam van de nieuwe stijl? simplyhtml.newStyleDefaultName=nieuwe stijl simplyhtml.docTitleTitle=Bewerk titel document simplyhtml.docTitleQuery=Wijzig titel naar: simplyhtml.layoutTabTitle=Opmaakscherm simplyhtml.htmlTabTitle=HTML-codescherm #fc, 14.2.07: ScriptEditorPanel.changed_cancel=De scripts zijn gewijzigd. Wil je de wijzigingen echt verwerpen? # fc, 2.3.07: OptionPanel.separator.mouse_wheel=Muiswiel OptionPanel.wheel_velocity=Snelheid OptionPanel.wheel_velocity.tooltip=Een hogere waarde resulteert in een snelle effecten van de wielmuis op de mindmap. # fc, 15.5.07: accessories/plugins/NodeHistoryBack.properties_name=Terug accessories/plugins/NodeHistoryBack.properties_documentation=Spring terug in de geselecteerde ketting accessories/plugins/NodeHistoryForward.properties_name=Vooruit accessories/plugins/NodeHistoryForward.properties_documentation=Spring vooruit in de geselecteerde ketting # fc, 25.5.07: OptionPanel.use_tabbed_pane.tooltip=Indien geselecteerd worden de mindmaps in tabs getoond (zoals in Firefox). OptionPanel.use_tabbed_pane=Gebruik tabs # fc, 11.6.07: accessories/plugins/ExportWithTWiki.properties_name=Als TWiki... accessories/plugins/ExportWithTWiki.properties_documentation=Exporteerd de mindmap als een TWiki document. accessories/plugins/ExportWithTWiki.properties=TWiki-bestand (*.twi) # fc, 31.7.07 really_remove_node=Echt alle knopen verwijderen? confirmation=Bevestiging OptionalDontShowMeAgainDialog.dontShowAgain=Niet opnieuw vragen. OptionalDontShowMeAgainDialog.rememberMyDescision=Keuze onthouden. OptionalDontShowMeAgainDialog.cancel=Nee OptionalDontShowMeAgainDialog.ok=Ja OptionPanel.separator.resources_notifications=Bevestigingen OptionPanel.delete_nodes_without_question=Knopen verwijderen zonder bevestiging? OptionPanel.delete_nodes_without_question.tooltip=Als je dit selecteert, dan worden knopen verwijderd zonder bevestiging. Dit kan gegevensverlies betekenen als je er onbewust op klikt. edit.decision=HTML-Editor edit.edit_rich_text=Wil je opmaak zoals vet en cursief gebruiken? OptionPanel.remind_type_of_new_nodes.tooltip="Vraag" zal je vragen (gebruik dit bij twijfel).
"ja" toont de tekst editor voor tekstopmaak.
"Nee" toont de platte teksteditor. OptionPanel.ask=Vraag OptionPanel.standardselectednodetextcolor.tooltip= # fc, 4.9.07: really_execute_script=Wil je echt de scripts in deze mindmap uitvoeren? Zij brengen mogelijk schade toe aan je computer. OptionPanel.resources_execute_scripts_without_asking=Moeten scripts uitgevoerd worden zonder bevestiging? OptionPanel.execute_scripts_without_asking.tooltip=FreeMind scripts kunnen eigenlijk alle acties op je computer uitvoeren.
Je mag dus geen scripts uitvoeren waarvan je niet weet dat ze veilig zijn. #fc, 13.9.07: PatternToString.EdgeStyle=Randstijl PatternToString.EdgeColor=Randkleur PatternToString.EdgeWidth=Randbreedte PatternToString.FontBold=Vet PatternToString.FontItalic=cursief PatternToString.FontName=Lettertype PatternToString.Icon=Icoontje PatternToString.Child=Onderliggende knoopstijl ManagePatternsPopupDialog.Actions=Acties #Dimitry 19.10.07: node_location_help=Slepen wijzigt de knooplocatie. ctrl+slepen wijzigt de afstanden, dubbelklik en ctrl+dubbelklik herstelt ze. #fc, 19.10.07: really_convert_to_current_version=Deze mindmap was gemaakt met een oudere versie van FreeMind.
Moet ze geconverteerd worden? (aangewezen)?
(Anders word ze geopend zoals ze is, zonder garantie.) OptionPanel.resources_convert_to_current_version=Converteer Automatisch mindmaps van oudere FreeMind versies
naar de huidige versie? OptionPanel.resources_convert_to_current_version.tooltip=Alleen voor erg grote mindmaps die niet geconverteerd moeten worden
(dit vergt expertise) kun je de mindmaps openen zonder conversie. #Dimitry 25.10.07 OptionPanel.separator.root_node_appearance=Stam opmaak OptionPanel.use_common_out_point_for_root_node=Randen beginnen op \u00e9\u00e9n punt aan de stam OptionPanel.use_common_out_point_for_root_node.tooltip=Randen beginnen op \u00e9\u00e9n punt aan de stam======= #fc, 9.11.07: ManagePatternsPopupDialog.apply=Toepassen PatternDialog.setscript=Wijzigen? PatternDialog.setscript.tooltip=Een script kan met de stijl geassocieerd worden. PatternDialog.script=Script PatternDialog.script.tooltip=Script als broncode. #fc, 12.11.07: OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Beheer stijlen #fc, 4.1.2008 changed: toggle_menubar = Menubalk toggle_toolbar = Werkbalk toggle_left_toolbar = Tweede werkbalk accessories/plugins/NodeNote_hide_show.properties_name=Notitievenster selection_as_rectangle=Rechthoekige selectie # fc, 8.1.2008 really_cut_node=Knopen echt knippen? OptionPanel.resources_cut_nodes_without_question=Knopen knippen zonder bevestiging? OptionPanel.cut_nodes_without_question.tooltip=Als dit geselecteerd is, dan worden knopen geknipt zonder bevestiging. Dit kan gegevensverlies veroorzaken als je er ongewild op klikt. # fc, 9.1.2008: follow_graphical_link=Ga naar: #fc 10.1.2008: changed: accessories/plugins/NodeNote_hide_show.properties_documentation=Laat het notitievenster verschijnen of verdwijnen. #fc, 16.1.2008 plugins/ScriptEditor.new_script=Nieuw script #fc, 20.2.2008: OptionPanel.separator.save=Bewaar OptionPanel.save_only_intrisically_needed_ids=Bewaar enkel gebruikte knoop-ID's OptionPanel.save_only_intrisically_needed_ids.tooltip=Wanneer dit geselecteerd is, dan worden de ongebruikte knoop-ID's niet bewaard. Merk op dat je geen externe mindmaps kunt linken zonder knoop-ID. # fc, 10.3.2008: OptionPanel.plugins/scripting/tab_name=Scripten OptionPanel.separator.plugins/scripting/separatorPropertyName=Rechten OptionPanel.resources_execute_scripts_without_file_restriction=Bestandsbewerkingen toelaten (Afgeraden) OptionPanel.resources_execute_scripts_without_file_restriction.tooltip=Als jouw Groovy Scripts speciale bestandsacties moeten uitvoeren (open, sluiten, lezen, schrijven, verwijderen(!)),
dan moet je deze optie inschakelen.
Wees er voorzichtig mee omdat gevaarlijke scripts je computer kunnen beschadigen! OptionPanel.resources_execute_scripts_without_network_restriction=Netwerkoperaties toelaten (Afgeraden) OptionPanel.resources_execute_scripts_without_network_restriction.tooltip=Als je Groovy Scripts speciale netwerkacties moeten uitvoeren,
dan moet je deze optie inschakelen.
Wees voorzichtig met deze optie, omdat gevaarlijke scripts je geheimen kunnen onthullen! OptionPanel.resources_execute_scripts_without_exec_restriction=Toestaan andere applicaties uit te voeren (Afgeraden) OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip=Als jouw Groovy Scripts andere applicaties moeten uitvoeren (zoals een browser) zonder dat te vragen(!),
dan moet je deze optie inschakelen.
Wees er voorzichtig mee omdat gevaarlijke scripts je computer kunnen beschadigen! plugins/ScriptEditor.FORBIDDEN_ACTION=FreeMind groovy scripts zijn beperkt. Volgende {0,keuze,0#Bestand|1#Netwerk|2#Exec} operatie is verboden: {1,keuze,0#Accepteer|1#Verbind|2#Luister|3#Multicast|4#Standaardinstellingen|5#Exec|6#Link|7#Verwijder|8#Lees|9#Schrijf}. Je kunt dit wijzigen in de programma-instellingen. # changed, fc, 11.3.2008: plugins/ScriptEditor.cancel=Verwerp wijzigen en sluit plugins/ScriptEditor.exit=Bewaar en sluit # changed, fc, 26.3.2008: plugins/TimeManagement.xml_closeButton=Sluit # changed, fc, 7.4.2008: PatternDialog.nodebackgroundcolor.tooltip=De achtergrond van de knoop wanneer niet geselecteerd. PatternDialog.nodecolor.tooltip=De voorgrond van de knoop wanneer niet geselecteerd. PatternDialog.nodestyle.tooltip=De stijl beschrijft de vorm van een knoop.
Mogelijke waarden:
splitsing: zonder box,
wolk: knoop met een rechthoek er rond,
Als bovenliggende: neem de stijl van de bovenliggende knoop
of de standaard stijl van de stam voor de stam,
Gecombineerd: Wolk wanneer de knoop is opgeplooid, anders splitsing.
PatternDialog.nodetext.tooltip=Hier kun de de tekst van de knoop bepalen. De vorige tekst wordt overschreven als een patroon wordt toepast. PatternDialog.nodefontname=Lettertypenaam van de knoop PatternDialog.nodefontsize=Lettergrootte van de knoop PatternDialog.nodefontname.tooltip= PatternDialog.nodefontsize.tooltip= PatternDialog.nodefontbold.tooltip= PatternDialog.nodefontitalic.tooltip= # new, fc, 8.4.2008: PatternDialog.separator.ScriptingControl=Scripting # new, fc, 10.4.2008: OptionPanel.resources_don_t_show_note_icons=Knoopicoontjes niet tonen #new, fc, 11.4.2008: FreeMind=FreeMind's Startpagina # new, fc, 12.4.2008: really_remove_notes=Notities echt verwijderen? OptionPanel.resources_remove_notes_without_question=Notities verwijderen zonder vragen? OptionPanel.remove_notes_without_question.tooltip=Als dit is ingeschakeld, dan worden de notities die bij een knoop horen verwijderd zonder bevestiging. Dit kan tot dataverlies lijden als je er onbewust op klikt. OptionPanel.resources_save_folding_state=Bewaar altijd de wijzigingen aan de vouwstatus OptionPanel.resources_save_folding_state.tooltip=Indien geselecteerd markeert het open en dichtvouwen je mindmap als niet bewaard. # new, fc, 17.4.2008: plugins/ScriptEditor.sign=Onderteken Script... # new, fc, 18.4.2008: OptionPanel.resources_script_user_key_name_for_signing=Optionele gebruikerssleutelalias voor ondertekenen OptionPanel.resources_script_user_key_name_for_signing.tooltip=Als je je scripts wil ondertekenen, zet dan hier de alias van de sleutel.
De sleutel wordt verwacht in de standaard opslagplaats voor sleutels.
Het wachtwoord van de sleutel moet overeenkomen met dat van de sleutelopslagplaats (dit is standaard). OptionPanel.resources_signed_script_are_trusted=Vertrouwde ondertekende scripts (aangeraden). OptionPanel.resources_signed_script_are_trusted.tooltip=Als scripts door een vertrouweling ondertekend zijn, (vb. door de makers van FreeMind of door jezelf), dan worden ze zonder beperking uitgevoerd. # changed, fc, 24.4.2008: # this is still the old "export_branch", but as many users didn't find this feature, we # have to describe it better. Moreover, it is put into the node context menu. export_branch_new = Afsplitsen als nieuwe mindmap... # new, fc, 28.4.2008: icon_yes = Belangrijk icon_folder = Map icon_up = Hoger icon_down = Lager icon_smiley-neutral = Geen bedenkingen icon_smiley-oh = Verrassend icon_smiley-angry = Boos icon_encrypted = Gesloten icon_decrypted = Open icon_broken-line = Gebroken icon_flag-black = Zwarte vlag icon_flag-blue = Blauwe vlag icon_flag-green = Groene vlag icon_flag-orange = Oranje vlag icon_flag-pink = Roze vlag icon_flag-yellow = Gele vlag icon_clock = Tijd icon_hourglass = Wachten icon_calendar = Datum icon_kmail = e-mail icon_edit = Verfijnen icon_stop-sign = Stop icon_closed = Geen toegang # changed: icon_flag = Rode vlag #changed: OptionPanel.remind_use_rich_text_in_new_long_nodes=Gebruik opmaak voor alle knopen # new, fc, 21.5.2008: icon_freemind_butterfly = FreeMind icon_full-8 = Prioriteit 8 icon_full-9 = Prioriteit 9 # new, fc, 25.5.2008: node_is_write_protected=Doelknoop is schrijfbeveiligd. # new, fc, 6.7.2008: KeyDoc=Key Documentatie PDF # translate only, when you have an own translation of this doc. pdfKeyDocLocation=./doc/FM_Key_Mappings_Quick_Guide.pdf icon_info=Info icon_full-0=Prioriteit 0 icon_prepare=Geel verkeerslicht icon_go=Groen verkeerslicht icon_list=Lijst icon_launch=Start icon_family=Familie icon_female1=Vrouw1 icon_female2=Vrouw2 icon_male1=Man1 icon_male2=Man2 icon_fema=Vrouwen icon_group=Groep OptionPanel.separator.icon_properties=Icoontjes OptionPanel.icons.list=Lijst van de getoonde standaard icoontjes OptionPanel.icon_order_description=Hier kun je de standaardicoontjes rangschikken of uitschakelen. De icoontjes moeten gescheiden worden door een ';'. # new, fc, 16.7.2008: OptionPanel.sk=Sk OptionPanel.el=El OptionPanel.et=Et OptionPanel.id=Id OptionPanel.uk_UA=Uk UA OptionPanel.vi=Vi # new, fc, 22.7.2008 select_icon=Kies een icoontje mode_MindMap=Mindmapmodus mode_Browse=Bladermodus mode_File=Bestandsmodus # changed mode_status = Modus gewijzigd naar {0} mode_title =FreeMind - {0} # new, fc, 25.8.2008 OptionPanel.defaultfontsize.tooltip=Standaard lettergrootte voor nieuwe knopen. # new, fc, 20.12.2008 OptionPanel.ro=Ro #new, fc, 6.12.2009: really_convert_to_current_version2=De mindmap die je probeert te openen is gemaakt met een oudere versie van FreeMind en opgeslagen in een oud formaat.
FreeMind staat op het punt om de mindmap te converteren naar het huidige nieuwe formaat.
Nadat de mindmap is geconverteerd en opgeslagen met deze versie van FreeMind zal deze niet langer geopend kunnen worden met oudere versies van FreeMind.
Wil je dat FreeMind de mindmap converteert en opent? OptionPanel.eu=Eu freemind-0.9.0/freemind/Resources_id.properties0000644000000000000000000017546111527433212020362 0ustar rootroot#! #! created/edited by Popeye version 0.54 (popeye.sourceforge.net) #! encoding:ISO-8859-1 # by Perry Harahap - permataharahap about =Tentang about_text = FreeMind - program bebas untuk membuat Mind Map dan pengembangan pengetahuan.\nHak Cipta \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, et al.\nProgram ini adalah perangkat lunak bebas dan gratis yang dilindungi dengan Lisensi Publik Umum GNU.\n\nWeb: http://freemind.sourceforge.net/\nVersi: antialias_all =Antialias Semua antialias_edges =Antialias Tangkai antialias_none =Tanpa Antialias apply=Terapkan background =Latar Belakang bezier =Kurva Bezier blend_color =Campur Warna bold =Tebal boldify_branch =Tebalkan branch =Cabang bubble =&Balon cancel =Batal cannot_join_nodes_with_children =Node yang punya anak tidak dapat digabung center =Tengah cloud =Awan cloud_color =Warna Awan... close =Tutup copy =Salin copy_single =Salin Tunggal cut =Potong decrease_branch_font_size =Perkecil Font decrease_node_font_size =Perkecil Font documentation =Dokumentasi edge =Tangkai edge_color =Warna Tangkai... edge_width_parent =Induk edge_width_thin =Tipis edit =&Edit edit_link_manually =Edit Hipertaut secara Manual edit_long_node =Edit Node Panjang enter_base_url =Masukkan URL acuan. Hipertaut akan dibuat relatif mengacu terhadap URL ini. enter_confirms =Enter untuk Menerapkan error =Galat #export_branch =Cabang... export_branch_to_html =Cabang sebagai HTML export_to_html =Sebagai HTML extension_menu =Gaya &Fisik file =Be&rkas file_not_found =Berkas $1 tidak ditemukan find =Temukan... find_what =Temukan apa find_next =Temukan Berikutnya fold =Lipat follow_link =Buka Hipertaut font =Font fork =&Ranting help =Bantuan html_export_based_on_headings =Ekspor HTML - Berdasarkan Tajuk html_export_no_folding =Ekspor HTML - Tanpa Lipatan html_export_fold_currently_folded =Ekspor HTML - Biarkan Lipatan Apa Adanya html_export_fold_all =Ekspor HTML - Tutup Semua Lipatan icon_menu =I&kon icon_help =Pertanyaan icon_messagebox_warning =Penting icon_idea =Ide icon_button_ok =OK icon_button_cancel =Batal icon_back =Mundur icon_forward =Maju icon_attach =Lihat sini icon_ksmiletris =Saya senang icon_clanbomber =Bahaya icon_desktop_new =Jangan lupa icon_flag =Bendera icon_gohome =Rumah icon_kaddressbook =Telepon icon_knotify =Musik icon_korn =Kotak surat icon_Mail =Surat icon_password =Kunci icon_pencil =Untuk diperbaiki icon_stop =Stop icon_wizard =Ajaib icon_xmag =Untuk dibicarakan icon_bell =Pengingat icon_bookmark =Sangat bagus icon_penguin =Linux icon_licq =Bagus import =Impor import_branch =Cabang... import_explorer_favorites =Favorit dari Explorer... import_folder_structure =Struktur Map... import_linked_branch =Cabang Bertaut import_linked_branch_without_root =(Cabang Bertaut) Tanpa Akarnya increase_branch_font_size =Perbesar Font increase_node_font_size =Perbesar Font italic =Miring italicise_branch =Miringkan join_nodes =Gabung Node license =Lisensi license_text = FreeMind - Program untuk membuat dan membaca MindMap\nHak Cipta (C) 2000-2010 Joerg Mueller \nBaca COPYING untuk info selengkapnya.\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. linear =Garis Lurus load =Muat locking_failed_by_open =Penguncian peta $1 gagal. Dibuka untuk baca-saja. locking_failed_by_save_as =Penguncian peta $1 gagal. Perintah Simpan Sebagai dibatalkan. locking_old_lock_removed =Peta $1 dikunci oleh pemakai $2. Penguncian dilepaskan karena sudah usang. map_already_exists =Peta sudah ada. Anda ingin menimpanya? map_corrupted =Peta rusak. Lihat detail? map_locked_by_open =Peta $1 sedang diedit oleh pemakai $2. Dibuka untuk baca-saja. map_locked_by_save_as =Peta $1 sedang diedit oleh pemakai $2. Perintah Simpan Sebagai dibatalkan. mindmap =Peta mindmaps =Peta mindmaps_desc =Peta (*.mm) mindmaps_filter_desc =Filter (*.mmfilter) mode_na =Modus tak tersedia mode_status =Modus diubah ke Modus {0} mode_title =FreeMind - Modus {0} modes =Modus move_to_root =Pergi ke Akar new =Baru new_child =Node Anak Baru new_mindmap =Peta Baru new_node =Node Baru new_sibling_before =Node Kakak Baru new_sibling_behind =Node Adik Baru next_map =Peta Berikutnya no =Tidak node =Node node_changed_discard_changes =Node telah diubah. Anda ingin mengabaikan perubahannya? long_node_changed_submit =Node telah diubah. Anda ingin menyimpan perubahannya? long_node_changed_cancel =Node telah diubah. Anda ingin membatalkan perintah ini? node_color =Warna Node... node_down =Node ke Bawah node_up =Node ke Atas nonboldify_branch =Tak-tebalkan nonitalicise_branch =Tak-miringkan normal =Normal no_found_from = $1 tidak ditemukan dalam $2. no_more_found_from = $1 tidak ditemukan lagi dalam $2. no_previous_find =Tidak ada pencarian sebelumnya. not_saved_for_link_error =Peta harus disimpan sebelum mengeset hipertaut melalui pemilih berkas. open =Buka... page =&Penataan Halaman... paste =Tempel new_node_as_sibling_not_possible_for_the_root =Node baru sebagai kakak/adik tidak dimungkinkan untuk node akar preferences =Preferensi previous_map =Peta Sebelumnya print =Cetak print_dialog =Cetak... print_preview =Cetak Tampakan A&wal... print_preview_title =Tampakan Awal quit =Keluar read_only =Baca Saja remove_node =Copot Node repair_link =Perbaiki Taut repair_link_question =Peta tertaut tidak dapat dimuat. Perbaiki taut secara manual? replace=Ganti save =Simpan save_as =Simpan Sebagai save_failed =Usaha menyimpan peta $1 gagal save_unsaved =Simpan peta berikut? saved =Tersimpan scheme_evaluate =Evaluasi! select_favorites_folder =Pilih map tempat Favorit Anda berada select_folder_for_importing =Pilih map yang hendak diimpor set_image_by_filechooser =Gambar (Pemilih Berkas atau Taut)... set_link_by_filechooser =Hipertaut (Pemilih Berkas) set_link_by_textfield =Hipertaut (Kolom Teks) sharp_bezier =Kurva Bezier Tajam sharp_linear =Garis Lurus Tajam split =Pisahkan style =Gaya toggle_children_folded =Buka/Tutup Lipatan Anak toggle_folded =Buka/Tutup Lipatan underline =Garis Bawah unfold =Buka Lipatan url_error =URL ini salah formatnya! url_load_error =Peta yang diacu URL tidak dapat dimuat. width =Lebar yes =Ya zoom_in =Zum Mendekat zoom_out =Zum Menjauh remove_last_icon =Copot Ikon Terakhir remove_all_icons =Copot Semua Ikon lots_of_links_warning = Anda akan membuat banyak sekali tautan ke node yang sama. Benarkah Anda menghendaki tautan-tautan ini? remove_arrow_link =Copot Panah Taut arrow_link_color =Warna Panah Taut... user_defined_zoom =Setelan pemakai. user_defined_zoom_status_bar =Mengubah zum sesuai setelan pemakai di {0}%. FAQ =FAQ webDocu =Dokumentasi Web printing_settings =Skala Cetak fit_to_page =Sesuaikan ke Satu Halaman user_zoom =Faktor Zum Pencetakan (0.0 - 2.0): ok =OK selection_method_by_click =Klik-sekali untuk Memilih selection_method_direct =Tunjuk untuk Memilih combined =Gabungan as_parent =Seperti Induknya undo =Urungkan redo =Ulangi delete_child =Hapus Node most_recent_files =Be&rkas Terkini menu_view =&Tampakan menu_navigate =&Navigasi menu_format =F&ormat menu_extras =A&lat menu_insert =&Sisip menu_attributes =&Atribut edge_style =Gaya Tangkai edge_width =Lebar Tangkai menu_file_import =I&mpor menu_file_export =&Ekspor edit_node =Edit Node node_background_color =Warna Latar Belakang &Node... choose_edge_color =Pilih Warna Tangkai underlined =Garis Bawah font_size =ukuran font font_family =font import_linked_branch_no_link =Node terpilih tidak bertaut pada sesuatu yang dapat diimpor. add_link =Tambahkan Taut Grafis less_than_two_selected_nodes =Anda harus memilih minimal dua node untuk membuat tautan. choose_node_background_color =Pilih Warna Latar Belakang Node: choose_node_color =Pilih Warna Node: choose_background_color =Pilih Warna Latar Belakang: choose_cloud_color =Pilih Warna Awan: change_arrows_in_arrow_link =Ubah Panah dari Taut Berpanah add_local_link =Tambahkan Hipertaut Lokal link_not_available_any_more =Tautan ini tidak sahih lagi. Node di antaranya telah dicopot. file_already_exists =Berkas {0} sudah ada. Apakah Anda hendak menimpanya? error_creating_directory =Tidak dapat membuat direktori untuk ekspor. export_svg_text = Scalable Vector Graphic (SVG) export_pdf_text = Portable Document Format (PDF) goto_link_node_action =Pergi ke Taut undefined_error =Galat yang tidak diharapkan terjadi. Tolong coba aporkan sebagai bug. cannot_add_parent_to_root =Node akar tidak dapat ditambahkan ke induk baru. cannot_delete_root =Node akar tidak dapat dicopot atau dipotong. cannot_add_parent_diff_parents =Semua node harus memiliki induk yang sama untuk fungsi ini. no_format_copy_before_format_paste =Format tidak dapat ditempelkan sebelum disalin dari node yang lain. accessories/plugins/AutomaticLayout.properties_documentation = Menetapkan atak peta.
Level pertama hitam, kedua biru, dst. accessories/plugins/AutomaticLayout.properties_name =&Atak Otomatis accessories/plugins/BlinkingNodeHook.properties_documentation = Buat node berkedip. Hati-hati. Jangan gunakan pada banyak node, dan jangan gunakan sekaligus dengan pemformatan otomatis yang lain. accessories/plugins/BlinkingNodeHook.properties_name =Node Berkedip accessories/plugins/CreationModificationPlugin.properties_documentation=Fungsi ini mencatat waktu pembuatan dan pengubahan node-node. accessories/plugins/CreationModificationPlugin.properties_name =Tunjukkan &Waktu Diubah accessories/plugins/ExportToImage_PNG.properties_documentation =Ekspor peta dengan lipatan saat ini sebagai gambar PNG. accessories/plugins/ExportToImage_PNG.properties_name =Sebagai PNG... accessories/plugins/ExportToImage_JPEG.properties_documentation =Ekspor peta dengan lipatan saat ini sebagai gambar JPEG. accessories/plugins/ExportToImage_JPEG.properties_name =Sebagai JPEG... accessories/plugins/ExportWithXSLT.properties_documentation =Metode ekspor universal menggunakan skrip XSLT. accessories/plugins/ExportWithXSLT.properties_name =Dengan XSLT... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_name =Sebagai XHTML (versi JavaScript)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_name =Sebagai XHTML (versi gambar peta yang dapat diklik)... accessories/plugins/FitToPage.properties_documentation =Sesuaikan zum hingga seluruh peta tertampilkan dalam jendela ini. accessories/plugins/FitToPage.properties_name =Zum untuk Menyesuaikan ke &Halaman accessories/plugins/FormatCopy.properties_documentation = Menyalin pemformatan node. accessories/plugins/FormatCopy.properties_name =Salin Format accessories/plugins/FormatPaste.properties_documentation = Menempelkan pemformatan node. accessories/plugins/FormatPaste.properties_name =Tempel Format accessories/plugins/FormularEditor.properties_documentation = Asosiasikan sebuah editor formular sederhana dengan catatan ini. accessories/plugins/FormularEditor.properties_name =Editor Formular accessories/plugins/IconSelectionPlugin.properties_documentation = Dengan ini, ikon dapat dipilih lewat suatu jendela. accessories/plugins/IconSelectionPlugin.properties_name =Pilih Ikon... accessories/plugins/NewParentNode.properties_documentation = Semua node terpilih dipindahkan ke induk yang baru. accessories/plugins/NewParentNode.properties_name =Node Induk Baru accessories/plugins/NodeNote.properties_documentation = Asosiasikan sebuah editor catatan sederhana ke catatan ini. accessories/plugins/NodeNote.properties_name =Catatan accessories/plugins/PMCalculation.properties_documentation = Hitung usaha yang dibutuhkan masing-masing tugas. accessories/plugins/PMCalculation.properties_name =Kalkulasi accessories/plugins/RemoveNote.properties_documentation = Menghapus isi catatan dari satu atau lebih catatan. accessories/plugins/RemoveNote.properties_name =Copot Catatan accessories/plugins/RevisionPlugin.properties_documentation = Tandai latar belakang dari setiap node yang diubah. accessories/plugins/RevisionPlugin.properties_name =Warnai &Revisi dengan Kuning accessories/plugins/SplitNode.properties_documentation = Node dipisahkan accessories/plugins/SplitNode.properties_name =&Pisahkan Node accessories/plugins/UnfoldAll.properties_documentation = Buka lipatan node terpilih dan semua anaknya. accessories/plugins/UnfoldAll.properties_name =Buka Semua accessories/plugins/FoldAll.properties_documentation = Lipat node terpilih dan semua anaknya.. accessories/plugins/FoldAll.properties_name =Lipat Semua accessories/plugins/UnfoldOneLevel.properties_documentation = Buka lipatan node terpilih satu level. accessories/plugins/UnfoldOneLevel.properties_name =Buka Satu Level accessories/plugins/FoldOneLevel.properties_documentation = Lipat node terpilih satu level. accessories/plugins/FoldOneLevel.properties_name =Lipat Satu Level plugins/FreemindHelp.xml_documentation =Bantuan Lebih Jauh FreeMind plugins/FreemindHelp.xml_name =Bantuan... plugins/ExportPdf.xml_documentation =Ekspor ke PDF plugins/ExportPdf.xml_name =Sebagai PDF... plugins/ExportSvg.xml_documentation =Ekspor ke SVG plugins/ExportSvg.xml_name =Sebagai SVG... cannot_move_to_child =Node tidak dapat dipindahkan ke bawah anaknya sendiri. accessories/plugins/EnterPassword.properties_name =&Mati-hidupkan Enkripsi accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EncryptNode.properties_name =Sisipkan Node Ter&enkripsi accessories/plugins/EncryptNode.properties_documentation =Sisipkan node baru yang anak-anaknya disimpan terenkripsi. accessories/plugins/EncryptNode.properties_0 =Pilih kata sandi untuk node terenkripsi. accessories/plugins/EncryptNode.properties_1 =Kata sandi tidak sama atau terlalu pendek. accessories/plugins/EncryptNode.properties_2 =Ketikkan Kata Sandi: accessories/plugins/EncryptNode.properties_3 =Ketikkan lagi Kata Sandi: accessories/plugins/EncryptNode.properties_4 =Ketikkan kata sandi Anda. accessories/plugins/EncryptNode.properties_5 = Ingat, keamanan enkripsi bergantung hampir
sepenuhnya pada kualitas kata sandi Anda. accessories/plugins/EncryptNode.properties_6 =OK accessories/plugins/EncryptNode.properties_7 =Batal accessories/plugins/EncryptNode.properties_wrong_password =Kata Sandi tidak benar. accessories/plugins/NewEncryptedMap.properties_documentation =Buat peta terenkripsi baru. accessories/plugins/NewEncryptedMap.properties_name =Buat Peta Terenkripsi... accessories/plugins/EncryptNode.properties_select_me =Pilih saya untuk melanjutkan! accessories/plugins/EncryptNode.properties_insert_encrypted_node_first =Operasi ini hanya dapat dilakukan pada node yang terenkripsi. Mohon sisipkan node terenkripsi dari menu Alat. selection_method_delayed=Pilihan Otomatis Tertunda plugins/TimeManagement.xml_documentation= Tunjukkan modul Kalender buatan Kai Toedter. plugins/TimeManagement.xml_name=Tunjukkan Kalender... plugins/TimeManagement.xml_appendButton=Bubuhkan Tanggal Pada Node Terpilih plugins/TimeManagement.xml_reminderButton=Ingatkan Saya Pada Tanggal Ini plugins/TimeManagement.xml_cancelButton=Batal plugins/TimeManagementReminder.xml_documentation=Internal hook for scheduling resubmission tasks. plugins/TimeManagementReminder.xml_name=Internal hook for scheduling resubmission tasks. plugins/TimeManagement.xml_reminderNode_tooltip=Pengingat dijadualkan pada {0,date} {0,time}. plugins/TimeManagement.xml_reminderNode_showNode=Waktu untuk node " {0} "telah dilewati. Perlukah saya ingatkan lagi dalam 10 menit? plugins/TimeManagement.xml_reminderNode_onlyOneDate=Untuk saat ini, satu node hanya bisa punya satu pengingat.
Pengingat saat ini terjadual untuk {0,date} {0,time}, Anda memilih {1,date} {1,time}.

Apakah Anda hendak mengganti waktu pengingat node ini (YES)
atau tetap memakai yang lama (NO)? plugins/TimeManagement.xml_removeReminderButton =Copot Pengingat plugins/TimeManagement.xml_removeReminderButton_tooltip =Copot semua pengingat yang diasosiasikan dengan node terpilih. plugins/TimeManagement.xml_minute=Menit: plugins/TimeManagement.xml_hour=Jam: plugins/TimeManagement.xml_WindowTitle=Manajemen Waktu plugins/latex/LatexNodeHook.properties_documentation = Rumus Latex plugins/latex/LatexNodeHook.properties_name =&Latex plugins/latex/LatexNodeHook.editorTitle =Editor, tutup untuk menerapkan accessories/plugins/HierarchicalIcons.properties_documentation=Bila salah satu dari anak(-cucu) node ini memiliki ikon, ikon tersebut akan ditampilkan juga di sini dalam format kecil. accessories/plugins/HierarchicalIcons.properties_name=Tampilkan Ikon secara &Hirarkis icon_full-1 =Prioritas 1 icon_full-2 =Prioritas 2 icon_full-3 =Prioritas 3 icon_full-4 =Prioritas 4 icon_full-5 =Prioritas 5 icon_full-6 =Prioritas 6 icon_full-7 =Prioritas 7 RevertAction=Muat &Ulang freemind_reverted=FreeMind Dimuat Ulang plugins/TimeManagement.xml_todayButton=Hari Ini plugins/TimeList.xml_documentation=Tampilkan semua waktu terjadual dan node yang bersangkutan. plugins/TimeList.xml_name=Tampilkan Senarai Jadual Waktu remove_node_background_color =&Hapus Warna Latar Belakang Node plugins/TimeList.xml_Modified=Diubah plugins/TimeList.xml_Created=Dibuat plugins/TimeList.xml_Date=Tanggal plugins/TimeList.xml_Text=Teks plugins/TimeList.xml_Icons=Ikon select_branch=Pilih Cabang yang Terlihat select_all=Pilih Semua yang Terlihat change_link_arrows=Ubah Panah Tautan reset_node_position=Tata-ulang &Posisi plugins/RemoveReminder.xml_documentation=Copot Pengingat dari Node plugins/RemoveReminder.xml_name=Copot Pengingat plugins/TimeManagement.xml_reminderButton_tooltip=Bila ditekan, pencatat waktu akan menjadualkan waktu yang diberikan. Lalu, ikon akan berkedip pada saat itu.
Bila peta ditutup, catatan waktu akan diaktifkan ulang ketika peta dibuka kembali. filter_toolbar=Filter filter_dialog=Penyusun Filter filter_no_filtering=Tanpa Filter filter_selected_node_view=Node Terpilih Saat Ini filter_conditions =Filter filter_edit=Edit filter_edit_description=Edit Senarai Filter filter_unfold_ancestors=Buka Lipatan Node Terfilter filter_icon=Ikon filter_node=Teks Node filter_exist=Ada filter_does_not_exist=Tak Ada filter_contains=Mengandung filter_is_equal_to=Sama dengan filter_is_not_equal_to=Tak sama dengan filter_ignore_case=Abaikan Huruf Besar/Kecil filter_enter_value=Ketikkan Nilai filter_add=Tambah filter_delete=Hapus filter_select=Pilih filter_not=Not (Negasi) filter_and=And (Dan) filter_or=Or (Atau) filter_show_ancestors=Tampilkan Moyangnya filter_show_descendants=Tunjukkan Keturunannya attributes_all=Semua Atribut attributes_attribute=Atribut attributes_close=Tutup attribute_delete=Hapus Semua Nilai attribute_delete_value=Hapus Nilai Ini attributes_edit=Edit attributes_edit_in_place=Edit Atribut attributes_edit_tooltip=Edit Set attribute_font_size_tooltip=Atribut Ukuran Font attributes_dialog=Kelola &Atribut... attributes_dialog_title=Kelola Atribut attributes_import=Impor attributes_import_tooltip=Impor atribut dari peta lain yang termuat. attributes_assign_dialog=Pasan&g Atribut... attributes_visible=Yang Tampak dan Diipilih attributes_visible_tooltip=Yang Tampak dan Dipilih attributes_refresh=Segarkan attribute_replace=Ganti dengan attributes_restriction=Set Terbatas attributes_restricted_attributes_tooltip=Batasi Set Atribut attributes_restricted_values_tooltip=Batasi Set Nilai-nilai untuk Atribut Ini attributes_select_all=Semua attributes_select_all_tooltip=Pilih/Batal Pilih attributes_for_selected=Node Terpilih attributes_for_visible=Semua Node Terlihat attributes_deselect_all=Nihil attribute_list_box_label_text=Nilai yang Telah Ada attributes_popup_edit=Edit attributes_popup_optimal_width=Lebar Optimal attributes_popup_hide=Sembunyikan attributes_popup_new=Atribut Baru attributes_popup_delete=Hapus attributes_popup_up=Naik attributes_popup_down=Turun attributes_show=Tampilkan attributes_show_all =Tampilkan Semua Atribut attributes_show_selected =Tampilkan Atribut Terpilih attributes_hide_all =Sembunyikan Atribut Terpilih attribute_top=Semua Atribut untuk Peta Termuat attributes_skip_root=Abaikan Node Akar attributes_no_import_candidates_found=Atribut baru tidak ditemukan attributes_adding_empty_attribute_error=String kosong tidak dapat digunakan sebagai nama atribut property_dialog=Preferensi... OptionPanel.automatic=Otomatis OptionPanel.de=De OptionPanel.dk=Dk OptionPanel.en=En OptionPanel.es=Es OptionPanel.fr=Fr OptionPanel.gl=Gl OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.ko=Ko OptionPanel.nl=Nl OptionPanel.pl=Pl OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.ru=Ru OptionPanel.sl=Sl OptionPanel.zh_TW=Zh OptionPanel.zh_CN=Zh CN OptionPanel.fork=Ranting OptionPanel.bubble=Balon OptionPanel.as_parent=Seperti Induknya OptionPanel.combined=Gabungan OptionPanel.bezier=Kurva Bezier OptionPanel.linear=Garus Lurus OptionPanel.default=Bawaan OptionPanel.metal=Metal OptionPanel.windows=Windows OptionPanel.motif=Motif OptionPanel.gtk=Gtk OptionPanel.nothing=Nihil OptionPanel.relative=Relatif OptionPanel.absolute=Absolut OptionPanel.first=Pertama OptionPanel.last=Terakhir OptionPanel.selection_method_direct=Langsung OptionPanel.selection_method_delayed=Tertunda OptionPanel.selection_method_by_click=Dengan Klik OptionPanel.html_export_no_folding=Tanpa Lipatan OptionPanel.html_export_fold_currently_folded=Biarkan Lipatan Apa Adanya OptionPanel.html_export_fold_all=Lipat Semua OptionPanel.html_export_based_on_headings=Berdasarkan Tajuk OptionPanel.Environment=Lingkungan OptionPanel.Files=Berkas OptionPanel.language=Bahasa OptionPanel.language.tooltip=Memilih bahasa yang hendak digunakan oleh program. Setel ke 'automatic' untuk mencoba mengambil pilihan ini dari sistem milik pemakai. OptionPanel.experimental_file_locking_on=Penguncian Berkas Eksperimental OptionPanel.experimental_file_locking_on.tooltip= Fitur ini masih dalam percobaan OptionPanel.draganddrop=Seret dan Jatuhkan OptionPanel.draganddrop.tooltip=Bila Seret dan Jatuhkan Diaktifkan. OptionPanel.userproperties=Properti Pemakai OptionPanel.patternsfile=Berkas Pola OptionPanel.docmapurl_since_version_0_7_0=DocMapURL OptionPanel.browsemode_initial_map=Lokasi Peta Awal untuk Modus Jelajah OptionPanel.browsemode_initial_map.tooltip=URL dari peta yang dimuat saat modus jelajah dimulai. OptionPanel.last_opened_list_length=Panjang Senarai Berkas-Terakhir-Dibuka OptionPanel.time_for_automatic_save=Waktu saat Penyimpanan Otomatis OptionPanel.time_for_automatic_save.tooltip= Masa antar waktu penyimpanan otomatis (dalam ms): Untuk menonaktifkan penyimpanan otomatis, setel ke 2000000000. OptionPanel.delete_automatic_saves_at_exit=Hapus Simpanan Otomatis Saat Keluar OptionPanel.delete_automatic_saves_at_exit.tooltip= Setel ke 'true' agar berkas simpanan otomatis dihapus manakala FreeMind dimatikan secara normal. OptionPanel.number_of_different_files_for_automatic_save=Jumlah Berkas Berbeda untuk Penyimpanan Otomatis OptionPanel.number_of_different_files_for_automatic_save.tooltip= Sejumlah n berkas berbeda untuk menyimpan peta. Penyimpanan otomatis pertama menggunakan berkas pertama, dan seterusnya, hingga yang ke-n+1 kembali menggunakan berkas pertama (siklik) OptionPanel.path_to_automatic_saves=Jalur Ke Penyimpanan Otomatis OptionPanel.path_to_automatic_saves.tooltip= Untuk mengganti setelan jalur bawaan dari Java (yakni 'java.io.tmpdir'), masukkan jalur direktori di sini: kemungkinan lain: * freemind_home mengacu pada direktor tempat auto.properties berada. * bawaan menunjuk ke java.io.tmpdir OptionPanel.Defaults=Bawaan OptionPanel.standardnodestyle=Gaya Node Bawaan OptionPanel.standardnodestyle.tooltip=Gaya node bawaan yang didukung adalah ranting ('fork'), balon ('bubble') dan gabungan ('combined' ) OptionPanel.standardrootnodestyle=Gaya Node Akar Bawaan OptionPanel.standardrootnodestyle.tooltip=Gaya node akar bawaan yang didukung adalah ranting ('fork'), balon ('bubble') dan gabungan ('combined') OptionPanel.standardnodetextcolor=Warna Node Bawaan OptionPanel.standardnodetextcolor.tooltip=Warna bawaan untuk node, dalam notasi HTML (#RRGGBB heksadesimal) OptionPanel.standardselectednodecolor=Warna Node Terpilih Bawaan OptionPanel.standardselectednodecolor.tooltip=Warna bawaan untuk node terpilih, dalam notasi HTML (#RRGGBB heksadesimal) OptionPanel.standardselectednoderectanglecolor=Warna Balon Node Terpilih OptionPanel.standardselectednoderectanglecolor.tooltip=Warna balon yang menandai pilihan node, dalam notasi HTML (#RRGGBB heksadesimal) OptionPanel.standarddrawrectangleforselection=Tandai Node Terpilih dengan Balon OptionPanel.standarddrawrectangleforselection.tooltip=Lingkari node terpilih dengan balon. OptionPanel.standardedgecolor=Warna Tangkai Bawaan OptionPanel.standardedgecolor.tooltip=Warna tangkai bawaan dalam notasi HTML OptionPanel.standardlinkcolor=Warna Taut Bawaan OptionPanel.standardlinkcolor.tooltip=Warna taut bawaan dalam notasi HTML OptionPanel.standardbackgroundcolor=Warna Latar Belakang Bawaan OptionPanel.standardbackgroundcolor.tooltip=Warna latar belakang bawaan dalam notasi HTML OptionPanel.printonwhitebackground=Latar belakang putih untuk mencetak OptionPanel.printonwhitebackground.tooltip=Selalu gunakan latar belakang putih saat mencetak OptionPanel.standardcloudcolor=Warna Awan Bawaan OptionPanel.standardcloudcolor.tooltip=Warna awan bawaan dalam notasi HTML OptionPanel.defaultfont=Font Bawaan OptionPanel.defaultfont.tooltip=Font bawaan untuk node. Ini hanya berlaku bila font TrueType tersedia dalam sistem OptionPanel.defaultfontstyle=Gaya Font Bawaan OptionPanel.defaultfontsize=Ukuran Font Bawaan OptionPanel.max_node_width=Lebar Node Maksimum OptionPanel.max_node_width.tooltip=Lebar node maksimal bawaan dalam piksel. OptionPanel.standardedgestyle=Gaya Tangkai Bawaan OptionPanel.standardedgestyle.tooltip=Gaya tangkai bawaan. Pilihan: garis lurus ('linear' ) atau kurva Bezier ('bezier') OptionPanel.standardcloudestyle=Gaya Awan Bawaan OptionPanel.standardcloudestyle.tooltip=Gaya awan bawaan. Saat ini pilihannya hanya Bezier OptionPanel.standardlinkestyle=Gaya Taut Bawaan OptionPanel.standardlinkestyle.tooltip=Gaya taut bawaan. Saat ini pilihannya hanya Bezier OptionPanel.Appearance=Penampilan OptionPanel.lookandfeel=Cita dan Rasa OptionPanel.lookandfeel.tooltip=Cita rasa tampilan: pilihannya adalah: 'metal', 'windows', 'motif', dan 'gtk', ditambah 'mac' khusus untuk MacOS. Bawaan artinya cita rasa tampilan bawaan sistem yang dipakai. Bila Anda menghendaki cita rasa tampilan yang lain, ketikkan nama kelas Java-nya di sini dan pastikan berkas JAR-nya tersedia. Bila ada masalah, pilih 'tiada' di sini, misalnya untuk applet OptionPanel.mapxsize=Ukuran-X-peta OptionPanel.mapxsize.tooltip=Ukuran awal dari setiap peta OptionPanel.mapysize=Ukuran-Y-peta OptionPanel.links=Taut OptionPanel.links.tooltip=Pilih taut relatif atau absolut OptionPanel.el__buttons_position=Posisi Tombol OptionPanel.el__buttons_position.tooltip= di atas / di bawah OptionPanel.el__position_window_below_node=Posisi Jendela Di Bawah Node OptionPanel.el__min_default_window_height=Tinggi Jendela Min Bawaan OptionPanel.el__max_default_window_height=Tinggi Jendela Maks Bawaan OptionPanel.el__min_default_window_width=Lebar Jendela Min Bawaan OptionPanel.el__max_default_window_width=Lebar Jendela Maks Bawaan OptionPanel.el__enter_confirms_by_default=Bawaannya, Enter Menerapkan OptionPanel.el__show_icon_for_attributes=Tampilkan Ikon untuk Atribut OptionPanel.Keystrokes=Papan Ketik OptionPanel.keystroke_newMap=PetaBaru OptionPanel.keystroke_open=Buka OptionPanel.keystroke_save=Simpan OptionPanel.keystroke_saveAs=SimpanSebagai OptionPanel.keystroke_print=Cetak OptionPanel.keystroke_close=Tutup OptionPanel.keystroke_quit=Keluar OptionPanel.keystroke_export_to_html=Ekspor Ke Html OptionPanel.keystroke_export_branch_to_html=Ekspor Cabang ke Html OptionPanel.keystroke_open_first_in_history=Buka yang Pertama dari Riwayat OptionPanel.keystroke_previousMap=PetaSebelum OptionPanel.keystroke_nextMap=PetaBerikut OptionPanel.keystroke_mode_MindMap=Modus MindMap OptionPanel.keystroke_mode_Browse=Modus Jelajah OptionPanel.keystroke_mode_File=Modus Berkas OptionPanel.keystroke_node_toggle_italic=Mati-hidupkan Miring OptionPanel.keystroke_node_toggle_boldface=Mati-hidupkan Tebal OptionPanel.keystroke_node_toggle_underlined=Mati-hidupkan Garis Bawah OptionPanel.keystroke_node_toggle_cloud=Mati-hidupkan Awan OptionPanel.keystroke_undo=Urungkan OptionPanel.keystroke_redo=Ulangi OptionPanel.keystroke_delete_child=Hapus Anak OptionPanel.keystroke_select_all=Pilih Semua OptionPanel.keystroke_select_branch=Pilih Cabang OptionPanel.keystroke_zoom_out=Zoom Keluar OptionPanel.keystroke_zoom_in=Zoom Masuk OptionPanel.keystroke_cut=Potong OptionPanel.keystroke_copy=Salin OptionPanel.keystroke_copy_single=Salin Satu Node OptionPanel.keystroke_paste=Tempel OptionPanel.keystroke_remove=Copot OptionPanel.keystroke_add_arrow_link_action=Perintah Tambah Taut Berpanah OptionPanel.keystroke_add_local_link_action=Perintah Tambah Taut Lokal OptionPanel.keystroke_moveToRoot=PindahKeAkar OptionPanel.keystroke_move_up=Pindah Ke Atas OptionPanel.keystroke_move_down=Pindah Ke Bawah OptionPanel.keystroke_move_left=Pindah Ke Kiri OptionPanel.keystroke_move_right=Pindah Ke Kanan OptionPanel.keystroke_follow_link=Ikuti Taut OptionPanel.keystroke_add=Tambah OptionPanel.keystroke_add_child=Tambah Anak OptionPanel.keystroke_add_child_mac=Tambah Anak (Mac) OptionPanel.keystroke_add_sibling_before=Tambah Adik OptionPanel.keystroke_edit=Edit OptionPanel.keystroke_edit_long_node=Edit Node Panjang OptionPanel.keystroke_join_nodes=Gabung Node OptionPanel.keystroke_toggle_folded=Buka-tutup Lipatan OptionPanel.keystroke_toggle_children_folded=Buka-tutup Lipatan Anak OptionPanel.keystroke_set_link_by_filechooser=Set Taut Lewat Pemilih Berkas OptionPanel.keystroke_set_link_by_textfield=Set Taut Lewat Kolom Teks OptionPanel.keystroke_set_image_by_filechooser=Set Gambar Lewat Pemilih Berkas OptionPanel.keystroke_node_up=Node Ke Atas OptionPanel.keystroke_node_down=Node Ke Bawah OptionPanel.keystroke_node_increase_font_size=Node Perbesar Ukuran Font OptionPanel.keystroke_node_decrease_font_size=Node Perkecil Ukuran Font OptionPanel.keystroke_export_branch=Ekspor Cabang OptionPanel.keystroke_node_color=Warna Node OptionPanel.keystroke_node_color_blend=Warna Campur Node OptionPanel.keystroke_edge_color=Warna Tangkai OptionPanel.keystroke_find=Cari OptionPanel.keystroke_find_next=Cari Berikutnya OptionPanel.keystroke_apply_pattern_1=Terapkan Pola 1 OptionPanel.keystroke_apply_pattern_2=Terapkan Pola 2 OptionPanel.keystroke_apply_pattern_3=Terapkan Pola 3 OptionPanel.keystroke_apply_pattern_4=Terapkan Pola 4 OptionPanel.keystroke_apply_pattern_5=Terapkan Pola 5 OptionPanel.keystroke_apply_pattern_6=Terapkan Pola 6 OptionPanel.keystroke_apply_pattern_7=Terapkan Pola 7 OptionPanel.keystroke_apply_pattern_8=Terapkan Pola 8 OptionPanel.keystroke_apply_pattern_9=Terapkan Pola 9 OptionPanel.keystroke_apply_pattern_10=Terapkan Pola 10 OptionPanel.keystroke_apply_pattern_11=Terapkan Pola 11 OptionPanel.keystroke_apply_pattern_12=Terapkan Pola 12 OptionPanel.keystroke_apply_pattern_13=Terapkan Pola 13 OptionPanel.keystroke_apply_pattern_14=Terapkan Pola 14 OptionPanel.keystroke_apply_pattern_15=Terapkan Pola 15 OptionPanel.keystroke_apply_pattern_16=Terapkan Pola 16 OptionPanel.keystroke_apply_pattern_17=Terapkan Pola 17 OptionPanel.keystroke_apply_pattern_18=Terapkan Pola 18 OptionPanel.Behaviour=Tingkah Laku OptionPanel.placenewbranches=Penempatan Cabang Baru OptionPanel.placenewbranches.tooltip=Tempatkan di mana cabang-cabang baru? Pilihannya:'pertama' and 'terakhir' OptionPanel.disable_cursor_move_paper=Nonaktifkan Kursor Pemindah Kertas OptionPanel.disable_cursor_move_paper.tooltip=Jangan tampilkan kursor pemindah saat menyeret kertas OptionPanel.enable_leaves_folding=Aktifkan Pelipatan Daun OptionPanel.enable_leaves_folding.tooltip=Buat agar daun bisa dilipat (dengan mengubah dari gaya ranting ke balon dan sebaliknya). Bila dinonaktifkan, daun tetap dapat diformat sebagai ranting atau balon seperti node biasa. OptionPanel.foldingsymbolwidth=Lebar Simbol Pelipatan OptionPanel.foldingsymbolwidth.tooltip=Lebar lingkaran penanda lipatan OptionPanel.disable_key_type=Nonaktifkan Ketik Langsung OptionPanel.disable_key_type.tooltip=Bila diaktifkan, node bisa diedit dengan langsung mulai mengetik OptionPanel.key_type_adds_new=Ketik Tambah Node Baru OptionPanel.key_type_adds_new.tooltip=Apakah langsung mengetik akan menimpa isi (tidak) atau membuat saudara baru (ya), dengan catatan Ketik Langsung diaktifkan. OptionPanel.selection_method=Metode Pemilihan OptionPanel.selection_method.tooltip=Dengan pilihan ini Anda dapat mengaktifkan atau mematikan skema pemilihan tertunda. Jangan ubah nilai ini karena akan disimpan di auto.properties. OptionPanel.time_for_delayed_selection=Waktu untuk Pemilihan Tertunda OptionPanel.time_for_delayed_selection.tooltip= Waktu yang dibutuhkan untuk menunjuk node dengan tetikus sampai node tersebut terpilih. Angka 1 berarti node langsung terpilih. OptionPanel.HTML=HTML OptionPanel.default_browser_command_windows_nt=Baris Perintah Jelajah Bawaan Windows NT OptionPanel.default_browser_command_windows_nt.tooltip=Untuk Windows (tanda "" dibutuhkan untuk URL yang memiliki "=" di dalamnya). OptionPanel.default_browser_command_windows_9x=Baris Perintah Bawaan Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=Untuk Windows (tanda "" dibutuhkan untuk URL yang memiliki "=" di dalamnya). OptionPanel.default_browser_command_other_os=Baris Perintah Bawaan SO Lain OptionPanel.default_browser_command_other_os.tooltip= Ini biasanya untuk Linux: OptionPanel.default_browser_command_mac=Baris Perintah Bawaan Mac OptionPanel.default_browser_command_mac.tooltip= dan Mac: (terimakasih Nick!) OptionPanel.html_export_folding=Ekspor HTML Terlipat OptionPanel.export_icons_in_html=Ekspor Ikon dalam HTML OptionPanel.export_icons_in_html.tooltip= Tentukan apakah hasil ekspor HTML dari FreeMind mengandung ikon. Masalahnya, dalam peta yang dihasilkan, acuan ke ikon-ikon tersebut bisa hilang atau salah. OptionPanel.Cancel=Batal OptionPanel.OK=Simpan option_changes_may_require_restart=Untuk melihat efek perubahan setelah, Anda mungkin harus memulai ulang FreeMind. GrabKeyDialog.grab-key.title=Masukkan kunci baru GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=Bersihkan GrabKeyDialog.grab-key.assigned-to.none=Saat ini tidak dipasangkan GrabKeyDialog.grab-key.assigned-to=Dipasangkan ke GrabKeyDialog.common.ok=OK GrabKeyDialog.grab-key.remove=Copot GrabKeyDialog.common.cancel=Batal GrabKeyDialog.grab-key.remove-ask=Anda yakin hendak mencopot kunci ini? OptionPanel.separator.language=Bahasa OptionPanel.separator.files=Berkas OptionPanel.separator.automatic_save=Simpan Otomatis OptionPanel.separator.default_styles=Gaya Bawaan OptionPanel.separator.default_colors=Warna Bawaan OptionPanel.separator.selection_colors=Warna Pilihan OptionPanel.separator.default_fonts=Font Bawaan OptionPanel.separator.other_defaults=Bawaan-bawaan Lainnya OptionPanel.separator.look_and_feel=Cita dan Rasa OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.initial_map_size=Ukuran Peta Awal OptionPanel.separator.hyperlink_types=Tipe Hipertaut OptionPanel.separator.edit_long_node_window=Jendela Edit Node Panjang OptionPanel.separator.commands_for_the_program=Perintah-perintah untuk Program OptionPanel.separator.node_editing_commands=Perintah Edit Node OptionPanel.separator.node_navigation_commands=Perintah Navigasi Node OptionPanel.separator.new_node_commands=Perintah Node Baru OptionPanel.separator.patterns=Pola OptionPanel.separator.behaviour=Tingkah Laku OptionPanel.separator.key_typing=Pengetikan OptionPanel.separator.selection_method=Metode Pemilihan OptionPanel.separator.browser=Penjelajah OptionPanel.separator.html_export=Ekspor HTML OptionPanel.separator.attributes=Atribut OptionPanel.separator.icons=Ikon untuk "Pilih Ikon" OptionPanel.keystroke_edit_attributes=Edit Atribut OptionPanel.keystroke_show_all_attributes=Tampilkan semua atribut OptionPanel.keystroke_show_selected_attributes=Tampilkan atribut terpilih OptionPanel.keystroke_hide_all_attributes=Sembunyikan semua atribut OptionPanel.keystroke_show_attribute_manager=Tampilkan pengelola atribut OptionPanel.keystroke_assign_attributes=Pasangkan atribut... OptionPanel.antialias.tooltip=Tentukan kuaitas peta. Lebih banyak antialias membutuhkan lebih banyak waktu. OptionPanel.antialias=Antialias OptionPanel.antialias_edges=Antialias Tangkai OptionPanel.antialias_all=Antialias Semua OptionPanel.antialias_none=Tanpa Antialias OptionPanel.cs=Cs OptionPanel.nb=Nb OptionPanel.ColorProperty.ResetColor=Tata-ulang Warna OptionPanel.keystroke_option_dialog=Preferensi format_menu_edge_styles=Gaya &Tangkai format_menu_edge_widths=&Lebar Tangkai accessories/plugins/ImportMindmanagerFiles.properties_name=Peta MindManager X5... accessories/plugins/ExportToOoWriter.properties_documentation=Node terbuka berdasarkan strukturnya, node terlipat berdasarkan isi dokumen. accessories/plugins/ExportToOoWriter.properties_name=Sebagai dokumen OpenOffice.org Writer... OptionPanel.separator.undo=Urungkan OptionPanel.undo_levels=Urungkan Berapa Langkah OptionPanel.undo_levels.tooltip=Tentukan berapa langkah harus disimpan agar bisa diurungkan lewat perintah "Urungkan". OptionPanel.lt=Lt browsemode_initial_map =./doc/freemind_id.mm link_not_found =Link $1 tidak ditemukan icon_smily_bad =Saya tidak senang OptionPanel.hr=Hr OptionPanel.nn=Nn OptionPanel.se=Se OptionPanel.unfold_on_paste=Buka node saat ditempel OptionPanel.unfold_on_paste.tooltip=Buka node saat ditempel atau di-seret-dan-jatuhkan accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Ekspor peta sebagai applet Java accessories/plugins/ExportWithXSLT_Applet.properties_name=Sebagai Applet Java... accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Laman web accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Ekspor peta sebagai aplikasi Flash accessories/plugins/ExportWithXSLT_Flash.properties_name=Sebagai Flash... accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=Di sebelah kiri akar, node digeser ke bawah. Mereka menjadi anak dari saudaranya sendiri. Di sebelah kanan akar, node digeser ke atas. Tepat di akar, node bertukar sisi. accessories/plugins/ChangeNodeLevelAction_left.properties_name=Node ke kiri accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=Di sebelah kanan akar, node digeser ke bawah. Mereka menjadi anak dari saudaranya sendiri. Di sebelah kiri akar, node digeser ke atas. Tepat di akar, node bertukar sisi. accessories/plugins/ChangeNodeLevelAction_right.properties_name=Node ke kanan PatternDialog.ColorProperty.ResetColor=Tata-ulangWarna PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_parent=Induk PatternDialog.EdgeWidth_thin=Tipis PatternDialog.as_parent=Induk PatternDialog.bezier=bezier PatternDialog.bubble=balon PatternDialog.combined=gabungan PatternDialog.edgecolor.tooltip=Atribut tangkai yang mengarah ke node orangtua (juga diterapkan ke semua node anak) PatternDialog.edgecolor=Warna tangkai PatternDialog.edgestyle.tooltip=Atribut tangkai yang mengarah ke node orangtua (juga diterapkan ke semua node anak) PatternDialog.edgestyle=Gaya tangkai PatternDialog.edgewidth.tooltip=Atribut tangkai yang mengarah ke node orangtua (juga diterapkan ke semua node anak) PatternDialog.edgewidth=Lebar tangkai PatternDialog.fork=Ranting PatternDialog.linear=garis lurus PatternDialog.nodebackgroundcolor.tooltip=Warna Latar Belakang Node PatternDialog.nodebackgroundcolor=Warna Latar Belakang Node PatternDialog.nodecolor.tooltip=Warna Node PatternDialog.nodecolor=Warna Node PatternDialog.nodestyle.tooltip=Gaya Node PatternDialog.nodestyle=Gaya Node PatternDialog.nodetext.tooltip=Teks Node PatternDialog.nodetext=Teks Node PatternDialog.separator.EdgeControls=Tangkai PatternDialog.separator.NodeColors=Warna Node PatternDialog.separator.NodeStyles=Gaya Node PatternDialog.sharp_bezier=bezier tajam PatternDialog.sharp_linear=garis lurus tajam PatternDialog.undefined_font=garis bawah accessories/plugins/ApplyFormatPlugin.properties_documentation=Membuka kotak dialog untuk mengubah atribut node dan tangkai sekaligus. accessories/plugins/ApplyFormatPlugin.properties_name=&Ubah format... accessories/plugins/ApplyFormatPlugin.dialog.title=Ubah format node OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Pindah ke kiri OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Pindah ke kanan OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Salin format OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Tempel format OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Sisipkan ikon OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Indentasikan node OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=Pisahkan node OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Lipat satu level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Buka satu level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Lipat semua OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Buka semua OptionPanel.separator.others=Kunci lain PatternDialog.separator.General=Umum PatternDialog.clear_all_setters=Tukar semua PatternDialog.clear_all_setters.tooltip=Aktifkan/matikan semua indikator perubahan. accessories/plugins/ManagePatterns.dialog.title=Atur Pola... accessories/plugins/ManagePatterns.not_found=Berkas pola tidak bisa dimuat. accessories/plugins/ManagePatterns.properties_documentation=Ubah pola yang didefinisikan dalam patterns.xml menggunakan editor. Hasilnya disimpan secara otomatis. accessories/plugins/ManagePatterns.properties_name=Atur Pola... PatternDialog.nodefontname.tooltip=Font untuk Node PatternDialog.nodefontname=Nama Font Node PatternDialog.nodefontsize.tooltip=Font untuk Node PatternDialog.nodefontsize=Ukuran Font Node PatternDialog.nodefontbold.tooltip=Font untuk Node PatternDialog.nodefontbold=Font Tebal PatternDialog.nodefontitalic.tooltip=Font untuk Node PatternDialog.nodefontitalic=Font Miring PatternDialog.separator.NodeFont=Font untuk Node ManagePatternsPopupDialog.remove=Copot Pola ManagePatternsPopupDialog.add=Tambah Pola Baru PatternDialog.patternname=Nama PatternDialog.patternname.tooltip=Nama unik pola PatternNewNameProperty=Pola Baru ManagePatternsPopupDialog.DuplicateNameMessage=Anda memilih nama yang sama dua kali. Tolong diganti sebelum melanjutkan. PatternDialog.childpattern.tooltip=Pola terpilih diterapkan ke semua anak. PatternDialog.childpattern=Pola Anak ManagePatternsPopupDialog.Save=Simpan dan Kembali PatternDialog.icon.tooltip=Bila diterapkan, node akan memakai ikon ini saja. PatternDialog.icon=Ikon PatternDialog.set_property_text=Ubah PatternDialog.set_property_text.tooltip=Kosong: Biarkan; Minus: Hapus properti (setel nilai bawaan); Plus: Ubah properti accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Ubah pola OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Pola atak otomatis OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Pola PatternToString.color=Warna PatternToString.backgroundColor=Warna Latar Belakang OptionPanel.automaticFormat_level1=Format Node Akar OptionPanel.automaticFormat_level2=Format Node Level 1 PatternToString.NodeFontSize=Ukuran Font OptionPanel.level1=Format dari Node Akar OptionPanel.level2=Format Node Level 1 OptionPanel.level3=Format Node Level 2 OptionPanel.level4=Format Node Level 3 OptionPanel.level5=Format Node Lainnya OptionPanel.automaticFormat_level=Gaya Atak Otomatis ManagePatternsPopupDialog.duplicate=Gandakan Pola ManagePatternsPopupDialog.from_nodes=Buat Pola dari Node Terpilih accessories/plugins/SaveAll.properties_documentation=Simpan semua peta terbuka accessories/plugins/SaveAll.properties_name=Simpan Semu&a accessories/plugins/SaveAll.properties_save_all_cancelled=Operasi tidak berhasil diselesaikan. OptionPanel.loadLastMap=Otomatis buka peta terakhir OptionPanel.loadLastMap.tooltip=Bila dipilih, maka ketika FreeMind dimulai, ambil peta yang terakhir dibuka secara otomatis. use_rich_formatting =Gunakan Teks Berformat (RTF) use_plain_text =Gunakan Teks Polos FreeMind.progress.gettingPreferenceDirectories=Mengambil Direktori Preferensi... FreeMind.progress.gettingPreferences=Mengambil Preferensi... FreeMind.progress.updateLookAndFeel=Mutakhirkan Cita dan Rasa... FreeMind.progress.createController=Buat Pengendali... FreeMind.progress.settingPreferences=Setel Preferensi... FreeMind.progress.propageteLookAndFeel=Terapkan Cita dan Rasa secara Menyeluruh... FreeMind.progress.createInitialMode=Buat Modus Inisial... FreeMind.progress.startCreateController=Mulai Buat Pengendali... FreeMind.progress.loadMaps=Muat Peta... FreeMind.progress.buildScreen=Bangun Layar... FreeMind.progress.endStartup=Proses Memulai Selesai. OptionPanel.tr=Tr OptionPanel.level=Level map_not_saved=Peta belum disimpan sebelumnya. plugins/TimeManagement.xml_Find=Cari plugins/TimeManagement.xml_Replace=Ganti plugins/TimeManagement.xml_Select=Pilih plugins/TimeManagement.xml_Export=Ekspor Node Terpilih plugins/TimeManagement.xml_Replace_All=Ganti Semua plugins/TimeManagement.xml_Replace_Selected=Ganti Terpilih plugins/TimeManagement.xml_Goto=Pergi Ke plugins/TimeManagement.xml_Cancel=Batal automatically_save_message=Peta disimpan secara otomatis (menggunakan nama berkas {0}) ... plugins/ScriptingEngine.xml_documentation=Evaluasi semua skrip terkandung (urut rekursif, mulai dari daun). plugins/ScriptingEngine.xml_name=Evaluasi OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Evaluasi error_applying_template=Galat menerapkan pola acu XSL. accessories/plugins/NodeNote_jumpto.properties_documentation=Switch to resp. from note window accessories/plugins/NodeNote_jumpto.properties_name=Tukar Editor Catatan OptionPanel.max_tooltip_width=Lebar Tip OptionPanel.max_tooltip_width.tooltip=Lebar tip bawaan dalam piksel. plugins/NodeList.xml_documentation=Tampilkan semua node sebagai senarai yang dapat dicari melalui penyaring properti. OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Tukar Editor Catatan OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Tampilkan/Sembunyikan Jendela Catatan OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Hapus Catatan accessories/plugins/ExportWithXSLT_Applet.properties_tji=Berkas Ikutan Pemutar Tugas accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Ekspor tugas dari node TUGAS ke modul Pemutar Tugas. accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Tugas dari TUGAS ke berkas Pemutar Tugas... accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation=Ekspor sumberdaya dari node SUMBERDAYA ke modul Pemutar Tugas. accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name=Sumberdaya dari SUMBERDAYA ke berkas Pemutar Tugas... plugins/NodeList.xml_name=Temukan dan Ganti... plugins/TimeManagement.xml_menu_actions=Aksi plugins/TimeList.xml_Notes=Catatan accessories/plugins/SortNodes.properties_documentation=Urutkan semua anak dari node menurut abjad. accessories/plugins/SortNodes.properties_name=&Urutkan Anak-anak OptionPanel.ar=Ar plugins/TimeManagement.xml_WindowTitle_All_Nodes=Cari dan Ganti plugins/ScriptEditor.xml_documentation=Mungkinkan penulisan skrip yang lebih besar di dalam FreeMind. plugins/ScriptEditor.xml_name=Editor Skrip... plugins/ScriptEditor/window.title=Editor Skrip plugins/ScriptEditor.menu_actions=Aksi plugins/ScriptEditor.run=Jalankan plugins/ScriptEditor/window.Result=Hasil: simplyhtml.editLabel=Edit simplyhtml.undoLabel=Urungkan simplyhtml.undoTip=urungkan simplyhtml.redoLabel=Ulangi simplyhtml.redoTip=ulangi simplyhtml.cutLabel=Potong simplyhtml.cutTip=potong simplyhtml.copyLabel=Salin simplyhtml.copyTip=salin simplyhtml.pasteLabel=Tempel simplyhtml.pasteTip=tempel simplyhtml.selectAllLabel=Pilih semua simplyhtml.findReplaceLabel=Cari dan Ganti simplyhtml.findReplaceTip=cari dan ganti simplyhtml.insertTableLabel=Tabel... simplyhtml.formatLabel=Format simplyhtml.fontLabel=Font... simplyhtml.fontTip=Format font... simplyhtml.clearFormatLabel=Copot Pemformatan simplyhtml.clearFormatTip=Copot Pemformatan simplyhtml.fontBoldLabel=Tebal simplyhtml.fontBoldImage=resources/bold.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontBoldTip=Mati-hidupkan Tebal simplyhtml.fontItalicLabel=Miring simplyhtml.fontItalicImage=resources/italic.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontItalicTip=Mati-hidupkan Miring simplyhtml.fontUnderlineLabel=Garis Bawah simplyhtml.fontUnderlineImage=resources/uline.gif simplyhtml.fontUnderlineTip=Mati-hidupkan Garis Bawah simplyhtml.formatTableLabel=Tabel... simplyhtml.formatTableTip=Format tabel simplyhtml.toggleBulletsLabel=Senarai berbulir mati/hidup simplyhtml.toggleBulletsTip=senarai berbulir mati/hidup simplyhtml.toggleNumbersLabel=Senarai bernomor mati/hidup simplyhtml.toggleNumbersTip=senarai bernomor mati/hidup simplyhtml.formatListLabel=Senarai... simplyhtml.formatListTip=Ubah format senarai simplyhtml.formatParaLabel=Paragraf... simplyhtml.formatParaTip=Ubah format paragraph simplyhtml.paraAlignLeftLabel=Rata kiri simplyhtml.paraAlignLeftTip=Setel paragraf rata kiri simplyhtml.paraAlignCenterLabel=Rata tengah simplyhtml.paraAlignCenterTip=Setel paragraf rata tengah simplyhtml.paraAlignRightLabel=Rata kanan simplyhtml.paraAlignRightTip=Setel paragraf rata kanan simplyhtml.tableLabel=Tabel simplyhtml.nextTableCellLabel=Sel berikutnya simplyhtml.prevTableCellLabel=Sel sebelumnya simplyhtml.insertTableRowLabel=Sisipkan baris simplyhtml.insertTableColLabel=Sisipkan kolom simplyhtml.appendTableRowLabel=Tambahkan baris simplyhtml.appendTableColLabel=Tambahkan kolom simplyhtml.deleteTableRowLabel=Hapus baris simplyhtml.deleteTableColLabel=Hapus kolom simplyhtml.helpLabel=Bantuan simplyhtml.aboutLabel=Tentang SimplyHTML... simplyhtml.aboutFrameTitle=Tentang aplikasi ini simplyhtml.fontDialogTitle=Format Font simplyhtml.uLineLabel=Garis Bawah simplyhtml.strikeLabel=Coret simplyhtml.previewLabel=Pratinjau simplyhtml.previewText=Teks Pratinjau simplyhtml.familyLabel=Keluarga simplyhtml.sizeLabel=Ukuran simplyhtml.plainName=polos simplyhtml.boldName=tebal simplyhtml.italicName=miring simplyhtml.boldItalicName=tebal miring simplyhtml.styleLabel=Gaya simplyhtml.effectLabel=Efek simplyhtml.colorLabel=Warna simplyhtml.foregroundLabel=Latar Depan simplyhtml.backgroundLabel=Latar Belakang simplyhtml.noLineLabel=Nihil simplyhtml.textIndentLabel=Indentasi simplyhtml.alignLabel=Perataan simplyhtml.alignLeft=kiri simplyhtml.alignCenter=tengah simplyhtml.alignRight=kanan simplyhtml.valignLabel=Perataan Vertikal simplyhtml.valignTop=atas simplyhtml.valignMiddle=tengah simplyhtml.valignBottom=bawah simplyhtml.valignBaseline=garis dasar simplyhtml.marginLabel=luar simplyhtml.paddingLabel=dalam simplyhtml.tableDialogTitle=Format Tabel simplyhtml.tablePanelTitle=Format Tabel simplyhtml.cellPanelTitle=Format Sel simplyhtml.tableWidthLabel=Lebar: simplyhtml.tableBgColLabel=Warna Latar Belakang: simplyhtml.cellMarginTabLabel=Pias simplyhtml.cellBorderTabLabel=Sempadan simplyhtml.borderWidthLabel=Lebar simplyhtml.borderColorLabel=Warna: simplyhtml.thisCellRangeLabel=sel ini simplyhtml.thisColRangeLabel=kolom ini simplyhtml.thisRowRangeLabel=baris ini simplyhtml.allCellsRangeLabel=semua sel simplyhtml.applyCellAttrLabel=Terapkan pada simplyhtml.cellGenTabLabel=Umum simplyhtml.paraStyleDialogTitle=Gaya Paragraf simplyhtml.fontTabLabel=Font simplyhtml.paraTabLabel=Paragraf simplyhtml.cTagNamePara=Paragraph simplyhtml.cTagNameHead1=Tajuk 1 simplyhtml.cTagNameHead2=Tajuk 2 simplyhtml.cTagNameHead3=Tajuk 3 simplyhtml.cTagNameHead4=Tajuk 4 simplyhtml.cTagNameHead5=Tajuk 5 simplyhtml.cTagNameHead6=Tajuk 6 simplyhtml.cTagNameLink=Taut simplyhtml.cTagNameUL=Senarai Tak-urut simplyhtml.cTagNameOL=Senarai Berurut simplyhtml.listDialogTitle=Format Senarai simplyhtml.listTypeLabel=Tipe: simplyhtml.listPositionLabel=Posisi: simplyhtml.listIndentTitle=Indentasi: simplyhtml.listTypeNone=nihil simplyhtml.listTypeDecimal=1.,2.,3.,4. simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. simplyhtml.listTypeDisc=simbol berkas sebagai bulir simplyhtml.listTypeCircle=bulir bundar simplyhtml.listTypeSquare=bulir persegi simplyhtml.listPosInside=di dalam simplyhtml.listPosOutside=di luar simplyhtml.findReplaceDialogTitle=Temukan dan Ganti simplyhtml.findNext=Temukan berikutnya... simplyhtml.searchFromStart=Cari dari mula simplyhtml.searchDown=Cari ke bawah simplyhtml.wholeWordsOnly=Hanya kata seutuhnya simplyhtml.searchUp=Cari ke atas simplyhtml.matchCase=Cocokkan huruf besar/kecil simplyhtml.replaceWith=Ganti dengan simplyhtml.textToFind=Teks yang dicari: simplyhtml.replace=Ganti... simplyhtml.noMoreOccurrencesFound=tidak ditemukan (lagi) simplyhtml.allOccurrencesReplaced=Semua kemunculan diganti simplyhtml.replaceThisQuery=ganti tiap kemunculan simplyhtml.replaceYes=Ya simplyhtml.replaceNo=Tidak simplyhtml.replaceAll=Semua simplyhtml.replaceDone=Sudah simplyhtml.unableToUndoError=Tak bisa urungkan: simplyhtml.unableToRedoError=Tak bisa ulangi: simplyhtml.unableToOpenFileError=Berkas tidak bisa dibuka simplyhtml.imageFileDesc=Berkas gambar simplyhtml.defaultDocName=Nirjudul simplyhtml.cancelBtnName=Batal simplyhtml.closeBtnName=Tutup simplyhtml.okBtnName=OK simplyhtml.leftLabel=kiri simplyhtml.rightLabel=kanan simplyhtml.topLabel=atas simplyhtml.bottomLabel=bawah simplyhtml.insertTableTitle=Sisipkan Tabel simplyhtml.insertTableMsg=Berapa Kolom? simplyhtml.close=Tutup simplyhtml.standardStyleName=bawaan simplyhtml.styleNameInputTitle=Simpan gaya simplyhtml.styleNameInputText=Nama gaya baru? simplyhtml.newStyleDefaultName=gaya baru simplyhtml.docTitleTitle=Edit Judul Dokumen simplyhtml.docTitleQuery=Setel judul menjadi: simplyhtml.layoutTabTitle=Tampilan Atak simplyhtml.htmlTabTitle=Tampilan Kode HTML ScriptEditorPanel.changed_cancel=Skrip diubah. Apakah Anda benar hendak mengabaikan perubahannya? OptionPanel.separator.mouse_wheel=Roda Tetikus OptionPanel.wheel_velocity=Kecepatan OptionPanel.wheel_velocity.tooltip=Nilai yang lebih tinggi berakibat pada gerakan tetikus yang cepat dalam peta. accessories/plugins/NodeHistoryBack.properties_name=Mundur accessories/plugins/NodeHistoryBack.properties_documentation=Lompat ke belakang dalam rantai terpilih accessories/plugins/NodeHistoryForward.properties_name=Maju accessories/plugins/NodeHistoryForward.properties_documentation=Lompat ke depan dalam rantai terpilih OptionPanel.use_tabbed_pane.tooltip=Bila peta terpilih ditampilkan dalam tab (misalnya dalam FireFox :-) ). OptionPanel.use_tabbed_pane=Gunakan Tab accessories/plugins/ExportWithTWiki.properties_name=Sebagai TWiki... accessories/plugins/ExportWithTWiki.properties_documentation=Ekspor peta sebagai dokumen TWiki. accessories/plugins/ExportWithTWiki.properties=Berkas TWiki (*.twi) really_remove_node=Benar hapus node? confirmation=Konfirmasi OptionalDontShowMeAgainDialog.dontShowAgain=&Jangan tanya saya lagi. OptionalDontShowMeAgainDialog.rememberMyDescision=&Ingat keputusan saya. OptionalDontShowMeAgainDialog.cancel=&Tidak OptionalDontShowMeAgainDialog.ok=&Ya OptionPanel.separator.resources_notifications=Konfirmasi OptionPanel.delete_nodes_without_question=Hapus node tanpa konfirmasi? OptionPanel.delete_nodes_without_question.tooltip=Bila kotak cek ini dipilih, node dihapus tanpa konfirmasi. Hal ini dapat menyebabkan hilangnya data bila tidak hati-hati digunakan. edit.decision=Editor HTML edit.edit_rich_text=Apakah Anda ingin menggunakan pemformatan seperti tebal atau miring? OptionPanel.remind_use_rich_text_in_new_long_nodes=Gunakan pemformatan untuk node baru OptionPanel.remind_type_of_new_nodes.tooltip="Tanya" akan memberikan pilihan (gunakan bila ragu).
"Ya" menampilkan editor RTF.
"No" menampilkan editor teks polos. OptionPanel.ask=Tanya OptionPanel.standardselectednodetextcolor.tooltip= really_execute_script=Anda benar-benar ingin menjalankan skrip yang terkandung dalam peta ini? Hal ini mungkin saja membahayakan komputer Anda. OptionPanel.resources_execute_scripts_without_asking=Skrip akan dijalankan tanpa konfirmasi? OptionPanel.execute_scripts_without_asking.tooltip=Skrip FreeMind pada prinsipnya dapat melakukan apa saja pada komputer Anda.
Jadi, skrip yang tidak diketahui aman jangan dijalankan. PatternToString.EdgeStyle=Gaya Tangkai PatternToString.EdgeColor=Warna Tangkai PatternToString.EdgeWidth=Lebar Tangkai PatternToString.FontBold=Tebal PatternToString.FontItalic=Miring PatternToString.FontName=Nama Font PatternToString.Icon=Ikon PatternToString.Child=Gaya Node Anak ManagePatternsPopupDialog.Actions=&Aksi node_location_help=Menyeret memindahkan lokasi node, ctrl+seret mengganti jarak, klik ganda dan ctrl+klik ganda menatanya ulang. really_convert_to_current_version=Peta ini dibuat dengan versi FreeMind lama.
Apakah hendak dikonversi (dianjurkan)?
(Bila tidak, akan diambil apa adanya, tanpa jaminan.) OptionPanel.resources_convert_to_current_version=Konversikan peta FreeMind lama secara otomatis
ke versi sekarang? OptionPanel.resources_convert_to_current_version.tooltip=Hanya untuk peta-peta sangat besar yang tidak perlu dikonversikan.
(Butuh pengetahuan ahli) Anda dapat membuka peta tanpa konversi. OptionPanel.separator.root_node_appearance=Tampilan Node Akar OptionPanel.use_common_out_point_for_root_node=Tangkai dimulai dari suatu titik pada node akar OptionPanel.use_common_out_point_for_root_node.tooltip=Tangkai dimulai dari suatu titik pada node akar ManagePatternsPopupDialog.apply=Terapkan PatternDialog.setscript=Ubah? PatternDialog.setscript.tooltip=Skrip dapat diasosiasikan pada gaya. PatternDialog.script=Skrip PatternDialog.script.tooltip=Skrip sebagai kode sumber Groovy. OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Atur Gaya toggle_menubar =Bilah Menu toggle_toolbar =&Luntang toggle_left_toolbar =Luntang &Kedua accessories/plugins/NodeNote_hide_show.properties_name=Jendela Catatan selection_as_rectangle=Pemilih Segiempat really_cut_node=Benar potong node? OptionPanel.resources_cut_nodes_without_question=Potong node tanpa konfirmasi? OptionPanel.cut_nodes_without_question.tooltip=Bila kotak cek ini dipilih, node dipotong tanpa konfirmasi. Hal ini dapat menyebabkan kehilangan data bila tidak berhati-hati. follow_graphical_link=Pergi ke: accessories/plugins/NodeNote_hide_show.properties_documentation=Membuat jendela catatan muncul atau hilang. plugins/ScriptEditor.new_script=Skrip Baru OptionPanel.separator.save=Simpan OptionPanel.save_only_intrisically_needed_ids=Simpan ID Node Terpakai Saja OptionPanel.save_only_intrisically_needed_ids.tooltip=Ketika dipilih, ID Node yang sudah tidak dipakai dalam peta akan dibuang. Perhatikan bahwa Anda tidak dapat menautkan peta dari luar ke node dalam map tanpa ID. OptionPanel.plugins/scripting/tab_name=Penulisan Skrip OptionPanel.separator.plugins/scripting/separatorPropertyName=Ijin OptionPanel.resources_execute_scripts_without_file_restriction=Ijinkan Operasi Berkas (TIDAK dianjurkan) OptionPanel.resources_execute_scripts_without_file_restriction.tooltip=Bila skrip Groovy Anda perlu mengeksekusi operasi berkas (buka, tutup, baca, tulis, hapus(!)),
Anda perlu mengaktifkan opsi ini.
Gunakan dengan hati-hati, karena kini skrip yang jahat dapat membahayakan komputer Andar! OptionPanel.resources_execute_scripts_without_network_restriction=Ijinkan Operasi Jaringan (TIDAK disarankan) OptionPanel.resources_execute_scripts_without_network_restriction.tooltip=Bila skrip Groovy Anda perlu mengeksekusi operasi jaringan,
Anda perlu mengaktifkan opsi ini.
Gunakan dengan hati-hati, karena kini skrip yang jahat dapat membuka rahasia Andar! OptionPanel.resources_execute_scripts_without_exec_restriction=Ijinkan Eksekusi Aplikasi Lain (TIDAK dianjurkan) OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip=Bila skrip Groovy Anda perlu mengeksekusi aplikasi lain (seperti penjelajah) tanpa bertanya(!)),
Anda perlu mengaktifkan opsi ini.
Gunakan dengan hati-hati, karena kini skrip yang jahat dapat membahayakan komputer Andar! plugins/ScriptEditor.FORBIDDEN_ACTION=Skrip Groovy FreeMind terbatas. Operasi {0,choice,0#Berkas|1#Jaringan|2#Eksekusi} berikut ini dilarang: {1,choice,0#Accept|1#Connect|2#Listen|3#Multicast|4#SetFactory|5#Exec|6#Link|7#Delete|8#Read|9#Write}. plugins/ScriptEditor.cancel=&Abaikan Perubahan dan Keluar plugins/ScriptEditor.exit=&Simpan dan Keluar plugins/TimeManagement.xml_closeButton=Tutup # fc, 12.1.2006: don't translate this unless you create a translation of the documentation file (see german) browsemode_initial_map = ./doc/freemind_id.mm OptionPanel.eu=Eu freemind-0.9.0/freemind/Resources_fr.properties0000644000000000000000000045020611527433212020366 0ustar rootroot# made by Sylvain GAMEL - sgamel # revised by Eric Lavarde 2005-10-26 # fully revised by Sebastien Rombauts 2008-07-14 (for 0.9.0 Beta 18) S\u00e9bastien Rombauts - srombauts # Completed by Eric L. 2009-01-18 (for 0.9.0 RC1) - ewl # Et quelques corrections de Daniel Berthereau 2009-01-25 #about = About about = \u00c0 &propos #add=&Add add=&Ajouter #about_text = FreeMind - free mind mapping and knowledge building software\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, and others.\nThis program is free software, licenced under GNU General Public Licence.\n\nHome: http://freemind.sourceforge.net/\nVersion: about_text = FreeMind - Logiciel libre de cartes mentales et d'\u00e9laboration de connaissances.\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, and others. Tous droits r\u00e9serv\u00e9s\nCe programme est un logiciel libre (GPL)\nAller sur http\://freemind.sourceforge.net/\nVersion\: #antialias_all = Antialias All antialias_all = Tout lisser #antialias_edges = Antialias Edges antialias_edges = Lisser les lignes #antialias_none = Antialias None antialias_none = Ne rien lisser #apply=&Apply apply=&Appliquer #background = Background background = Fond #bezier = Bezier bezier = B\u00e9zier #blend_color = Blend Color blend_color = \u00c9claircir la couleur #bold = Bold bold = Gras #boldify_branch = Boldify boldify_branch = Branche en Gras #branch = Branch branch = Branche #bubble = &Bubble bubble = &Bulle #cancel = &Cancel cancel = &Annuler #cannot_join_nodes_with_children = Cannot join nodes with children cannot_join_nodes_with_children = Impossible de joindre des n\u0153uds ayant des enfants #center = Center center = Centrer #cloud = Cloud cloud = Nuage #cloud_color = Cloud Color... cloud_color = Couleur de nuage... #close = &Close close = &Fermer #copy = Copy copy = Copier #copy_single = Copy Single copy_single = Copier un seul #cut = Cut cut = Couper #decrease_branch_font_size = Smaller Font decrease_branch_font_size = R\u00e9duire la taille de police de la branche #decrease_node_font_size = Smaller Font decrease_node_font_size = R\u00e9duire la taille de police du n\u0153ud #delete=&Delete delete=&Effacer #documentation = Documentation documentation = &Documentation #edge = Edge edge = Ligne #edge_color = Edge Color... edge_color = Couleur des lignes... #edge_width_parent = Parent edge_width_parent = Comme le p\u00e8re #edge_width_thin = Thin edge_width_thin = Fine #edit = &Edit edit = &\u00c9diter #edit_link_manually = Edit Hyperlink Manually... edit_link_manually = \u00c9diter le lien manuellement #edit_long_node = Edit Long Node... edit_long_node = \u00c9diter comme n\u0153ud long... #enter_base_url = I am going to paste relative links. Enter please base URL. enter_base_url = Je vais coller les liens associ\u00e9s. Merci de saisir l'URL de base. #enter_confirms = &Enter Confirms enter_confirms = "Entr\u00e9e" valide la saisie #error = Error error = Erreur #export_branch = Branch... #export_branch_to_html = Branch as HTML export_branch_to_html = Exporter la branche en HTML #export_to_html = As HTML export_to_html = En HTML #extension_menu = Physical &Style extension_menu = Mod\u00e8les de styles #file = &File file = &Fichier #file_not_found = File $1 not found file_not_found = Le fichier $1 n'a pas \u00e9t\u00e9 trouv\u00e9 #find = Find... find = Chercher... #find_what = Find what find_what=Que chercher ? #find_next = Find Next find_next = Chercher le suivant #fold = Fold fold = Plier #follow_link = Follow Link follow_link = Suivre le lien #font = Font font = Police #fork = &Fork fork = &Fourche #help = Help help = &Aide #html_export_based_on_headings = HTML Export - Based on Headings html_export_based_on_headings = Export en HTML - Bas\u00e9 sur les en-t\u00eates #html_export_no_folding = HTML Export - No Folding html_export_no_folding = Export en HTML - Tout d\u00e9pli\u00e9 #html_export_fold_currently_folded = HTML Export - Fold Currently Folded html_export_fold_currently_folded = Export en HTML - Respecte les pliages actuels #html_export_fold_all = HTML Export - Fold All html_export_fold_all = Export en HTML - Tout pli\u00e9 # Daniel Polansky: This way of maintaining icon text # will ultimately lead to unbearable overheads. #icon_menu = I&cons icon_menu = &Ic\u00f4nes #icon_help = Question icon_help = Question #icon_messagebox_warning = Important icon_messagebox_warning = Important #icon_idea = Idea icon_idea=Id\u00e9e #icon_button_ok = OK icon_button_ok = Valide #icon_button_cancel = Not OK icon_button_cancel = Invalid\u00e9 #icon_back = Back icon_back = Reculer #icon_forward = Forward icon_forward = Avancer #icon_attach = Look here icon_attach = Pi\u00e8ce jointe #icon_ksmiletris = I am happy icon_ksmiletris = Je suis content #icon_clanbomber = Dangerous icon_clanbomber = Danger #icon_desktop_new = Do not forget icon_desktop_new = Bureau #icon_gohome = Home icon_gohome = Accueil #icon_kaddressbook = Phone icon_kaddressbook = T\u00e9l\u00e9phone #icon_knotify = Music icon_knotify = Musique #icon_korn = Mailbox icon_korn=Bo\u00eete \u00e0 lettres #icon_Mail = Mail icon_Mail = Message #icon_password = Key icon_password = Clef #icon_pencil = To be refined icon_pencil = \u00c0 modifier #icon_stop = Stop icon_stop = Stop #icon_wizard = Magic icon_wizard = Magique #icon_xmag = To be discussed icon_xmag = \u00c0 discuter #icon_bell = Remember icon_bell = Se souvenir #icon_bookmark = Excellent icon_bookmark = Excellent #icon_penguin = Linux icon_penguin = Linux #icon_licq = Nice icon_licq = Sympa #import = Import import = Importer #import_branch = Branch... import_branch = Une branche... #import_explorer_favorites = Explorer Favorites... import_explorer_favorites = Les favoris d'Internet Explorer... #import_folder_structure = Folder Structure... import_folder_structure = Une arborescence de r\u00e9pertoires #import_linked_branch = Linked Branch import_linked_branch = La branche li\u00e9e #import_linked_branch_without_root = (Linked Branch) Without Root... import_linked_branch_without_root = (La branche li\u00e9e) sans la racine #increase_branch_font_size = Larger Font increase_branch_font_size = Augmenter la tailler de police de la branche #increase_node_font_size = Larger Font increase_node_font_size = Augmenter la tailler de police du n\u0153ud #italic = Italic italic = Italique #italicise_branch = Italicise italicise_branch = Branche en italique #join_nodes = Join Nodes join_nodes = Fusionner les n\u0153uds #license = License license = &Licence #license_text = FreeMind - A Program for creating and viewing Mindmaps\nCopyright (C) 2000-2010 Joerg Mueller \nSee COPYING for Details\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. license_text=FreeMind - Une application pour cr\u00e9er et visualiser des Cartes Mentales\nTous droits r\u00e9serv\u00e9s \u00a9 2000 Joerg Mueller \nPour plus de d\u00e9tails, se reporter au fichier COPYING\n\nCe logiciel est un logiciel libre. Vous pouvez le redistribuer et/ou\nle modifier en respectant les termes de la GNU General Public License\ntelle qu'elle est publi\u00e9e par la Free Software Foundation; soit avec la version 2\nde la License, ou (selon votre choix) toute version ult\u00e9rieure.\n\nCe logiciel est distribu\u00e9 dans l'espoir qu'il vous soit utile,\nmais SANS AUCUNE GARANTIE ; sans m\u00eame la garantie implicite d'une VALEUR MARCHANDE ou\nl'AD\u00c9QUATION \u00c0 UN BESOIN SP\u00c9CIFIQUE.\nReportez-vous \u00e0 la Licence Publique G\u00e9n\u00e9rale GNU pour de plus amples informations.\n\nVous devriez avoir re\u00e7u une copie de la Licence Publique G\u00e9n\u00e9rale GNU\navec ce logiciel. Si tel n'est pas le cas, \u00e9crivez \u00e0 \:\nFree Software Foundation, Inc.\n59 Temple Place\nSuite 330,\nBoston, MA 02111-1307, USA. #linear = Linear linear = Rectiligne #load = &Load load = &Charger #locking_failed_by_open = Locking of the map $1 failed. Opening as read-only. locking_failed_by_open = Je n'ai pas pu verrouiller la carte $1. Ouverture en lecture-seule. #locking_failed_by_save_as = Locking of the map $1 failed. Action Save As aborted. locking_failed_by_save_as = Je n'ai pas pu verrouiller la carte $1. Op\u00e9ration "Enregistrer sous" abandonn\u00e9e. #locking_old_lock_removed = The map $1 was locked by the user $2. The lock has been removed because it is old. locking_old_lock_removed = La carte $1 a \u00e9t\u00e9 verrouill\u00e9e par l'utilisateur $2. Le verrou a \u00e9t\u00e9 supprim\u00e9 car il est ancien. #map_already_exists = The map already exists. Do you want to overwrite it? map_already_exists = La carte existe d\u00e9j\u00e0. Souhaitez-vous vraiment l'\u00e9craser ? #map_corrupted = Map corrupted. View detail? map_corrupted = Carte d\u00e9t\u00e9rior\u00e9e. Afficher les d\u00e9tails ? #map_locked_by_open = The map $1 is already being edited by the user $2. Opening as read-only. map_locked_by_open = La carte $1 est actuellement \u00e9dit\u00e9e par l'utilisateur $2. Ouverture en lecture-seule. #map_locked_by_save_as = The map $1 is being edited by the user $2. Action Save As aborted. map_locked_by_save_as = La carte $1 est actuellement \u00e9dit\u00e9e par l'utilisateur $2. L'op\u00e9ration "Enregistrer sous" est abandonn\u00e9e. #mindmap = Map mindmap = Carte #mindmaps = Maps mindmaps = &Cartes #mindmaps_desc = Maps (*.mm) mindmaps_desc = Cartes (*.mm) #mindmaps_filter_desc = Filters (*.mmfilter) mindmaps_filter_desc = Filtre (*.mmfilter) #mode_na = Mode not available mode_na = Mode indisponible #modes = Modes modes = Modes #move_to_root = Move to Root move_to_root = Aller \u00e0 la racine #new = New new = &Nouvelle carte #new_child = New Child Node new_child = Nouveau n\u0153ud comme fils de la s\u00e9lection #new_mindmap = New Mindmap new_mindmap = Nouvelle carte mentale #new_node = New Node new_node = Nouveau n\u0153ud #new_sibling_before = New Previous Sibling Node new_sibling_before=Nouveau n\u0153ud fr\u00e8re avant la s\u00e9lection #new_sibling_behind = New Sibling Node new_sibling_behind=Nouveau n\u0153ud fr\u00e8re apr\u00e8s la s\u00e9lection #next_map = Next Map next_map = Carte suivante #no = No no = Non #node = Node node = N\u0153ud #node_changed_discard_changes = You have changed the node. Do you want to discard changes? node_changed_discard_changes = Vous avez modifi\u00e9 le n\u0153ud. Souhaitez-vous vraiment perdre ces modifications ? #long_node_changed_submit =You have changed the node. Do you want to save changes? long_node_changed_submit =Vous avez changez le n\u0153ud. Voulez-vous enregistrer les changements ? #long_node_changed_cancel =You have changed the node. Do you want to discard changes? long_node_changed_cancel =Vous avez changez le n\u0153ud. Voulez-vous annuler les changements ? #node_color = Node Color... node_color = Couleur du n\u0153ud... #node_down = Node Down node_down = Descendre le n\u0153ud #node_up = Node Up node_up = Monter le n\u0153ud #nonboldify_branch = Unboldify nonboldify_branch = Retirer le gras pour la branche #nonitalicise_branch = Unitalicise nonitalicise_branch = Retirer l'italique pour la branche #normal = Normal normal = Normal #no_found_from = No $1 found from $2. no_found_from = "$1" n'a pas \u00e9t\u00e9 trouv\u00e9 \u00e0 partir de "$2". #no_more_found_from = No more $1 found from $2. no_more_found_from = "$1" n'est plus trouvable \u00e0 partir de "$2". #no_previous_find = No previous find. no_previous_find = Pas de pr\u00e9c\u00e9dente recherche. #not_saved_for_link_error = The map must be saved before you can set a link by file chooser not_saved_for_link_error = La carte doit avoir \u00e9t\u00e9 enregistr\u00e9e avant de pouvoir d\u00e9finir un lien via le s\u00e9lecteur de fichiers. #open = Open... open = &Ouvrir... #page = Page &Setup... page = &Mise en page... #paste = Paste paste = Coller #new_node_as_sibling_not_possible_for_the_root = New node as sibling is not possible for the root new_node_as_sibling_not_possible_for_the_root=Impossible de cr\u00e9er un n\u0153ud fr\u00e8re pour la racine #preferences = Preferences preferences = Pr\u00e9f\u00e9rences #previous_map = Previous Map previous_map = Carte pr\u00e9c\u00e9dente #print = Print print = Im&primer #print_dialog = Print... print_dialog = Im&primer... #print_preview = &Print Preview... print_preview = Aper\u00e7u a&vant impression... #print_preview_title = Print Preview print_preview_title = Aper\u00e7u avant impression #quit = Quit quit = &Quitter #read_only = Read Only read_only = En lecture seule #remove_node = Remove Node remove_node = Supprimer ce n\u0153ud #rename=&Rename rename=&Renommer #repair_link = Repair Link repair_link = R\u00e9parer le lien #repair_link_question = Couldn't load the linked map. Repair the link manually? repair_link_question = Impossible de charger la carte li\u00e9e. Faut-il r\u00e9parer le lien manuellement ? #replace=Replace replace=Remplacer #save = &Save save = &Enregistrer #save_as = Save As... save_as = Enregistrer sous... #save_failed = Attempt to save the map $1 failed. save_failed = La tentative d'enregistrer la carte $1 a \u00e9chou\u00e9e. #save_unsaved = Save the following mindmap? : save_unsaved = Faut-il enregistrer la carte suivante ? #saved = Saved saved = Enregistr\u00e9e #scheme_evaluate = Evaluate! scheme_evaluate = \u00c9valuer \! #select_favorites_folder = Select the folder, in which your favorites reside select_favorites_folder = S\u00e9lectionnez le r\u00e9pertoire dans lequel se trouvent vos favoris #select_folder_for_importing = Select the folder to import select_folder_for_importing = S\u00e9lectionnez le r\u00e9pertoire \u00e0 importer #set_image_by_filechooser = Image (File Chooser or Link)... set_image_by_filechooser = Ins\u00e9rer une image (s\u00e9lection de fichier ou lien) #set_link_by_filechooser = Hyperlink (File Chooser)... set_link_by_filechooser = Ins\u00e9rer un lien (s\u00e9lection de fichier) #set_link_by_textfield = Hyperlink (Text Field)... set_link_by_textfield = Ins\u00e9rer un lien (champ de saisie) #sharp_bezier = Sharp Bezier sharp_bezier = B\u00e9zier effil\u00e9 #sharp_linear = Sharp Linear sharp_linear = Rectiligne effil\u00e9 #split = &Split split = &Diviser #style = Style style = Style #toggle_bold_branch = Toggle Bold toggle_bold_branch = Gras/Non gras #toggle_children_folded = (Un)fold Children toggle_children_folded = Plier/d\u00e9plier les enfants #toggle_folded = Toggle Folded toggle_folded = Plier/d\u00e9plier #toggle_italic_branch = Toggle Italic toggle_italic_branch = Italique/Droit #underline = Underline underline = Souligner #unfold = Unfold unfold = D\u00e9plier #url_error = This URL is malformed! url_error = Cette URL est incorrecte \! #url_load_error = Could not load map at URL: url_load_error = Je suis incapable de charger la carte \u00e0 l'URL : #width = Width width = \u00c9paisseur #yes = Yes yes = Oui #zoom_in = Zoom In zoom_in = Augmenter le zoom #zoom_out = Zoom Out zoom_out = R\u00e9duire le zoom #remove_last_icon = Remove Last Icon remove_last_icon = Retirer la derni\u00e8re ic\u00f4ne #remove_all_icons = Remove All Icons remove_all_icons = Retirer toutes les ic\u00f4nes #lots_of_links_warning = You are going to create a lot of links to the same node. Do you really want to create these links? lots_of_links_warning = Vous allez cr\u00e9er un nombre important de liens vers le m\u00eame n\u0153ud. Voulez-vous vraiment cr\u00e9er ces liens ? #remove_arrow_link = Remove Arrow Link remove_arrow_link = Supprimer le lien #arrow_link_color = Arrow Link Color... arrow_link_color = Couleur de la fl\u00e8che du lien... # removed: follow_link = Goto: #user_defined_zoom = User defined. user_defined_zoom = Zoom personnalis\u00e9 #user_defined_zoom_status_bar = Changing the zoom to the user defined zoom value of {0}%. user_defined_zoom_status_bar = Changement du facteur de grossissement \u00e0 {0}%, choix de l'utilisateur. # new from 14.12.2003, fc #FAQ = FAQ FAQ = &Foire aux questions (FAQ) # new from 09.12.2006, Dimitri #webDocu = Web Documentation webDocu = Documentation Web # new from 20.12.2003, fc #printing_settings = Print Scaling printing_settings = R\u00e9glages d'impression #fit_to_page = Fit to One Page fit_to_page = Ajuster \u00e0 une seule page #user_zoom = Print Zoom Factor (0.0 - 2.0): user_zoom = Facteur grossissant pour l'impression (0.0 - 2.0) : #ok = &OK ok = &Valider # changed from 23.1.2004, fc. #selection_method_by_click = Single-click to Select selection_method_by_click = S\u00e9lection par simple clic #selection_method_direct = Point to Select selection_method_direct = S\u00e9lection par pointage #new from 30.08.2004, Dimitri #combined = Combined combined=Mixte #as_parent = As Parent as_parent=Comme le p\u00e8re # added at 2.5.2004, fc: #undo = Undo undo=Annuler #redo = Redo redo=R\u00e9tablir #delete_child = Delete Node delete_child=Supprimer le n\u0153ud # added at 22.5.2004, fc: #most_recent_files = &Most Recent Files most_recent_files=Fichiers r\u00e9ce&nts #menu_view = &View menu_view=Affic&hage #menu_navigate = &Navigate menu_navigate=&Navigation #menu_format = F&ormat menu_format=&Mise en forme #menu_extras = &Tools menu_extras=&Outils #menu_insert = In&sert menu_insert=&Ins\u00e9rer #menu_attributes = &Attributes menu_attributes = &Attributs # Beware: "Edge Width " and "Edge Style " must end with space. #edge_style = Edge Style edge_style=Style de ligne #edge_width = Edge Width edge_width=Largeur de ligne #menu_file_import = I&mport menu_file_import=&Importer #menu_file_export = &Export menu_file_export=E&xporter #edit_node = Edit Node edit_node=\u00c9diter le n\u0153ud # added at 5.6.2004, fc: #node_background_color = &Node Background Color... node_background_color=Couleur de &fond du n\u0153ud... # added at 25.8.2004, fc: #choose_edge_color = Choose Edge Color choose_edge_color=Choix de la couleur de ligne : # added at 27.8.2004, fc: #underlined = Underlined underlined=Soulign\u00e9 #font_size = font size font_size=Taille de police #font_family = font family font_family=Famille de police # add at 16.9.2004, fc: #import_linked_branch_no_link = The selected node has no link to import from. import_linked_branch_no_link=Le n\u0153ud s\u00e9lectionn\u00e9 n'a pas de lien exploitable comme source d'import. # added at 09.10.2004 #add_link = Add Graphical Link add_link=Ajouter un lien graphique #less_than_two_selected_nodes = You have to select at least two nodes to get links. less_than_two_selected_nodes=Vous devez s\u00e9lectionner au moins deux n\u0153uds pour les lier. #choose_node_background_color = Choose Node Background Color: choose_node_background_color=Choix de la couleur de fond du n\u0153ud : #choose_node_color = Choose Node Color: choose_node_color=Choix de la couleur du n\u0153ud : #choose_background_color = Choose Background Color: choose_background_color=Choix de la couleur de fond : #choose_cloud_color = Choose Cloud Color: choose_cloud_color=Choix de la couleur de nuage : #change_arrows_in_arrow_link = Change Arrows of Arrow Link change_arrows_in_arrow_link=Modifie la fl\u00e8che utilis\u00e9e pour ce lien. #add_local_link = Add Local Hyperlink add_local_link=Ajouter un lien local #link_not_available_any_more = The link is not valid anymore. The node was deleted in between. link_not_available_any_more=Ce lien n'est plus valide. Le n\u0153ud a \u00e9t\u00e9 supprim\u00e9 dans l'intervalle. #file_already_exists = The file {0} already exists. Do you want to overwrite it? file_already_exists=Le fichier {0} existe d\u00e9j\u00e0. Voulez-vous vraiment l'\u00e9craser ? #error_creating_directory = Cannot create directory for export. error_creating_directory=Impossible de cr\u00e9er un r\u00e9pertoire pour l'exportation. #export_svg_text = Scalable Vector Graphic (SVG) export_svg_text=Graphique vectoriel SVG (Scalable Vector Graphic) #export_pdf_text = Portable Document Format (PDF) export_pdf_text=Adobe PDF (Portable Document Format) #goto_link_node_action = Goto Link goto_link_node_action=Aller au lien #fc, 14.11.2004: #undefined_error = An unexpected error occured. Please try to make a bug report. undefined_error=Une erreur impr\u00e9vue viens de se produire. Merci de bien vouloir essayer d'\u00e9tablir un rapport de bogue. #cannot_add_parent_to_root = The root node can't be added to a new parent. cannot_add_parent_to_root=Le n\u0153ud racine ne peut \u00eatre ajout\u00e9 \u00e0 un nouveau parent. #cannot_delete_root = The root node can't be deleted or cut. cannot_delete_root = Le n\u0153ud racine ne peut \u00eatre effac\u00e9 ou coup\u00e9. #cannot_add_parent_diff_parents = All nodes must have the same parent to use this function. cannot_add_parent_diff_parents=Tous les n\u0153uds doivent avoir le m\u00eame parent pour utiliser cette fonction. #no_format_copy_before_format_paste = You can't paste a format until you've copied one. no_format_copy_before_format_paste=Vous ne pouvez coller un format avant d'en avoir copi\u00e9 un. #fc, 15.11.2004: #accessories/plugins/AutomaticLayout.properties_documentation = Fixes the layout of the map.
The first level is black, the second blue, etc. accessories/plugins/AutomaticLayout.properties_documentation=Modifie automatiquement la mise en forme de la carte.
Le premier niveau est noir, le second bleu, etc. #accessories/plugins/AutomaticLayout.properties_name = &Automatic Layout accessories/plugins/AutomaticLayout.properties_name=Mise en forme &automatique #accessories/plugins/BlinkingNodeHook.properties_documentation = This makes the node blinking. But be careful. Do not associate it to many nodes, and not with other automatic formattings to the same node accessories/plugins/BlinkingNodeHook.properties_documentation=Ceci rend le n\u0153ud clignotant. \u00c9vitez de l'associer \u00e0 un trop grand nombre de n\u0153uds et surtout pas avec d'autres mises en forme automatiques pour ce m\u00eame n\u0153ud #accessories/plugins/BlinkingNodeHook.properties_name = Blinking Node accessories/plugins/BlinkingNodeHook.properties_name=N\u0153ud clignotant #accessories/plugins/CreationModificationPlugin.properties_documentation=This function keeps track of node creation and modification times. accessories/plugins/CreationModificationPlugin.properties_documentation=Cette fonction garde la trace des date et heure de cr\u00e9ation et modification des n\u0153uds. #accessories/plugins/CreationModificationPlugin.properties_name = Show &Modification Times accessories/plugins/CreationModificationPlugin.properties_name=Afficher l'&heure de modification #accessories/plugins/ExportToImage_PNG.properties_documentation = Exports the map in the current folding to a PNG image. accessories/plugins/ExportToImage_PNG.properties_documentation=Exporte la carte telle qu'elle est pli\u00e9e sous forme d'image au format PNG. #accessories/plugins/ExportToImage_PNG.properties_name = As PNG... accessories/plugins/ExportToImage_PNG.properties_name=En PNG... #accessories/plugins/ExportToImage_JPEG.properties_documentation = Exports the map in the current folding to a JPEG image. accessories/plugins/ExportToImage_JPEG.properties_documentation=Exporte la carte telle qu'elle est pli\u00e9e sous forme d'image au format JPEG. #accessories/plugins/ExportToImage_JPEG.properties_name = As JPEG... accessories/plugins/ExportToImage_JPEG.properties_name=En JPEG... #accessories/plugins/ExportWithXSLT.properties_documentation = This is an uniform export method using XSLT scripts. accessories/plugins/ExportWithXSLT.properties_documentation=Exporte la carte en utilisant une feuille de style XML de transformation (XSLT). #accessories/plugins/ExportWithXSLT.properties_name = Using XSLT... accessories/plugins/ExportWithXSLT.properties_name=En utilisant une XSLT... #accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_documentation=Exporte la carte en fichier XHTML avec une liste pouvant \u00eatre pli\u00e9e et d\u00e9pli\u00e9e. #accessories/plugins/ExportWithXSLT_HTML.properties_name = As XHTML (JavaScript version)... accessories/plugins/ExportWithXSLT_HTML.properties_name=En XHTML (version JavaScript)... #accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_documentation=Exporte la carte en fichier XHTML avec une image cliquable en t\u00eate. #accessories/plugins/ExportWithXSLT_HTML3.properties_name = As XHTML (Clickable map image version)... accessories/plugins/ExportWithXSLT_HTML3.properties_name=En XHTML (image cliquable).. #accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_name = As MindManager MindMap... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_name = En carte MindManager... #accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_documentation= accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_documentation= #accessories/plugins/FitToPage.properties_documentation = Adjusts the zoom such that the entire map fits into the current window. accessories/plugins/FitToPage.properties_documentation=Ajuste le facteur de grossissement de sorte que la carte tienne enti\u00e8rement dans la fen\u00eatre actuelle. #accessories/plugins/FitToPage.properties_name = Zoom to &Fit to Page accessories/plugins/FitToPage.properties_name=Ajus&ter \u00e0 la page #accessories/plugins/FormatCopy.properties_documentation = Copies the format of a node. accessories/plugins/FormatCopy.properties_documentation=Copie la mise en forme du n\u0153ud. #accessories/plugins/FormatCopy.properties_name = Copy Format accessories/plugins/FormatCopy.properties_name=Copier la mise en forme #accessories/plugins/FormatPaste.properties_documentation = Pastes the format of a node. accessories/plugins/FormatPaste.properties_documentation=Colle la mise en forme d'un n\u0153ud. #accessories/plugins/FormatPaste.properties_name = Paste Format accessories/plugins/FormatPaste.properties_name=Coller la mise en forme #accessories/plugins/FormularEditor.properties_documentation = Associates a simple formular editor to the current note. accessories/plugins/FormularEditor.properties_documentation=Associe un \u00e9diteur de formule basique au n\u0153ud actuel. #accessories/plugins/FormularEditor.properties_name = Formular Editor accessories/plugins/FormularEditor.properties_name=\u00c9diteur de formule #accessories/plugins/IconSelectionPlugin.properties_documentation = Here you can select an icon using a subwindow. accessories/plugins/IconSelectionPlugin.properties_documentation=Ici vous pourrez s\u00e9lectionner une ic\u00f4ne en utisant une palette. #accessories/plugins/IconSelectionPlugin.properties_name = Select Icon... accessories/plugins/IconSelectionPlugin.properties_name=S\u00e9lection d'ic\u00f4nes... #accessories/plugins/NewParentNode.properties_documentation = All selected are sent to a new parent. accessories/plugins/NewParentNode.properties_documentation = Toute la s\u00e9lection est envoy\u00e9e vers un nouveau parent. #accessories/plugins/NewParentNode.properties_name = New Parent Node accessories/plugins/NewParentNode.properties_name=Nouveau n\u0153ud parent #accessories/plugins/NodeNote.properties_documentation = Associates a simple note editor to the current note. accessories/plugins/NodeNote.properties_documentation=Associe un \u00e9diteur de note basique au n\u0153ud courant. #accessories/plugins/NodeNote.properties_name = Note accessories/plugins/NodeNote.properties_name=Note #accessories/plugins/PMCalculation.properties_documentation = Calculates the efforts for different tasks. accessories/plugins/PMCalculation.properties_documentation = Calcule les efforts pour diff\u00e9rentes t\u00e2ches. #accessories/plugins/PMCalculation.properties_name = PMCalculation accessories/plugins/PMCalculation.properties_name=PMCalculation [TRANSLATE] #accessories/plugins/RemoveNote.properties_documentation = Removes note content of possibly several notes. accessories/plugins/RemoveNote.properties_documentation = Supprime le contenu d'une ou plusieurs notes. #accessories/plugins/RemoveNote.properties_name = Remove Notes accessories/plugins/RemoveNote.properties_name = Enlever les notes #accessories/plugins/RevisionPlugin.properties_documentation = Marks the background of each changed node. accessories/plugins/RevisionPlugin.properties_documentation=Marque le fond de chaque n\u0153ud modifi\u00e9. #accessories/plugins/RevisionPlugin.properties_name = Show &Revisions in Yellow accessories/plugins/RevisionPlugin.properties_name=Afficher les &r\u00e9visions en jaune #accessories/plugins/SplitNode.properties_documentation = Node is splitted accessories/plugins/SplitNode.properties_documentation = Divise le n\u0153ud en ses sous-\u00e9l\u00e9ments #accessories/plugins/SplitNode.properties_name = &Split Node accessories/plugins/SplitNode.properties_name = &Diviser le n\u0153ud #accessories/plugins/UnfoldAll.properties_documentation = Unfolds the selected nodes and all their children. accessories/plugins/UnfoldAll.properties_documentation=D\u00e9plie le n\u0153ud s\u00e9lectionn\u00e9 ainsi que ses descendants. #accessories/plugins/UnfoldAll.properties_name = Unfold All accessories/plugins/UnfoldAll.properties_name=Tout d\u00e9plier #accessories/plugins/FoldAll.properties_documentation = Folds the selected nodes and all their children. accessories/plugins/FoldAll.properties_documentation=Plie les n\u0153uds s\u00e9lectionn\u00e9s ainsi que leurs descendants. #accessories/plugins/FoldAll.properties_name = Fold All accessories/plugins/FoldAll.properties_name=Tout plier #accessories/plugins/UnfoldOneLevel.properties_documentation = Unfolds the selected nodes by one level. accessories/plugins/UnfoldOneLevel.properties_documentation = D\u00e9plie le n\u0153ud s\u00e9lectionn\u00e9 d'un niveau. #accessories/plugins/UnfoldOneLevel.properties_name = Unfold One Level accessories/plugins/UnfoldOneLevel.properties_name=D\u00e9plier un niveau #accessories/plugins/FoldOneLevel.properties_documentation = Folds the selected nodes by one level. accessories/plugins/FoldOneLevel.properties_documentation=Plie un niveau du n\u0153ud s\u00e9lectionn\u00e9. #accessories/plugins/FoldOneLevel.properties_name = Fold One Level accessories/plugins/FoldOneLevel.properties_name=Plier un niveau #plugins/FreemindHelp.xml_documentation = FreeMind Extended Help plugins/FreemindHelp.xml_documentation=Aide \u00e9tendue de FreeMind #plugins/FreemindHelp.xml_name = Help... plugins/FreemindHelp.xml_name=&Aide... #plugins/ExportPdf.xml_documentation = Export to PDF plugins/ExportPdf.xml_documentation=Exporte la carte telle qu'elle est pli\u00e9e sous forme de document PDF. #plugins/ExportPdf.xml_name = As PDF... plugins/ExportPdf.xml_name=En PDF... #plugins/ExportSvg.xml_documentation = Export to SVG plugins/ExportSvg.xml_documentation=Exporte la carte telle qu'elle est pli\u00e9e sous forme d'image au format SVG. #plugins/ExportSvg.xml_name = As SVG... plugins/ExportSvg.xml_name=En SVG... # fc, 28.11.2004: #cannot_move_to_child = Can't move a node to one of its children. cannot_move_to_child = Impossible de d\u00e9placer un n\u0153ud dans l'un de ses enfants. # fc, 14.12.2004: #accessories/plugins/EnterPassword.properties_name = &Toggle Crypted / Encrypted accessories/plugins/EnterPassword.properties_name=&Chiffrer/d\u00e9chiffrer #accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EnterPassword.properties_documentation=Basculer de/vers chiffr\u00e9 \u00e0 non-chiffr\u00e9 #accessories/plugins/EncryptNode.properties_name = Insert &Encrypted Node ... accessories/plugins/EncryptNode.properties_name=Ins\u00e9rer un n\u0153ud &chiffr\u00e9 #accessories/plugins/EncryptNode.properties_documentation = Inserts a new node whose child nodes are stored encrypted. accessories/plugins/EncryptNode.properties_documentation = Ins\u00e8re un nouveau n\u0153ud dont les descendants seront chiffr\u00e9s. #accessories/plugins/EncryptNode.properties_0 = Choose password for encrypted node accessories/plugins/EncryptNode.properties_0=Choisir le mot de passe pour le n\u0153ud chiffr\u00e9 #accessories/plugins/EncryptNode.properties_1 = Passwords are not equal or to short. accessories/plugins/EncryptNode.properties_1 = Les mots de passe ne correspondent pas ou sont trop courts. #accessories/plugins/EncryptNode.properties_2 = Enter Password: accessories/plugins/EncryptNode.properties_2 = Entrez le mot de passe : #accessories/plugins/EncryptNode.properties_3 = Re-enter Password: accessories/plugins/EncryptNode.properties_3 = Entrez \u00e0 nouveau le mot de passe : #accessories/plugins/EncryptNode.properties_4 = Enter your password. accessories/plugins/EncryptNode.properties_4=Entrez votre mot de passe. #accessories/plugins/EncryptNode.properties_5 = Remember, that the strength of the encryption
depends almost completely on the quality of your password. accessories/plugins/EncryptNode.properties_5=Souvenez-vous que la qualit\u00e9 d'un chiffrement d\u00e9pend presque enti\u00e8rement de la qualit\u00e9 de votre mot de passe. #accessories/plugins/EncryptNode.properties_6 = OK accessories/plugins/EncryptNode.properties_6=Valider #accessories/plugins/EncryptNode.properties_7 = Cancel accessories/plugins/EncryptNode.properties_7=Annuler #accessories/plugins/EncryptNode.properties_wrong_password = The password is not correct. accessories/plugins/EncryptNode.properties_wrong_password=Le mot de passe n'est pas valide. #accessories/plugins/NewEncryptedMap.properties_documentation = Create a new encrypted map accessories/plugins/NewEncryptedMap.properties_documentation=Cr\u00e9er une nouvelle carte chiffr\u00e9e #accessories/plugins/NewEncryptedMap.properties_name = Create Encrypted Map ... accessories/plugins/NewEncryptedMap.properties_name=&Cr\u00e9er une carte chiffr\u00e9e... #accessories/plugins/EncryptNode.properties_select_me = Select me to continue! accessories/plugins/EncryptNode.properties_select_me=S\u00e9lectionnez-moi pour continuer \! #accessories/plugins/EncryptNode.properties_insert_encrypted_node_first = You can only toggle the encryption state of an encrypted node. Please insert such a node using the tools menu. accessories/plugins/EncryptNode.properties_insert_encrypted_node_first=Vous ne pouvez changer l'\u00e9tat de chiffrement d'un n\u0153ud chiffr\u00e9. Ins\u00e9rez un tel n\u0153ud en utilisant le menu "outils". # fc, 2.2.05: #selection_method_delayed=Delayed Automatic Selection selection_method_delayed = S\u00e9lection automatique retard\u00e9e # fc, 4.2.05: #plugins/TimeManagement.xml_documentation= Shows the calendar module by Kai Toedter. plugins/TimeManagement.xml_documentation=Affiche le module de calendrier.
D\u00e9velopp\u00e9 par Kai Toedter. #plugins/TimeManagement.xml_name= Show Calendar... plugins/TimeManagement.xml_name=Montrer le calendrier... #plugins/TimeManagement.xml_appendButton= Append Date To Selected Nodes plugins/TimeManagement.xml_appendButton = Ajouter la date aux n\u0153uds s\u00e9lectionn\u00e9s #plugins/TimeManagement.xml_reminderButton= Remind Me At This Date plugins/TimeManagement.xml_reminderButton=M'alerter \u00e0 cette date #plugins/TimeManagement.xml_cancelButton=Cancel plugins/TimeManagement.xml_cancelButton=Annuler #plugins/TimeManagementReminder.xml_documentation=Internal hook for scheduling resubmission tasks. plugins/TimeManagementReminder.xml_documentation=Accroche interne pour planifier les t\u00e2ches de r\u00e9\u00e9mission. #plugins/TimeManagementReminder.xml_name=Internal hook for scheduling resubmission tasks. plugins/TimeManagementReminder.xml_name=Accroche interne pour planifier les t\u00e2ches de r\u00e9\u00e9mission. #plugins/TimeManagement.xml_reminderNode_tooltip=Reminder scheduled at {0,date} {0,time}. plugins/TimeManagement.xml_reminderNode_tooltip=Alerte planifi\u00e9e le {0,date} \u00e0 {0,time}. #plugins/TimeManagement.xml_reminderNode_showNode=Time has elapsed for the node " {0} ". Do you want to snooze for ten minutes? plugins/TimeManagement.xml_reminderNode_showNode = L'heure est pass\u00e9e pour le n\u0153ud \u00ab{0}\u00bb. Voulez-vous l'ignorer pendant dix minutes ? #plugins/TimeManagement.xml_reminderNode_onlyOneDate=Currently, there may only be one reminder per node.
The current reminder is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}.

Do you want to change the node's reminder time (YES)
or do you want to keep the old one (NO)? plugins/TimeManagement.xml_reminderNode_onlyOneDate = Il ne peut actuellement y avoir qu'une alerte par n\u0153ud.
\nL'alerte actuelle est planifi\u00e9e pour le {0,date} \u00e0 {0,time}.
\nVotre Choix \u00e9tait le {1,date} \u00e0 {1,time}.
\nVoulez-vous modifier l'alerte pour ce n\u0153ud (Oui) ?
\nOu souhaitez conserver la pr\u00e9c\u00e9dente (Non) ? #plugins/TimeManagement.xml_removeReminderButton = Remove Reminder plugins/TimeManagement.xml_removeReminderButton=Supprimer l'alerte #plugins/TimeManagement.xml_removeReminderButton_tooltip = Remove all reminders associated with the selected nodes. plugins/TimeManagement.xml_removeReminderButton_tooltip=Supprime toutes les alertes associ\u00e9es aux n\u0153uds s\u00e9lectionn\u00e9. #plugins/TimeManagement.xml_minute= Minute: plugins/TimeManagement.xml_minute = Minutes : #plugins/TimeManagement.xml_hour= Hour: plugins/TimeManagement.xml_hour = Heure : #plugins/TimeManagement.xml_WindowTitle=Time Management plugins/TimeManagement.xml_WindowTitle=Gestion du temps #plugins/latex/LatexNodeHook.properties_documentation = Latex formula plugins/latex/LatexNodeHook.properties_documentation = Formule Latex #plugins/latex/LatexNodeHook.properties_name = &Latex plugins/latex/LatexNodeHook.properties_name = &Latex #plugins/latex/LatexNodeHook.editorTitle = Editor, close to accept plugins/latex/LatexNodeHook.editorTitle = \u00c9diteur, fermer pour accepter # fc, 18.2.2005: #accessories/plugins/HierarchicalIcons.properties_documentation=If one of the (grand)children of me has an icon, I will show this icon in little format, too. accessories/plugins/HierarchicalIcons.properties_documentation = Si l'un de mes descendants a une ic\u00f4ne, je vais \u00e9galement afficher cette ic\u00f4ne. #accessories/plugins/HierarchicalIcons.properties_name=Show icons &hierarchically accessories/plugins/HierarchicalIcons.properties_name=Afficher les ic\u00f4nes &hi\u00e9rarchiquement # fc, 1.3.2005: #icon_full-1 = Priority 1 icon_full-1=Priorit\u00e9 1 #icon_full-2 = Priority 2 icon_full-2=Priorit\u00e9 2 #icon_full-3 = Priority 3 icon_full-3=Priorit\u00e9 3 #icon_full-4 = Priority 4 icon_full-4=Priorit\u00e9 4 #icon_full-5 = Priority 5 icon_full-5=Priorit\u00e9 5 #icon_full-6 = Priority 6 icon_full-6=Priorit\u00e9 6 #icon_full-7 = Priority 7 icon_full-7=Priorit\u00e9 7 # fc, 11.3.2005: #RevertAction=&Revert RevertAction=&Revenir \u00e0 l'enregistrement # the prefix for the reconstructed map (revert + undo). #freemind_reverted=Freemind_Reverted_ freemind_reverted=Freemind_r\u00e9cup\u00e9r\u00e9_ # fc, 5.4.2005 #plugins/TimeManagement.xml_todayButton=Today plugins/TimeManagement.xml_todayButton=Aujourd'hui #plugins/TimeList.xml_documentation=Shows all scheduled times and the corresponding nodes. plugins/TimeList.xml_documentation = Montre toutes les alertes horaires ainsi que les n\u0153uds associ\u00e9s. #plugins/TimeList.xml_name=Show Time Scheduler &List ... plugins/TimeList.xml_name=Montrer la liste des &alerte planifi\u00e9es... #remove_node_background_color = &Remove Node Background Color remove_node_background_color=&Retirer la couleur de fond du n\u0153ud #plugins/NodeList.xml_documentation=Shows all nodes with its creation/modification dates. #plugins/NodeList.xml_name=Show Map History ... #plugins/TimeList.xml_Modified=Modified plugins/TimeList.xml_Modified=Modifi\u00e9 #plugins/TimeList.xml_Created=Created plugins/TimeList.xml_Created=Cr\u00e9\u00e9 #plugins/TimeList.xml_Date=Date plugins/TimeList.xml_Date=Date #plugins/TimeList.xml_Text=Text plugins/TimeList.xml_Text=Texte #plugins/TimeList.xml_Icons=Icons plugins/TimeList.xml_Icons=Ic\u00f4nes #fc, 26.4.2005: #select_branch=Select Visible Branch select_branch=S\u00e9lectionner la branche visible #select_all=Select All Visible select_all = S\u00e9lectionner tout ce qui est visible #change_link_arrows=change_link_arrows change_link_arrows=change_link_arrows [TRANSLATE] # fc, 27.4.2005: #reset_node_position=Reset &Position reset_node_position=Remise \u00e0 z\u00e9ro de la &position # fc, 2.5.2005: #plugins/RemoveReminder.xml_documentation=Removes a reminder from a node. plugins/RemoveReminder.xml_documentation=Supprimer une alerte pour un n\u0153ud. #plugins/RemoveReminder.xml_name=Remove Reminder plugins/RemoveReminder.xml_name=Supprimer l'alerte # fc, 3.5.2005: #plugins/TimeManagement.xml_reminderButton_tooltip=When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.
If you close the map, the timers are reactivated the next time, the map is opened. plugins/TimeManagement.xml_reminderButton_tooltip=Ce bouton permet de planifier une alerte pour la date donn\u00e9e.
\nUne ic\u00f4ne clignotante attirera votre attention.
\nSi vous fermer la carte, les alertes sont r\u00e9activ\u00e9es \u00e0 l'ouverture qui suit. # dimitri, 8.05.05 #filter_toolbar=Filter filter_toolbar=Filtre #filter_dialog=Filter Composer filter_dialog=Compositeur de filtre #filter_no_filtering=No Filtering filter_no_filtering=Pas de filtrage #filter_selected_node_view=Currently Selected Nodes filter_selected_node_view=Pour les n\u0153uds s\u00e9lectionn\u00e9s #filter_conditions = Filters filter_conditions = Filtres #filter_edit=Edit filter_edit=\u00c9diter #filter_edit_description=Edit Filter List filter_edit_description=\u00c9diter la liste des filtres #filter_unfold_ancestors=Unfold Filtered Nodes filter_unfold_ancestors = D\u00e9plier les n\u0153uds filtr\u00e9s #filter_icon=Icon filter_icon=Ic\u00f4ne #filter_node=Node Text filter_node=Texte du n\u0153ud #filter_exist=Exists filter_exist=Existant #filter_does_not_exist=Not Exist filter_does_not_exist=Inexistant #filter_contains=Contains filter_contains=Contient #filter_is_equal_to=Is equal to filter_is_equal_to = Est \u00e9gal \u00e0 #filter_is_not_equal_to=Is not equal to filter_is_not_equal_to = N'est pas \u00e9gal \u00e0 #filter_ignore_case=Ignore Case filter_ignore_case=Ignorer la casse #filter_enter_value=Enter Value filter_enter_value=Entrer une valeur #filter_add=&Add filter_add=&Ajouter #filter_delete=&Delete filter_delete=&Effacer #filter_select=&Select filter_select=&S\u00e9lectionner #filter_not=&Not filter_not=&Non #filter_and=A&nd filter_and=E&t #filter_or=O&r filter_or=O&u #filter_show_ancestors=Show Ancestors filter_show_ancestors=Montrer les anc\u00e8tres #filter_show_descendants=Show Descendants filter_show_descendants=Montrer les d\u00e9scendants # dimitri, 10.07.2005 #attributes_all=All Attributes attributes_all=Tous les attributs #attributes_attribute=Attributes attributes_attribute=Attributs #attributes_close=Close attributes_close=Fermer #attribute_delete=Delete all Values attribute_delete=Effacer toutes les valeurs #attribute_delete_value=Delete this Value attribute_delete_value=Effacer cette valeur #attributes_edit=Edit attributes_edit=\u00c9diter #attributes_edit_in_place=Edit Attributes attributes_edit_in_place=\u00c9diter les attributs #attributes_edit_tooltip=Edit Set attributes_edit_tooltip=\u00c9diter la s\u00e9lection #attribute_font_size_tooltip=Attribute Font Size attribute_font_size_tooltip=Taille de police d'attribut #attributes_dialog=&Attribute Manager... attributes_dialog=Gestionnaire d'&attributs... #attributes_dialog_title=Attribute Manager attributes_dialog_title = Gestionnaire d'attributs #attributes_import=&Import attributes_import=Importer #attributes_import_tooltip=Import attributes from the other loaded maps attributes_import_tooltip = Importer des attributs \u00e0 partir des autres cartes charg\u00e9es #attributes_assign_dialog=Assi&gn Attributes... attributes_assign_dialog=Assi&gner des attributs... #attributes_visible=Selected Visible attributes_visible=S\u00e9lectionner ce qui est visible #attributes_visible_tooltip=Selection for View->Attribute->Show Selected Attributes attributes_visible_tooltip = S\u00e9lection pour Affichage -> Attributs -> Montrer les attributs s\u00e9lectionn\u00e9s #attributes_visible_tooltip=Selected Visible attributes_visible_tooltip=S\u00e9lectionner ce qui est visible #attributes_refresh=Refresh attributes_refresh=Rafraichir #attribute_replace=Replace with attribute_replace=Remplacer avec #attributes_restriction=Restricted Set attributes_restriction=S\u00e9lection r\u00e9duite #attributes_restricted_attributes_tooltip=Restrict Set of Attributes attributes_restricted_attributes_tooltip=Restreindre la s\u00e9lection d'attributs #attributes_restricted_values_tooltip=Restrict Set of Values for Current Attribute attributes_restricted_values_tooltip = Restreindre la s\u00e9lection de valeurs pour les attributs actuels #attributes_select_all=All attributes_select_all=Tout #attributes_select_all_tooltip=Select / Deselect all attributes_select_all_tooltip=Tout s\u00e9lectionner / d\u00e9s\u00e9lectionner #attributes_for_selected=Selected Nodes attributes_for_selected = N\u0153uds s\u00e9lectionn\u00e9s #attributes_for_visible=All Visible Nodes attributes_for_visible=Tous les n\u0153uds visibles #attributes_deselect_all=Nothing attributes_deselect_all=Rien #attribute_list_box_label_text=Existing Values attribute_list_box_label_text=Valeurs existantes #attributes_popup_edit=Edit attributes_popup_edit=\u00c9diter #attributes_popup_optimal_width=Optimal Width attributes_popup_optimal_width = \u00c9paisseur optimale #attributes_popup_hide=Hide attributes_popup_hide=Cacher #attributes_popup_new=New Attribute attributes_popup_new=Nouvel attribut #attributes_popup_delete=Delete attributes_popup_delete=Effacer #attributes_popup_up=Up attributes_popup_up=Monter #attributes_popup_down=Down attributes_popup_down=Descendre #attributes_show=Show attributes_show=Montrer #attributes_show_all = Show All Attributes attributes_show_all = Montrer tous les attributs #attributes_show_selected = Show Selected Attributes attributes_show_selected = Montrer les attributs s\u00e9lectionn\u00e9s #attributes_hide_all = Hide All Attributes attributes_hide_all = Cacher tous les attributs #attribute_top=All known Attributes for the loaded Maps attribute_top=Tous les attributs connus de la carte charge #attributes_skip_root=Skip Root Node attributes_skip_root=Passer le n\u0153ud racine #attributes_no_import_candidates_found=No new attributes found attributes_no_import_candidates_found=Aucune nouvel attribut trouv\u00e9 #attributes_adding_empty_attribute_error=Can not use an empty string as attribute name attributes_adding_empty_attribute_error = Une cha\u00eene vide ne peut pas \u00eatre un nom d'attribut # fc, 10.5.2005: #property_dialog=Preferences ... property_dialog=Propri\u00e9t\u00e9s... #OptionPanel.automatic=Automatic OptionPanel.automatic=Automatique #OptionPanel.de=De OptionPanel.de=Allemand #OptionPanel.dk=Dk OptionPanel.dk=Danois #OptionPanel.en=En OptionPanel.en=Anglais #OptionPanel.es=Es OptionPanel.es=Espagnol #OptionPanel.fr=Fr OptionPanel.fr=Fran\u00e7ais #OptionPanel.gl=Gl OptionPanel.gl=Galicien #OptionPanel.hu=Hu OptionPanel.hu=Hongrois #OptionPanel.it=It OptionPanel.it=Italien #OptionPanel.ja=Ja OptionPanel.ja=Japonais #OptionPanel.ko=Ko OptionPanel.ko=Cor\u00e9en #OptionPanel.nl=Nl OptionPanel.nl=N\u00e9erlandais #OptionPanel.pl=Pl OptionPanel.pl=Polonais #OptionPanel.pt_BR=Pt BR OptionPanel.pt_BR=Portugais (du Br\u00e9sil) #OptionPanel.pt_PT=Pt PT OptionPanel.pt_PT=Portugais (du Portugal) #OptionPanel.ru=Ru OptionPanel.ru=Russe #OptionPanel.sl=Sl OptionPanel.sl=Slov\u00e8ne #OptionPanel.zh_TW=Zh OptionPanel.zh_TW = Chinois (traditionnel) #OptionPanel.zh_CN=Zh CN OptionPanel.zh_CN=Chinois (simplifi\u00e9) #OptionPanel.fork=Fork OptionPanel.fork=Fourche #OptionPanel.bubble=Bubble OptionPanel.bubble=Bulle #OptionPanel.as_parent=As Parent OptionPanel.as_parent=Comme le parent #OptionPanel.combined=Combined OptionPanel.combined=Mixte #OptionPanel.bezier=Bezier OptionPanel.bezier=B\u00e9zier #OptionPanel.linear=Linear OptionPanel.linear=Rectiligne #OptionPanel.default=Default OptionPanel.default=R\u00e9glages par d\u00e9faut #OptionPanel.metal=Metal OptionPanel.metal=M\u00e9tal #OptionPanel.windows=Windows OptionPanel.windows=Windows #OptionPanel.motif=Motif OptionPanel.motif=Motif #OptionPanel.gtk=Gtk OptionPanel.gtk=Gtk #OptionPanel.nothing=Nothing OptionPanel.nothing=Aucun en particulier #OptionPanel.relative=Relative OptionPanel.relative=Relatifs #OptionPanel.absolute=Absolute OptionPanel.absolute=Absolus #OptionPanel.first=First OptionPanel.first=Premier #OptionPanel.last=Last OptionPanel.last=Dernier #OptionPanel.selection_method_direct=Direct OptionPanel.selection_method_direct=Directe #OptionPanel.selection_method_delayed=Delayed OptionPanel.selection_method_delayed=Retard\u00e9e #OptionPanel.selection_method_by_click=By Click OptionPanel.selection_method_by_click = Par clic #OptionPanel.html_export_no_folding=No Folding OptionPanel.html_export_no_folding=Ne rien plier #OptionPanel.html_export_fold_currently_folded=Fold Currently Folded OptionPanel.html_export_fold_currently_folded=Conserver pli\u00e9 ce qui est pli\u00e9 #OptionPanel.html_export_fold_all=Fold All OptionPanel.html_export_fold_all=Tout plier #OptionPanel.html_export_based_on_headings=Based On Headings OptionPanel.html_export_based_on_headings=\u00c0 partir des titres #OptionPanel.Environment=Environment OptionPanel.Environment=Environnement #OptionPanel.Files=Files OptionPanel.Files=Fichiers #OptionPanel.language=Language OptionPanel.language=Langue #OptionPanel.language.tooltip=This is the language that should be used in the program. 'automatic' tries to load the current user's language. OptionPanel.language.tooltip = La langue qui doit \u00eatre utilis\u00e9e par l'application.
\nLa valeur 'automatique" tente de charger la langue utilis\u00e9e actuellement par l'utilisateur dans son syst\u00e8me. #OptionPanel.experimental_file_locking_on=Experimental File Locking OptionPanel.experimental_file_locking_on = Verrouillage de fichier (exp\u00e9rimental) #OptionPanel.experimental_file_locking_on.tooltip= Experimental feature OptionPanel.experimental_file_locking_on.tooltip=Fonctionalit\u00e9 exp\u00e9rimentale #OptionPanel.draganddrop=Drag And Drop OptionPanel.draganddrop=Glisser/d\u00e9poser #OptionPanel.draganddrop.tooltip=If dnd is enabled. OptionPanel.draganddrop.tooltip = D\u00e9termine si le glisser/d\u00e9poser est actif. #OptionPanel.userproperties=Userproperties OptionPanel.userproperties=Propri\u00e9t\u00e9es personnelles de l'utilisateur #OptionPanel.patternsfile=Patternsfile OptionPanel.patternsfile = Fichier mod\u00e8le #OptionPanel.docmapurl_since_version_0_7_0=Docmapurl OptionPanel.docmapurl_since_version_0_7_0=URL de la carte de documentation #OptionPanel.browsemode_initial_map=Browsemode Initial Map OptionPanel.browsemode_initial_map=Carte charg\u00e9e au d\u00e9marrage #OptionPanel.browsemode_initial_map.tooltip=The URL of the map that is loaded when browsemode starts up OptionPanel.browsemode_initial_map.tooltip=L'URL de la carte qui est charg\u00e9e lorsque le mode navigation est d\u00e9marr\u00e9. #OptionPanel.last_opened_list_length=Last Opened List Length OptionPanel.last_opened_list_length = Longueur de la liste des derniers fichiers ouverts #OptionPanel.time_for_automatic_save=Time For Automatic Save OptionPanel.time_for_automatic_save=D\u00e9lai pour la sauvegarde automatique (en millisecondes) #OptionPanel.time_for_automatic_save.tooltip= time between two consecutive automatic saving actions (in msec): To disable automatic saving set this number to 2000000000. OptionPanel.time_for_automatic_save.tooltip = Intervalle entre deux sauvegardes automatiques (en millisecondes). Pour d\u00e9sactiver la sauvegarde automatique, mettre cette valeur \u00e0 2000000000. #OptionPanel.delete_automatic_saves_at_exit=Delete Automatic Saves At Exit OptionPanel.delete_automatic_saves_at_exit = Supprime les sauvegardes automatiques en quittant #OptionPanel.delete_automatic_saves_at_exit.tooltip= If the files should be deleted automatically on a normal shutdown of Freemind set the following variable to true OptionPanel.delete_automatic_saves_at_exit.tooltip = Si les fichiers doivent \u00eatre supprim\u00e9s automatiquement lorsque FreeMind se termine normalement, choisir Vrai pour cette valeur. #OptionPanel.number_of_different_files_for_automatic_save=Number Of Different Files For Automatic Save OptionPanel.number_of_different_files_for_automatic_save = Nombre de fichiers diff\u00e9rents pour la sauvegarde automatique #OptionPanel.number_of_different_files_for_automatic_save.tooltip= number n of different files to store the maps into. The first automatic save is done in the first file, and so on up to the n+1-save which is again stored in the first file (cyclic) OptionPanel.number_of_different_files_for_automatic_save.tooltip = Quantit\u00e9 de n fichiers diff\u00e9rents utilis\u00e9s pour stocker les cartes.
La premi\u00e8re sauvegarde automatique est r\u00e9alis\u00e9e dans le premier fichier et ainsi de suite jusqu'\u00e0 la n+1\u00e8me sauvegarde qui est \u00e0 nouveau stock\u00e9e dans le premier fichier. #OptionPanel.path_to_automatic_saves=Path To Automatic Saves OptionPanel.path_to_automatic_saves = Chemin pour les sauvegardes automatiques #OptionPanel.path_to_automatic_saves.tooltip= to change the default path (this is 'java.io.tmpdir' of java), enter a directory path here: other possibilities: * freemind_home stands for the directory, where the auto.properties are. * default points to java.io.tmpdir OptionPanel.path_to_automatic_saves.tooltip=Indiquez un chemin par d\u00e9faut pour les fichiers temporaires (propri\u00e9t\u00e9 Java 'java.io.tmpdir).
Il est \u00e9galement possible d'utiliser freemind_home o\u00f9 se trouve auto.properties #OptionPanel.Defaults=Defaults OptionPanel.Defaults=R\u00e9glages par d\u00e9faut #OptionPanel.standardnodestyle=Standard Node Style OptionPanel.standardnodestyle=Style de n\u0153ud par d\u00e9faut #OptionPanel.standardnodestyle.tooltip=The default new node style. 'fork', 'bubble' 'as_parent' and 'combined' are supported OptionPanel.standardnodestyle.tooltip=Le style par d\u00e9faut des nouveaux n\u0153uds.
\nSeules les valeurs indiqu\u00e9es dans la liste sont support\u00e9es. #OptionPanel.standardrootnodestyle=Standard Root Node Style OptionPanel.standardrootnodestyle = Style par d\u00e9faut du n\u0153ud racine #OptionPanel.standardrootnodestyle.tooltip=The root node style if no other is specified. 'fork' and 'bubble' and 'combined' are supported OptionPanel.standardrootnodestyle.tooltip = Le style du n\u0153ud racine si aucun n'est sp\u00e9cifi\u00e9.
\nLes valeurs possibles sont "fourche", "bulle" et "mixte". #OptionPanel.standardnodetextcolor=Standard Node Color OptionPanel.standardnodetextcolor=Couleur de n\u0153ud par d\u00e9faut #OptionPanel.standardnodetextcolor.tooltip=The standard node color. In html notation (#RRGGBB in hex values) OptionPanel.standardnodetextcolor.tooltip = Couleur standard des n\u0153uds.
Syntaxe HTML : \#RRGGBB en valeurs hexad\u00e9cimales. #OptionPanel.standardselectednodecolor=Standard Selected Node Color OptionPanel.standardselectednodecolor=Couleur par d\u00e9faut pour le n\u0153ud s\u00e9lectionn\u00e9 #OptionPanel.standardselectednodecolor.tooltip=The standard node color if selected. In html notation (#RRGGBB in hex values) OptionPanel.standardselectednodecolor.tooltip = Couleur standard des n\u0153uds s\u00e9lectionn\u00e9s.
Syntaxe HTML : \#RRGGBB en valeurs hexad\u00e9cimales. #OptionPanel.standardselectednoderectanglecolor=Selected Node Bubble Color OptionPanel.standardselectednoderectanglecolor=Couleur des n\u0153uds s\u00e9lectionn\u00e9s #OptionPanel.standardselectednoderectanglecolor.tooltip=The color of buble marking selected nodes. In html notation (#RRGGBB in hex values) OptionPanel.standardselectednoderectanglecolor.tooltip=Couleur de marquage des n\u0153uds s\u00e9lectionn\u00e9s. En notation HTML (#RRVVBB en valeurs hexa) #OptionPanel.standarddrawrectangleforselection=Display Selected Nodes in Bubbles OptionPanel.standarddrawrectangleforselection=Afficher les n\u0153uds s\u00e9lectionn\u00e9s en Bulles #OptionPanel.standarddrawrectangleforselection.tooltip=Mark selected nodes by bubble around. OptionPanel.standarddrawrectangleforselection.tooltip=Marque les n\u0153uds s\u00e9lectionn\u00e9s en les entourant de bulles. #OptionPanel.standardedgecolor=Standard Edge Color OptionPanel.standardedgecolor=Couleur de ligne par d\u00e9faut #OptionPanel.standardedgecolor.tooltip=The standard edge color in html notation OptionPanel.standardedgecolor.tooltip=Couleur par d\u00e9faut des lignes en syntaxe HTML. #OptionPanel.standardlinkcolor=Standard Link Color OptionPanel.standardlinkcolor=Couleur de lien par d\u00e9faut #OptionPanel.standardlinkcolor.tooltip=The standard link color in html notation OptionPanel.standardlinkcolor.tooltip=Couleur standard des liens, en syntaxe HTML. #OptionPanel.standardbackgroundcolor=Standard Background Color OptionPanel.standardbackgroundcolor=Couleur de fond par d\u00e9faut #OptionPanel.standardbackgroundcolor.tooltip=The standard background color in html notation OptionPanel.standardbackgroundcolor.tooltip=Couleur par d\u00e9faut du fond, en syntaxe HTML. #OptionPanel.printonwhitebackground=White background for printing OptionPanel.printonwhitebackground=Fond blanc pour imprimer #OptionPanel.printonwhitebackground.tooltip=Always use white background for printing OptionPanel.printonwhitebackground.tooltip=Toujours utiliser un fond blanc pour imprimer #OptionPanel.standardcloudcolor=Standard Cloud Color OptionPanel.standardcloudcolor=Couleur de nuage par d\u00e9faut #OptionPanel.standardcloudcolor.tooltip=The standard cloud color in html notation OptionPanel.standardcloudcolor.tooltip=Couleur par d\u00e9faut des nuages en syntaxe HTML. #OptionPanel.defaultfont=Default Font OptionPanel.defaultfont=Police par d\u00e9faut #OptionPanel.defaultfont.tooltip=The default node font. This will only work if the font (TrueType Font) is available on the system OptionPanel.defaultfont.tooltip = Police par d\u00e9faut pour les n\u0153uds. Cela ne peut fonctionner que si la police (TrueType) est disponible sur le syst\u00e8me. #OptionPanel.defaultfontstyle=Default Font Style OptionPanel.defaultfontstyle=Style de police par d\u00e9faut #OptionPanel.defaultfontsize=Default Font Size OptionPanel.defaultfontsize=Taille de police par d\u00e9faut #OptionPanel.max_node_width=Max Node Width OptionPanel.max_node_width=Largeur maximale des n\u0153uds #OptionPanel.max_node_width.tooltip=The default maximal node width in pixels OptionPanel.max_node_width.tooltip=Largeur maximale par d\u00e9faut des n\u0153uds en pixels. #OptionPanel.standardedgestyle=Standard Edge Style OptionPanel.standardedgestyle=Style de ligne par d\u00e9faut #OptionPanel.standardedgestyle.tooltip=The standard edge style. 'linear' and 'bezier' are supported OptionPanel.standardedgestyle.tooltip = Style par d\u00e9faut des lignes.
\nLes valeurs possibles sont "rectiligne" et "b\u00e9zier". #OptionPanel.standardcloudestyle=Standard Cloud Style OptionPanel.standardcloudestyle=Style de nuage par d\u00e9faut #OptionPanel.standardcloudestyle.tooltip=The standard cloud style. currently, only 'bezier' is supported OptionPanel.standardcloudestyle.tooltip=Style par d\u00e9faut des nuages. Seule la valeur 'bezier' est actuellement accept\u00e9e. #OptionPanel.standardlinkestyle=Standard Link Style OptionPanel.standardlinkestyle=Style de lien par d\u00e9faut #OptionPanel.standardlinkestyle.tooltip=The standard link style. currently, only 'bezier' is supported OptionPanel.standardlinkestyle.tooltip=Style par d\u00e9faut des lignes de lien.
\nSeule la valeur "b\u00e9zier" est actuellement support\u00e9e. #OptionPanel.Appearance=Appearance OptionPanel.Appearance=Aspect #OptionPanel.lookandfeel=Look and Feel OptionPanel.lookandfeel=Aspect de l'interface (Look And Feel) #OptionPanel.lookandfeel.tooltip=The Look&Feel to use. 'metal','windows','motif', 'gtk' are supported, 'mac' is available only on MacOS. Default means, that the default look and feel is used. If you want to put your own L&F, please, enter the class name here and assure that the corresponding jar file(s) are loaded. If there are problems with the look and feel, then choose 'nothing' here. It works for applets. OptionPanel.lookandfeel.tooltip=Le Look And Feel \u00e0 utiliser.
\n"M\u00e9tal", "Windows", "Motif" "GTk" sont support\u00e9s, "Mac" n'est disponible que sur syst\u00e8me Mac OS.
\n"D\u00e9faut" indique d'utiliser le Look And Feel par d\u00e9faut pour la machine virtuelle.
\nPour utiliser votre propre Look And Feel, merci de saisir le nom de la classe et assurez-vous que le fichier JAR est correctement charg\u00e9.
\nS'il y a un probl\u00e8me de Look And Feel, choississez "Aucun en particulier". Cela fonctionne pour les Applets.\n<,/html> #OptionPanel.mapxsize=Map-X-size OptionPanel.mapxsize=Largeur originelle de carte (en pixels) #OptionPanel.mapxsize.tooltip=The initial size of every map OptionPanel.mapxsize.tooltip=Taille initiale de toutes les cartes. #OptionPanel.mapysize=Map-Y-size OptionPanel.mapysize=Hauteur originelle de carte (en pixels) #OptionPanel.links=Links OptionPanel.links=Liens #OptionPanel.links.tooltip=Set Links either relative or absolute OptionPanel.links.tooltip = D\u00e9fini les liens soit relativement \u00e0 la carte courante, soit en chemin absolu. #OptionPanel.el__buttons_position=Buttons Position OptionPanel.el__buttons_position=Position des boutons #OptionPanel.el__buttons_position.tooltip= above / below OptionPanel.el__buttons_position.tooltip=Entrez la valeur 'above' (au-dessus) ou 'below' (en dessous) #OptionPanel.el__position_window_below_node=Position Window Below Node OptionPanel.el__position_window_below_node=Positionne la fen\u00eatre sous le n\u0153ud #OptionPanel.el__min_default_window_height=Min Default Window Height OptionPanel.el__min_default_window_height=Hauteur minimale par d\u00e9faut de fen\u00eatre #OptionPanel.el__max_default_window_height=Max Default Window Height OptionPanel.el__max_default_window_height=Hauteur maximale par d\u00e9faut de fen\u00eatre #OptionPanel.el__min_default_window_width=Min Default Window Width OptionPanel.el__min_default_window_width=Largeur minimale par d\u00e9faut de fen\u00eatre #OptionPanel.el__max_default_window_width=Max Default Window Width OptionPanel.el__max_default_window_width=Largeur maximale par d\u00e9faut de fen\u00eatre #OptionPanel.el__enter_confirms_by_default=Enter Confirms By Default OptionPanel.el__enter_confirms_by_default=Par d\u00e9faut, la touche "Entr\u00e9e" confirme #OptionPanel.el__show_icon_for_attributes=Show Icon For Attributes OptionPanel.el__show_icon_for_attributes=Montrer les ic\u00f4nes des attributs #OptionPanel.Keystrokes=Keystrokes OptionPanel.Keystrokes=Raccourcis clavier #OptionPanel.keystroke_newMap=NewMap OptionPanel.keystroke_newMap=Nouvelle carte #OptionPanel.keystroke_open=Open OptionPanel.keystroke_open=Ouvrir #OptionPanel.keystroke_save=Save OptionPanel.keystroke_save=&Enregistrer #OptionPanel.keystroke_saveAs=SaveAs OptionPanel.keystroke_saveAs=Enregistrer sous #OptionPanel.keystroke_print=Print OptionPanel.keystroke_print=Imprimer #OptionPanel.keystroke_close=Close OptionPanel.keystroke_close=Fermer #OptionPanel.keystroke_quit=Quit OptionPanel.keystroke_quit=Quitter #OptionPanel.keystroke_export_to_html=Export To Html OptionPanel.keystroke_export_to_html=au format HTML #OptionPanel.keystroke_export_branch_to_html=Export Branch To Html OptionPanel.keystroke_export_branch_to_html=la branche en HTML #OptionPanel.keystroke_open_first_in_history=Open First In History OptionPanel.keystroke_open_first_in_history=Ouvrir le premier fichier de l'historique #OptionPanel.keystroke_previousMap=PreviousMap OptionPanel.keystroke_previousMap=Carte pr\u00e9c\u00e9dente #OptionPanel.keystroke_nextMap=NextMap OptionPanel.keystroke_nextMap=Carte suivante #OptionPanel.keystroke_mode_MindMap=Mode MindMap OptionPanel.keystroke_mode_MindMap=Mode carte mentale #OptionPanel.keystroke_mode_Browse=Mode Browse OptionPanel.keystroke_mode_Browse=Mode navigation #OptionPanel.keystroke_mode_File=Mode File OptionPanel.keystroke_mode_File=Mode fichiers #OptionPanel.keystroke_node_toggle_italic=Node Toggle Italic OptionPanel.keystroke_node_toggle_italic=Basculer l'italique pour le n\u0153ud #OptionPanel.keystroke_node_toggle_boldface=Node Toggle Boldface OptionPanel.keystroke_node_toggle_boldface=Basculer le gras pour le n\u0153ud #OptionPanel.keystroke_node_toggle_underlined=Node Toggle Underlined OptionPanel.keystroke_node_toggle_underlined=Basculer le soulignement du n\u0153ud #OptionPanel.keystroke_node_toggle_cloud=Node Toggle Cloud OptionPanel.keystroke_node_toggle_cloud=Basculer l'aspect nuage du n\u0153ud #OptionPanel.keystroke_undo=Undo OptionPanel.keystroke_undo=Annuler #OptionPanel.keystroke_redo=Redo OptionPanel.keystroke_redo=R\u00e9tablir #OptionPanel.keystroke_delete_child=Delete Child OptionPanel.keystroke_delete_child=Supprimer les enfants #OptionPanel.keystroke_select_all=Select All OptionPanel.keystroke_select_all=Tout s\u00e9lectionner #OptionPanel.keystroke_select_branch=Select Branch OptionPanel.keystroke_select_branch=S\u00e9lectionner la branche #OptionPanel.keystroke_zoom_out=Zoom Out OptionPanel.keystroke_zoom_out=R\u00e9duire le zoom #OptionPanel.keystroke_zoom_in=Zoom In OptionPanel.keystroke_zoom_in=Augmenter le zoom #OptionPanel.keystroke_cut=Cut OptionPanel.keystroke_cut=Couper #OptionPanel.keystroke_copy=Copy OptionPanel.keystroke_copy=Copier #OptionPanel.keystroke_copy_single=Copy Single OptionPanel.keystroke_copy_single=Copier un \u00e9l\u00e9ment #OptionPanel.keystroke_paste=Paste OptionPanel.keystroke_paste=Coller #OptionPanel.keystroke_remove=Remove OptionPanel.keystroke_remove=Retirer #OptionPanel.keystroke_add_arrow_link_action=Add Arrow Link Action OptionPanel.keystroke_add_arrow_link_action=Action pour ajouter une fl\u00e8che de lien #OptionPanel.keystroke_add_local_link_action=Add Local Link Action OptionPanel.keystroke_add_local_link_action=Action pour ajouter un lien local #OptionPanel.keystroke_moveToRoot=MoveToRoot OptionPanel.keystroke_moveToRoot=D\u00e9placer \u00e0 la racine #OptionPanel.keystroke_move_up=Move Up OptionPanel.keystroke_move_up=D\u00e9placer en haut #OptionPanel.keystroke_move_down=Move Down OptionPanel.keystroke_move_down=D\u00e9placer en bas #OptionPanel.keystroke_move_left=Move Left OptionPanel.keystroke_move_left=D\u00e9placer \u00e0 gauche #OptionPanel.keystroke_move_right=Move Right OptionPanel.keystroke_move_right=D\u00e9placer \u00e0 droite #OptionPanel.keystroke_follow_link=Follow Link OptionPanel.keystroke_follow_link=Suivre le lien #OptionPanel.keystroke_add=Add OptionPanel.keystroke_add=Ajouter #OptionPanel.keystroke_add_child=Add Child OptionPanel.keystroke_add_child=Ajouter un enfant #OptionPanel.keystroke_add_child_mac=Add Child Mac OptionPanel.keystroke_add_child_mac=Ajouter un enfant (Mac) #OptionPanel.keystroke_add_sibling_before=Add Sibling Before OptionPanel.keystroke_add_sibling_before=Ajouter un fr\u00e8re au-dessus #OptionPanel.keystroke_edit=Edit OptionPanel.keystroke_edit=\u00c9diter #OptionPanel.keystroke_edit_long_node=Edit Long Node OptionPanel.keystroke_edit_long_node=\u00c9dition de n\u0153ud long #OptionPanel.keystroke_join_nodes=Join Nodes OptionPanel.keystroke_join_nodes=Fusionner les n\u0153uds #OptionPanel.keystroke_toggle_folded=Toggle Folded OptionPanel.keystroke_toggle_folded=Plier/d\u00e9plier #OptionPanel.keystroke_toggle_children_folded=Toggle Children Folded OptionPanel.keystroke_toggle_children_folded=Plier/d\u00e9plier les enfants #OptionPanel.keystroke_set_link_by_filechooser=Set Link By Filechooser OptionPanel.keystroke_set_link_by_filechooser = D\u00e9finir le lien avec le s\u00e9lecteur de fichier #OptionPanel.keystroke_set_link_by_textfield=Set Link By Textfield OptionPanel.keystroke_set_link_by_textfield=D\u00e9fini le lien par une saisie libre #OptionPanel.keystroke_set_image_by_filechooser=Set Image By Filechooser OptionPanel.keystroke_set_image_by_filechooser=D\u00e9fini l'image avec le s\u00e9lecteur de fichier #OptionPanel.keystroke_node_up=Node Up OptionPanel.keystroke_node_up=Monter le n\u0153ud #OptionPanel.keystroke_node_down=Node Down OptionPanel.keystroke_node_down=Descendre le n\u0153ud #OptionPanel.keystroke_node_increase_font_size=Node Increase Font Size OptionPanel.keystroke_node_increase_font_size=Augmenter la taille des caract\u00e8res du n\u0153ud #OptionPanel.keystroke_node_decrease_font_size=Node Decrease Font Size OptionPanel.keystroke_node_decrease_font_size=R\u00e9duire la taille des caract\u00e8res du n\u0153ud #OptionPanel.keystroke_export_branch=Export Branch OptionPanel.keystroke_export_branch=la branche #OptionPanel.keystroke_node_color=Node Color OptionPanel.keystroke_node_color=Couleur du n\u0153ud #OptionPanel.keystroke_node_color_blend=Node Color Blend OptionPanel.keystroke_node_color_blend=\u00c9claircir la couleur du n\u0153ud #OptionPanel.keystroke_edge_color=Edge Color OptionPanel.keystroke_edge_color=Couleur du bord #OptionPanel.keystroke_find=Find OptionPanel.keystroke_find=Chercher #OptionPanel.keystroke_find_next=Find Next OptionPanel.keystroke_find_next=Chercher le suivant #OptionPanel.keystroke_apply_pattern_1=Apply Pattern 1 OptionPanel.keystroke_apply_pattern_1=Appliquer le mod\u00e8le 1 #OptionPanel.keystroke_apply_pattern_2=Apply Pattern 2 OptionPanel.keystroke_apply_pattern_2=Appliquer le mod\u00e8le 2 #OptionPanel.keystroke_apply_pattern_3=Apply Pattern 3 OptionPanel.keystroke_apply_pattern_3=Appliquer le mod\u00e8le 3 #OptionPanel.keystroke_apply_pattern_4=Apply Pattern 4 OptionPanel.keystroke_apply_pattern_4=Appliquer le mod\u00e8le 4 #OptionPanel.keystroke_apply_pattern_5=Apply Pattern 5 OptionPanel.keystroke_apply_pattern_5=Appliquer le mod\u00e8le 5 #OptionPanel.keystroke_apply_pattern_6=Apply Pattern 6 OptionPanel.keystroke_apply_pattern_6=Appliquer le mod\u00e8le 6 #OptionPanel.keystroke_apply_pattern_7=Apply Pattern 7 OptionPanel.keystroke_apply_pattern_7=Appliquer le mod\u00e8le 7 #OptionPanel.keystroke_apply_pattern_8=Apply Pattern 8 OptionPanel.keystroke_apply_pattern_8=Appliquer le mod\u00e8le 8 #OptionPanel.keystroke_apply_pattern_9=Apply Pattern 9 OptionPanel.keystroke_apply_pattern_9=Appliquer le mod\u00e8le 9 #OptionPanel.keystroke_apply_pattern_10=Apply Pattern 10 OptionPanel.keystroke_apply_pattern_10=Appliquer le mod\u00e8le 10 #OptionPanel.keystroke_apply_pattern_11=Apply Pattern 11 OptionPanel.keystroke_apply_pattern_11=Appliquer le mod\u00e8le 11 #OptionPanel.keystroke_apply_pattern_12=Apply Pattern 12 OptionPanel.keystroke_apply_pattern_12=Appliquer le mod\u00e8le 12 #OptionPanel.keystroke_apply_pattern_13=Apply Pattern 13 OptionPanel.keystroke_apply_pattern_13=Appliquer le mod\u00e8le 13 #OptionPanel.keystroke_apply_pattern_14=Apply Pattern 14 OptionPanel.keystroke_apply_pattern_14=Appliquer le mod\u00e8le 14 #OptionPanel.keystroke_apply_pattern_15=Apply Pattern 15 OptionPanel.keystroke_apply_pattern_15=Appliquer le mod\u00e8le 15 #OptionPanel.keystroke_apply_pattern_16=Apply Pattern 16 OptionPanel.keystroke_apply_pattern_16=Appliquer le mod\u00e8le 16 #OptionPanel.keystroke_apply_pattern_17=Apply Pattern 17 OptionPanel.keystroke_apply_pattern_17=Appliquer le mod\u00e8le 17 #OptionPanel.keystroke_apply_pattern_18=Apply Pattern 18 OptionPanel.keystroke_apply_pattern_18=Appliquer le mod\u00e8le 18 #OptionPanel.Behaviour=Behaviour OptionPanel.Behaviour=Comportement #OptionPanel.placenewbranches=Place New Branches OptionPanel.placenewbranches=Postionnement des nouvelles branches #OptionPanel.placenewbranches.tooltip=Where to place new branches. Valid values are 'first' and 'last' OptionPanel.placenewbranches.tooltip=O\u00f9 placer les nouvelles branches.
\nLes valeurs acceptables sont "premier" et "dernier". #OptionPanel.disable_cursor_move_paper=Disable Cursor Move Paper OptionPanel.disable_cursor_move_paper=Inactiver le curseur de d\u00e9placement du papier #OptionPanel.disable_cursor_move_paper.tooltip=Don't display 'move' cursor during paper dragging OptionPanel.disable_cursor_move_paper.tooltip=Ne pas afficher le pointeur de souris de d\u00e9placement lorsque la page glisse. #OptionPanel.enable_leaves_folding=Enable Leaves Folding OptionPanel.enable_leaves_folding=Permet le (d\u00e9)pliage des feuilles #OptionPanel.enable_leaves_folding.tooltip=Enable leaves folding == changing bubble/fork for fold action (although if false, you can always use node style to change it) OptionPanel.enable_leaves_folding.tooltip = Une fois cette option activ\u00e9e, vous pouvez plier/d\u00e9plier une feuille.
L'int\u00e9r\u00eat est peu \u00e9vident. #OptionPanel.foldingsymbolwidth=Folding Symbol Width OptionPanel.foldingsymbolwidth = Largeur du symbole de pliage #OptionPanel.foldingsymbolwidth.tooltip=Width of the folding marking circle OptionPanel.foldingsymbolwidth.tooltip=Largeur du cercle indiquant le pliage. #OptionPanel.disable_key_type=Disable Key Type OptionPanel.disable_key_type=Inactiver la saisie au clavier #OptionPanel.disable_key_type.tooltip=Key typing: if enabled enters node editing OptionPanel.disable_key_type.tooltip = Saisie au clavier : passe en mode \u00e9dition avec la touche "Entr\u00e9e" lorsque l'option est activ\u00e9e. #OptionPanel.key_type_adds_new=Key Type Adds New OptionPanel.key_type_adds_new=La frappe ajoute un nouveau n\u0153ud #OptionPanel.key_type_adds_new.tooltip=Key typing: overwrites content (false) / creates new sibling (true) (requires: disable_key_type = false) OptionPanel.key_type_adds_new.tooltip = Saisie au clavier :\n
    \n
  • faux remplace le contenu\n
  • vrai cr\u00e9e un nouveau n\u0153ud fr\u00e8re\n
\nLa fonction n\u00e9cessite que l'option disable_key_type ait la valeur false #OptionPanel.selection_method=Selection Method OptionPanel.selection_method=M\u00e9thode de s\u00e9lection #OptionPanel.selection_method.tooltip= with the following switch you can enable/disable the delayed selection scheme. Auto options. Do not modify these as they will be saved to auto.properties anyway. OptionPanel.selection_method.tooltip=Cet indicateur permet d'activer et de d\u00e9sactiver le mode de s\u00e9lection retard\u00e9e. Cette option est automatique : ne pas la modifier puisqu'elle sera dans tous les cas enregistr\u00e9e dans le fichier auto.properties. #OptionPanel.time_for_delayed_selection=Time For Delayed Selection OptionPanel.time_for_delayed_selection=D\u00e9lai pour la s\u00e9lection retard\u00e9e #OptionPanel.time_for_delayed_selection.tooltip= Selection time delay of nodes when mouse is over (in msec). Change this value to 1 if you want direct selection on mouse over. OptionPanel.time_for_delayed_selection.tooltip = D\u00e9lai de s\u00e9lection des n\u0153uds lors du survol du pointeur de la souris (en millisecondes).
Mettez 1 si vous souhaitez une s\u00e9lection directe. #OptionPanel.HTML=HTML OptionPanel.HTML=HTML #OptionPanel.default_browser_command_windows_nt=Default Browser Command Windows Nt OptionPanel.default_browser_command_windows_nt=Commande pour le navigateur par d\u00e9faut pour Windows NT #OptionPanel.default_browser_command_windows_nt.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.default_browser_command_windows_nt.tooltip = Pour Windows, (les signes "" sont n\u00e9c\u00e9ssaires \u00e0 cause des liens qui contiennent un caract\u00e8re "\=" dans leur URL). #OptionPanel.default_browser_command_windows_9x=Default Browser Command Windows 9x OptionPanel.default_browser_command_windows_9x=Commande pour le navigateur par d\u00e9faut pour Windows 9x #OptionPanel.default_browser_command_windows_9x.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.default_browser_command_windows_9x.tooltip=Pour Windows (les signes "" sont n\u00e9csaires \u00e0 cause des liens qui contiennent un caract\u00e8re "\=" dans leur URL). #OptionPanel.default_browser_command_other_os=Default Browser Command Other Os OptionPanel.default_browser_command_other_os=Commande pour le navigateur par d\u00e9faut pour d'autres syst\u00e8mes #OptionPanel.default_browser_command_other_os.tooltip= This is typically Linux: OptionPanel.default_browser_command_other_os.tooltip=Cela correspond typiquement \u00e0 Linux. #OptionPanel.default_browser_command_mac=Default Browser Command Mac OptionPanel.default_browser_command_mac=Commande pour le navigateur par d\u00e9faut pour Mac #OptionPanel.default_browser_command_mac.tooltip= and MAC: (thanks to Nick!) OptionPanel.default_browser_command_mac.tooltip = et le Mac : (grace \u00e0 Nick \!) #OptionPanel.html_export_folding=Html Export Folding OptionPanel.html_export_folding = Le HTML pr\u00e9serve le pliage #OptionPanel.export_icons_in_html=Export Icons In Html OptionPanel.export_icons_in_html=Exporter les ic\u00f4nes en HTML #OptionPanel.export_icons_in_html.tooltip= Tell if HTML exported from FreeMind should contain icons. The trouble with icons is that quite often the links to icons will not be found in the exported HTML. OptionPanel.export_icons_in_html.tooltip = Indique que le code HTML export\u00e9 par FreeMind doit int\u00e9grer les ic\u00f4nes.
Malheureusement, le lien vers ces ic\u00f4nes est rarement r\u00e9solu et ces derniers ne peuvent \u00eatre affich\u00e9s. #OptionPanel.Cancel=Cancel OptionPanel.Cancel=Annuler #OptionPanel.OK=Save OptionPanel.OK=Enregistrer #option_changes_may_require_restart=To see the effect of the changed settings, you probably have to restart FreeMind. option_changes_may_require_restart=Pour pouvoir voir les effets des nouvelles pr\u00e9f\u00e9rences, vous devrez probablement red\u00e9marrer FreeMind. # fc, 12.5.2005: #GrabKeyDialog.grab-key.title=Enter new key GrabKeyDialog.grab-key.title=Entrez une nouvelle touche clavier #GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.caption= #GrabKeyDialog.grab-key.clear=Clear GrabKeyDialog.grab-key.clear=Effacer #GrabKeyDialog.grab-key.assigned-to.none=Currently not assigned GrabKeyDialog.grab-key.assigned-to.none=Actuellement non assign\u00e9 #GrabKeyDialog.grab-key.assigned-to=Assigned to GrabKeyDialog.grab-key.assigned-to=Assign\u00e9e \u00e0 #GrabKeyDialog.common.ok=OK GrabKeyDialog.common.ok=Valider #GrabKeyDialog.grab-key.remove=Remove GrabKeyDialog.grab-key.remove=Retirer #GrabKeyDialog.common.cancel=Cancel GrabKeyDialog.common.cancel=Annuler #GrabKeyDialog.grab-key.remove-ask=Are you sure to remove this keystroke? GrabKeyDialog.grab-key.remove-ask=Voulez-vous vraiment effacer ce racourci clavier ? #OptionPanel.separator.language=Language OptionPanel.separator.language=Langue #OptionPanel.separator.files=Files OptionPanel.separator.files=Fichiers #OptionPanel.separator.automatic_save=Automatic Save OptionPanel.separator.automatic_save = Sauvegarde automatique #OptionPanel.separator.default_styles=Default Styles OptionPanel.separator.default_styles=Styles par d\u00e9faut #OptionPanel.separator.default_colors=Default Colors OptionPanel.separator.default_colors=Couleurs par d\u00e9faut #OptionPanel.separator.selection_colors=Selection Colors OptionPanel.separator.selection_colors=Couleurs de la s\u00e9lection #OptionPanel.separator.default_fonts=Default Fonts OptionPanel.separator.default_fonts=Police par d\u00e9faut #OptionPanel.separator.other_defaults=Other Defaults OptionPanel.separator.other_defaults=Autres r\u00e9glages par d\u00e9faut #OptionPanel.separator.look_and_feel=Look and Feel OptionPanel.separator.look_and_feel=Aspect de l'interface (Look and Feel) #OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.anti_alias=Lissage #OptionPanel.separator.initial_map_size=Initial Map Size OptionPanel.separator.initial_map_size=Taille initiale de la carte #OptionPanel.separator.hyperlink_types=Hyperlink Types OptionPanel.separator.hyperlink_types = Types d'hyperliens #OptionPanel.separator.edit_long_node_window=Edit Long Node Window OptionPanel.separator.edit_long_node_window=Fen\u00eatre pour \u00e9diter un n\u0153ud long #OptionPanel.separator.commands_for_the_program=Commands for the program OptionPanel.separator.commands_for_the_program=Commandes pour le programme #OptionPanel.separator.node_editing_commands=Node editing commands OptionPanel.separator.node_editing_commands=Commandes d'\u00e9dition des n\u0153uds #OptionPanel.separator.node_navigation_commands=Node navigation commands OptionPanel.separator.node_navigation_commands=Commandes de navigation dans les n\u0153uds #OptionPanel.separator.new_node_commands=New node commands OptionPanel.separator.new_node_commands=Commande pour cr\u00e9er un n\u0153ud #OptionPanel.separator.patterns=Patterns OptionPanel.separator.patterns = Fichier pour les mod\u00e8les #OptionPanel.separator.behaviour=Behaviour OptionPanel.separator.behaviour=Comportement #OptionPanel.separator.key_typing=Key Typing OptionPanel.separator.key_typing=Saisie clavier #OptionPanel.separator.selection_method=Selection Method OptionPanel.separator.selection_method=M\u00e9thode de s\u00e9lection #OptionPanel.separator.browser=Browser OptionPanel.separator.browser=Navigateur #OptionPanel.separator.html_export=Html Export OptionPanel.separator.html_export=Export HTML (HyperText Markup Language) #OptionPanel.separator.attributes=Attributes OptionPanel.separator.attributes=Attributs #OptionPanel.separator.icons=Icons in "Select Icon..." OptionPanel.separator.icons=Ic\u00f4nes dans le menu "Ic\u00f4nes" #OptionPanel.keystroke_edit_attributes=Edit attributes OptionPanel.keystroke_edit_attributes=\u00c9diter les attributs #OptionPanel.keystroke_show_all_attributes=Show all attributes OptionPanel.keystroke_show_all_attributes=Voir tous les attributs #OptionPanel.keystroke_show_selected_attributes=Show selected attributes OptionPanel.keystroke_show_selected_attributes=Voir les attributs s\u00e9lectionn\u00e9s #OptionPanel.keystroke_hide_all_attributes=Hide all attributes OptionPanel.keystroke_hide_all_attributes=Cacher tous les attributs #OptionPanel.keystroke_show_attribute_manager=Show attribute manager OptionPanel.keystroke_show_attribute_manager=Montrer le gestionnaire d'attributs #OptionPanel.keystroke_assign_attributes=Assign attributes ... OptionPanel.keystroke_assign_attributes=Assigner des attributs ... # fc, 2.6.2005: #OptionPanel.antialias.tooltip=Determines the quality of the map. More antialias needs more time. OptionPanel.antialias.tooltip = D\u00e9termine la qualit\u00e9 du rendu de la carte. Davantage de lissage demande davantage de temps. #OptionPanel.antialias=Antialias OptionPanel.antialias=Lissage #OptionPanel.antialias_edges=Antialias Edges OptionPanel.antialias_edges=Lisser les lignes #OptionPanel.antialias_all=Antialias All OptionPanel.antialias_all=Tout lisser #OptionPanel.antialias_none=No Antialias OptionPanel.antialias_none=Sans lissage #OptionPanel.cs=Cs OptionPanel.cs=Tch\u00e8que #OptionPanel.nb=Nb OptionPanel.nb=Norv\u00e9gien Bokm\u00e5l # fc, 12.6.2005: correction, please remove the other translation of "follow_link" above #follow_link = Open Hyperlink follow_link = Suivre le lien #OptionPanel.ColorProperty.ResetColor=Reset Color OptionPanel.ColorProperty.ResetColor=Mise \u00e0 z\u00e9ro des couleurs # fc, 16.6.2005: #OptionPanel.keystroke_option_dialog=Preferences OptionPanel.keystroke_option_dialog=Pr\u00e9f\u00e9rences #format_menu_edge_styles=&Edge Styles format_menu_edge_styles=&Style des lignes #format_menu_edge_widths=Edge &Widths format_menu_edge_widths = \u00c9paisseur des &lignes # fc, 3.7.2005: #accessories/plugins/ImportMindmanagerFiles.properties_name=MindManager X5 Map... accessories/plugins/ImportMindmanagerFiles.properties_name=Carte de MindManager X5... # fc, 5.7.2005: #accessories/plugins/ExportToOoWriter.properties_documentation=Unfolded nodes form the structure, folded nodes the content of the document. accessories/plugins/ExportToOoWriter.properties_documentation=Les n\u0153uds d\u00e9pli\u00e9s forment la structure, les n\u0153uds pli\u00e9s forment le contenu du document. #accessories/plugins/ExportToOoWriter.properties_name= As Open Office Writer Document... accessories/plugins/ExportToOoWriter.properties_name=En document Open Office Writer... # fc, 10.7.2005: #OptionPanel.separator.undo=Undo OptionPanel.separator.undo=Annulation #OptionPanel.undo_levels=Undo Levels OptionPanel.undo_levels=Niveaux d'annulation #OptionPanel.undo_levels.tooltip=Determines how many steps are stored that can be undone via "Undo". OptionPanel.undo_levels.tooltip = D\u00e9termine le nombre d'\u00e9tapes stock\u00e9es et annulables. # fc, 13.8.2005 #OptionPanel.lt=Lt OptionPanel.lt=Lituanien # fc, 12.1.2006: if you create a translation of the documentation file, change this value (see german translation): #browsemode_initial_map = ./doc/freemind.mm browsemode_initial_map = ./doc/freemind_fr.mm # fc, 1.2.06 #link_not_found = Link $1 not found. link_not_found = Lien $1 non trouv\u00e9. # fc, 15.2.06 #icon_smily_bad = I'm not amused icon_smily_bad = Je ne suis pas content #OptionPanel.hr=Hr OptionPanel.hr=Croate #OptionPanel.nn=Nn OptionPanel.nn=Norv\u00e9gien Nynorsk #OptionPanel.se=Se (or was Sv for Swedish/Su\u00e9dois meant?) OptionPanel.se=Same du Nord #OptionPanel.unfold_on_paste=Unfold node on paste OptionPanel.unfold_on_paste=D\u00e9plier le n\u0153ud sur copier/coller #OptionPanel.unfold_on_paste.tooltip=Unfold node on paste or Drag-And-Drop OptionPanel.unfold_on_paste.tooltip = D\u00e9plier le n\u0153ud sur copier/coller et glisser/d\u00e9poser # fc, 16.2.06 #accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Exports the map as a java browser applet. accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Exporte la carte en applet Java pour navigateur Web. #accessories/plugins/ExportWithXSLT_Applet.properties_name=As Java Applet... accessories/plugins/ExportWithXSLT_Applet.properties_name=En Applet Java... #accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Web page accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Page Web #accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Exports the map as a flash application. accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Exporte la carte en application Flash. #accessories/plugins/ExportWithXSLT_Flash.properties_name=As Flash... accessories/plugins/ExportWithXSLT_Flash.properties_name=En Flash... # fc, 21.2.06 #accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=On the left of root the node(s) is/are shifted downwards. It/they become children of its above sibling. On the right of root the node(s) are shifted upwards. Directly at root, the node(s) change sides. accessories/plugins/ChangeNodeLevelAction_left.properties_documentation = \u00c0 gauche de la racine, les n\u0153uds sont d\u00e9plac\u00e9s vers le bas. Ils deviennent enfants de leur fr\u00eare du dessus. \u00c0 droite de la racine, les n\u0153uds sont d\u00e9plac\u00e9s vers le haut. \u00c0 la racine, les n\u0153uds changent de c\u00f4t\u00e9. #accessories/plugins/ChangeNodeLevelAction_left.properties_name=Node left accessories/plugins/ChangeNodeLevelAction_left.properties_name=D\u00e9placer le n\u0153ud \u00e0 gauche #accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=On the right of root the node(s) is/are shifted downwards. It/they become children of its above sibling. On the left of root the node(s) are shifted upwards. Directly at root, the node(s) change sides. accessories/plugins/ChangeNodeLevelAction_right.properties_documentation = \u00c0 droite de la racine, les n\u0153uds sont d\u00e9plac\u00e9s vers le bas. Ils deviennent enfants de leur fr\u00eare du dessus. \u00c0 gauche de la racine, les n\u0153uds sont d\u00e9plac\u00e9s vers le haut. \u00c0 la racine, les n\u0153uds changent de cot\u00e9. #accessories/plugins/ChangeNodeLevelAction_right.properties_name=Node right accessories/plugins/ChangeNodeLevelAction_right.properties_name=D\u00e9placer le n\u0153ud \u00e0 droite # fc, 27.2.06: #PatternDialog.ColorProperty.ResetColor=ResetColor PatternDialog.ColorProperty.ResetColor=ResetColor #PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_1=1 #PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_2=2 #PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_4=4 #PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_8=8 #PatternDialog.EdgeWidth_parent=As parent PatternDialog.EdgeWidth_parent=Comme le p\u00e8re #PatternDialog.EdgeWidth_thin=thin PatternDialog.EdgeWidth_thin=fine #PatternDialog.as_parent=As parent PatternDialog.as_parent=Comme le p\u00e8re #PatternDialog.bezier=bezier PatternDialog.bezier=b\u00e9zier #PatternDialog.bubble=Bubble PatternDialog.bubble=Bulle #PatternDialog.combined=Combined PatternDialog.combined=Combin\u00e9e #PatternDialog.edgecolor.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgecolor.tooltip = Propri\u00e9t\u00e9 de la ligne par rapport au n\u0153ud (est aussi appliqu\u00e9e \u00e0 tous les n\u0153uds enfants) #PatternDialog.edgecolor=Edge color PatternDialog.edgecolor=Couleur de ligne #PatternDialog.edgestyle.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgestyle.tooltip = Propri\u00e9t\u00e9 de la ligne par rapport au n\u0153ud (est aussi appliqu\u00e9e \u00e0 tous les n\u0153uds enfants) #PatternDialog.edgestyle=Edge style PatternDialog.edgestyle=Style de ligne #PatternDialog.edgewidth.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgewidth.tooltip=Propri\u00e9t\u00e9 de la ligne par rapport au n\u0153ud (est aussi appliqu\u00e9 \u00e0 tous les n\u0153uds enfants) #PatternDialog.edgewidth=Edge width PatternDialog.edgewidth=Largeur de ligne #PatternDialog.fork=Fork PatternDialog.fork=Fourche #PatternDialog.linear=linear PatternDialog.linear=rectiligne #PatternDialog.nodebackgroundcolor=Node background color PatternDialog.nodebackgroundcolor = Couleur de fond du n\u0153ud #PatternDialog.nodecolor=Node color PatternDialog.nodecolor = Couleur du n\u0153ud #PatternDialog.nodestyle=Node style PatternDialog.nodestyle=Mod\u00e8le de n\u0153ud #PatternDialog.nodetext=Node text PatternDialog.nodetext = Texte du n\u0153ud #PatternDialog.separator.EdgeControls=Edges PatternDialog.separator.EdgeControls=Lignes #PatternDialog.separator.NodeColors=Node colors PatternDialog.separator.NodeColors=Couleurs de n\u0153ud #PatternDialog.separator.NodeStyles=Node styles PatternDialog.separator.NodeStyles=Mod\u00e8les de n\u0153ud #PatternDialog.sharp_bezier=sharp bezier PatternDialog.sharp_bezier=b\u00e9zier effil\u00e9 #PatternDialog.sharp_linear=sharp linear PatternDialog.sharp_linear=rectiligne effil\u00e9 #PatternDialog.undefined_font=Undefined font PatternDialog.undefined_font = Police ind\u00e9termin\u00e9e #accessories/plugins/ApplyFormatPlugin.properties_documentation=Presents a dialog in which node and edge attributes can be changed at once. accessories/plugins/ApplyFormatPlugin.properties_documentation = Pr\u00e9sente une bo\u00eete de dialogue permettant de modifier \u00e0 la fois les n\u0153uds et les lignes. #accessories/plugins/ApplyFormatPlugin.properties_name=&Change format ... accessories/plugins/ApplyFormatPlugin.properties_name=&Changer la mise en forme ... #accessories/plugins/ApplyFormatPlugin.dialog.title=Change format of nodes accessories/plugins/ApplyFormatPlugin.dialog.title = Changer la mise en forme des n\u0153uds #OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Move left OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=D\u00e9placer \u00e0 gauche #OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Move right OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=D\u00e9placer \u00e0 droite #OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Copy format OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Copier la mise en forme #OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Paste format OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Coller la mise en forme #OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Insert icon OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Ins\u00e9rer une ic\u00f4ne #OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Indent nodes OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Indenter les n\u0153uds #OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=Split node OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=D\u00e9couper le n\u0153ud # OptionPanel.keystroke_accessories/plugins/NodeNote.properties_key=Insert a note OptionPanel.keystroke_accessories/plugins/NodeNote.properties_key = Ins\u00e9rer une note #OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Fold one level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Plier un niveau #OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Unfold on level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=D\u00e9plier un niveau #OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Fold all OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Tout plier #OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Unfold all OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Tout d\u00e9plier #OptionPanel.separator.others=Other key bindings OptionPanel.separator.others=Autres raccourcis clavier #PatternDialog.separator.General=General PatternDialog.separator.General=G\u00e9n\u00e9ral #PatternDialog.clear_all_setters=Switch all PatternDialog.clear_all_setters=Basculer tout #PatternDialog.clear_all_setters.tooltip=Enables or disables all change indications. PatternDialog.clear_all_setters.tooltip=Active ou d\u00e9sactive toutes les indications de modifications. # fc, 1.3.06: #accessories/plugins/ManagePatterns.dialog.title=Manage Patterns... accessories/plugins/ManagePatterns.dialog.title=Gestion des styles #accessories/plugins/ManagePatterns.not_found=Pattern file can't be loaded. accessories/plugins/ManagePatterns.not_found = Le fichier des mod\u00e8les n'a pu \u00eatre charg\u00e9. #accessories/plugins/ManagePatterns.properties_documentation=Change the patterns defined in patterns.xml in an editor. The result is automatically saved. accessories/plugins/ManagePatterns.properties_documentation=Modifie dans un \u00e9diteur les mod\u00e8les d\u00e9finis dans patterns.xml. Le r\u00e9sultat est automatiquement enregistr\u00e9. #accessories/plugins/ManagePatterns.properties_name=Manage Patterns... accessories/plugins/ManagePatterns.properties_name=Gestion des mod\u00e8les... # fc, 14.3.06: #PatternDialog.nodefontbold=Bold font PatternDialog.nodefontbold=Police en gras #PatternDialog.nodefontitalic=Italic font PatternDialog.nodefontitalic=Police en italique #PatternDialog.separator.NodeFont=Node Font PatternDialog.separator.NodeFont = Police du n\u0153ud # fc, 19.3.06: #ManagePatternsPopupDialog.remove=Remove Pattern ManagePatternsPopupDialog.remove=Retirer le mod\u00e8le #ManagePatternsPopupDialog.add=Add new Pattern ManagePatternsPopupDialog.add=Ajouter un nouveau mod\u00e8le #PatternDialog.patternname=Name PatternDialog.patternname=Nom #PatternDialog.patternname.tooltip=Unique pattern name PatternDialog.patternname.tooltip=Nom unique de mod\u00e8le #PatternNewNameProperty=New Pattern PatternNewNameProperty=Nouveau mod\u00e8le #ManagePatternsPopupDialog.DuplicateNameMessage=You have chosen a name twice. Please change this before leaving this dialog. ManagePatternsPopupDialog.DuplicateNameMessage=Vous avez choisi un nom deux fois. Veuillez changez ceci avant de quitter la bo\u00eete de dialogue. #PatternDialog.childpattern.tooltip=The selected pattern is applied to all children. PatternDialog.childpattern.tooltip=Le mod\u00e8le s\u00e9lectionn\u00e9 est appliqu\u00e9 \u00e0 tous les enfants. #PatternDialog.childpattern=Child Pattern PatternDialog.childpattern=Mod\u00e8le enfant #ManagePatternsPopupDialog.Save=Save and Return ManagePatternsPopupDialog.Save=Enregistrer et quitter #PatternDialog.icon.tooltip=If applied, the node will have exactly this icon. PatternDialog.icon.tooltip=Si appliqu\u00e9, le n\u0153ud aura cette ic\u00f4ne. #PatternDialog.icon=Icon PatternDialog.icon=Ic\u00f4ne #PatternDialog.set_property_text=Change PatternDialog.set_property_text=Changer #PatternDialog.set_property_text.tooltip=Empty: Don't touch; Minus=Remove property (set default values); Plus=Change property PatternDialog.set_property_text.tooltip = Vide : ne change pas ; Moins : retire la propri\u00e9t\u00e9 ; Plus : change la propri\u00e9t\u00e9 #accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Change pattern accessories/plugins/AutomaticLayout.properties_StyleDialogTitle = Changer de mod\u00e8le #OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Automatic layout patterns OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Mod\u00e8le automatique #OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Patterns OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName = Mod\u00e8les #PatternToString.color=Color PatternToString.color=Couleur #PatternToString.backgroundColor=Background Color PatternToString.backgroundColor=Couleur du fond #OptionPanel.automaticFormat_level1=Root Node Format OptionPanel.automaticFormat_level1=Mise en forme du n\u0153ud racine #OptionPanel.automaticFormat_level2=1. Level Node Format OptionPanel.automaticFormat_level2=Mise en forme des n\u0153uds de niveau 1 #PatternToString.NodeFontSize=Font Size PatternToString.NodeFontSize=Taille de police #OptionPanel.level1=Format of the Root Node OptionPanel.level1=Mise en forme du n\u0153ud racine #OptionPanel.level2=1. Level Node Format OptionPanel.level2=Mise en forme des n\u0153uds de niveau 1 #OptionPanel.level3=2. Level Node Format OptionPanel.level3=Mise en forme des n\u0153uds de niveau 2 #OptionPanel.level4=3. Level Node Format OptionPanel.level4=Mise en forme des n\u0153uds de niveau 3 #OptionPanel.level5=Other's Node Format OptionPanel.level5=Mise en forme des n\u0153uds d'autres niveaux #OptionPanel.automaticFormat_level=Automatic Layout Styles OptionPanel.automaticFormat_level=Styles de la mise en page automatique # fc, 13.4.06: #ManagePatternsPopupDialog.duplicate=Duplicate Pattern ManagePatternsPopupDialog.duplicate=Dupliquer le style #ManagePatternsPopupDialog.from_nodes=Create Pattern From Selected Nodes ManagePatternsPopupDialog.from_nodes=Cr\u00e9er un mod\u00e8le depuis le n\u0153ud s\u00e9lectionn\u00e9 # fc, 25.5.2006: #accessories/plugins/SaveAll.properties_documentation=Saves all open maps. accessories/plugins/SaveAll.properties_documentation=Enregistrer toutes les cartes ouvertes. #accessories/plugins/SaveAll.properties_name=Save &All accessories/plugins/SaveAll.properties_name=&Tout enregistrer #accessories/plugins/SaveAll.properties_save_all_cancelled=Operation was not completed successfully. accessories/plugins/SaveAll.properties_save_all_cancelled = L'op\u00e9ration a \u00e9chou\u00e9. # fc, 23.7.06 #OptionPanel.loadLastMap=Automatically open last map OptionPanel.loadLastMap=Ouvrir automatiquement la derni\u00e8re carte #OptionPanel.loadLastMap.tooltip=When FreeMind starts, it fetches the last opened map automatically if checked. OptionPanel.loadLastMap.tooltip=Lorsque FreeMind se lance, il r\u00e9cup\u00e8re automatiquement la derni\u00e8re carte ouverte. # dan, whenever #use_rich_formatting = Use Rich Formatting use_rich_formatting = Utiliser la mise en forme riche #use_plain_text = Use Plain Text use_plain_text = Utiliser la mise en forme en texte brut # fc, 30.7.06: #FreeMind.progress.gettingPreferenceDirectories=Getting Preference Directories... FreeMind.progress.gettingPreferenceDirectories = R\u00e9cup\u00e9ration des dossiers d\u00e9finis dans les pr\u00e9f\u00e9rences... #FreeMind.progress.gettingPreferences=Getting Preferences... FreeMind.progress.gettingPreferences=R\u00e9cup\u00e9ration des pr\u00e9f\u00e9rences... #FreeMind.progress.updateLookAndFeel=Update Look And Feel... FreeMind.progress.updateLookAndFeel=Mise \u00e0 jour du Look And Feel... #FreeMind.progress.createController=Create Controller... FreeMind.progress.createController=Cr\u00e9ation du contr\u00f4leur... #FreeMind.progress.settingPreferences=Setting Preferences... FreeMind.progress.settingPreferences=Application des pr\u00e9f\u00e9rences... #FreeMind.progress.propageteLookAndFeel=Propagete Look And Feel... FreeMind.progress.propageteLookAndFeel=Propagation du Look And Feel... #FreeMind.progress.createInitialMode=Create Initial Mode... FreeMind.progress.createInitialMode=Cr\u00e9ation du mode initial... #FreeMind.progress.startCreateController=Start Create Controller... FreeMind.progress.startCreateController = Lance le contr\u00f4leur de cr\u00e9ation... #FreeMind.progress.loadMaps=Load Maps... FreeMind.progress.loadMaps = Charge les cartes... #FreeMind.progress.buildScreen=Build Screen... FreeMind.progress.buildScreen=Cr\u00e9ation de l'\u00e9cran... #FreeMind.progress.endStartup=Finish Startup. FreeMind.progress.endStartup=Termine le d\u00e9marrage. #OptionPanel.tr=Tr OptionPanel.tr=Turc #OptionPanel.level=Level OptionPanel.level=Niveau # fc, 13.8.06: #map_not_saved=The map was not saved before. map_not_saved=La carte n'a pas encore \u00e9t\u00e9 enregistr\u00e9e. # fc, 27.8.06: #plugins/TimeManagement.xml_Find=Find plugins/TimeManagement.xml_Find=Trouver #plugins/TimeManagement.xml_Replace=Replace plugins/TimeManagement.xml_Replace=Remplacer #plugins/TimeManagement.xml_Select=Select plugins/TimeManagement.xml_Select=S\u00e9lectionner #plugins/TimeManagement.xml_Export=Export Selected Nodes plugins/TimeManagement.xml_Export=Exporter la s\u00e9lection #plugins/TimeManagement.xml_Replace_All=Replace All plugins/TimeManagement.xml_Replace_All=Tout remplacer #plugins/TimeManagement.xml_Replace_Selected=Replace Selected plugins/TimeManagement.xml_Replace_Selected=Remplacer la s\u00e9lection #plugins/TimeManagement.xml_Goto=Goto plugins/TimeManagement.xml_Goto=Aller \u00e0 #plugins/TimeManagement.xml_Cancel=Cancel plugins/TimeManagement.xml_Cancel=Annuler # fc, 2.9.06: #automatically_save_message=Map was automatically saved (using the file name {0}) ... automatically_save_message=Carte enregistr\u00e9e automatiquement (en utilisant le nom de fichier {0}) ... #plugins/ScriptingEngine.xml_documentation=Evaluates all contained scripts (recursive order, leaves first). plugins/ScriptingEngine.xml_documentation=\u00c9value tous les scripts contenus (r\u00e9cursivement, en comman\u00e7ant par les feuilles). #plugins/ScriptingEngine.xml_name=Evaluate plugins/ScriptingEngine.xml_name=\u00c9valuer # fc, 4.9.06 #OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Evaluate OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=\u00c9valuer # fc, 6.9.06: #error_applying_template=Error applying XSL template. error_applying_template=Erreur d'application du mod\u00e8le XSL. # fc, 11.10.06: #accessories/plugins/NodeNote_jumpto.properties_documentation=Switch to resp. from note window accessories/plugins/NodeNote_jumpto.properties_documentation=Basculer vers/depuis l'\u00e9diteur de notes #accessories/plugins/NodeNote_jumpto.properties_name=Note Edit Switch accessories/plugins/NodeNote_jumpto.properties_name=Basculer vers l'\u00e9diteur de notes #accessories/plugins/NodeNote_jumpfrom.properties_documentation=Switch back from notes to mindmap accessories/plugins/NodeNote_jumpfrom.properties_documentation = Basculer des notes vers la carte #accessories/plugins/NodeNote_jumpfrom.properties_name=Leave note accessories/plugins/NodeNote_jumpfrom.properties_name = Laisser la note # fc, 12.10.06 #OptionPanel.max_tooltip_width=ToolTip Width OptionPanel.max_tooltip_width = Largeur des infobulles #OptionPanel.max_tooltip_width.tooltip=The default tooltip width in pixels. OptionPanel.max_tooltip_width.tooltip = Largeur par d\u00e9faut des infobulles en pixels. # fc, 13.10.06: renamed: #plugins/NodeList.xml_documentation=Shows all nodes as a searchable list with filter properties. plugins/NodeList.xml_documentation=Affiche tous les n\u0153uds avec leur date de cr\u00e9ation et modification. # fc, 10.11.2006: #OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Note Edit Switch OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N = Basculer vers l'\u00e9dition de note #OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Show/Hide Note Window OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Montrer/Cacherla fen\u00eatre de notes # Dimitry 25.10 #OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Clear Note OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Effacer la note # aki 19.10.06: (TJI support) #accessories/plugins/ExportWithXSLT_Applet.properties_tji= Task Juggler Include Files accessories/plugins/ExportWithXSLT_Applet.properties_tji= Fichiers d'inclusion Task Juggler #accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Exports tasks from TASKS node to Taskjuggler module. accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Exporte les t\u00e2ches depuis le n\u0153ud TACHES vers le module TaskJuggler. #accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Tasks from TASKS node to TaskJuggler file... accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Les t\u00e2ches depuis le n\u0153ud TACHES vers un fichier TaskJuggler... #accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation=Exports resources from RESOURCES node to Taskjuggler module. accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation = Exporte les ressources depuis le n\u0153ud RESOURCES vers le module TaskJuggler. #accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name=Resources from RESOURCES node to TaskJuggler file... accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name = Les ressources depuis le n\u0153ud RESOURCES vers un fichier TaskJuggler... # fc, 14.12.2006: renamed: #plugins/NodeList.xml_name=Find and Replace... plugins/NodeList.xml_name=Montrer l'historique de la carte... #plugins/TimeManagement.xml_menu_actions=Actions plugins/TimeManagement.xml_menu_actions=Actions # fc, 23.12.06: #plugins/TimeList.xml_Notes=Notes plugins/TimeList.xml_Notes=Notes # fc, 30.12.06: #accessories/plugins/SortNodes.properties_documentation=Sorts all children of a node alphabetically. accessories/plugins/SortNodes.properties_documentation=Trie par ordre alphab\u00e9tique tous les enfants d'un n\u0153ud. #accessories/plugins/SortNodes.properties_name=&Sort Children accessories/plugins/SortNodes.properties_name=&Trier les enfants # fc, 3.1.07: #OptionPanel.ar=Ar OptionPanel.ar=Arabe # fc, 10.1.07: #plugins/TimeManagement.xml_WindowTitle_All_Nodes=Search & Replace plugins/TimeManagement.xml_WindowTitle_All_Nodes=Chercher & Remplacer #plugins/ScriptEditor.xml_documentation=Enables to write larger scripts within FreeMind. plugins/ScriptEditor.xml_documentation = Permet d'\u00e9crire de longs scripts dans FreeMind. #plugins/ScriptEditor.xml_name=S&cript Editor... plugins/ScriptEditor.xml_name=\u00c9diteur de &scripts... # fc, 24.1.07: #plugins/ScriptEditor/window.title=Script Editor plugins/ScriptEditor/window.title=\u00c9diteur de scripts #plugins/ScriptEditor.menu_actions=&Actions plugins/ScriptEditor.menu_actions=&Actions #plugins/ScriptEditor.run=&Run plugins/ScriptEditor.run=&Ex\u00e9cuter #plugins/ScriptEditor/window.Result=Result: plugins/ScriptEditor/window.Result = R\u00e9sultat : # SimplyHTML.properties # # resource bundle with strings for application SimplyHTML # - English Language (default) - # edit menu definition #simplyhtml.editLabel=Edit simplyhtml.editLabel=\u00c9diter # edit menu items #simplyhtml.undoLabel=Undo simplyhtml.undoLabel=Annuler #simplyhtml.undoTip=undo simplyhtml.undoTip=annuler #simplyhtml.redoLabel=Redo simplyhtml.redoLabel=R\u00e9tablir #simplyhtml.redoTip=redo simplyhtml.redoTip=r\u00e9tablir #simplyhtml.cutLabel=Cut simplyhtml.cutLabel=Couper #simplyhtml.cutTip=cut simplyhtml.cutTip=couper #simplyhtml.copyLabel=Copy simplyhtml.copyLabel=Copier #simplyhtml.copyTip=copy simplyhtml.copyTip=copier #simplyhtml.pasteLabel=Paste simplyhtml.pasteLabel=Coller #simplyhtml.pasteTip=paste simplyhtml.pasteTip=coller #simplyhtml.selectAllLabel=Select all simplyhtml.selectAllLabel = S\u00e9lectionner tout #simplyhtml.findReplaceLabel=Find & Replace simplyhtml.findReplaceLabel = Chercher et remplacer #simplyhtml.findReplaceTip=find & replace simplyhtml.findReplaceTip = chercher et remplacer #insert menu definition #simplyhtml.insertTableLabel=Table... simplyhtml.insertTableLabel=Tableau... # format menu definition #simplyhtml.formatLabel=Format simplyhtml.formatLabel=Mise en forme # format menu items #simplyhtml.fontLabel=Font... simplyhtml.fontLabel=Polices... #simplyhtml.fontTip=Format font... simplyhtml.fontTip=Format de polices... #simplyhtml.clearFormatLabel=Remove Formatting simplyhtml.clearFormatLabel = Effacer la mise en forme #simplyhtml.clearFormatTip=Remove Formatting simplyhtml.clearFormatTip = Efface la mise en forme #simplyhtml.fontBoldLabel=Bold simplyhtml.fontBoldLabel=Gras #simplyhtml.fontBoldImage=resources/bold.gif simplyhtml.fontBoldImage=resources/bold.gif #simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif #simplyhtml.fontBoldTip=switch bold on/off simplyhtml.fontBoldTip = basculer le mode gras #simplyhtml.fontItalicLabel=Italic simplyhtml.fontItalicLabel=Italique #simplyhtml.fontItalicImage=resources/italic.gif simplyhtml.fontItalicImage=resources/italic.gif #simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif #simplyhtml.fontItalicTip=switch italic on/off simplyhtml.fontItalicTip = basculer le mode italique #simplyhtml.fontUnderlineLabel=Underline simplyhtml.fontUnderlineLabel=Soulign\u00e9 #simplyhtml.fontUnderlineImage=resources/uline.gif simplyhtml.fontUnderlineImage=resources/uline.gif #simplyhtml.fontUnderlineTip=switch underline on/off simplyhtml.fontUnderlineTip=basculer le mode soulign\u00e9 #simplyhtml.formatTableLabel=Table... simplyhtml.formatTableLabel=Tableau... #simplyhtml.formatTableTip=Format table simplyhtml.formatTableTip=Mise en forme de tableau #simplyhtml.toggleBulletsLabel=Bulleted list on/off simplyhtml.toggleBulletsLabel = Bascule la liste \u00e0 puces #simplyhtml.toggleBulletsTip=bulleted list on/off simplyhtml.toggleBulletsTip = liste \u00e0 puces #simplyhtml.toggleNumbersLabel=Numbered list on/off simplyhtml.toggleNumbersLabel = Liste numerot\u00e9e #simplyhtml.toggleNumbersTip=numbered list on/off simplyhtml.toggleNumbersTip = Bascule la num\u00e9rotation #simplyhtml.formatListLabel=List... simplyhtml.formatListLabel=Liste... #simplyhtml.formatListTip=change list format simplyhtml.formatListTip=changer la mise en forme de liste #simplyhtml.formatParaLabel=Paragraph... simplyhtml.formatParaLabel=Paragraphe... #simplyhtml.formatParaTip=Change paragraph format simplyhtml.formatParaTip=Changer la mise en forme de paragraphe #simplyhtml.paraAlignLeftLabel=Align left simplyhtml.paraAlignLeftLabel=Aligner \u00e0 gauche #simplyhtml.paraAlignLeftTip=Set paragraph left alignment simplyhtml.paraAlignLeftTip=Alignement du paragraphe \u00e0 gauche #simplyhtml.paraAlignCenterLabel=Align center simplyhtml.paraAlignCenterLabel=Aligner au centre #simplyhtml.paraAlignCenterTip=Set paragraph center alignment simplyhtml.paraAlignCenterTip=Alignement du paragraphe au centre #simplyhtml.paraAlignRightLabel=Align right simplyhtml.paraAlignRightLabel=Aligner \u00e0 droite #simplyhtml.paraAlignRightTip=Set paragraph right alignment simplyhtml.paraAlignRightTip=Alignement du paragraphe \u00e0 droite # table menu definition # table menu items #simplyhtml.tableLabel=Table simplyhtml.tableLabel=Tableau #simplyhtml.nextTableCellLabel=Next cell simplyhtml.nextTableCellLabel=Cellule suivante #simplyhtml.prevTableCellLabel=Previous cell simplyhtml.prevTableCellLabel=Cellule pr\u00e9c\u00e9dente #simplyhtml.insertTableRowLabel=Insert row simplyhtml.insertTableRowLabel=Ins\u00e9rer une ligne #simplyhtml.insertTableColLabel=Insert column simplyhtml.insertTableColLabel=Ins\u00e9rer une colonne #simplyhtml.appendTableRowLabel=Append row simplyhtml.appendTableRowLabel=Ajouter une ligne #simplyhtml.appendTableColLabel=Append col simplyhtml.appendTableColLabel=Ajouter une colonne #simplyhtml.deleteTableRowLabel=Delete row simplyhtml.deleteTableRowLabel=Supprimer une ligne #simplyhtml.deleteTableColLabel=Delete column simplyhtml.deleteTableColLabel=Supprimer une colonne # help menu items #simplyhtml.helpLabel=Help simplyhtml.helpLabel=Aide #simplyhtml.aboutLabel=About SimplyHTML... simplyhtml.aboutLabel=\u00c0 propos de SimplyHTML... # About frame #simplyhtml.aboutFrameTitle=About this application simplyhtml.aboutFrameTitle=\u00c0 &propos de cette application # Font Dialog #simplyhtml.fontDialogTitle=Format Font simplyhtml.fontDialogTitle=Mise en forme de police # Font panel #simplyhtml.uLineLabel=Underline simplyhtml.uLineLabel=Soulign\u00e9 #simplyhtml.strikeLabel=Strikethrough simplyhtml.strikeLabel=Barr\u00e9 #simplyhtml.previewLabel=Preview simplyhtml.previewLabel=Pr\u00e9visualisation #simplyhtml.previewText=Preview text simplyhtml.previewText=Pr\u00e9visualiser le texte #simplyhtml.familyLabel=Family simplyhtml.familyLabel=Famiille #simplyhtml.sizeLabel=Size simplyhtml.sizeLabel=Taille #simplyhtml.plainName=plain simplyhtml.plainName = normal #simplyhtml.boldName=bold simplyhtml.boldName=gras #simplyhtml.italicName=italic simplyhtml.italicName=italique #simplyhtml.boldItalicName=bold italic simplyhtml.boldItalicName=gras italique #simplyhtml.styleLabel=Style simplyhtml.styleLabel=Style #simplyhtml.effectLabel=Effect simplyhtml.effectLabel=Effet #simplyhtml.colorLabel=Color simplyhtml.colorLabel=Couleur #simplyhtml.foregroundLabel=Foreground: simplyhtml.foregroundLabel=Premier plan : #simplyhtml.backgroundLabel=Background: simplyhtml.backgroundLabel = Arri\u00e8re-plan : #simplyhtml.noLineLabel=none simplyhtml.noLineLabel=aucun # Paragraph style panel #simplyhtml.textIndentLabel=Indent: simplyhtml.textIndentLabel=Indentation : #simplyhtml.alignLabel=Alignment: simplyhtml.alignLabel=Alignement : #simplyhtml.alignLeft=left simplyhtml.alignLeft=\u00e0 gauche #simplyhtml.alignCenter=center simplyhtml.alignCenter = au centre #simplyhtml.alignRight=right simplyhtml.alignRight=\u00e0 droite #simplyhtml.valignLabel=Vert. Alignment: simplyhtml.valignLabel=Alignement vertical : #simplyhtml.valignTop=top simplyhtml.valignTop=en haut #simplyhtml.valignMiddle=middle simplyhtml.valignMiddle = au milieu #simplyhtml.valignBottom=bottom simplyhtml.valignBottom=en bas #simplyhtml.valignBaseline=baseline simplyhtml.valignBaseline = ligne de base # Margin panel #simplyhtml.marginLabel=Outer simplyhtml.marginLabel=Ext\u00e9rieur #simplyhtml.paddingLabel=Inner simplyhtml.paddingLabel=Int\u00e9rieur # Table dialog #simplyhtml.tableDialogTitle=Format Table simplyhtml.tableDialogTitle=Mise en forme de tableau #simplyhtml.tablePanelTitle=Table format simplyhtml.tablePanelTitle=Mise en forme de tableau #simplyhtml.cellPanelTitle=Cell format simplyhtml.cellPanelTitle=Mise en forme de cellule #simplyhtml.tableWidthLabel=Width: simplyhtml.tableWidthLabel=largeur : #simplyhtml.tableBgColLabel=Background color: simplyhtml.tableBgColLabel=Couleur de fond : #simplyhtml.cellMarginTabLabel=Margin simplyhtml.cellMarginTabLabel=Marge #simplyhtml.cellBorderTabLabel=Borders simplyhtml.cellBorderTabLabel=Bordure #simplyhtml.borderWidthLabel=Width simplyhtml.borderWidthLabel=Largeur #simplyhtml.borderColorLabel=Color: simplyhtml.borderColorLabel=Couleur : #simplyhtml.thisCellRangeLabel=this cell simplyhtml.thisCellRangeLabel=cette cellule #simplyhtml.thisColRangeLabel=this column simplyhtml.thisColRangeLabel=cette colonne #simplyhtml.thisRowRangeLabel=this row simplyhtml.thisRowRangeLabel=cette ligne #simplyhtml.allCellsRangeLabel=all cells simplyhtml.allCellsRangeLabel=toutes les cellules #simplyhtml.applyCellAttrLabel=Apply to simplyhtml.applyCellAttrLabel=Tout appliquer #simplyhtml.cellGenTabLabel=General simplyhtml.cellGenTabLabel=G\u00e9n\u00e9ral # Paragraph style dialog #simplyhtml.paraStyleDialogTitle=Paragraph Style simplyhtml.paraStyleDialogTitle=Style de paragraphe #simplyhtml.fontTabLabel=Font simplyhtml.fontTabLabel=Police #simplyhtml.paraTabLabel=Paragraph simplyhtml.paraTabLabel=Paragraphe # Tag names #simplyhtml.cTagNamePara=Paragraph simplyhtml.cTagNamePara=Paragraphe #simplyhtml.cTagNameHead1=Heading 1 simplyhtml.cTagNameHead1=Titre 1 #simplyhtml.cTagNameHead2=Heading 2 simplyhtml.cTagNameHead2=Titre 2 #simplyhtml.cTagNameHead3=Heading 3 simplyhtml.cTagNameHead3=Titre 3 #simplyhtml.cTagNameHead4=Heading 4 simplyhtml.cTagNameHead4=Titre 4 #simplyhtml.cTagNameHead5=Heading 5 simplyhtml.cTagNameHead5=Titre 5 #simplyhtml.cTagNameHead6=Heading 6 simplyhtml.cTagNameHead6=Titre 6 #simplyhtml.cTagNameLink=Link simplyhtml.cTagNameLink=Lien #simplyhtml.cTagNameUL=Unordered List simplyhtml.cTagNameUL=Liste non ordonn\u00e9e #simplyhtml.cTagNameOL=Ordered List simplyhtml.cTagNameOL=Liste ordonn\u00e9e # List dialog #simplyhtml.listDialogTitle=Format List simplyhtml.listDialogTitle=Mise en forme de liste #simplyhtml.listTypeLabel=Type: simplyhtml.listTypeLabel=Type : #simplyhtml.listPositionLabel=Position: simplyhtml.listPositionLabel=Position: #simplyhtml.listIndentTitle=Indent: simplyhtml.listIndentTitle=Indentation : #simplyhtml.listTypeNone=none simplyhtml.listTypeNone=aucune #simplyhtml.listTypeDecimal=1.,2.,3.,4. simplyhtml.listTypeDecimal=1.,2.,3.,4. #simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. #simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. #simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. #simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. #simplyhtml.listTypeDisc=file symbol as bullet simplyhtml.listTypeDisc=disque plein #simplyhtml.listTypeCircle=round bulled simplyhtml.listTypeCircle=cercle vide #simplyhtml.listTypeSquare=square bullet simplyhtml.listTypeSquare=carr\u00e9 vide #simplyhtml.listPosInside=inside simplyhtml.listPosInside=int\u00e9rieur #simplyhtml.listPosOutside=outside simplyhtml.listPosOutside=ext\u00e9rieur # Find & replace dialog #simplyhtml.findReplaceDialogTitle=Find & Replace simplyhtml.findReplaceDialogTitle = Chercher et remplacer #simplyhtml.findNext=Find next... simplyhtml.findNext = Chercher le suivant... #simplyhtml.searchFromStart=Search from start simplyhtml.searchFromStart=Chercher depuis le d\u00e9but #simplyhtml.searchDown=Search down simplyhtml.searchDown=Chercher vers le bas #simplyhtml.wholeWordsOnly=Whole words only simplyhtml.wholeWordsOnly=Mots entiers seulement #simplyhtml.searchUp=Search up simplyhtml.searchUp=Chercher vers le haut #simplyhtml.matchCase=Match case simplyhtml.matchCase=Sensible \u00e0 la casse #simplyhtml.replaceWith=Replace with: simplyhtml.replaceWith=Remplacer par : #simplyhtml.textToFind=Text to find: simplyhtml.textToFind=Texte \u00e0 trouver : #simplyhtml.replace=Replace... simplyhtml.replace=Remplacer... #simplyhtml.noMoreOccurrencesFound=no (more) occurrences found simplyhtml.noMoreOccurrencesFound = aucune ou pas d'autres occurrences trouv\u00e9es #simplyhtml.allOccurrencesReplaced=All occurrences replaced simplyhtml.allOccurrencesReplaced=Toutes les occurrences on \u00e9t\u00e9 remplac\u00e9es #simplyhtml.replaceThisQuery=replace this occurrence of simplyhtml.replaceThisQuery=remplacer cette occurence de #simplyhtml.replaceYes=Yes simplyhtml.replaceYes = Oui #simplyhtml.replaceNo=No simplyhtml.replaceNo = Non #simplyhtml.replaceAll=All simplyhtml.replaceAll = Tous #simplyhtml.replaceDone=Done simplyhtml.replaceDone = Fait # Error messages #simplyhtml.unableToUndoError=Unable to undo: simplyhtml.unableToUndoError=Impossible d'annuler: #simplyhtml.unableToRedoError=Unable to redo: simplyhtml.unableToRedoError=Impossible de r\u00e9tablir: #simplyhtml.unableToOpenFileError=File can not be opened simplyhtml.unableToOpenFileError=Le fichier ne peut pas \u00eatre ouvert # Miscellaneous text #simplyhtml.imageFileDesc=Image files simplyhtml.imageFileDesc=Fichiers images #simplyhtml.defaultDocName=Untitled simplyhtml.defaultDocName=Sans titre #simplyhtml.cancelBtnName=Cancel simplyhtml.cancelBtnName=&Annuler #simplyhtml.closeBtnName=Close simplyhtml.closeBtnName=Fermer #simplyhtml.okBtnName=OK simplyhtml.okBtnName=&Valider #simplyhtml.leftLabel=left: simplyhtml.leftLabel=\u00e0 gauche : #simplyhtml.rightLabel=right: simplyhtml.rightLabel=\u00e0 droite : #simplyhtml.topLabel=top: simplyhtml.topLabel=en haut: #simplyhtml.bottomLabel=bottom: simplyhtml.bottomLabel=en bas: #simplyhtml.insertTableTitle=insertTable simplyhtml.insertTableTitle=insertTable #simplyhtml.insertTableMsg=How many columns? simplyhtml.insertTableMsg=Combien de colonnes ? #simplyhtml.close=Close simplyhtml.close=Fermer #simplyhtml.standardStyleName=standard simplyhtml.standardStyleName=standard #simplyhtml.styleNameInputTitle=Save style simplyhtml.styleNameInputTitle=Enregistrer le style #simplyhtml.styleNameInputText=Name of new style? simplyhtml.styleNameInputText=Nom du nouveau style ? #simplyhtml.newStyleDefaultName=new style simplyhtml.newStyleDefaultName=nouveau style #simplyhtml.docTitleTitle=Edit Document Title simplyhtml.docTitleTitle=\u00c9diter le titre du document #simplyhtml.docTitleQuery=Set title to: simplyhtml.docTitleQuery=Mettre le titre \u00e0 : #simplyhtml.layoutTabTitle=Layout view simplyhtml.layoutTabTitle=Vue du r\u00e9sultat #simplyhtml.htmlTabTitle=HTML Code view simplyhtml.htmlTabTitle=Vue du code HTML #fc, 14.2.07: #ScriptEditorPanel.changed_cancel=The scripts were changed. Do you really want to abandon those changes? ScriptEditorPanel.changed_cancel = Les scripts ont chang\u00e9. Voulez-vous vraiment perdre ces changements ? # fc, 2.3.07: #OptionPanel.separator.mouse_wheel=Mouse Wheel OptionPanel.separator.mouse_wheel=Molette de la souris #OptionPanel.wheel_velocity=Speed OptionPanel.wheel_velocity=Vitesse #OptionPanel.wheel_velocity.tooltip=A higher value results in fast mouse wheel move effects on the map. OptionPanel.wheel_velocity.tooltip=Une valeur plus grande donne des effets de mouvements plus rapides sur la carte. # fc, 15.5.07: #accessories/plugins/NodeHistoryBack.properties_name=Back accessories/plugins/NodeHistoryBack.properties_name=Retour #accessories/plugins/NodeHistoryBack.properties_documentation=Jumps back in the select chain accessories/plugins/NodeHistoryBack.properties_documentation = Revenir en arri\u00e8re dans la cha\u00eene s\u00e9lectionn\u00e9e #accessories/plugins/NodeHistoryForward.properties_name=Forward accessories/plugins/NodeHistoryForward.properties_name=En avant #accessories/plugins/NodeHistoryForward.properties_documentation=Jumps forward in the select chain accessories/plugins/NodeHistoryForward.properties_documentation = Avancer dans la cha\u00eene s\u00e9l\u00e9ctionn\u00e9e # fc, 25.5.07: #OptionPanel.use_tabbed_pane.tooltip=If selected the maps are displayed in tabs (like in FireFox :-) ). OptionPanel.use_tabbed_pane.tooltip = Si l'option est s\u00e9lectionn\u00e9e, les cartes sont pr\u00e9sent\u00e9es dans des onglets (comme dans FireFox :-) ). #OptionPanel.use_tabbed_pane=Use Tabs OptionPanel.use_tabbed_pane=Utiliser les onglets # fc, 11.6.07: #accessories/plugins/ExportWithTWiki.properties_name=As TWiki... accessories/plugins/ExportWithTWiki.properties_name=En TWiki... #accessories/plugins/ExportWithTWiki.properties_documentation=Exports the map as a TWiki document. accessories/plugins/ExportWithTWiki.properties_documentation=Exporter la carte en document TWiki. #accessories/plugins/ExportWithTWiki.properties=TWiki File (*.twi) accessories/plugins/ExportWithTWiki.properties=Fichier TWiki (*.twi) # fc, 31.7.07 #really_remove_node=Really delete node(s)? really_remove_node=Souhaitez-vous vraiment effacer le(s) n\u0153uds ? #confirmation=Confirmation confirmation=Confirmation #OptionalDontShowMeAgainDialog.dontShowAgain=&Don't ask me again. OptionalDontShowMeAgainDialog.dontShowAgain=&Ne plus me demander. #OptionalDontShowMeAgainDialog.rememberMyDescision=&Remember my decision. OptionalDontShowMeAgainDialog.rememberMyDescision=Se &souvenir de ma d\u00e9cision. #OptionalDontShowMeAgainDialog.cancel=&No OptionalDontShowMeAgainDialog.cancel=&Non #OptionalDontShowMeAgainDialog.ok=&Yes OptionalDontShowMeAgainDialog.ok=&Oui #OptionPanel.separator.resources_notifications=Confirmations OptionPanel.separator.resources_notifications=Confirmations #OptionPanel.delete_nodes_without_question=Delete nodes without confirmation? OptionPanel.delete_nodes_without_question=Effacer les n\u0153uds sans confirmation ? #OptionPanel.delete_nodes_without_question.tooltip=If this check box is set the nodes are deleted without confirmation. This can cause loss of information if pressed without intention. OptionPanel.delete_nodes_without_question.tooltip = Si l'option est coch\u00e9e, les n\u0153uds sont supprim\u00e9s sans confirmation. Ceci risque vous faire perdre des donn\u00e9es sur une action involontaire. #edit.decision=HTML Editor edit.decision=\u00c9diteur HTML #edit.edit_rich_text=Do you want to use formattings like bold or italics? edit.edit_rich_text=Souhaitez vous utiliser la mise en forme du texte ? #OptionPanel.remind_type_of_new_nodes.tooltip="Ask" will ask you (use in doubt).
"Yes" displays the rich text editor.
"No" displays the plain text editor. OptionPanel.remind_type_of_new_nodes.tooltip = "Demander" vous posera la question en cas de besoin.
"Oui" pr\u00e9sentera l'\u00e9diteur de mise en forme riche.
"Non" pr\u00e9sentera l'\u00e9diteur de texte brut. #OptionPanel.ask=Ask OptionPanel.ask=Demander #OptionPanel.standardselectednodetextcolor.tooltip= OptionPanel.standardselectednodetextcolor.tooltip= # fc, 4.9.07: #really_execute_script=Do you really want to execute the scripts included in this map? It is possible that they hurt your computer. really_execute_script = \u00cates-vous certains de vouloir ex\u00e9cuter les scripts inclus dans cette carte ? Des scripts malveillants peuvent faire courir un risque \u00e0 votre ordinateur. #OptionPanel.resources_execute_scripts_without_asking=Scripts should be carried out without confirmation? OptionPanel.resources_execute_scripts_without_asking = Les scripts doivent-ils \u00eatre ex\u00e9cut\u00e9s sans confirmation ? #OptionPanel.execute_scripts_without_asking.tooltip=FreeMind scripts are principally able to perform any action on your computer.
Thus, you shouldn't execute scripts you don't know to be safe. OptionPanel.execute_scripts_without_asking.tooltip = Les scripts FreeMind peuvent en principe r\u00e9aliser n'importe quelle action sur votre ordinateur.
De ce fait, vous ne devriez pas ex\u00e9cuter de scripts sans savoir s'ils sont sans danger. #fc, 13.9.07: #PatternToString.EdgeStyle=Edge Style PatternToString.EdgeStyle=Style de ligne #PatternToString.EdgeColor=Edge Color PatternToString.EdgeColor=Couleur de ligne #PatternToString.EdgeWidth=Edge Width PatternToString.EdgeWidth = \u00c9paisseur de ligne #PatternToString.FontBold=Bold PatternToString.FontBold=Gras #PatternToString.FontItalic=Italics PatternToString.FontItalic=Italique #PatternToString.FontName=Font Name PatternToString.FontName=Nom de police #PatternToString.Icon=Icon PatternToString.Icon=Ic\u00f4ne #PatternToString.Child=Child Node Style PatternToString.Child=Style de n\u0153ud enfant #ManagePatternsPopupDialog.Actions=&Actions ManagePatternsPopupDialog.Actions=&Actions #Dimitry 19.10.07: #node_location_help=Dragging changes node location, ctrl+dragging changes distances, double click and ctrl+double click reset them. node_location_help = Le glisser/d\u00e9poser change l'emplacement des n\u0153uds. Ctrl+glisser/d\u00e9poser change les distances. Les doubles clics et les ctrl+doubles clics les remettent \u00e0 z\u00e9ro. #fc, 19.10.07: #really_convert_to_current_version=This map was created with an older version of FreeMind.
Should it be converted (recommended)?
(Otherwise it is taken as it is without guarantee.) really_convert_to_current_version = Cette carte a \u00e9t\u00e9 cr\u00e9\u00e9e avec une ancienne version de FreeMind.
Doit-elle \u00eatre convertie (recommand\u00e9)?
(Sinon, elle est ouverte telle quelle sans garantie.) #OptionPanel.resources_convert_to_current_version=Automatically convert maps of older FreeMind versions
to the current version? OptionPanel.resources_convert_to_current_version=Convertir automatiquement les cartes des versions ant\u00e9rieures
de Freemind \u00e0 la version courante ? #OptionPanel.resources_convert_to_current_version.tooltip=Only for very big maps that don't need to be converted
(this is expert knowledge) you can open the maps without conversion. OptionPanel.resources_convert_to_current_version.tooltip=Seulement pour les tr\u00e8s grandes cartes qui ne n\u00e9cessitent pas de conversion
(c'est un conseil d'expert) vous pouvez ouvrir de grandes cartes sans conversion. #Dimitry 25.10.07 #OptionPanel.separator.root_node_appearance=Root node appearance OptionPanel.separator.root_node_appearance=Apparence du n\u0153ud racine #OptionPanel.use_common_out_point_for_root_node=Edges start from one point at root node OptionPanel.use_common_out_point_for_root_node=Les lignes partent d'un point du n\u0153ud racine #OptionPanel.use_common_out_point_for_root_node.tooltip=Edges start from one point at root node======= OptionPanel.use_common_out_point_for_root_node.tooltip = Les lignes partent du n\u0153ud racine d'un seul point======= #fc, 9.11.07: #ManagePatternsPopupDialog.apply=Apply ManagePatternsPopupDialog.apply=Appliquer #PatternDialog.setscript=Change? PatternDialog.setscript = Changer ? #PatternDialog.setscript.tooltip=A script can be associated to the style. PatternDialog.setscript.tooltip = Un script peut \u00eatre associ\u00e9 au mod\u00e8le. #PatternDialog.script=Script PatternDialog.script=Script #PatternDialog.script.tooltip=The script as groovy source code. PatternDialog.script.tooltip=Le script en code source Groovy. #fc, 12.11.07: #OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Manage styles OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=G\u00e9rer les styles #fc, 4.1.2008 changed: #toggle_menubar = Menubar toggle_menubar = Montrer/masquer la barre de menu #toggle_toolbar = &Toolbar toggle_toolbar = Montrer/masquer la barre d'&outils #toggle_left_toolbar = &Secondary Toolbar toggle_left_toolbar = Montrer/masquer la barre d'&ic\u00f4nes #accessories/plugins/NodeNote_hide_show.properties_name=Note Window accessories/plugins/NodeNote_hide_show.properties_name=Montrer/masquer la barre de ¬es #selection_as_rectangle=Rectangular Selection selection_as_rectangle=S\u00e9lection &rectangulaire # fc, 8.1.2008 #really_cut_node=Really cut node(s)? really_cut_node=Vraiment couper le(s) n\u0153ud(s)? #OptionPanel.resources_cut_nodes_without_question=Cut nodes without confirmation? OptionPanel.resources_cut_nodes_without_question=Couper lesn\u0153uds sans confirmation? #OptionPanel.cut_nodes_without_question.tooltip=If this check box is set the nodes are cut without confirmation. This can cause loss of information if pressed without intention. OptionPanel.cut_nodes_without_question.tooltip = Si cette option est coch\u00e9e, les n\u0153uds sont coup\u00e9s sans confirmation. Ceci risque de vous faire perdre des donn\u00e9es en cas d'inattention. # fc, 9.1.2008: #follow_graphical_link=Go to: follow_graphical_link=Aller \u00e0: #fc 10.1.2008: changed: #accessories/plugins/NodeNote_hide_show.properties_documentation=Lets the note window appear resp. disappear. accessories/plugins/NodeNote_hide_show.properties_documentation = Fait appara\u00eetre/dispara\u00eetre la fen\u00eatre de notes. #fc, 16.1.2008 #plugins/ScriptEditor.new_script=New Script plugins/ScriptEditor.new_script=Nouveau script #fc, 20.2.2008: #OptionPanel.separator.save=Save OptionPanel.separator.save=Enregistrer #OptionPanel.save_only_intrisically_needed_ids=Save used Node IDs only OptionPanel.save_only_intrisically_needed_ids=Enregistre uniquement les identifiants de n\u0153uds utilis\u00e9s #OptionPanel.save_only_intrisically_needed_ids.tooltip=When checked, node IDs are omitted that are not used inside the map. Observe, that you can't link external map to specific nodes inside the map without node ID. OptionPanel.save_only_intrisically_needed_ids.tooltip = Si l'option est coch\u00e9e, les identifiants de n\u0153uds non utilis\u00e9s sont omis. Notez qu'il n'est alors pas possible d'\u00e9tablir un lien pointant sur un n\u0153ud pr\u00e9cis \u00e0 l'int\u00e9rieur d'une autre carte. # fc, 10.3.2008: #OptionPanel.plugins/scripting/tab_name=Scripting OptionPanel.plugins/scripting/tab_name=Scripting #OptionPanel.separator.plugins/scripting/separatorPropertyName=Permissions OptionPanel.separator.plugins/scripting/separatorPropertyName=Autorisations #OptionPanel.resources_execute_scripts_without_file_restriction=Permit File Operations (NOT recommended) OptionPanel.resources_execute_scripts_without_file_restriction=Autoriser les op\u00e9rations sur les fichiers (NON recommand\u00e9) #OptionPanel.resources_execute_scripts_without_file_restriction.tooltip=If your Groovy Scripts need to execute special file actions (open, close, read, write, delete(!)),
you have to enable this option.
But use it with care, as now malicious scripts can hurt your computer! OptionPanel.resources_execute_scripts_without_file_restriction.tooltip = Si vos scripts Groovy doivent ex\u00e9cuter des actions sur des fichiers (open, close, read, write, delete(!)),
vous devez activer cette option.
Utilisez-la toutefois avec prudence, car des scripts malicieux pourraient causer des dommages \u00e0 votre ordinateur ! #OptionPanel.resources_execute_scripts_without_network_restriction=Permit Network Operations (NOT recommended) OptionPanel.resources_execute_scripts_without_network_restriction=Autoriser les op\u00e9rations r\u00e9seau (NON recommand\u00e9) #OptionPanel.resources_execute_scripts_without_network_restriction.tooltip=If your Groovy Scripts need to execute special network actions,
you have to enable this option.
But use it with care, as now malicious scripts can disclosure your secrets! OptionPanel.resources_execute_scripts_without_network_restriction.tooltip = Si vos scripts Groovy doivent ex\u00e9cuter des actions r\u00e9seau,
vous devez activer cette option.
Utilisez-la toutefois avec prudence, car des scripts malicieux pourraient divulger vos secrets ! #OptionPanel.resources_execute_scripts_without_exec_restriction=Permit to Execute other Applications (NOT recommended) OptionPanel.resources_execute_scripts_without_exec_restriction=Autoriser l'ex\u00e9cution d'autres applications (NON recommand\u00e9) #OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip=If your Groovy Scripts need to execute special other applications (like a browser) without asking(!),
you have to enable this option.
But use it with care, as now malicious scripts can hurt your computer! OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip = Si vos scripts Groovy doivent ex\u00e9cuter d'autres applications (comme un navigateur) sans confirmation (!),
vous devez activer cette option.
Utilisez-la toutefois avec prudence, car des scripts malicieux pourraient causer des dommages \u00e0 votre ordinateur ! #plugins/ScriptEditor.FORBIDDEN_ACTION=FreeMind groovy scripts are restricted. The following {0,choice,0#File|1#Network|2#Exec} operation is forbidden: {1,choice,0#Accept|1#Connect|2#Listen|3#Multicast|4#SetFactory|5#Exec|6#Link|7#Delete|8#Read|9#Write}. You can change this in the program settings. plugins/ScriptEditor.FORBIDDEN_ACTION=Les scripts Groovy de FreeMind sont restreints. L'op\u00e9ration {0,choice,0#File|1#Network|2#Exec} est interdite : {1,choice,0#Accept|1#Connect|2#Listen|3#Multicast|4#SetFactory|5#Exec|6#Link|7#Delete|8#Read|9#Write}. Vous pouvez changer ceci dans les pr\u00e9f\u00e9rences. # changed, fc, 11.3.2008: #plugins/ScriptEditor.cancel=&Dismiss Changes and Exit plugins/ScriptEditor.cancel=&Annuler les changements et Quitter #plugins/ScriptEditor.exit=&Save and Exit plugins/ScriptEditor.exit=&Enregistrer et Quitter # changed, fc, 26.3.2008: #plugins/TimeManagement.xml_closeButton=Close plugins/TimeManagement.xml_closeButton=Fermer # changed, fc, 7.4.2008: #PatternDialog.nodebackgroundcolor.tooltip=The node's background when not selected. PatternDialog.nodebackgroundcolor.tooltip = La couleur de fond du n\u0153ud quand il n'est pas s\u00e9lectionn\u00e9. #PatternDialog.nodecolor.tooltip=The node's foreground color when not selected. PatternDialog.nodecolor.tooltip = La couleur du n\u0153ud quand il n'est pas s\u00e9lectionn\u00e9. #PatternDialog.nodestyle.tooltip=The style describes the outer form of a node.
Possible values:
fork: without surrounding box,
bubble: node with a surrounding rectangle,
As parent: take the style from the parent node
or the default root node style for the root node,
Combined: Bubble when node is folded, fork otherwise.
PatternDialog.nodestyle.tooltip=Le style d\u00e9crivant la forme ext\u00e9rieur du n\u0153ud.
Valeurs possibles :
Fourche : sans boite englobante,
Bulle : n\u0153ud entour\u00e9 d'un rectable,
Comme le p\u00e8re : prend le style du n\u0153ud p\u00e8re
ou le style par d\u00e9faut du n\u0153ud racine,
Mixte : Comme Bulle quand le n\u0153ud est pli\u00e9, sinon comme Branche.
#PatternDialog.nodetext.tooltip=Here, you can define the node's text. The former text is discarded when such a pattern is applied. PatternDialog.nodetext.tooltip=Vous pouvez d\u00e9finir le texte du n\u0153ud. Le texte pr\u00e9c\u00e9dant est supprim\u00e9 lorsqu'un tel mod\u00e8le est appliqu\u00e9. #PatternDialog.nodefontname=Node's font name PatternDialog.nodefontname=Nom de police de n\u0153ud #PatternDialog.nodefontsize=Node's font size PatternDialog.nodefontsize=Taille de police de n\u0153ud #PatternDialog.nodefontname.tooltip= PatternDialog.nodefontname.tooltip=Nom de police de n\u0153ud #PatternDialog.nodefontsize.tooltip= PatternDialog.nodefontsize.tooltip=Taille de police de n\u0153ud #PatternDialog.nodefontbold.tooltip= PatternDialog.nodefontbold.tooltip=Gras #PatternDialog.nodefontitalic.tooltip= PatternDialog.nodefontitalic.tooltip=Italique # new, fc, 8.4.2008: #PatternDialog.separator.ScriptingControl=Scripting PatternDialog.separator.ScriptingControl=Scripting # new, fc, 10.4.2008: #OptionPanel.resources_don_t_show_note_icons=Don't show the note icons OptionPanel.resources_don_t_show_note_icons=Ne pas montrer les ic\u00f4nes de note #new, fc, 11.4.2008: #FreeMind=FreeMind's Homepage FreeMind=Site &Web de FreeMind # new, fc, 12.4.2008: #really_remove_notes=Really remove the note(s)? really_remove_notes=Supprimer les notes ? #OptionPanel.resources_remove_notes_without_question=Remove Notes without Question? OptionPanel.resources_remove_notes_without_question=Supprimer les notes sans confirmation ? #OptionPanel.remove_notes_without_question.tooltip=If this check box is set the notes belonging to the selected nodes are removed without confirmation. This can cause loss of information if pressed without intention. OptionPanel.remove_notes_without_question.tooltip = Si l'option est coch\u00e9e, les notes d'un n\u0153ud peuvent \u00eatre supprim\u00e9es sans confirmation. Ceci risque de vous faire perdre des donn\u00e9es en cas d'inattention. #OptionPanel.resources_save_folding_state=Always save folding state changes OptionPanel.resources_save_folding_state=Toujours enregistrer les changements de d\u00e9pliement #OptionPanel.resources_save_folding_state.tooltip=If checked, each folding action makes the map dirty and reminds you to save it. OptionPanel.resources_save_folding_state.tooltip=Si coch\u00e9e, toute action de (d\u00e9)pliement est consid\u00e9r\u00e9e comme une modification de la carte \u00e0 enregistrer. # new, fc, 17.4.2008: #plugins/ScriptEditor.sign=Sign Script... plugins/ScriptEditor.sign=Signer le script... # new, fc, 18.4.2008: #OptionPanel.resources_script_user_key_name_for_signing=Optional User Key Alias for Signing OptionPanel.resources_script_user_key_name_for_signing = Alias optionnel de la cl\u00e9 utilisateur pour signer #OptionPanel.resources_script_user_key_name_for_signing.tooltip=If you want to sign your scripts, enter the alias of the key here.
The key is expected to reside in the default keystore.
The password of the key's secret key must coincide with the keystore password (this is the default). OptionPanel.resources_script_user_key_name_for_signing.tooltip = Si vous souhaitez signer vos scripts, saisissez l'alias de votre cl\u00e9 ici.
La cl\u00e9 est attendue dans le trousseau de cl\u00e9s par d\u00e9faut.
Le mot de passe de la cl\u00e9 doit co\u00efncider avec le mot de passe du trousseau (celui ci est pris par d\u00e9faut). #OptionPanel.resources_signed_script_are_trusted=Trust signed scripts (recommended). OptionPanel.resources_signed_script_are_trusted=Faire confiance aux scripts sign\u00e9s (recommand\u00e9). #OptionPanel.resources_signed_script_are_trusted.tooltip=If scripts are signed by a trusted party (ie. from the FreeMind's authors or by yourself), it is executed without restrictions. OptionPanel.resources_signed_script_are_trusted.tooltip = Si les scripts sont sign\u00e9s par une personne de confiance (par exemple un auteur de FreeMind ou vous-m\u00eame), ils sont ex\u00e9cut\u00e9s sans restriction. # changed, fc, 24.4.2008: # this is still the old "export_branch", but as many users didn't find this feature, we # have to describe it better. Moreover, it is put into the node context menu. #export_branch_new = Branch as new Map ... export_branch_new = La branche en nouvelle carte... # new, fc, 28.4.2008: #icon_yes = Important icon_yes = Important #icon_folder = Folder icon_folder = Dossier #icon_up = Up icon_up = Haut #icon_down = Down icon_down = Bas #icon_smiley-neutral = No Mind icon_smiley-neutral = Neutre #icon_smiley-oh = Surprising icon_smiley-oh = Surpris #icon_smiley-angry = Angry icon_smiley-angry = En col\u00e8re #icon_encrypted = Locked icon_encrypted = Verrouill\u00e9 #icon_decrypted = Unlocked icon_decrypted = D\u00e9verrouill\u00e9 #icon_broken-line = Broken icon_broken-line = Cass\u00e9 #icon_flag-black = Black Flag icon_flag-black = Drapeau noir #icon_flag-blue = Blue Flag icon_flag-blue = Drapeau bleu #icon_flag-green = Green Flag icon_flag-green = Drapeau vert #icon_flag-orange = Orange Flag icon_flag-orange = Drapeau orange #icon_flag-pink = Pink Flag icon_flag-pink = Drapeau violet #icon_flag-yellow = Yellow Flag icon_flag-yellow = Drapeau jaune #icon_clock = Time icon_clock = Temps #icon_hourglass = Waiting icon_hourglass = Attends #icon_calendar = Date icon_calendar = Date #icon_kmail = E-Mail icon_kmail = E-Mail #icon_edit = Refine icon_edit = Am\u00e9liore #icon_stop-sign = Stop icon_stop-sign = Stop #icon_closed = No Entry icon_closed = Interdit # changed: #icon_flag = Red Flag icon_flag = Drapeau rouge #changed: #OptionPanel.remind_use_rich_text_in_new_long_nodes=Use formatting for all nodes OptionPanel.remind_use_rich_text_in_new_long_nodes=Utiliser la mise en forme pour tous les n\u0153uds # new, fc, 21.5.2008: #icon_freemind_butterfly = FreeMind icon_freemind_butterfly = FreeMind #icon_full-8 = Priority 8 icon_full-8 = Priorit\u00e9 8 #icon_full-9 = Priority 9 icon_full-9 = Priorit\u00e9 9 # new, fc, 25.5.2008: #node_is_write_protected=Target node is write protected. node_is_write_protected=Le n\u0153ud cible est prot\u00e9g\u00e9 contre l'\u00e9criture. # new, fc, 6.7.2008: #KeyDoc=Key Documentation PDF KeyDoc = Documentation PDF # translate only, when you have an own translation of this doc. pdfKeyDocLocation=./doc/FM_Key_Mappings_Quick_Guide_fr.pdf #icon_info=Info icon_info=Info #icon_full-0=0 icon_full-0=0 #icon_prepare=Yellow Traffic Light icon_prepare=Feu orange #icon_go=Green Traffic Light icon_go=Feu vert #icon_list=List icon_list=Liste #icon_launch=Launch icon_launch=Lancer #icon_family=Family icon_family=Famille #icon_female1=Female1 icon_female1=Femme1 #icon_female2=Female2 icon_female2=Femme2 #icon_male1=Male1 icon_male1=Homme1 #icon_male2=Male2 icon_male2=Homme2 #icon_fema=Females icon_fema=Femmes #icon_group=Group icon_group=Groupe #OptionPanel.separator.icon_properties=Icons OptionPanel.separator.icon_properties=Ic\u00f4nes #OptionPanel.icons.list=List of Displayed Standard Icons OptionPanel.icons.list=Liste des ic\u00f4nes standard affich\u00e9es #OptionPanel.icon_order_description=Here, you can order or disable the standard icons. The icons have to be separated by ';'. OptionPanel.icon_order_description=Cette liste permet d'ordonner et de d\u00e9sactiver les ic\u00f4nes standard. Les ic\u00f4nes doivent \u00eater s\u00e9par\u00e9es par ';'. # new, fc, 16.7.2008: OptionPanel.sk=Slovaque OptionPanel.el=Grec moderne OptionPanel.et=Estonien OptionPanel.id=Indon\u00e9sien OptionPanel.uk_UA=Ukrainien (variante d'Ukraine) OptionPanel.vi=Vietnamien # new, fc, 22.7.2008 select_icon=Choisir une ic\u00f4ne mode_MindMap=Mode Carte Mentale mode_Browse=Mode Navigation mode_File=Mode Fichiers # changed mode_status = Mode pass\u00e9 en {0} mode_title =FreeMind - {0} # new, fc, 25.8.2008 OptionPanel.defaultfontsize.tooltip=Taille de police par d\u00e9faut pour les nouveaux n\u0153uds. # new, fc, 20.12.2008 OptionPanel.ro=Roumain #really_convert_to_current_version2=La carte que vous essayez d'ouvrir a \u00e9t\u00e9 cr\u00e9\u00e9e avec une ancienne version de FreeMind, enregistr\u00e9e dans un ancien format.
FreeMind s'appr\u00eate \u00e0 la convertir dans le format actuel.
Lorsque la carte aura \u00e9t\u00e9 convertie et enregistr\u00e9e avec cette version de FreeMind, elle ne pourra plus \u00eatre ouverte avec les anciennes version de FreeMind.
FreeMind doit il convertir et ouvrir cette carte? really_convert_to_current_version2=La carte heuristique que vous voulez ouvrir a \u00e9t\u00e9 cr\u00e9\u00e9e avec une ancienne version de FreeMind et enregistr\u00e9e dans un ancien format.
FreeMind va convertir cette carte dans son nouveau format.
Une fois que la conversion sera effectu\u00e9e et que la carte sera sauv\u00e9e, il ne sera plus possible d'ouvrir de l'ouvrir avec d'anciennes versions de FreeMind.
Voulez-vous que FreeMind convertisse et ouvre cette carte ? OptionPanel.eu=Eu freemind-0.9.0/freemind/Resources_sk.properties0000644000000000000000000014517511527433212020402 0ustar rootroot#! #! created/edited by Popeye version 0.54 (popeye.sourceforge.net) #! encoding:ISO-8859-1 # by Viliam Bur - viliambur about =O programe about_text = FreeMind - slobodn\u00fd softv\u00e9r na mapovanie my\u0161lienok a budovanie poznatkov\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev, a \u010fal\u0161\u00ed.\nTento program je slobodn\u00fd softv\u00e9r zverejnen\u00fd pod V\u0161eobecnou verejnou licenciou GNU.\n\nDom\u00e1ca str\u00e1nka: http://freemind.sourceforge.net/\nVerzia: accessories/plugins/ApplyFormatPlugin.dialog.title=Zme\u0148 form\u00e1t uzlov accessories/plugins/ApplyFormatPlugin.properties_documentation=Zobraz\u00ed dial\u00f3g, v ktorom mo\u017eno naraz zmeni\u0165 vlastnosti uzlov aj hr\u00e1n. accessories/plugins/ApplyFormatPlugin.properties_name=Zme\u0148 form\u00e1t... accessories/plugins/AutomaticLayout.properties_documentation = Oprav\u00ed rozlo\u017eenie mapy.
Prv\u00e1 \u00farove\u0148 je \u010dierna, druh\u00e1 modr\u00e1, at\u010f. accessories/plugins/AutomaticLayout.properties_name =Automatick\u00e9 rozlo\u017eenie accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Zme\u0148 vzor accessories/plugins/BlinkingNodeHook.properties_documentation = Teraz bude uzol blika\u0165. Opatrne. Nenastavuje to pr\u00edli\u0161 mnoh\u00fdm uzlom, a nie spolu s \u010fal\u0161\u00edmi automatick\u00fdmi form\u00e1tmi na rovnakom uzle accessories/plugins/BlinkingNodeHook.properties_name =Blikaj\u00faci uzol accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=Uzly na\u013eavo od kore\u0148a sa posun\u00fa nadol. Stan\u00fa sa poduzlami uzla, ktor\u00fd bol nad nimi. Uzly napravo od kore\u0148a sa posun\u00fa nahor. Priamo pri koreni uzly zmenia stranu. accessories/plugins/ChangeNodeLevelAction_left.properties_name=Uzol do\u013eava accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=Uzly napravo od kore\u0148a sa posun\u00fa nadol. Stan\u00fa sa poduzlami uzla, ktor\u00fd bol nad nimi. Uzly na\u013eavo od kore\u0148a sa posun\u00fa nahor. Priamo pri koreni uzly zmenia stranu. accessories/plugins/ChangeNodeLevelAction_right.properties_name=Uzol doprava accessories/plugins/CreationModificationPlugin.properties_documentation=T\u00e1to funkcia zaznamen\u00e1va \u010das vytvorenia a \u00fapravy uzla. accessories/plugins/CreationModificationPlugin.properties_name =Zobraz \u010das zmeny accessories/plugins/EncryptNode.properties_0 =Nastav heslo pre za\u0161ifrovan\u00fd uzol accessories/plugins/EncryptNode.properties_1 =Hesl\u00e1 sa nerovnaj\u00fa alebo s\u00fa pr\u00edli\u0161 kr\u00e1tke. accessories/plugins/EncryptNode.properties_2 =Zadajte heslo: accessories/plugins/EncryptNode.properties_3 =Zopakujte heslo: accessories/plugins/EncryptNode.properties_4 =Zadajte heslo. accessories/plugins/EncryptNode.properties_5 = Pam\u00e4tajte, \u017ee sila \u0161ifry
z\u00e1vis\u00ed do zna\u010dnej miery od kvality hesla. accessories/plugins/EncryptNode.properties_6 =OK accessories/plugins/EncryptNode.properties_7 =Storno accessories/plugins/EncryptNode.properties_documentation =Vlo\u017e\u00ed nov\u00fd uzol, ktor\u00e9ho poduzly bud\u00fa ulo\u017een\u00e9 za\u0161ifrovane. accessories/plugins/EncryptNode.properties_insert_encrypted_node_first =Stav za\u0161ifrovania m\u00f4\u017eete meni\u0165 iba na za\u0161ifrovanom uzle. Pros\u00edm vlo\u017ete tak\u00fdto uzol pomocou menu n\u00e1strojov. accessories/plugins/EncryptNode.properties_name =Vlo\u017e za\u0161ifrovan\u00fd uzol ... accessories/plugins/EncryptNode.properties_select_me =Vyber ma a pokra\u010duj! accessories/plugins/EncryptNode.properties_wrong_password =Heslo je nespr\u00e1vne. accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EnterPassword.properties_name =Zme\u0148 vidite\u013en\u00e9 / za\u0161ifrovan\u00e9 accessories/plugins/ExportToImage_JPEG.properties_documentation =Vyexportuje mapu s teraj\u0161\u00edmi rozbaleniami do obr\u00e1zku JPEG. accessories/plugins/ExportToImage_JPEG.properties_name =Ako JPEG... accessories/plugins/ExportToImage_PNG.properties_documentation =Vyexportuje mapu s teraj\u0161\u00edmi rozbaleniami do obr\u00e1zku PNG. accessories/plugins/ExportToImage_PNG.properties_name =Ako PNG... accessories/plugins/ExportToOoWriter.properties_documentation=Rozbalen\u00e9 uzly tvoria \u0161trukt\u00faru, zbalen\u00e9 uzly tvoria obsah dokumentu. accessories/plugins/ExportToOoWriter.properties_name=Ako dokument programu OpenOffice Writer... accessories/plugins/ExportWithXSLT.properties_documentation =Toto je jednotn\u00e1 met\u00f3da exportu pomocou skriptov XSLT. accessories/plugins/ExportWithXSLT.properties_name =Pomocou XSLT... accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Vyexportuje mapu ako applet v jazyku Java. accessories/plugins/ExportWithXSLT_Applet.properties_name=Ako Java Applet... accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Webov\u00e1 str\u00e1nka accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Vyexportuje mapu ako aplik\u00e1ciu v jazyku Flash accessories/plugins/ExportWithXSLT_Flash.properties_name=Ako Flash... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_name =Ako XHTML (verzia s JavaScriptom)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_name =Ako XHTML (verzia s klikate\u013enou mapou)... accessories/plugins/FitToPage.properties_documentation =Prisp\u00f4sob\u00ed zaostrenie, aby sa cel\u00e1 mapa zmestila do s\u00fa\u010dasn\u00e9ho okna. accessories/plugins/FitToPage.properties_name =Zaostri na str\u00e1nku accessories/plugins/FoldAll.properties_documentation = Zbal\u00ed ozna\u010den\u00fd uzol a v\u0161etky jeho poduzly. accessories/plugins/FoldAll.properties_name =Zba\u013e v\u0161etko accessories/plugins/FoldOneLevel.properties_documentation = Zbal\u00ed ozna\u010den\u00e9 uzly o jednu \u00farove\u0148. accessories/plugins/FoldOneLevel.properties_name =Zba\u013e jednu \u00farove\u0148 accessories/plugins/FormatCopy.properties_documentation = Skop\u00edruje form\u00e1t uzla. accessories/plugins/FormatCopy.properties_name =Kop\u00edruj form\u00e1t accessories/plugins/FormatPaste.properties_documentation = Vlo\u017e\u00ed form\u00e1t uzla. accessories/plugins/FormatPaste.properties_name =Vlo\u017e form\u00e1t accessories/plugins/FormularEditor.properties_documentation = Pripoj\u00ed k s\u00fa\u010dasn\u00e9mu uzlu jednoduch\u00fd editor formul\u00e1rov.. accessories/plugins/FormularEditor.properties_name =Editor formul\u00e1rov accessories/plugins/HierarchicalIcons.properties_documentation=Ak m\u00e1 niektor\u00fd z mojich pod(pod)uzlov ikonu, zobraz\u00edm t\u00fato ikonu v malom form\u00e1te aj ja. accessories/plugins/HierarchicalIcons.properties_name=Zobraz ikony hierarchicky accessories/plugins/IconSelectionPlugin.properties_documentation =Tu m\u00f4\u017eete vybra\u0165 ikonu pomocou podokna. accessories/plugins/IconSelectionPlugin.properties_name =Vyber ikonu... accessories/plugins/ImportMindmanagerFiles.properties_name=Mapa programu MindManager X5... accessories/plugins/ManagePatterns.dialog.title=Spr\u00e1va vzorov... accessories/plugins/ManagePatterns.not_found=Neviem na\u010d\u00edta\u0165 s\u00fabor so vzormi. accessories/plugins/ManagePatterns.properties_documentation=Zme\u0148te vzory definovan\u00e9 v s\u00fabore patterns.xml pomocou editora. V\u00fdsledok sa automaticky ulo\u017e\u00ed. accessories/plugins/ManagePatterns.properties_name=Spr\u00e1va vzorov... accessories/plugins/NewEncryptedMap.properties_documentation =Vytvor nov\u00fa za\u0161ifrovan\u00fa mapu. accessories/plugins/NewEncryptedMap.properties_name =Vytvor za\u0161ifrovan\u00fa mapu... accessories/plugins/NewParentNode.properties_documentation =V\u0161etky ozna\u010den\u00e9 uzly sa po\u0161l\u00fa k nov\u00e9mu rodi\u010dovsk\u00e9mu. accessories/plugins/NewParentNode.properties_name =Nov\u00fd rodi\u010dovsk\u00fd uzol accessories/plugins/NodeNote.properties_documentation =Pripoj\u00ed jednoduch\u00fd pozn\u00e1mkov\u00fd editor k aktu\u00e1lnej pozn\u00e1mke. accessories/plugins/NodeNote.properties_name =Pozn\u00e1mka accessories/plugins/PMCalculation.properties_documentation = Vypo\u010d\u00edta n\u00e1roky pre jednotliv\u00e9 \u00falohy. accessories/plugins/PMCalculation.properties_name = PMCalculation accessories/plugins/RevisionPlugin.properties_documentation =Ozna\u010d\u00ed pozadie ka\u017ed\u00e9ho zmenen\u00e9ho uzla. accessories/plugins/RevisionPlugin.properties_name =Uk\u00e1\u017e redak\u010dn\u00e9 z\u00e1sahy \u017eltou accessories/plugins/SaveAll.properties_documentation=Ulo\u017e\u00ed v\u0161etky otvoren\u00e9 mapy. accessories/plugins/SaveAll.properties_name=Ulo\u017e v\u0161etky accessories/plugins/SaveAll.properties_save_all_cancelled=Nepodarilo sa \u010dinnos\u0165 \u00faspe\u0161ne dokon\u010di\u0165. accessories/plugins/UnfoldAll.properties_documentation = Rozbal\u00ed ozna\u010den\u00fd uzol a v\u0161etky jeho poduzly. accessories/plugins/UnfoldAll.properties_name =Rozba\u013e v\u0161etky accessories/plugins/UnfoldOneLevel.properties_documentation = Rozbal\u00ed ozna\u010den\u00e9 uzly o jednu \u00farove\u0148. accessories/plugins/UnfoldOneLevel.properties_name =Rozba\u013e jednu \u00farove\u0148 add_link =Pridaj grafick\u00fa linku add_local_link =Pridaj lok\u00e1lnu hyperlinku antialias_all =Vyhla\u010f v\u0161etko antialias_edges =Vyhla\u010f hrany antialias_none =Nevyhladzuj ni\u010d apply=Pou\u017ei arrow_link_color =Farba \u0161\u00edpky... as_parent =Ako rodi\u010d atributes_no_import_candidates_found=Nena\u0161iel sa \u017eiaden nov\u00fd atrib\u00fat attribute_delete=Vyma\u017e v\u0161etky hodnoty attribute_delete_value=Vyma\u017e t\u00fato hodnotu attribute_font_size_tooltip=Ve\u013ekos\u0165 p\u00edsma atrib\u00fatu attribute_list_box_label_text=Existuj\u00face hodnoty attribute_replace=Nahra\u010f attribute_top=V\u0161etky zn\u00e1me atrib\u00faty na\u010d\u00edtan\u00fdch m\u00e1p attributes_adding_empty_attribute_error=Nem\u00f4\u017eem pou\u017ei\u0165 pr\u00e1zdny text ako n\u00e1zov atrib\u00fatu attributes_all=V\u0161etky atrib\u00faty attributes_assign_dialog=Prira\u010f atrib\u00faty... attributes_attribute=Atrib\u00faty attributes_close=Zavri attributes_deselect_all=Ni\u010d attributes_dialog=Spr\u00e1vca atrib\u00fatov attributes_edit=Edituj attributes_edit_in_place=Edituj atrib\u00faty attributes_edit_tooltip=Edituj mno\u017einu attributes_for_selected=Vybran\u00e9 uzly attributes_for_visible=V\u0161etky vidite\u013en\u00e9 uzly attributes_hide_all =Ukry v\u0161etky atrib\u00faty attributes_import=Importuj attributes_import_tooltip=Importuj atrib\u00faty z ostatn\u00fdch na\u010d\u00edtan\u00fdch m\u00e1p attributes_popup_delete=Vyma\u017e attributes_popup_down=Dole attributes_popup_edit=Edituj attributes_popup_hide=Skry attributes_popup_new=Nov\u00fd atrib\u00fat attributes_popup_optimal_width=Optim\u00e1lna \u0161\u00edrka attributes_popup_up=Hore attributes_refresh=Obnov attributes_restricted_attributes_tooltip=Obmedz mno\u017einu atrib\u00fatov attributes_restricted_values_tooltip=Obmedz mno\u017einu hodn\u00f4t teraj\u0161ieho atrib\u00fatu attributes_restriction=Obmedzen\u00e1 mno\u017eina attributes_select_all=V\u0161etky attributes_select_all_tooltip=Ozna\u010d / Odzna\u010d v\u0161etky attributes_show=Uk\u00e1\u017e attributes_show_all =Uk\u00e1\u017e v\u0161etky atrib\u00faty attributes_show_selected =Uk\u00e1\u00fd ozna\u010den\u00e9 atrib\u00faty attributes_skip_root=Presko\u010d kore\u0148ov\u00fd uzol attributes_visible=Ozna\u010den\u00e9 vidite\u013en\u00e9 attributes_visible_tooltip=Ozna\u010den\u00e9 vidite\u013en\u00e9 automatically_save_message=Mapa bola automaticky ulo\u017een\u00e1 (n\u00e1zov s\u00faboru {0}) ... background =Pozadie bezier =Bezier blend_color =Zmie\u0161aj farbu bold =Tu\u010dn\u00e9 boldify_branch =Zme\u0148 na tu\u010dn\u00e9 branch =Vetva browsemode_initial_map = ./doc/freemind.mm bubble =Bublina cancel =Storno cannot_add_parent_diff_parents =V\u0161etky uzly musia ma\u0165 rovnak\u00e9ho rodi\u010da, aby sa dala pou\u017ei\u0165 t\u00e1to funkcia. cannot_add_parent_to_root =Kore\u0148ov\u00fd uzol nemo\u017eno prida\u0165 pod nov\u00e9ho rodi\u010da. cannot_join_nodes_with_children =Nem\u00f4\u017eem spoji\u0165 uzly s de\u0165mi cannot_move_to_child =Nem\u00f4\u017eem posun\u00fa\u0165 uzol do jedn\u00e9ho z jeho det\u00ed. center =Centruj change_arrows_in_arrow_link =Zme\u0148 \u0161\u00edpky alebo linku \u0161\u00edpky change_link_arrows= choose_background_color =Vyber farbu pozadia choose_cloud_color =Vyber farbu oblaku: choose_edge_color =Vyber farbu hrany choose_node_background_color =Vyber farbu pozadia uzla: choose_node_color =Vyber farbu uzla: close =Zavri cloud =Oblak cloud_color =Farba oblaku... combined =Kombinovan\u00e1 copy =Kop\u00edruj copy_single =Kop\u00edruj jeden cut =Vystrihni decrease_branch_font_size =Men\u0161ie p\u00edsmo decrease_node_font_size =Men\u0161ie p\u00edsmo delete_child =Vyma\u017e uzol documentation =Dokument\u00e1cia edge =Hrana edge_color =Farba hrany... edge_style =\u0160t\u00fdl hrany edge_width =Hr\u00fabka hrany edge_width_parent =Rodi\u010d edge_width_thin =Tenk\u00e1 edit =Edituj edit_link_manually =Edituj hyperlinku ru\u010dne... edit_long_node =Edituj dlh\u00fd uzol... edit_node =Edituj uzol enter_base_url =Idem vlo\u017ei\u0165 relat\u00edvne linky. Pros\u00edm zadajte z\u00e1kladn\u00e9 URL. enter_confirms =Enter potvrdzuje error =Chyba error_applying_template=Chyba pri pou\u017eit\u00ed \u0161abl\u00f3ny XSL error_creating_directory =Neviem vytvori\u0165 adres\u00e1r na export. export_branch =Vetva... export_branch_to_html =Vetva ako HTML export_pdf_text =Prenosn\u00fd form\u00e1t dokumentu (PDF) export_svg_text =\u0160k\u00e1lovate\u013en\u00e1 vektorov\u00e1 grafika (SVG) export_to_html =Ako HTML extension_menu =Fyzick\u00fd \u0161t\u00fdl FAQ =Ot\u00e1zky file =S\u00fabor file_already_exists =S\u00fabor {0} u\u017e existuje. Chcete ho prep\u00edsa\u0165? file_not_found =S\u00fabor $1 sa nena\u0161iel filter_add=Pridaj filter_and=A filter_conditions =Filtre filter_contains=Obsahuje filter_delete=Vyma\u017e filter_dialog=N\u00e1vrh filtra filter_does_not_exist=Neexistuje filter_edit=Edituj filter_edit_description=Edituj zoznam filtrov filter_enter_value=Vlo\u017e hodnotu filter_exist=Existuje filter_icon=Ikona filter_ignore_case=Ignoruj VE\u013dK\u00c9/mal\u00e9 filter_is_equal_to=Sa rovn\u00e1 filter_is_not_equal_to=Sa nerovn\u00e1 filter_no_filtering=Bez filtra filter_node=Text uzla filter_not=Nie filter_or=Alebo filter_select=V\u00fdber filter_selected_node_view=Moment\u00e1lne vybran\u00e9 uzly filter_show_ancestors=Uk\u00e1\u017e predkov filter_show_descendants=Uk\u00e1\u017e potomkov filter_show_flat=Ploch\u00e9 filter_toolbar=Filter filter_unfold_ancestors=Rozba\u013e filtrovan\u00e9 uzly find =N\u00e1jdi... find_next =N\u00e1jdi \u010fal\u0161\u00ed find_what =N\u00e1jdi \u010do fit_to_page =Zmesti na jednu stranu fold =Zba\u013e follow_link =Otvor hyperlinku: font =P\u00edsmo font_family =typ p\u00edsma font_size =ve\u013ekos\u0165 p\u00edsma fork =Vetva format_menu_edge_styles=\u0160t\u00fdly hr\u00e1n format_menu_edge_widths=Hr\u00fabky hr\u00e1n FreeMind.progress.buildScreen=Zostavujem obrazovku... FreeMind.progress.createController=Vytv\u00e1ram ovl\u00e1da\u010d... FreeMind.progress.createInitialMode=Vytv\u00e1ram po\u010diato\u010dn\u00fd re\u017eim... FreeMind.progress.endStartup=Dokon\u010dujem \u0161tart. FreeMind.progress.gettingPreferenceDirectories=Zis\u0165ujem adres\u00e1re s nastaveniami... FreeMind.progress.gettingPreferences=Zis\u0165ujem nastavenia... FreeMind.progress.loadMaps=Na\u010d\u00edtavam mapy... FreeMind.progress.propageteLookAndFeel=Preber\u00e1m v\u00fdzor a spr\u00e1vanie... FreeMind.progress.settingPreferences=Aplikujem nastavenia... FreeMind.progress.startCreateController=Za\u010d\u00ednam vytv\u00e1ra\u0165 ovl\u00e1da\u010d... FreeMind.progress.updateLookAndFeel=Aktualizujem v\u00fdzor a spr\u00e1vanie... freemind_reverted= goto_link_node_action =Cho\u010f na linku GrabKeyDialog.common.cancel=Storno GrabKeyDialog.common.ok=OK GrabKeyDialog.grab-key.assigned-to=Pridelen\u00e9 k GrabKeyDialog.grab-key.assigned-to.none=Moment\u00e1lne nepridelen\u00e9 GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=Vy\u010disti GrabKeyDialog.grab-key.remove=Odstr\u00e1\u0148 GrabKeyDialog.grab-key.remove-ask=Ur\u010dite chcete odstr\u00e1ni\u0165 t\u00fato kl\u00e1vesu? GrabKeyDialog.grab-key.title=Zadajte nov\u00fa kl\u00e1vesu help =Pomoc html_export_based_on_headings =Export do HTML - pod\u013ea hlavi\u010diek html_export_fold_all =Export do HTML - zba\u013e v\u0161etko html_export_fold_currently_folded =Export do HTML - zba\u013e moment\u00e1lne zbalen\u00e9 html_export_no_folding =Export do HTML - nezba\u013e ni\u010d icon_attach =Pozri sem icon_back =Nasp\u00e4\u0165 icon_bell =Pam\u00e4taj icon_bookmark =Vynikaj\u00face icon_button_cancel =Nie OK icon_button_ok =OK icon_clanbomber =Nebezpe\u010dn\u00e9 icon_desktop_new =Nezabudni icon_flag =Vlajka icon_forward =Dopredu icon_full-1 = Priorita 1 icon_full-2 = Priorita 2 icon_full-3 = Priorita 3 icon_full-4 = Priorita 4 icon_full-5 = Priorita 5 icon_full-6 = Priorita 6 icon_full-7 = Priorita 7 icon_gohome =Domov icon_help =Ot\u00e1zka icon_idea =N\u00e1pad icon_kaddressbook =Telef\u00f3n icon_knotify =Hudba icon_korn =Schr\u00e1nka icon_ksmiletris =Som vesel\u00fd icon_licq =Pekn\u00e9 icon_Mail =Po\u0161ta icon_menu =Ikony icon_messagebox_warning =D\u00f4le\u017eit\u00e9 icon_password =K\u013e\u00fa\u010d icon_pencil =Treba upresni\u0165 icon_penguin =Linux icon_smily_bad =To ma nebav\u00ed icon_stop =Stop icon_wizard =K\u00fazlo icon_xmag =Treba prediskutova\u0165 import =Import import_branch =Vetva... import_explorer_favorites =Ob\u013e\u00faben\u00e9 polo\u017eky z Explorera... import_folder_structure =Adres\u00e1rov\u00e1 \u0161trukt\u00fara... import_linked_branch =Linkovan\u00e1 vetva import_linked_branch_no_link =Ozna\u010den\u00fd uzol nem\u00e1 linku, z ktorej by sa dalo importova\u0165. import_linked_branch_without_root =(Linkovan\u00e1 vetva) Bez kore\u0148a... increase_branch_font_size =V\u00e4\u010d\u0161ie p\u00edsmo increase_node_font_size =V\u00e4\u010d\u0161ie p\u00edsmo italic =Kurz\u00edva italicise_branch =Zme\u0148 na kurz\u00edvu join_nodes =Spoj uzly less_than_two_selected_nodes =Aby ste dostali linky, mus\u00edte vybra\u0165 aspo\u0148 dva uzly. license =Licencia license_text = linear =Line\u00e1rne link_not_available_any_more =T\u00e1to linka u\u017e neplat\u00ed. Uzol bol medzi\u010dasom zmazan\u00fd. link_not_found =Nena\u0161la sa linka $1. locking_failed_by_open =Nepodarilo sa zamkn\u00fa\u0165 mapu $1. Otv\u00e1ram ju iba na \u010d\u00edtanie. locking_failed_by_save_as =Nepodarilo sa zamkn\u00fa\u0165 mapu $1. Akcia Ulo\u017e ako zru\u0161en\u00e1. locking_old_lock_removed =Mapu $1 u\u017e zamkol pou\u017e\u00edvate\u013e $2. Z\u00e1mok bol zru\u0161en\u00fd, preto\u017ee je star\u00fd. lots_of_links_warning =Idete vytvori\u0165 mnoho liniek na rovnak\u00fd uzol. Naozaj chcete vytvori\u0165 tieto linky? ManagePatternsPopupDialog.add=Pridaj nov\u00fd vzor ManagePatternsPopupDialog.duplicate=Duplikuj vzor ManagePatternsPopupDialog.DuplicateNameMessage=Vybrali ste nejak\u00fd n\u00e1zov dvakr\u00e1t. Pros\u00edm zme\u0148te to pred uko\u010den\u00edm tohoto dial\u00f3gu. ManagePatternsPopupDialog.from_nodes=Vytvor vzor z ozna\u010den\u00fdch uzlov ManagePatternsPopupDialog.remove=Zru\u0161 vzor ManagePatternsPopupDialog.Save=Ulo\u017e a vr\u00e1\u0165 sa map_already_exists =Mapa u\u017e existuje. Chcete ju prep\u00edsa\u0165? map_corrupted =Mapa je po\u0161koden\u00e1. Zobrazi\u0165 podrobnosti? map_locked_by_open =Mapu $1 u\u017e edituje pou\u017e\u00edvate\u013e $2. Otv\u00e1ram iba na \u010d\u00edtanie. map_locked_by_save_as =Mapu $1 edituje pou\u017e\u00edvate\u013e $2. Akcia Ulo\u017e ako zru\u0161en\u00e1. map_not_saved=T\u00e1to mapa e\u0161te nebola ulo\u017een\u00e1. menu_attributes =Vlastnosti menu_extras =N\u00e1stroje menu_file_export =Exportuj menu_file_import =Importuj menu_format =Form\u00e1t menu_insert =Vlo\u017e menu_navigate =Naviguj menu_view =Poh\u013ead mindmap =Mapa mindmaps =Mapy mindmaps_desc =Mapy (*.mm) mode_na =Re\u017eim nie je k dispoz\u00edcii mode_status =Re\u017eim zmenen\u00fd na re\u017eim {0} mode_title =FreeMind - Re\u017eim {0} modes =Re\u017eimy most_recent_files =Naposledy pou\u017eit\u00e9 s\u00fabory move_to_root =Presu\u0148 na kore\u0148 new =Nov\u00fd new_child =Nov\u00fd poduzol new_mindmap =Nov\u00e1 mapa my\u0161lienok new_node =Nov\u00fd uzol new_node_as_sibling_not_possible_for_the_root =Nemo\u017eno vytvori\u0165 nov\u00fd uzol ved\u013ea kore\u0148a new_sibling_before =Nov\u00fd predch\u00e1dzaj\u00faci s\u00farodeneck\u00fd uzol new_sibling_behind =Nov\u00fd s\u00farodeneck\u00fd uzol next_map =\u010eal\u0161ia mapa no =Nie no_format_copy_before_format_paste =Aby ste vlo\u017eili form\u00e1t, mus\u00edte najprv nejak\u00fd skop\u00edrova\u0165. no_found_from =Nena\u0161lo sa \u017eiadne $1 od $2. no_more_found_from =Nena\u0161lo sa \u010fal\u0161ie $1 od $2. no_previous_find =Nena\u0161lo sa predch\u00e1dzaj\u00face. node =Uzol node_background_color =Farba pozadia uzla... node_changed_discard_changes =Zmenili ste uzol. Chcete zru\u0161i\u0165 tieto zmeny? node_color =Farba uzla... node_down =Uzol nadol node_up =Uzol nahor nonboldify_branch =Zru\u0161 tu\u010dn\u00e9 nonitalicise_branch =Zru\u0161 kurz\u00edvu normal =Norm\u00e1lne not_saved_for_link_error =Mapa mus\u00ed by\u0165 ulo\u017een\u00e1 sk\u00f4r ako nastav\u00edte linku v\u00fdberom s\u00faboru ok =OK open =Otvor... option_changes_may_require_restart=Aby ste videli \u00fa\u010dinok zmenen\u00fdch nastaven\u00ed, mus\u00edte asi re\u0161tartova\u0165 FreeMind. OptionPanel.absolute=Absol\u00fatne OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Automatick\u00e9 vzory rozlo\u017eenia OptionPanel.antialias=Antialias OptionPanel.antialias.tooltip=Ur\u010duje kvalitu mapy. V\u00e4\u010d\u0161ie antialiasovanie vy\u017eaduje viac \u010dasu. OptionPanel.antialias_all=Antialiasuj v\u0161etko OptionPanel.antialias_edges=Antialiasuj hrany OptionPanel.antialias_none=Bez antialiasingu OptionPanel.Appearance=V\u00fdzor OptionPanel.as_parent=Ako rodi\u010d OptionPanel.automatic=Automatick\u00e9 OptionPanel.automaticFormat_level=Automatick\u00e9 \u0161t\u00fdly rozlo\u017eenia OptionPanel.automaticFormat_level1=Form\u00e1t kore\u0148ov\u00e9ho uzla OptionPanel.automaticFormat_level2=Form\u00e1t uzla 1. \u00farovne OptionPanel.Behaviour=Spr\u00e1vanie OptionPanel.bezier=Bezier OptionPanel.browsemode_initial_map=Po\u010diato\u010dn\u00e1 mapa v re\u017eime listovania OptionPanel.browsemode_initial_map.tooltip=URL mapy, ktor\u00e1 sa na\u010d\u00edta pri zapnut\u00ed re\u017eimu listovania OptionPanel.bubble=Bublina OptionPanel.Cancel=Storno OptionPanel.ColorProperty.ResetColor=Vr\u00e1\u0165 p\u00f4vodn\u00fa farbu OptionPanel.combined=Kombinovan\u00e9 OptionPanel.cs=Cs OptionPanel.de=De OptionPanel.default=\u0160tandardn\u00e9 OptionPanel.default_browser_command_mac=\u0160tandardn\u00fd pr\u00edkaz prezera\u010da pre Mac OptionPanel.default_browser_command_mac.tooltip= a MAC: (v\u010faka, Nick!) OptionPanel.default_browser_command_other_os=\u0160tandardn\u00fd pr\u00edkaz prezera\u010da pre in\u00fd OS OptionPanel.default_browser_command_other_os.tooltip=Toto je zvy\u010dajne Linux: OptionPanel.default_browser_command_windows_9x=\u0160tandardn\u00fd pr\u00edkaz prezera\u010da pre Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=Pre Windows (znamienka "" s\u00fa potrebn\u00e9 kv\u00f4li link\u00e1m, ktor\u00e9 maj\u00fa "=" v URL). OptionPanel.default_browser_command_windows_nt=\u0160tandardn\u00fd pr\u00edkaz prezera\u010da pre Windows NT OptionPanel.default_browser_command_windows_nt.tooltip=Pre Windows (znamienka "" s\u00fa potrebn\u00e9 kv\u00f4li link\u00e1m, ktor\u00e9 maj\u00fa "=" v URL). OptionPanel.defaultfont=\u0160tandardn\u00e9 p\u00edsmo OptionPanel.defaultfont.tooltip=\u0160tandardn\u00e1 ve\u013ekos\u0165 p\u00edsma. Toto bude fungova\u0165 len ak je p\u00edsmo (TrueTypeFont) dostupn\u00e9 v syst\u00e9me OptionPanel.defaultfontsize=\u0160tandardn\u00e1 ve\u013ekos\u0165 p\u00edsma OptionPanel.defaultfontstyle=\u0160tandardn\u00e1 ve\u013ekos\u0165 p\u00edsma OptionPanel.Defaults=\u0160tandardn\u00e9 OptionPanel.delete_automatic_saves_at_exit=Vyma\u017e automaticky ulo\u017een\u00e9 s\u00fabory pri skon\u010den\u00ed OptionPanel.delete_automatic_saves_at_exit.tooltip=Ak by mali by\u0165 s\u00fabory automaticky vymazan\u00e9 pri norm\u00e1lnom vypnut\u00ed programu Freemind, nastavte t\u00fato premenn\u00fa na 'true' OptionPanel.disable_cursor_move_paper=Vypni kurzor pri pos\u00favan\u00ed papiera OptionPanel.disable_cursor_move_paper.tooltip=Nezobrazuj kurzor 'pohyb' po\u010das pos\u00favania papiera OptionPanel.disable_key_type=Vypni p\u00edsanie z kl\u00e1vesnice OptionPanel.disable_key_type.tooltip=P\u00edsanie z kl\u00e1vesnice: ak je zapnut\u00e9, spust\u00ed editovanie uzla OptionPanel.dk=Dk OptionPanel.docmapurl_since_version_0_7_0= OptionPanel.draganddrop=Potiahni a polo\u017e OptionPanel.draganddrop.tooltip=Ak je umo\u017enen\u00e9 'Drag and Drop'. OptionPanel.el__buttons_position=Poz\u00edcia tla\u010didiel OptionPanel.el__buttons_position.tooltip=nad / pod OptionPanel.el__enter_confirms_by_default=Enter \u0161tandardne potvrdzuje OptionPanel.el__max_default_window_height=Max \u0161tandardn\u00e1 v\u00fd\u0161ka okna OptionPanel.el__max_default_window_width=Max \u0161tandardn\u00e1 \u0161\u00edrka okna OptionPanel.el__min_default_window_height=Min \u0161tandardn\u00e1 v\u00fd\u0161ka okna OptionPanel.el__min_default_window_width=Min \u0161tandardn\u00e1 \u0161\u00edrka okna OptionPanel.el__position_window_below_node=Umiestni okno pod uzlom OptionPanel.el__show_icon_for_attributes=Zobraz ikony vlastnost\u00ed OptionPanel.en=En OptionPanel.enable_leaves_folding=Umo\u017eni balenie listov OptionPanel.enable_leaves_folding.tooltip=Umo\u017en\u00ed balenie listov == zmeni\u0165 bublinu/vetvu na zbalen\u00e9 (ak je 'false', st\u00e1le m\u00f4\u017eete zmeni\u0165 stav pomocou \u0161t\u00fdlu uzla) OptionPanel.Environment=Prostredie OptionPanel.es=Es OptionPanel.experimental_file_locking_on=Experiment\u00e1lna zamykanie s\u00faborov OptionPanel.experimental_file_locking_on.tooltip=Experiment\u00e1lna vlastnos\u0165 OptionPanel.export_icons_in_html=Exportuj ikony v HTML OptionPanel.export_icons_in_html.tooltip=\u010ci by mali HTML s\u00fabory exportovan\u00e9 z programu FreeMind obsahova\u0165 ikony. Probl\u00e9m s ikonami je, \u017ee sa v exportovanom HTML \u010dasto nen\u00e1jdu linky na ikony. OptionPanel.Files=S\u00fabory OptionPanel.first=Prv\u00fd OptionPanel.foldingsymbolwidth=\u0160\u00edrka symbolu zbalenia OptionPanel.foldingsymbolwidth.tooltip=\u0160\u00edrka kolieska ozna\u010duj\u00faceho zbalenie OptionPanel.fork=Vetva OptionPanel.fr=Fr OptionPanel.gtk=Gtk OptionPanel.hr=Hr OptionPanel.HTML=HTML OptionPanel.html_export_based_on_headings=Pod\u013ea hlavi\u010dky OptionPanel.html_export_fold_all=Zba\u013e v\u0161etko OptionPanel.html_export_fold_currently_folded=Zba\u013e moment\u00e1lne zbalen\u00e9 OptionPanel.html_export_folding=Balenie pri exporte do HTML OptionPanel.html_export_no_folding=Bez balenia OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.key_type_adds_new=P\u00edsanie z kl\u00e1vesnice prid\u00e1va nov\u00e9 OptionPanel.key_type_adds_new.tooltip=P\u00edsanie z kl\u00e1vesnice: prepisuje obsah (false) / vytv\u00e1ra nov\u00e9ho s\u00farodenca (true) (vy\u017eaduje: disable_key_type = false) OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Presu\u0148 do\u013eava OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Presu\u0148 doprava OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Kop\u00edruj form\u00e1t OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Vlo\u017e form\u00e1t OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Vlo\u017e ikonu OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Odsu\u0148 uzly OptionPanel.keystroke_accessories/plugins/NodeNote.properties_key=Vlo\u017e pozn\u00e1mku OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Rozba\u013e v\u0161etko OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Zba\u013e v\u0161etko OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Rozba\u013e jednu \u00farove\u0148 OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Zba\u013e jednu \u00farove\u0148 OptionPanel.keystroke_add=Pridaj OptionPanel.keystroke_add_arrow_link_action=Pridaj linku ako \u0161\u00edpku OptionPanel.keystroke_add_child=Pridaj poduzol OptionPanel.keystroke_add_child_mac=Pridaj poduzol na Mac OptionPanel.keystroke_add_local_link_action=Pridaj lok\u00e1lnu linku OptionPanel.keystroke_add_sibling_before=Pridaj s\u00farodenca pred OptionPanel.keystroke_apply_pattern_1=Pou\u017ei vzor 1 OptionPanel.keystroke_apply_pattern_10=Pou\u017ei vzor 10 OptionPanel.keystroke_apply_pattern_11=Pou\u017ei vzor 11 OptionPanel.keystroke_apply_pattern_12=Pou\u017ei vzor 12 OptionPanel.keystroke_apply_pattern_13=Pou\u017ei vzor 13 OptionPanel.keystroke_apply_pattern_14=Pou\u017ei vzor 14 OptionPanel.keystroke_apply_pattern_15=Pou\u017ei vzor 15 OptionPanel.keystroke_apply_pattern_16=Pou\u017ei vzor 16 OptionPanel.keystroke_apply_pattern_17=Pou\u017ei vzor 17 OptionPanel.keystroke_apply_pattern_18=Pou\u017ei vzor 18 OptionPanel.keystroke_apply_pattern_2=Pou\u017ei vzor 2 OptionPanel.keystroke_apply_pattern_3=Pou\u017ei vzor 3 OptionPanel.keystroke_apply_pattern_4=Pou\u017ei vzor 4 OptionPanel.keystroke_apply_pattern_5=Pou\u017ei vzor 5 OptionPanel.keystroke_apply_pattern_6=Pou\u017ei vzor 6 OptionPanel.keystroke_apply_pattern_7=Pou\u017ei vzor 7 OptionPanel.keystroke_apply_pattern_8=Pou\u017ei vzor 8 OptionPanel.keystroke_apply_pattern_9=Pou\u017ei vzor 9 OptionPanel.keystroke_assign_attributes=Prira\u010f vlastnosti... OptionPanel.keystroke_close=Zavri OptionPanel.keystroke_copy=Kop\u00edruj OptionPanel.keystroke_copy_single=Kop\u00edruj jeden OptionPanel.keystroke_cut=Vystrihni OptionPanel.keystroke_delete_child=Vyma\u017e die\u0165a OptionPanel.keystroke_edge_color=Farba okraja OptionPanel.keystroke_edit=Edituj OptionPanel.keystroke_edit_attributes=Edituj atrib\u00faty OptionPanel.keystroke_edit_long_node=Edituj dlh\u00fd uzol OptionPanel.keystroke_export_branch=Exportuj vetvu OptionPanel.keystroke_export_branch_to_html=Exportuj vetvu do HTML OptionPanel.keystroke_export_to_html=Exportuj do HTML OptionPanel.keystroke_find=N\u00e1jdi OptionPanel.keystroke_find_next=N\u00e1jdi \u010fal\u0161ie OptionPanel.keystroke_follow_link=Nasleduj linku OptionPanel.keystroke_hide_all_attributes=Skry v\u0161etky vlastnosti OptionPanel.keystroke_join_nodes=Spoj uzly OptionPanel.keystroke_mode_Browse=Re\u017eim listovania OptionPanel.keystroke_mode_File=Re\u017eim s\u00faboru OptionPanel.keystroke_mode_MindMap=Re\u017eim mapy my\u0161lienok OptionPanel.keystroke_move_down=Presu\u0148 nadol OptionPanel.keystroke_move_left=Presu\u0148 do\u013eava OptionPanel.keystroke_move_right=Presu\u0148 doprava OptionPanel.keystroke_move_up=Presu\u0148 nahor OptionPanel.keystroke_moveToRoot=Presu\u0148 na kore\u0148 OptionPanel.keystroke_newMap=Nov\u00e1 mapa OptionPanel.keystroke_nextMap=\u010eal\u0161ia mapa OptionPanel.keystroke_node_color=Farba uzla OptionPanel.keystroke_node_color_blend= OptionPanel.keystroke_node_decrease_font_size=Zmen\u0161i ve\u013ekos\u0165 p\u00edsma uzla OptionPanel.keystroke_node_down=Uzol dole OptionPanel.keystroke_node_increase_font_size=Zv\u00e4\u010d\u0161i ve\u013ekos\u0165 p\u00edsma uzla OptionPanel.keystroke_node_toggle_boldface=Zapni/vypni tu\u010dn\u00e9 p\u00edsmo uzla OptionPanel.keystroke_node_toggle_cloud=Zapni/vypni oblak uzla OptionPanel.keystroke_node_toggle_italic=Zapni/vypni kurz\u00edvu uzla OptionPanel.keystroke_node_toggle_underlined=Zapni/vypni pod\u010diarknutie uzla OptionPanel.keystroke_node_up=Uzol hore OptionPanel.keystroke_open=Otvor OptionPanel.keystroke_open_first_in_history=Otvor prv\u00fa v hist\u00f3rii OptionPanel.keystroke_option_dialog=Nastavenia OptionPanel.keystroke_paste=Vlo\u017e OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Vyhodno\u0165 OptionPanel.keystroke_previousMap=Predch\u00e1dzaj\u00faca mapa OptionPanel.keystroke_print=Tla\u010d OptionPanel.keystroke_quit=Ukon\u010di OptionPanel.keystroke_redo=Znovu OptionPanel.keystroke_remove=Odstr\u00e1\u0148 OptionPanel.keystroke_save=Ulo\u017e OptionPanel.keystroke_saveAs=Ulo\u017e Ako OptionPanel.keystroke_select_all=Ozna\u010d v\u0161etko OptionPanel.keystroke_select_branch=Ozna\u010d vetvu OptionPanel.keystroke_set_image_by_filechooser=Nastav obr\u00e1zok pod\u013ea vybran\u00e9ho s\u00faboru OptionPanel.keystroke_set_link_by_filechooser=Nastav linku pod\u013ea vybran\u00e9ho s\u00faboru OptionPanel.keystroke_set_link_by_textfield=Nastav linku pod\u013ea textov\u00e9ho po\u013ea OptionPanel.keystroke_show_all_attributes=Uk\u00e1\u017e v\u0161etky atrib\u00faty OptionPanel.keystroke_show_attribute_manager=Uk\u00e1\u017e spr\u00e1vcu atrib\u00fatov OptionPanel.keystroke_show_selected_attributes=Ul\u00e1\u017e ozna\u010den\u00e9 atrib\u00faty OptionPanel.keystroke_toggle_children_folded=Prepni zbalenie det\u00ed OptionPanel.keystroke_toggle_folded=Prepni zbalenie OptionPanel.keystroke_undo=Sp\u00e4\u0165 OptionPanel.keystroke_zoom_in=Zv\u00e4\u010d\u0161i pribl\u00ed\u017eenie OptionPanel.keystroke_zoom_out=Zmen\u0161i pribl\u00ed\u017eenie OptionPanel.Keystrokes=Kl\u00e1vesy OptionPanel.ko=Ko OptionPanel.language=Jazyk OptionPanel.language.tooltip=Toto je jazyk, ktor\u00fd by mal program pou\u017e\u00edva\u0165. 'automatic' sa pok\u00fasi na\u010d\u00edta\u0165 jazyk aktu\u00e1lneho pou\u017e\u00edvate\u013ea. OptionPanel.last=Posledn\u00fd OptionPanel.last_opened_list_length=D\u013a\u017eka naposledy otvoren\u00e9ho zoznamu OptionPanel.level=\u00darove\u0148 OptionPanel.level1=Form\u00e1t kore\u0148ov\u00e9ho uzla OptionPanel.level2=Form\u00e1t uzla 1. \u00farovne OptionPanel.level3=Form\u00e1t uzla 2. \u00farovne OptionPanel.level4=Form\u00e1t uzla 3. \u00farovne OptionPanel.level5=Form\u00e1t ostatn\u00fdch uzlov OptionPanel.linear=Line\u00e1rne OptionPanel.links=Linky OptionPanel.links.tooltip=Nastav\u00ed linky bu\u010f na relat\u00edvne alebo absol\u00fatne OptionPanel.loadLastMap=Automaticky otvor posledn\u00fa mapu OptionPanel.loadLastMap.tooltip=Ke\u010f program FreeMind \u0161tartuje, automaticky na\u010d\u00edta naposledy otvoren\u00fa mapu, ak je toto zapnut\u00e9. OptionPanel.lookandfeel=V\u00fdzor a spr\u00e1vanie OptionPanel.lookandfeel.tooltip= OptionPanel.lt=Lt OptionPanel.mapxsize=Rozmer X mapy OptionPanel.mapxsize.tooltip=Po\u010diato\u010dn\u00e1 ve\u013ekos\u0165 ka\u017edej mapy OptionPanel.mapysize=Rozmer Y mapy OptionPanel.max_node_width=Max \u0161\u00edrka uzla OptionPanel.max_node_width.tooltip=\u0160tandardn\u00e1 maxim\u00e1lna \u0161\u00edrka uzla v pixeloch OptionPanel.metal=Kov OptionPanel.motif=Motif OptionPanel.nl=Nl OptionPanel.nn=Nn OptionPanel.no=No OptionPanel.nothing=Ni\u010d OptionPanel.number_of_different_files_for_automatic_save=Po\u010det r\u00f4znych s\u00faborov pri automatickom ukladan\u00ed OptionPanel.number_of_different_files_for_automatic_save.tooltip= OptionPanel.OK=Ulo\u017e OptionPanel.path_to_automatic_saves=Cesta k automaticky ulo\u017een\u00fdm s\u00faborom OptionPanel.path_to_automatic_saves.tooltip= OptionPanel.patternsfile= OptionPanel.pl=Pl OptionPanel.placenewbranches=Umiestni nov\u00e9 vetvy OptionPanel.placenewbranches.tooltip=Kam umiestni\u0165 nov\u00e9 vetvy. Mo\u017en\u00e9 hodnoty s\u00fa 'first' (ako prv\u00e9) a 'last' (ako posledn\u00e9) OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.relative=Relat\u00edvne OptionPanel.ru=Ru OptionPanel.se=Se OptionPanel.selection_method=Met\u00f3da vyberania OptionPanel.selection_method.tooltip= OptionPanel.selection_method_by_click=Kliknut\u00edm OptionPanel.selection_method_delayed=Spomalen\u00e9 OptionPanel.selection_method_direct=Priamo OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Vzory OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.attributes=Vlastnosti OptionPanel.separator.automatic_save=Automatick\u00e9 ulo\u017eenie OptionPanel.separator.behaviour=Spr\u00e1vanie OptionPanel.separator.browser=Prezera\u010d OptionPanel.separator.commands_for_the_program=Pr\u00edkazy programu OptionPanel.separator.default_colors=\u0160tandardn\u00e9 farby OptionPanel.separator.default_fonts=\u0160tandardn\u00e9 p\u00edsma OptionPanel.separator.default_styles=\u0160tandardn\u00e9 \u0161t\u00fdly OptionPanel.separator.edit_long_node_window=Edituj dlh\u00fd uzol v okne OptionPanel.separator.files=S\u00fabory OptionPanel.separator.html_export=Export do HTML OptionPanel.separator.hyperlink_types=Druhy hyperliniek OptionPanel.separator.initial_map_size=Po\u010diato\u010dn\u00e9 rozmery mapy OptionPanel.separator.key_typing=P\u00edsanie z kl\u00e1vesnice OptionPanel.separator.language=Jazyk OptionPanel.separator.look_and_feel=V\u00fdzor a spr\u00e1vanie OptionPanel.separator.new_node_commands=Pr\u00edkazy na nov\u00fd uzol OptionPanel.separator.node_editing_commands=Pr\u00edkazy na editovanie uzla OptionPanel.separator.node_navigation_commands=Pr\u00edkazy na navig\u00e1ciu uzla OptionPanel.separator.other_defaults=Ostatn\u00e9 \u0161tandardn\u00e9 OptionPanel.separator.others=Ostatn\u00e9 kl\u00e1vesov\u00e9 skratky OptionPanel.separator.patterns=Vzory OptionPanel.separator.selection_method=Met\u00f3da vyberania OptionPanel.separator.undo=Sp\u00e4\u0165 OptionPanel.sl=Sl OptionPanel.standardbackgroundcolor=\u0160tandardn\u00e1 farba pozadia OptionPanel.standardbackgroundcolor.tooltip=\u0160tandardn\u00e1 farba pozadia vo form\u00e1te HTML OptionPanel.standardcloudcolor=\u0160tandardn\u00e1 farba oblaku OptionPanel.standardcloudcolor.tooltip=\u0160tandardn\u00e1 farba oblaku vo form\u00e1te HTML OptionPanel.standardcloudestyle=\u0160tandardn\u00fd \u0161t\u00fdl oblaku OptionPanel.standardcloudestyle.tooltip=\u0160tandardn\u00fd \u0161t\u00fdl oblaku; moment\u00e1lne iba 'bezier' OptionPanel.standardedgecolor=\u0160tandardn\u00e1 farba hrany OptionPanel.standardedgecolor.tooltip=\u0160tandardn\u00e1 farba hrany vo form\u00e1te HTML OptionPanel.standardedgestyle=\u0160tandardn\u00fd \u0161t\u00fdl hrany OptionPanel.standardedgestyle.tooltip=\u0161tandardn\u00fd \u0161t\u00fdl hrany; 'linear' alebo 'bezier' OptionPanel.standardlinkcolor=\u0160tandardn\u00e1 farba linky OptionPanel.standardlinkcolor.tooltip=\u0160tandardn\u00e1 farba linky vo form\u00e1te HTML OptionPanel.standardlinkestyle=\u0160tandardn\u00fd \u0161t\u00fdl linky OptionPanel.standardlinkestyle.tooltip=\u0160tandardn\u00fd \u0161t\u00fdl linky; moment\u00e1lne iba 'bezier' OptionPanel.standardnodecolor=\u0160tandardn\u00e1 farba uzla OptionPanel.standardnodecolor.tooltip=\u0160tandardn\u00e1 farba uzla vo form\u00e1te HTML (#\u010c\u010cZZMM v \u0161estn\u00e1stkov\u00fdch \u010d\u00edslach) OptionPanel.standardnodestyle=\u0160tandardn\u00fd \u0161t\u00fdl uzla OptionPanel.standardnodestyle.tooltip=\u0160tandardn\u00fd \u0161t\u00fdl nov\u00e9ho uzla; 'fork', 'bubble' 'as_parent' alebo 'combined' OptionPanel.standardrootnodestyle=\u0160tandardn\u00fd \u0161t\u00fdl kore\u0148ov\u00e9ho uzla OptionPanel.standardrootnodestyle.tooltip=\u0160t\u00fdl kore\u0148ov\u00e9ho uzla, ak nie je dan\u00e9 inak; 'fork' 'bubble' alebo 'combined' OptionPanel.standardselectednodecolor=\u0160tandardn\u00e1 farba ozna\u010den\u00e9ho uzla OptionPanel.standardselectednodecolor.tooltip=\u0160tandardn\u00e1 farba ozna\u010den\u00e9ho uzla vo form\u00e1te HTML (#\u010c\u010cZZMM v \u0161estn\u00e1stkov\u00fdch \u010d\u00edslach) OptionPanel.time_for_automatic_save=\u010casov\u00fd interval automatick\u00e9ho ulo\u017eenia OptionPanel.time_for_automatic_save.tooltip=\u010das medzi dvoma nasleduj\u00facimi automatick\u00fdmi ulo\u017eeniami (v milisekund\u00e1ch); automatick\u00e9 uklaanie sa vypne pomocou hodnoty 2000000000. OptionPanel.time_for_delayed_selection=\u010cas oneskorenia ozna\u010denia OptionPanel.time_for_delayed_selection.tooltip=Pauza pred ozna\u010den\u00edm uzla, ke\u010f nad n\u00edm prech\u00e1dza my\u0161 (v milisekund\u00e1ch). Nastavte t\u00fato hodnotu na 1, ak chcete pri prechode my\u0161ou ponad uzol hne\u010f ozna\u010di\u0165. OptionPanel.tr=Tr OptionPanel.undo_levels=Po\u010det n\u00e1vratov OptionPanel.undo_levels.tooltip=Ur\u010duje ko\u013eko krokov je ulo\u017een\u00fdch, aby sa dali vr\u00e1ti\u0165 pr\u00edkazom "Sp\u00e4\u0165". OptionPanel.userproperties= OptionPanel.windows=Okn\u00e1 OptionPanel.zh_TW=Zh OptionPanel.zh_CN=Zh CN page =Nastavenie strany... paste =Vlo\u017e PatternDialog.as_parent=Ako rodi\u010dovsk\u00fd uzol PatternDialog.bezier= PatternDialog.bubble=bublina PatternDialog.childpattern=Vzor poduzla PatternDialog.childpattern.tooltip=Vybran\u00fd vzor je pou\u017eit\u00fd na v\u0161etky poduzly. PatternDialog.clear_all_setters=Prepni v\u0161etko PatternDialog.clear_all_setters.tooltip=Zapne alebo vypne v\u0161etky indik\u00e1tory zmeny. PatternDialog.ColorProperty.ResetColor= PatternDialog.combined=kombinovan\u00e9 PatternDialog.edgecolor=Farba hrany PatternDialog.edgecolor.tooltip=Vlastnos\u0165 hrany rodi\u010dovsk\u00e9ho uzla (sa pou\u017eije aj na v\u0161etky podzuly) PatternDialog.edgestyle=\u0160t\u00fdl hrany PatternDialog.edgestyle.tooltip=Vlastnos\u0165 hrany rodi\u010dovsk\u00e9ho uzla (sa pou\u017eije aj na v\u0161etky podzuly) PatternDialog.edgewidth=Hr\u00fabka hrany PatternDialog.edgewidth.tooltip=Vlastnos\u0165 hrany rodi\u010dovsk\u00e9ho uzla (sa pou\u017eije aj na v\u0161etky podzuly) PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_parent=Ako rodi\u010dovsk\u00fd uzol PatternDialog.EdgeWidth_thin=tenk\u00e9 PatternDialog.fork=vetva PatternDialog.icon=Ikona PatternDialog.icon.tooltip=Ak sa pou\u017eije, uzol bude ma\u0165 pr\u00e1ve t\u00fato ikonu. PatternDialog.linear=line\u00e1rny PatternDialog.nodebackgroundcolor=Farba pozadia uzla PatternDialog.nodebackgroundcolor.tooltip= PatternDialog.nodecolor=Farba uzla PatternDialog.nodecolor.tooltip= PatternDialog.nodefontbold=Tu\u010dn\u00e9 p\u00edsmo PatternDialog.nodefontbold.tooltip= PatternDialog.nodefontitalic=Kurz\u00edva PatternDialog.nodefontitalic.tooltip= PatternDialog.nodefontname=P\u00edsmo uzla PatternDialog.nodefontname.tooltip= PatternDialog.nodefontsize=P\u00edsmo uzla PatternDialog.nodefontsize.tooltip= PatternDialog.nodestyle=\u0160t\u00fdl uzla PatternDialog.nodestyle.tooltip= PatternDialog.nodetext=Text uzla PatternDialog.nodetext.tooltip= PatternDialog.patternname=N\u00e1zov PatternDialog.patternname.tooltip=Jedine\u010dn\u00fd n\u00e1zov vzoru PatternDialog.separator.EdgeControls=Hrany PatternDialog.separator.General=V\u0161eobecn\u00e9 PatternDialog.separator.NodeColors=Farby uzlov PatternDialog.separator.NodeFont=P\u00edsmo uzla PatternDialog.separator.NodeStyles=\u0160t\u00fdly uzlov PatternDialog.set_property_text=Zme\u0148 PatternDialog.set_property_text.tooltip=Pr\u00e1zdne: nechyta\u0165; m\u00ednus=zru\u0161 vlastnos\u0165 (nastav \u0161tandardn\u00e9 hodnoty); plus=zme\u0148 vlastnos\u0165 PatternDialog.sharp_bezier= PatternDialog.sharp_linear= PatternDialog.undefined_font=Nedefinovan\u00e9 p\u00edsmo PatternNewNameProperty=Nov\u00fd vzor PatternToString.backgroundColor=Farba pozadia PatternToString.color= PatternToString.NodeFontSize=Ve\u013ekos\u0165 p\u00edsma plugins/ExportPdf.xml_documentation =Exportuj do PDF plugins/ExportPdf.xml_name =Ako PDF... plugins/ExportSvg.xml_documentation =Exportuj do SVG plugins/ExportSvg.xml_name =Ako SVG... plugins/FreemindHelp.xml_documentation =Podrobn\u00e1 pomoc k programu FreeMind plugins/FreemindHelp.xml_name =Pomoc... plugins/NodeList.xml_documentation=Uk\u00e1\u017ee v\u0161etky uzly s d\u00e1tumami vytvorenia/zmeny plugins/NodeList.xml_name=Uk\u00e1\u017e hist\u00f3riu mapy... plugins/RemoveReminder.xml_documentation=Odstr\u00e1ni pozn\u00e1mku z uzla plugins/RemoveReminder.xml_name=Odstr\u00e1\u0148 pozn\u00e1mku plugins/ScriptingEngine.xml_documentation=Vyhodnot\u00ed v\u0161etky vlo\u017een\u00e9 skripty (rekurz\u00edvne, najprv listy). plugins/ScriptingEngine.xml_name=Vyhodno\u0165 plugins/TimeList.xml_Created=Vytvoren\u00e9 plugins/TimeList.xml_Date=D\u00e1tum plugins/TimeList.xml_documentation=Zobraz v\u0161etky napl\u00e1novan\u00e9 \u010dasy a zodpovedaj\u00face uzly. plugins/TimeList.xml_Icons=Ikony plugins/TimeList.xml_Modified=Zmenen\u00e9 plugins/TimeList.xml_name=Zobraz zoznam pl\u00e1nova\u010da \u010dasu... plugins/TimeList.xml_Text=Text plugins/TimeManagement.xml_appendButton=Pripoj d\u00e1tum k ozna\u010den\u00fdm uzlom plugins/TimeManagement.xml_Cancel=Storno plugins/TimeManagement.xml_cancelButton=Storno plugins/TimeManagement.xml_documentation=Zobraz\u00ed kalend\u00e1rov\u00fd modul od Kai Toedter. plugins/TimeManagement.xml_Export=Exportuj ozna\u010den\u00e9 uzly plugins/TimeManagement.xml_Find=N\u00e1jdi plugins/TimeManagement.xml_Goto=Cho\u010f na plugins/TimeManagement.xml_hour=Hodina: plugins/TimeManagement.xml_minute=Min\u00fata: plugins/TimeManagement.xml_name=Zobraz kalend\u00e1r... plugins/TimeManagement.xml_reminderButton=Pripome\u0148 mi v tento d\u00e1tum plugins/TimeManagement.xml_reminderButton_tooltip=Po stla\u010den\u00ed sa napl\u00e1nuje \u010dasova\u010d na dan\u00fd d\u00e1tum. Potom v\u00e1s upozorn\u00ed blikaj\u00faca ikona.
Ak zavriete mapu, \u010dasova\u010de sa znovu aktivuj\u00fa nabud\u00face po jej otvoren\u00ed. plugins/TimeManagement.xml_reminderNode_onlyOneDate= plugins/TimeManagement.xml_reminderNode_showNode=Vypr\u0161al \u010das pre uzol " {0} ". Chcete po\u010dka\u0165 e\u0161te desa\u0165 min\u00fat? plugins/TimeManagement.xml_reminderNode_tooltip=Napl\u00e1novan\u00e1 pripomienka na {0,date} {0,time}. plugins/TimeManagement.xml_removeReminderButton =Odstr\u00e1\u0148 pripomienku plugins/TimeManagement.xml_removeReminderButton_tooltip =Odstr\u00e1\u0148 v\u0161etky pripomienky spojen\u00e9 s ozna\u010den\u00fdmi uzlami. plugins/TimeManagement.xml_Replace=Nahra\u010f plugins/TimeManagement.xml_Replace_All=Nahra\u010f v\u0161etko plugins/TimeManagement.xml_Replace_Selected=Nahra\u010f ozna\u010den\u00e9 plugins/TimeManagement.xml_Select=Vyber plugins/TimeManagement.xml_todayButton=Dnes plugins/TimeManagement.xml_WindowTitle=Riadenie \u010dasu plugins/TimeManagementReminder.xml_documentation= plugins/TimeManagementReminder.xml_name= preferences =Nastavenia previous_map =Predch\u00e1dzaj\u00faca mapa print =Tla\u010d... print_preview =Uk\u00e1\u017eka tla\u010de... printing_settings =Mierka tla\u010de property_dialog=Nastavenia... quit =Ukon\u010di read_only =Iba na \u010d\u00edtanie redo =Znova remove_all_icons =Odstr\u00e1\u0148 v\u0161etky ikony remove_arrow_link =Odstr\u00e1\u0148 \u0161\u00edpku remove_last_icon =Odstr\u00e1\u0148 posledn\u00fa ikonu remove_node =Odstr\u00e1\u0148 uzol remove_node_background_color =Odstr\u00e1\u0148 farbu pozadia uzlu repair_link =Oprav linku repair_link_question =Nem\u00f4\u017eem na\u010d\u00edta\u0165 linkovan\u00fa mapu. Oprav\u00edte linku ru\u010dne? replace=Nahra\u010f reset_node_position=Vr\u00e1\u0165 poz\u00edciu RevertAction=Vr\u00e1\u0165 save =Ulo\u017e save_as =Ulo\u017e ako... save_failed =Nepodarilo sa ulo\u017ei\u0165 mapu $1. save_unsaved =Ulo\u017ei\u0165 nasleduj\u00facu mapu my\u0161lienok? : saved =Ulo\u017een\u00e9 scheme_evaluate =Vyhodno\u0165! select_all=Ozna\u010d v\u0161etky vidite\u013en\u00e9 select_branch=Ozna\u010d vidite\u013en\u00fa vetvu select_favorites_folder =Vyberte adres\u00e1r, kde sa nach\u00e1dzaj\u00fa va\u0161e ob\u013e\u00faben\u00e9 polo\u017eky select_folder_for_importing =Vyberte adres\u00e1r na import selection_method_by_click =Ozna\u010dte jednoduch\u00fdm kliknut\u00edm selection_method_delayed=Spomalen\u00e9 automatick\u00e9 ozna\u010dovanie selection_method_direct =Ozna\u010dte uk\u00e1zan\u00edm set_image_by_filechooser =Obr\u00e1zok (vyberte s\u00fabor alebo linku)... set_link_by_filechooser =Hyperlinka (vyberte s\u00fabor)... set_link_by_textfield =Hyperlinka (zadajte text)... sharp_bezier =Ostr\u00e1 bezi\u00e9rova sharp_linear =Ostr\u00e1 line\u00e1rna split =Rozde\u013e style =\u0160t\u00fdl toggle_bold_branch =Prepni tu\u010dn\u00e9 toggle_children_folded =Rozba\u013e / Zba\u013e deti toggle_folded =Prepni zbalen\u00e9 toggle_italic_branch =Prepni kurz\u00edvu toggle_left_toolbar =Prepni \u013eav\u00e9 menu toggle_menubar =Prepni menu toggle_toolbar =Prepni n\u00e1strojov\u00fa li\u0161tu undefined_error =Nastava ne\u010dakan\u00e1 chyba. Pros\u00edm pok\u00faste sa nahl\u00e1si\u0165 chybov\u00fa spr\u00e1vu. underline =Pod\u010diarkni underlined =Pod\u010diarknut\u00e9 undo =Sp\u00e4\u0165 unfold =Rozba\u013e url_error =Toto URL je nespr\u00e1vne zap\u00edsan\u00e9! url_load_error =Neviem na\u010d\u00edta\u0165 mapu z URL: use_plain_text =Pou\u017ei \u010dist\u00fd text use_rich_formatting =Pou\u017ei form\u00e1tovan\u00fd text user_defined_zoom =Zadan\u00fd u\u017e\u00edvate\u013eom. user_defined_zoom_status_bar =Men\u00edm zaostrenie na hodnotu zadan\u00fa u\u017e\u00edvate\u013eom: {0}%. user_zoom =Zadajte koeficient zaostrenia (0.0 - 2.0): width =\u0160\u00edrka yes =\u00c1no zoom_in =Zv\u00e4\u010d\u0161i zaostrenie zoom_out =Zmen\u0161i zaostrenie OptionPanel.eu=Eu freemind-0.9.0/freemind/Resources_ar.properties0000644000000000000000000020472411527433212020363 0ustar rootroot#! #! created/edited by Popeye version 0.54 (popeye.sourceforge.net) #! encoding:ISO-8859-1 # submitted by Nasser Almesad (nasser_almesad) \ufeffabout = about =\u062d\u0648\u0644 about_text = Joerg Mueller's FreeMind\nTaking the Concept-Mapping approach to Human-Computer Interface design.\nCopyright (C) 2000-2010 Joerg Mueller and others.\nThis program is free software (GPL)\nHome: http://freemind.sourceforge.net/\nHave fun!\nVersion: accessories/plugins/AutomaticLayout.properties_documentation= #fc, 15.11.2004: accessories/plugins/AutomaticLayout.properties_documentation = Fixes the layout of the map.
The first level is black, the second blue, etc. accessories/plugins/AutomaticLayout.properties_name= accessories/plugins/AutomaticLayout.properties_name =\u062a\u0635\u0645\u064a\u0645 \u062a\u0644\u0642\u0627\u0626\u064a accessories/plugins/BlinkingNodeHook.properties_documentation= accessories/plugins/BlinkingNodeHook.properties_documentation = This makes the node blinking. But be careful. Do not associate it to many nodes, and not with other automatic formattings to the same node accessories/plugins/BlinkingNodeHook.properties_name= accessories/plugins/BlinkingNodeHook.properties_name =\u0639\u0646\u0635\u0631 \u064a\u0648\u0645\u0636 accessories/plugins/CreationModificationPlugin.properties_documentation=This function keeps track of node creation and modification times. accessories/plugins/CreationModificationPlugin.properties_name= accessories/plugins/CreationModificationPlugin.properties_name =\u0639\u0631\u0636 \u0648\u0642\u062a \u0627\u0644\u062a\u0639\u062f\u064a\u0644 accessories/plugins/EncryptNode.properties_0= accessories/plugins/EncryptNode.properties_0 =\u0627\u062e\u062a\u0627\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u0634\u0641\u0631 accessories/plugins/EncryptNode.properties_1= accessories/plugins/EncryptNode.properties_1 =\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0645\u062a\u0637\u0627\u0628\u0642\u0629 \u0623\u0648 \u0627\u0646\u0647\u0627 \u0642\u0635\u064a\u0631\u0629 accessories/plugins/EncryptNode.properties_2= accessories/plugins/EncryptNode.properties_2 =\u0625\u062f\u062e\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 accessories/plugins/EncryptNode.properties_3= accessories/plugins/EncryptNode.properties_3 =\u0623\u0639\u062f \u0627\u062f\u062e\u0627\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 accessories/plugins/EncryptNode.properties_4= accessories/plugins/EncryptNode.properties_4 =\u0627\u062f\u062e\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 accessories/plugins/EncryptNode.properties_5= accessories/plugins/EncryptNode.properties_5 = Remember, that the strength of the encryption
depends nearly completely on the quality of your password. accessories/plugins/EncryptNode.properties_6= accessories/plugins/EncryptNode.properties_6 =\u0645\u0648\u0627\u0641\u0642 accessories/plugins/EncryptNode.properties_7= accessories/plugins/EncryptNode.properties_7 =\u0625\u0644\u063a\u0627\u0621 accessories/plugins/EncryptNode.properties_documentation= accessories/plugins/EncryptNode.properties_documentation =\u0627\u062f\u0631\u0627\u062c \u0639\u0646\u0635\u0631 \u062c\u062f\u064a\u062f \u0627\u0644\u0630\u064a \u0639\u0646\u0627\u0635\u0631\u0629 \u0627\u0644\u0623\u0628\u0646\u0627\u0621 \u0645\u0634\u0641\u0631\u064a\u0646 accessories/plugins/EncryptNode.properties_insert_encrypted_node_first= accessories/plugins/EncryptNode.properties_insert_encrypted_node_first =\u064a\u0645\u0643\u0646\u0643 \u0641\u0642\u0637 \u062a\u0628\u062f\u064a\u0644 \u062d\u0627\u0644\u0629 \u0627\u0644\u062a\u0634\u0641\u064a\u0631 \u0644\u0639\u0646\u0635\u0631 \u0645\u0634\u0641\u0631. \u0642\u0645 \u0628\u0625\u062f\u0631\u0627\u062c \u0639\u0646\u0635\u0631 \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u062f\u0648\u0627\u062a accessories/plugins/EncryptNode.properties_name= accessories/plugins/EncryptNode.properties_name =\u0625\u0646\u0634\u0627\u0621 \u0639\u0646\u0635\u0631 \u0645\u0634\u0641\u0631 accessories/plugins/EncryptNode.properties_select_me= accessories/plugins/EncryptNode.properties_select_me =\u0642\u0645 \u0628\u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0644\u0645\u062a\u0627\u0628\u0639\u0629 accessories/plugins/EncryptNode.properties_wrong_password= accessories/plugins/EncryptNode.properties_wrong_password =\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EnterPassword.properties_name= # fc, 14.12.2004: accessories/plugins/EnterPassword.properties_name =\u0641\u062a\u062d \ \u0642\u0641\u0644 \u0627\u0644\u062a\u0634\u0641\u064a\u0631 accessories/plugins/ExportToImage_JPEG.properties_documentation= accessories/plugins/ExportToImage_JPEG.properties_documentation =\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0639\u0644\u0649 \u0647\u064a\u0626\u0629 \u0635\u0648\u0631\u0629 JPEG accessories/plugins/ExportToImage_JPEG.properties_name= accessories/plugins/ExportToImage_JPEG.properties_name =\u0628\u062a\u0646\u0633\u064a\u0642 JPEG... accessories/plugins/ExportToImage_PNG.properties_documentation= accessories/plugins/ExportToImage_PNG.properties_documentation =\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0639\u0644\u0649 \u0647\u064a\u0626\u0629 \u0635\u0648\u0631\u0629 PNG accessories/plugins/ExportToImage_PNG.properties_name= accessories/plugins/ExportToImage_PNG.properties_name =\u0628\u062a\u0646\u0633\u064a\u0642 PNG... # fc, 5.7.2005: accessories/plugins/ExportToOoWriter.properties_documentation=Unfolded nodes form the structure, folded nodes the content of the document. accessories/plugins/ExportToOoWriter.properties_name=\u0628\u062a\u0646\u0633\u064a\u0642 \u0648\u062b\u064a\u0642\u0629 Open Office accessories/plugins/ExportWithXSLT.properties_documentation= accessories/plugins/ExportWithXSLT.properties_documentation = This is an uniform export method using XSLT scripts. accessories/plugins/ExportWithXSLT.properties_name= accessories/plugins/ExportWithXSLT.properties_name =\u0628\u0625\u0633\u062a\u062e\u062f\u0627\u0645 XSLT... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_name= accessories/plugins/ExportWithXSLT_HTML.properties_name =\u0628\u062a\u0646\u0633\u064a\u0642 XHTML (JavaScript version)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_name= accessories/plugins/ExportWithXSLT_HTML3.properties_name =\u0628\u062a\u0646\u0633\u064a\u0642 XHTML (Clickable map image version)... accessories/plugins/FitToPage.properties_documentation= accessories/plugins/FitToPage.properties_documentation =\u0636\u0628\u0637 \u0627\u0644\u062a\u0643\u0628\u064a\u0631 \u062d\u062a\u0649 \u062a\u0645\u0644\u0621 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 accessories/plugins/FitToPage.properties_name= accessories/plugins/FitToPage.properties_name =\u0645\u0644\u0621 \u0627\u0644\u0635\u0641\u062d\u0629 accessories/plugins/FoldAll.properties_documentation= accessories/plugins/FoldAll.properties_documentation = Folds the selected nodes and all their children. accessories/plugins/FoldAll.properties_name= accessories/plugins/FoldAll.properties_name =\u0637\u064a \u0627\u0644\u062c\u0645\u064a\u0639 accessories/plugins/FoldOneLevel.properties_documentation= accessories/plugins/FoldOneLevel.properties_documentation = Folds the selected nodes by one level. accessories/plugins/FoldOneLevel.properties_name= accessories/plugins/FoldOneLevel.properties_name =\u0637\u064a \u0645\u0633\u062a\u0648\u0649 \u0648\u0627\u062d\u062f accessories/plugins/FormatCopy.properties_documentation= accessories/plugins/FormatCopy.properties_documentation = Copies the format of a node. accessories/plugins/FormatCopy.properties_name= accessories/plugins/FormatCopy.properties_name =\u0646\u0633\u062e \u0627\u0644\u062a\u0646\u0633\u064a\u0642 accessories/plugins/FormatPaste.properties_documentation= accessories/plugins/FormatPaste.properties_documentation = Pastes the format of a node. accessories/plugins/FormatPaste.properties_name= accessories/plugins/FormatPaste.properties_name =\u0644\u0635\u0642 \u0627\u0644\u062a\u0646\u0633\u064a\u0642 accessories/plugins/FormularEditor.properties_documentation= accessories/plugins/FormularEditor.properties_documentation = Associates a simple formular editor to the current note. accessories/plugins/FormularEditor.properties_name= accessories/plugins/FormularEditor.properties_name =\u0645\u062d\u0631\u0631 \u0627\u0644\u062a\u0646\u0633\u064a\u0642 # fc, 18.2.2005: accessories/plugins/HierarchicalIcons.properties_documentation=If one of the (grand)children of me has an icon, I will show this icon in little format, too. accessories/plugins/HierarchicalIcons.properties_name=\u0639\u0631\u0636 \u0627\u0644\u0631\u0645\u0648\u0632 \u0628\u0634\u0643\u0644 \u0647\u0631\u0645\u064a accessories/plugins/IconSelectionPlugin.properties_documentation= accessories/plugins/IconSelectionPlugin.properties_documentation = Here you can select an icon using a subwindow. accessories/plugins/IconSelectionPlugin.properties_name= accessories/plugins/IconSelectionPlugin.properties_name =\u0627\u062e\u062a\u064a\u0627\u0631 \u0631\u0645\u0632 # fc, 3.7.2005: accessories/plugins/ImportMindmanagerFiles.properties_name=MindManager X5 Map... accessories/plugins/NewEncryptedMap.properties_documentation= accessories/plugins/NewEncryptedMap.properties_documentation =\u0625\u0646\u0634\u0627\u0621 \u062e\u0631\u064a\u0637\u0629 \u062c\u062f\u064a\u062f\u0629 \u0645\u0634\u0641\u0631\u0629 accessories/plugins/NewEncryptedMap.properties_name= accessories/plugins/NewEncryptedMap.properties_name =\u0625\u0646\u0634\u0627\u0621 \u062e\u0631\u064a\u0637\u0629 \u062c\u062f\u064a\u062f\u0629 \u0645\u0634\u0641\u0631\u0629 accessories/plugins/NewParentNode.properties_documentation= accessories/plugins/NewParentNode.properties_documentation = All selected are sent to a new parent. accessories/plugins/NewParentNode.properties_name= accessories/plugins/NewParentNode.properties_name =\u0623\u0628 \u062c\u062f\u064a\u062f accessories/plugins/NodeNote.properties_documentation= accessories/plugins/NodeNote.properties_documentation = Associates a simple note editor to the current note. accessories/plugins/NodeNote.properties_name= accessories/plugins/NodeNote.properties_name =\u0645\u0644\u0627\u062d\u0638\u0629 accessories/plugins/PMCalculation.properties_documentation=\u0645\u0644\u0627\u062d\u0638\u0629 accessories/plugins/PMCalculation.properties_documentation = Calculates the efforts for different tasks. accessories/plugins/PMCalculation.properties_name= accessories/plugins/PMCalculation.properties_name = PMCalculation accessories/plugins/RevisionPlugin.properties_documentation= accessories/plugins/RevisionPlugin.properties_documentation = Marks the background of each changed node. accessories/plugins/RevisionPlugin.properties_name= accessories/plugins/RevisionPlugin.properties_name =\u0639\u0631\u0636 \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0627\u062a \u0628\u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0627\u0635\u0641\u0631 accessories/plugins/UnfoldAll.properties_documentation= accessories/plugins/UnfoldAll.properties_documentation = Unfolds the selected nodes and all their children. accessories/plugins/UnfoldAll.properties_name= accessories/plugins/UnfoldAll.properties_name =\u0628\u0633\u0637 \u0627\u0644\u062c\u0645\u064a\u0639 accessories/plugins/UnfoldOneLevel.properties_documentation= accessories/plugins/UnfoldOneLevel.properties_documentation = Unfolds the selected nodes by one level. accessories/plugins/UnfoldOneLevel.properties_name= accessories/plugins/UnfoldOneLevel.properties_name =\u0628\u0633\u0637 \u0645\u0633\u062a\u0648\u0649 \u0648\u0627\u062d\u062f add_link= # added at 09.10.2004 add_link =\u0625\u0636\u0627\u0641\u0629 \u0631\u0627\u0628\u0637 \u0635\u0648\u0631\u064a add_local_link= add_local_link =\u0625\u0636\u0627\u0641\u0629 \u0631\u0627\u0628\u0637 \u0645\u062d\u0644\u064a antialias_all = Antialias All antialias_edges = Antialias Edges antialias_none = Antialias None arrow_link_color = Arrow Link Color... as_parent= as_parent =\u0643\u0623\u0628 attributes_apply= attributes_attribute= attributes_close= attributes_okey= attributes_refresh= attributes_visible= background =\u0627\u0644\u062e\u0644\u0641\u064a\u0629 bezier =\u0645\u0646\u062d\u0646\u0649 blend_color =\u0644\u0648\u0646 \u0634\u0641\u0627\u0641 bold =\u0639\u0631\u064a\u0636 boldify_branch = Boldify branch =\u0641\u0631\u0639 bubble = \u0641\u0642\u0627\u0639\u0629 cancel =\u0625\u0644\u063a\u0627\u0621 cannot_add_parent_diff_parents= cannot_add_parent_diff_parents = All nodes must have the same parent to use this function. cannot_add_parent_to_root= cannot_add_parent_to_root =\u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0627\u0633\u0627\u0633\u064a \u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u062a\u0647 \u0625\u0644\u0649 \u0623\u0628 \u062c\u062f\u064a\u062f cannot_join_nodes_with_children =\u0644\u0627 \u064a\u0645\u0643\u0646 \u0631\u0628\u0637 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0645\u0639 \u0627\u0644\u0627\u0628\u0646\u0627\u0621 cannot_move_to_child= # fc, 28.11.2004: cannot_move_to_child =\u0644\u0627 \u064a\u0645\u0643\u0646 \u0646\u0642\u0644 \u0627\u0644\u0639\u0646\u0635\u0631 \u0644\u0623\u062d\u062f \u0627\u0628\u0646\u0627\u0621\u0647 center =\u0648\u0633\u0637 change_arrows_in_arrow_link= change_arrows_in_arrow_link = Change Arrows of Arrow Link change_link_arrows=change_link_arrows choose_background_color=\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629 choose_background_color =\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629 choose_cloud_color=\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 choose_cloud_color =\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 choose_edge_color=\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f # added at 25.8.2004, fc: choose_edge_color =\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f choose_node_background_color=\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0639\u0646\u0635\u0631 choose_node_background_color =\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0639\u0646\u0635\u0631 choose_node_color=\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 choose_node_color =\u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 close =\u0625\u063a\u0644\u0627\u0642 cloud =\u0633\u062d\u0627\u0628\u0629 cloud_color =\u0644\u0648\u0646 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 combined= #new from 30.08.2004, Dimitri combined =\u0645\u0648\u062d\u062f copy =\u0646\u0633\u062e copy_single =\u0646\u0633\u062e \u0641\u0631\u062f\u064a cut =\u0642\u0635 decrease_branch_font_size =\u062e\u0637 \u0635\u063a\u064a\u0631 decrease_node_font_size =\u062e\u0637 \u0635\u063a\u064a\u0631 delete_child= delete_child =\u062d\u0630\u0641 \u0627\u0644\u0639\u0646\u0635\u0631 documentation =\u0627\u0644\u0648\u062b\u0627\u0626\u0642 edge =\u0627\u0644\u062d\u062f\u0648\u062f edge_color =\u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f edge_style=\u0646\u0645\u0637 \u0627\u0644\u062d\u062f\u0648\u062f edge_style =\u0646\u0645\u0637 \u0627\u0644\u062d\u062f\u0648\u062f edge_width=\u0639\u0631\u0636 \u0627\u0644\u062d\u062f\u0648\u062f # Beware: "Edge Width " and "Edge Style " must end with space. edge_width =\u0639\u0631\u0636 \u0627\u0644\u062d\u062f\u0648\u062f edge_width_parent =\u0627\u0644\u0627\u0628 edge_width_thin = \u0631\u0642\u064a\u0642 edit =\u062a\u062d\u0631\u064a\u0631 edit_attributes =\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 edit_link_manually =\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u062a\u0634\u0639\u0628\u064a \u064a\u062f\u0648\u064a\u0627\u064b edit_long_node =\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0637\u0648\u064a\u0644\u0629 edit_node=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0635\u0631 edit_node =\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0635\u0631 enter_base_url =\u0633\u064a\u062a\u0645 \u0644\u0635\u0642 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0646\u0633\u0628\u064a. \u0627\u062f\u062e\u0644 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0627\u0633\u0627\u0633\u064a enter_confirms =\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0625\u062f\u062e\u0627\u0644 error_creating_directory= error_creating_directory =\u0644\u0627\u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0645\u062c\u0644\u062f \u0627\u0627\u062a\u0635\u062f\u064a\u0631 #export_branch =\u0641\u0631\u0639 export_branch_to_html =\u0641\u0631\u0639 \u0628\u062a\u0646\u0633\u064a\u0642 HTML export_pdf_text= export_pdf_text = Portable Document Format (PDF) export_svg_text= export_svg_text = Scalable Vector Graphic (SVG) export_to_html =\u0628\u062a\u0646\u0633\u064a\u0642 HTML extension_menu =\u0627\u0644\u0646\u0645\u0637 \u0627\u0644\u0645\u0627\u062f\u064a # new from 14.12.2003, fc FAQ =\u0627\u0644\u0627\u0633\u0626\u0644\u0629 \u0627\u0644\u0634\u0627\u0626\u0639\u0629 file =\u0645\u0644\u0641 file_already_exists= file_already_exists = The file {0} already exists. Do you want to overwrite it? file_not_found = File $1 not found filter_add= filter_and= filter_apply= filter_contains= filter_delete= filter_does_not_exist= filter_edit= filter_enter_value= filter_exist= filter_icon= filter_ignore_case= filter_is_equal_to= filter_is_not_equal_to= filter_node= filter_not= filter_or= filter_select= filter_show_ancestors= filter_show_descenders= filter_show_flat= filter_toolbar= filter_unfold_ancestors= find =\u0628\u062d\u062b find_next =...\u0628\u062d\u062b \u0627\u0644\u062a\u0627\u0644\u064a find_what=\u0627\u0644\u0628\u062d\u062b \u0639\u0646 find_what =\u0627\u0644\u0628\u062d\u062b \u0639\u0646 fit_to_page =\u0645\u0644\u0621 \u0627\u0644\u0635\u0641\u062d\u0629 fold =\u0637\u064a # fc, 12.6.2005: correction, please remove the other translation of "follow_link" above follow_link =\u0641\u062a\u062d \u0631\u0627\u0628\u0637 font =\u062e\u0637 font_family= font_family =\u0627\u0644\u062e\u0637\u0648\u0637 font_size=\u062d\u062c\u0645 \u0627\u0644\u062e\u0637 font_size =\u062d\u062c\u0645 \u0627\u0644\u062e\u0637 fork = Fork format_menu_edge_styles=\u0646\u0645\u0637 \u0627\u0644\u062d\u062f\u0648\u062f format_menu_edge_widths=\u0639\u0631\u0636 \u0627\u0644\u062d\u062f\u0648\u062f # the prefix for the reconstructed map (revert + undo). freemind_reverted=Freemind_Reverted_ goto_link_node_action= goto_link_node_action =\u0627\u0644\u0630\u0647\u0627\u0628 \u0644\u0644\u0631\u0627\u0628\u0637 GrabKeyDialog.common.cancel=\u0625\u0644\u063a\u0627\u0621 GrabKeyDialog.common.ok=\u0645\u0648\u0627\u0641\u0642 GrabKeyDialog.grab-key.assigned-to=\u062a\u0639\u064a\u064a\u0646 \u0625\u0644\u0649 GrabKeyDialog.grab-key.assigned-to.none=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u062a\u0639\u064a\u064a\u0646 GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=\u0645\u0633\u062d GrabKeyDialog.grab-key.remove=\u062d\u0630\u0641 GrabKeyDialog.grab-key.remove-ask=\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0630\u0641 \u0627\u0644\u0627\u062e\u062a\u0635\u0627\u0631\u061f # fc, 12.5.2005: GrabKeyDialog.grab-key.title=\u0625\u062f\u062e\u0627\u0644 \u0645\u0641\u062a\u0627\u062d \u062c\u062f\u064a\u062f help =\u0645\u0633\u0627\u0639\u062f\u0629 html_export_based_on_headings =\u062a\u0635\u062f\u064a\u0631 HTML - \u0628\u0646\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 html_export_fold_all =\u062a\u0635\u062f\u064a\u0631 HTML - \u0637\u064a \u0627\u0644\u062c\u0645\u064a\u0639 html_export_fold_currently_folded =\u062a\u0635\u062f\u064a\u0631 HTML - \u0637\u064a \u0627\u0644\u0645\u062c\u0644\u062f \u0627\u0644\u062d\u0627\u0644\u064a html_export_no_folding =\u062a\u0635\u062f\u064a\u0631 HTML - \u0628\u062f\u0648\u0646 \u0637\u064a icon_attach =\u0627\u0646\u0638\u0631 \u0647\u0646\u0627 icon_back =\u062e\u0644\u0641 icon_bell =\u062a\u0630\u0643\u0631 icon_bookmark =\u0645\u0645\u062a\u0627\u0632 icon_button_cancel =\u063a\u064a\u0631 \u0645\u0648\u0627\u0641\u0642 icon_button_ok =\u0645\u0648\u0627\u0642\u0641 icon_clanbomber =\u062e\u0637\u0631 icon_desktop_new =\u0644\u0627 \u062a\u0646\u0633\u0649 icon_flag =\u0639\u0644\u0645 icon_forward =\u0627\u0645\u0627\u0645 icon_full-1= # fc, 1.3.2005: icon_full-1 =\u0623\u0648\u0644\u0648\u0628\u0629 1 icon_full-2= icon_full-2 =\u0623\u0648\u0644\u0648\u0628\u0629 2 icon_full-3= icon_full-3 =\u0623\u0648\u0644\u0648\u0628\u0629 3 icon_full-4= icon_full-4 =\u0623\u0648\u0644\u0648\u0628\u0629 4 icon_full-5= icon_full-5 =\u0623\u0648\u0644\u0648\u0628\u0629 5 icon_full-6= icon_full-6 =\u0623\u0648\u0644\u0648\u0628\u0629 6 icon_full-7= icon_full-7 =\u0623\u0648\u0644\u0648\u0628\u0629 7 icon_gohome =\u0628\u064a\u062a icon_help =\u0633\u0624\u0627\u0644 icon_idea= icon_idea =\u0641\u0643\u0631\u0629 icon_kaddressbook =\u0647\u0627\u062a\u0641 icon_knotify =\u0645\u0648\u0633\u064a\u0642\u0649 icon_korn= icon_korn =\u0635\u0646\u062f\u0648\u0642 \u0628\u0631\u064a\u062f icon_ksmiletris =\u0623\u0646\u0627 \u0633\u0639\u064a\u062f icon_licq =\u0644\u0637\u064a\u0641 icon_Mail =\u0628\u0631\u064a\u062f # Daniel Polansky: This way of maintaining icon text # will ultimately lead to unbearable overheads. icon_menu =\u0631\u0645\u0648\u0632 icon_messagebox_warning =\u0645\u0647\u0645 icon_password =\u0645\u0642\u062a\u0627\u062d icon_pencil =\u0644\u0644\u062a\u062f\u0642\u064a\u0642 icon_penguin = Linux icon_stop =\u0648\u0642\u0648\u0641 icon_wizard =\u0633\u062d\u0631\u064a icon_xmag =\u0646\u0642\u0627\u0634 import =\u0627\u0633\u062a\u064a\u0631\u0627\u062f import_branch =\u0641\u0631\u0639... import_explorer_favorites =\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0643\u0634\u0641 import_folder_structure =\u0628\u0646\u064a\u0629 \u0627\u0644\u0645\u062c\u0644\u062f... import_linked_branch =\u0641\u0631\u0639 \u0645\u0631\u062a\u0628\u0637 import_linked_branch_no_link= # add at 16.9.2004, fc: import_linked_branch_no_link =\u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u062d\u062f\u062f \u0644\u0627 \u064a\u062d\u0648\u064a \u0631\u0627\u0628\u0637 \u0644\u0644\u0631\u062c\u0648\u0639 \u0625\u0644\u064a\u0647 import_linked_branch_without_root= import_linked_branch_without_root =(\u0641\u0631\u0639 \u0645\u0631\u062a\u0628\u0637 ) \u0628\u062f\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0623\u0633\u0627\u0633\u064a increase_branch_font_size =\u062e\u0637 \u0643\u0628\u064a\u0631 increase_node_font_size =\u062e\u0637 \u0643\u0628\u064a\u0631 italic =\u0645\u0627\u0626\u0644 italicise_branch =\u0645\u0627\u0626\u0644 join_nodes =\u0631\u0628\u0637 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 less_than_two_selected_nodes= less_than_two_selected_nodes =\u064a\u062c\u0628 \u062a\u062d\u062f\u064a\u062f \u0639\u0646\u0635\u0631\u064a\u0646 \u0639\u0644\u0649 \u0627\u0644\u0627\u0642\u0644 \u0644\u064a\u062a\u0645 \u0627\u0644\u0631\u0628\u0637 license =\u062a\u0631\u062e\u064a\u0635 license_text= license_text = FreeMind - A Program for creating and viewing Mindmaps\nCopyright (C) 2000-2010 Joerg Mueller \nSee COPYING for Details\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. linear =\u062e\u0637\u064a link_not_available_any_more= link_not_available_any_more =\u0627\u0644\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d. \u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0639\u0646\u0635\u0631 locking_failed_by_open = Locking of the map $1 failed. Opening as read-only. locking_failed_by_save_as = Locking of the map $1 failed. Action Save As aborted. locking_old_lock_removed = The map $1 was locked by the user $2. The lock has been removed because it is old. lots_of_links_warning =\u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0639\u062f\u064a\u062f \u0645\u0646 \u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0644\u0646\u0641\u0633 \u0627\u0644\u0639\u0646\u0635\u0631. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0642\u064a\u0627\u0645 \u0628\u0630\u0644\u0643\u061f map_already_exists =\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0645\u0648\u062c\u0648\u062f\u0629 \u0645\u0633\u0628\u0642\u0627\u064b. \u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0633\u062a\u0628\u062f\u0627\u0644\u0647\u0627\u061f map_corrupted =\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0645\u0639\u0637\u0648\u0628\u0629. \u0647\u0644 \u062a\u0631\u064a\u062f \u0631\u0624\u064a\u0629 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644\u061f map_locked_by_open = The map $1 is already being edited by the user $2. Opening as read-only. map_locked_by_save_as = The map $1 is being edited by the user $2. Action Save As aborted. menu_extras= menu_extras =\u0627\u062f\u0648\u0627\u062a menu_file_export=\u062a\u0635\u062f\u064a\u0631 menu_file_export =\u062a\u0635\u062f\u064a\u0631 menu_file_import= menu_file_import =\u0627\u0633\u062a\u064a\u0631\u0627\u062f menu_format=\u062a\u0646\u0633\u064a\u0642 menu_format =\u062a\u0646\u0633\u064a\u0642 menu_insert=\u0627\u062f\u0631\u0627\u062c menu_insert =\u0627\u062f\u0631\u0627\u062c menu_navigate=\u0627\u0633\u0643\u0634\u0627\u0641 menu_navigate =\u0627\u0633\u0643\u0634\u0627\u0641 menu_view=\u0639\u0631\u0636 menu_view =\u0639\u0631\u0636 mindmap =\u062e\u0631\u064a\u0637\u0629 mindmaps =\u062e\u0631\u0627\u0626\u0637 mindmaps_desc = Maps (*.mm) mode_na =\u0646\u0645\u0637 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f mode_status= mode_status = Mode changed to {0} Mode mode_title =FreeMind - {0} Mode modes =\u0623\u0646\u0645\u0627\u0637 most_recent_files= # added at 22.5.2004, fc: most_recent_files =\u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0627\u062e\u064a\u0631\u0629 move_to_root =\u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0625\u0644\u0649 \u0642\u0645\u0647 \u0627\u0644\u0634\u062c\u0631\u0629 new =\u062c\u062f\u064a\u062f new_child =\u0627\u0628\u0646 \u062c\u062f\u064a\u062f new_mindmap =\u062e\u0631\u064a\u0637\u0629 \u062c\u062f\u064a\u062f\u0629 new_node =\u0639\u0646\u0635\u0631 \u062c\u062f\u064a\u062f new_node_as_sibling_not_possible_for_the_root= new_node_as_sibling_not_possible_for_the_root =\u0644\u0627\u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0627\u062e \u0644\u0644\u0639\u0646\u0635\u0631 \u0641\u064a \u0623\u0639\u0644\u0649 \u0627\u0644\u0634\u062c\u0631\u0629 new_sibling_before=\u0627\u062e \u062c\u062f\u064a\u062f \u0628\u0639\u062f\u0647 new_sibling_before =\u0627\u062e \u062c\u062f\u064a\u062f \u0628\u0639\u062f\u0647 new_sibling_behind=\u0627\u062e \u062c\u062f\u064a\u062f \u0642\u0628\u0644\u0647 new_sibling_behind =\u0627\u062e \u062c\u062f\u064a\u062f \u0642\u0628\u0644\u0647 next_map =\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u062a\u0627\u0644\u064a\u0629 no =\u0644\u0627 no_format_copy_before_format_paste= no_format_copy_before_format_paste =\u0644\u0627\u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0644\u0635\u0642 \u0642\u0628\u0644 \u0627\u0646 \u062a\u0642\u0648\u0645 \u0628\u0627\u0644\u0644\u0635\u0642 no_found_from = No "$1" found from "$2". no_more_found_from = No more "$1" found from "$2". no_previous_find =\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0641\u064a \u0627\u0644\u0633\u0627\u0628\u0642 node =\u0639\u0646\u0635\u0631 node_background_color=\u0644\u0648\u0646 \u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0639\u0646\u0635\u0631 # added at 5.6.2004, fc: node_background_color =\u0644\u0648\u0646 \u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0639\u0646\u0635\u0631 node_changed_discard_changes =\u0644\u0642\u062f \u0642\u0645\u062a \u0628\u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0639\u0646\u0635\u0631. \u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u061f node_color =\u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 node_down =\u0627\u0644\u0639\u0646\u0635\u0631 \u0644\u0627\u0633\u0641\u0644 node_up =\u0627\u0644\u0639\u0646\u0635\u0631 \u0644\u0627\u0639\u0644\u0649 nonboldify_branch = Unboldify nonitalicise_branch = Unitalicise normal =\u0639\u0627\u062f\u064a not_saved_for_link_error =\u064a\u062c\u0628 \u062d\u0641\u0638 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0642\u0628\u0644 \u062a\u0639\u064a\u064a\u0646 \u0631\u0627\u0628\u0637 ok =\u0645\u0648\u0627\u0641\u0642 open =...\u0641\u062a\u062d option_changes_may_require_restart=\u0642\u0645 \u0628\u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0644\u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a. OptionPanel.absolute=\u0645\u0637\u0644\u0642 OptionPanel.antialias=Antialias # fc, 2.6.2005: OptionPanel.antialias.tooltip=Determines the quality of the map. More antialias needs more time. OptionPanel.antialias_all=Antialias All OptionPanel.antialias_edges=Antialias Edges OptionPanel.antialias_none=No Antialias OptionPanel.antialiasAll= OptionPanel.antialiasEdges= OptionPanel.antialiasEdges.tooltip= OptionPanel.Appearance=\u0627\u0644\u0645\u0638\u0647\u0631 OptionPanel.as_parent=\u0643\u0623\u0628 OptionPanel.automatic=\u062a\u0644\u0642\u0627\u0626\u064a OptionPanel.Behaviour=\u0627\u0644\u0633\u0644\u0648\u0643 OptionPanel.bezier=\u0645\u0646\u062d\u0646\u0649 OptionPanel.browsemode_initial_map=\u062e\u0631\u064a\u0637\u0629 \u0623\u0648\u0644\u064a\u0629 \u0641\u064a \u0648\u0636\u0639 \u0627\u0644\u0625\u0633\u062a\u0643\u0634\u0627\u0641 OptionPanel.browsemode_initial_map.tooltip=The URL of the map that is loaded when browsemode starts up OptionPanel.bubble=\u0641\u0642\u0627\u0639\u0629 OptionPanel.Cancel=\u0625\u0644\u063a\u0627\u0621 OptionPanel.ColorProperty.ResetColor=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0644\u0648\u0646 OptionPanel.combined=\u0645\u0648\u062d\u062f OptionPanel.cs=Cs OptionPanel.de=De OptionPanel.default=\u0625\u0641\u062a\u0631\u0627\u0636\u064a OptionPanel.default_browser_command_mac=\u0623\u0645\u0631 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u0625\u0641\u062a\u0631\u0627\u0636\u064a \u0641\u064a Mac OptionPanel.default_browser_command_mac.tooltip= and MAC: (thanks to Nick!) OptionPanel.default_browser_command_other_os=\u0623\u0645\u0631 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u0625\u0641\u062a\u0631\u0627\u0636\u064a \u0641\u064a \u0623\u0646\u0638\u0645\u0629 \u0623\u062e\u0631\u0649 OptionPanel.default_browser_command_other_os.tooltip= This is typically Linux: OptionPanel.default_browser_command_windows_9x=\u0623\u0645\u0631 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u0625\u0641\u062a\u0631\u0627\u0636\u064a \u0641\u064a Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.default_browser_command_windows_nt=\u0623\u0645\u0631 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u0625\u0641\u062a\u0631\u0627\u0636\u064a \u0641\u064a Windows Nt OptionPanel.default_browser_command_windows_nt.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.defaultfont=\u0627\u0644\u062e\u0637 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a OptionPanel.defaultfont.tooltip=The default node font. This will only work if the font (TrueTypeFont) is available on the system OptionPanel.defaultfontsize=\u062d\u062c\u0645 \u0627\u0644\u062e\u0637 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a OptionPanel.defaultfontstyle=\u0646\u0645\u0637 \u0627\u0644\u062e\u0637 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a OptionPanel.Defaults=\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0627\u062a OptionPanel.delete_automatic_saves_at_exit=\u062d\u0630\u0641 \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0627\u062a \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u0629 \u0639\u0646\u062f \u0627\u0644\u062e\u0631\u0648\u062c OptionPanel.delete_automatic_saves_at_exit.tooltip= If the files should be deleted automatically on a normal shutdown of Freemind set the following variable to true OptionPanel.disable_cursor_move_paper=\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0645\u0624\u0634\u0631 \u0645\u0646 \u062a\u062d\u0631\u064a\u0643 \u0627\u0644\u0635\u0641\u062d\u0629 OptionPanel.disable_cursor_move_paper.tooltip=Don't display 'move' cursor during paper dragging OptionPanel.disable_key_type=\u062a\u0639\u0637\u064a\u0644 \u0646\u0648\u0639 \u0627\u0644\u0645\u0641\u062a\u0627\u062d OptionPanel.disable_key_type.tooltip=Key typing: if enabled enters node editing OptionPanel.dk=Dk OptionPanel.docmapurl_since_version_0_7_0=\u0645\u0633\u0627\u0631 \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 OptionPanel.draganddrop=\u0633\u062d\u0628 \u0648 \u0631\u0645\u064a OptionPanel.draganddrop.tooltip=If dnd is enabled. OptionPanel.el__buttons_position=\u0645\u0648\u0642\u0639 \u0627\u0644\u0632\u0631 OptionPanel.el__buttons_position.tooltip= above / below OptionPanel.el__enter_confirms_by_default=\u0625\u062f\u062e\u0627\u0644 \u0627\u0644\u062a\u0623\u0643\u064a\u062f \u0628\u0634\u0643\u0644 \u0625\u0641\u062a\u0631\u0627\u0636\u064a OptionPanel.el__max_default_window_height=\u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0627\u0642\u0635\u0649 \u0627\u0631\u062a\u0641\u0627\u0639 \u0644\u0644\u0646\u0627\u0641\u0630\u0629 OptionPanel.el__max_default_window_width=\u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0627\u0642\u0635\u0649 \u0639\u0631\u0636 \u0644\u0644\u0646\u0627\u0641\u0630\u0629 OptionPanel.el__min_default_window_height=\u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0627\u0642\u0644 \u0627\u0631\u062a\u0641\u0627\u0639 \u0644\u0644\u0646\u0627\u0641\u0630\u0629 OptionPanel.el__min_default_window_width=\u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0627\u0642\u0644 \u0639\u0631\u0636 \u0644\u0644\u0646\u0627\u0641\u0630\u0629 OptionPanel.el__position_window_below_node=\u0648\u0636\u0639 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u062a\u062d\u062a \u0627\u0644\u0639\u0646\u0635\u0631 OptionPanel.en=En OptionPanel.enable_leaves_folding=\u062a\u0645\u0643\u064a\u0646 \u0637\u064a \u0627\u0644\u0627\u0648\u0631\u0627\u0642 OptionPanel.enable_leaves_folding.tooltip=Enable leaves folding == changing bubble/fork for fold action (although if false, you can always use node style to change it) OptionPanel.Environment=\u0627\u0644\u0628\u064a\u0626\u0629 OptionPanel.es=Es OptionPanel.experimental_file_locking_on=\u0625\u0642\u0641\u0627\u0644 \u0645\u0644\u0641 \u0627\u0644\u062a\u062c\u0627\u0631\u0628 OptionPanel.experimental_file_locking_on.tooltip= Experimental feature OptionPanel.export_icons_in_html=\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0631\u0645\u0648\u0632 \u0628\u062a\u0646\u0633\u064a\u0642 HTML OptionPanel.export_icons_in_html.tooltip= Tell if HTML exported from FreeMind should contain icons. The trouble with icons is that quite often the links to icons will not be found in the exported HTML. OptionPanel.Files=\u0627\u0644\u0645\u0644\u0641\u0627\u062a OptionPanel.first=\u0627\u0644\u0627\u0648\u0644 OptionPanel.foldingsymbolwidth=Folding Symbol Width OptionPanel.foldingsymbolwidth.tooltip=Width of the folding marking circle OptionPanel.fork=Fork OptionPanel.fr=Fr OptionPanel.gtk=Gtk OptionPanel.HTML=HTML OptionPanel.html_export_based_on_headings=\u0628\u0646\u0627\u0621 \u0639\u0644\u0649 \u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 OptionPanel.html_export_fold_all=\u0637\u064a \u0627\u0644\u062c\u0645\u064a\u0639 OptionPanel.html_export_fold_currently_folded=\u0637\u064a \u0627\u0644\u0645\u062c\u0644\u062f \u0627\u0644\u062d\u0627\u0644\u064a OptionPanel.html_export_folding=Html Export Folding OptionPanel.html_export_no_folding=\u0628\u062f\u0648\u0646 \u0637\u064a OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.key_type_adds_new=Key Type Adds New OptionPanel.key_type_adds_new.tooltip=Key typing: overwrites content (false) / creates new sibling (true) (requires: disable_key_type = false) OptionPanel.keystroke_add=\u0627\u0636\u0627\u0641\u0629 OptionPanel.keystroke_add_arrow_link_action=\u0625\u062c\u0631\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0627\u0628\u0637 \u0633\u0647\u0645\u064a OptionPanel.keystroke_add_child=\u0627\u0636\u0627\u0641\u0629 \u0627\u0628\u0646 OptionPanel.keystroke_add_child_mac=Add Child Mac OptionPanel.keystroke_add_local_link_action=\u0625\u062c\u0631\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0627\u0628\u0637 \u0645\u062d\u0644\u064a OptionPanel.keystroke_add_sibling_before=\u0627\u0636\u0627\u0641\u0629 \u0627\u062e \u0642\u0628\u0644\u0647 OptionPanel.keystroke_apply_pattern_1=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 1 OptionPanel.keystroke_apply_pattern_10=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 10 OptionPanel.keystroke_apply_pattern_11=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 11 OptionPanel.keystroke_apply_pattern_12=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 12 OptionPanel.keystroke_apply_pattern_13=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 13 OptionPanel.keystroke_apply_pattern_14=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 14 OptionPanel.keystroke_apply_pattern_15=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 15 OptionPanel.keystroke_apply_pattern_16=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 16 OptionPanel.keystroke_apply_pattern_17=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 17 OptionPanel.keystroke_apply_pattern_18=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 18 OptionPanel.keystroke_apply_pattern_2=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 2 OptionPanel.keystroke_apply_pattern_3=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 3 OptionPanel.keystroke_apply_pattern_4=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 4 OptionPanel.keystroke_apply_pattern_5=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 5 OptionPanel.keystroke_apply_pattern_6=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 6 OptionPanel.keystroke_apply_pattern_7=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 7 OptionPanel.keystroke_apply_pattern_8=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 8 OptionPanel.keystroke_apply_pattern_9=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0646\u0645\u0637 \u0631\u0642\u0645 9 OptionPanel.keystroke_close=\u0625\u063a\u0644\u0627\u0642 OptionPanel.keystroke_copy=\u0646\u0633\u062e OptionPanel.keystroke_copy_single=\u0646\u0633\u062e \u0645\u0641\u0631\u062f OptionPanel.keystroke_cut=\u0642\u0635 OptionPanel.keystroke_delete_child=\u062d\u0630\u0641 \u0627\u0644\u0627\u0628\u0646 OptionPanel.keystroke_edge_color=\u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f OptionPanel.keystroke_edit=\u062a\u062d\u0631\u064a\u0631 OptionPanel.keystroke_edit_long_node=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0635\u0631 \u0630\u0648 \u0627\u0644\u062d\u062c\u0645 \u0627\u0644\u0637\u0648\u064a\u0644 OptionPanel.keystroke_export_branch=\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0641\u0631\u0639 OptionPanel.keystroke_export_branch_to_html=\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0641\u0631\u0639 \u0644\u0635\u0641\u062d\u0629 HTML OptionPanel.keystroke_export_to_html=\u0627\u0644\u062a\u0635\u062f\u064a\u0631 \u0625\u0644\u0649 HTML OptionPanel.keystroke_find=\u0627\u0644\u0628\u062d\u062b OptionPanel.keystroke_find_next=\u0627\u0644\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u062a\u0627\u0644\u064a OptionPanel.keystroke_follow_link=\u062a\u062a\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0637 OptionPanel.keystroke_join_nodes=\u0631\u0628\u0637 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 OptionPanel.keystroke_mode_Browse=\u0627\u0633\u062a\u0639\u0631\u0627\u0636 \u0627\u0644\u0627\u0646\u0645\u0627\u0637 OptionPanel.keystroke_mode_File=\u0645\u0644\u0641 \u0627\u0644\u0627\u0646\u0645\u0627\u0637 OptionPanel.keystroke_mode_MindMap=\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0646\u0645\u0637 OptionPanel.keystroke_move_down=\u0627\u0644\u062a\u062d\u0631\u064a\u0643 \u0644\u0627\u0633\u0641\u0644 OptionPanel.keystroke_move_left=\u0627\u0644\u062a\u062d\u0631\u064a\u0643 \u0644\u0644\u064a\u0633\u0627\u0631 OptionPanel.keystroke_move_right=\u0627\u0644\u062a\u062d\u0631\u064a\u0643 \u0644\u0644\u064a\u0645\u064a\u0646 OptionPanel.keystroke_move_up=\u0627\u0644\u062a\u062d\u0631\u064a\u0643 \u0644\u0623\u0639\u0644\u0649 OptionPanel.keystroke_moveToRoot=\u0627\u0644\u062a\u062d\u0631\u064a\u0643 \u0644\u0623\u0639\u0644\u0649 \u0627\u0644\u0634\u062c\u0631\u0629 OptionPanel.keystroke_newMap=\u062e\u0631\u064a\u0637\u0629 \u062c\u062f\u064a\u062f\u0629 OptionPanel.keystroke_nextMap=\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u062a\u0627\u0644\u064a\u0629 OptionPanel.keystroke_node_color=\u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_color_blend=\u0644\u0648\u0646 \u0634\u0641\u0627\u0641 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_decrease_font_size=\u062a\u0635\u063a\u064a\u0631 \u062d\u062c\u0645 \u0627\u0644\u062e\u0637 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_down=\u0627\u0644\u0639\u0646\u0635\u0631 \u0644\u0644\u0627\u0633\u0641\u0644 OptionPanel.keystroke_node_increase_font_size=\u062a\u0643\u0628\u064a\u0631 \u062e\u0637 \u0627\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_toggle_boldface=\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u062e\u0637 \u0627\u0644\u0639\u0631\u064a\u0636 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_toggle_cloud=\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_toggle_italic=\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u062e\u0637 \u0627\u0644\u0645\u0627\u0626\u0644 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_toggle_underlined=\u062a\u0628\u062f\u064a\u0644 \u062a\u062d\u062a \u0627\u0644\u062e\u0637 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.keystroke_node_up=\u0627\u0644\u0639\u0646\u0635\u0631 \u0644\u0623\u0639\u0644\u0649 OptionPanel.keystroke_open=\u0641\u062a\u062d OptionPanel.keystroke_open_first_in_history=\u0627\u0644\u0641\u062a\u062d \u0623\u0648\u0644\u0627 \u0641\u064a \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0627\u062a # fc, 16.6.2005: OptionPanel.keystroke_option_dialog=\u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a OptionPanel.keystroke_paste=\u0644\u0635\u0642 OptionPanel.keystroke_previousMap=\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 OptionPanel.keystroke_print=\u0637\u0628\u0627\u0639\u0629 OptionPanel.keystroke_quit=\u062e\u0631\u0648\u062c OptionPanel.keystroke_redo=\u0625\u0639\u0627\u062f\u0629 \u0643\u062a\u0627\u0628\u0629 OptionPanel.keystroke_remove=\u0625\u0644\u063a\u0627\u0621 OptionPanel.keystroke_save=\u062d\u0641\u0638 OptionPanel.keystroke_saveAs=\u062d\u0641\u0638 \u0628\u0627\u0633\u0645 OptionPanel.keystroke_select_all=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 OptionPanel.keystroke_select_branch=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0641\u0631\u0639 OptionPanel.keystroke_set_image_by_filechooser=Set Image By Filechooser OptionPanel.keystroke_set_link_by_filechooser=Set Link By Filechooser OptionPanel.keystroke_set_link_by_textfield=Set Link By Textfield OptionPanel.keystroke_toggle_children_folded=\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0637\u064a \u0644\u0644\u0623\u0628\u0646\u0627\u0621 OptionPanel.keystroke_toggle_folded=\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0637\u064a OptionPanel.keystroke_undo=\u062a\u0631\u0627\u062c\u0639 OptionPanel.keystroke_zoom_in=\u062a\u0643\u0628\u064a\u0631 OptionPanel.keystroke_zoom_out=\u062a\u0635\u063a\u064a\u0631 OptionPanel.Keystrokes=\u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d OptionPanel.ko=Ko OptionPanel.language=\u0627\u0644\u0644\u063a\u0629 OptionPanel.language.tooltip=This is the language that should be used in the program. 'automatic' tries to load the current user's language. OptionPanel.last=\u0627\u0644\u0623\u062e\u064a\u0631 OptionPanel.last_opened_list_length=\u0639\u062f\u062f \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0641\u064a \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0623\u062e\u064a\u0631\u0629 OptionPanel.linear=\u062e\u0637\u064a OptionPanel.links=\u0631\u0648\u0627\u0628\u0637 OptionPanel.links.tooltip=Set Links either relative or absolute OptionPanel.lookandfeel=\u0627\u0644\u0645\u0638\u0647\u0631 OptionPanel.lookandfeel.tooltip=The Look&Feel to use. 'metal','windows','motif', 'gtk' are supported, 'mac' is available only on MacOS. default means, that the default look and feel is used. If you want to put your own L&F, please, enter the class name here and assure that the corresponding jar file(s) are loaded. If there are problems with the look and feel, then choose 'nothing' here. It work for applets # fc, 13.8.2005 OptionPanel.lt=Lt OptionPanel.mapxsize=Map-X-size OptionPanel.mapxsize.tooltip=The initial size of every map OptionPanel.mapysize=Map-Y-size OptionPanel.mapysize.tooltip= OptionPanel.max_node_width=\u0623\u0642\u0635\u0649 \u0639\u0631\u0636 \u0644\u0644\u0639\u0646\u0635\u0631 OptionPanel.max_node_width.tooltip=The default maximal node width in pixels OptionPanel.metal=\u0645\u0639\u062f\u0646\u064a OptionPanel.motif=Motif OptionPanel.nl=Nl OptionPanel.nb=Nb OptionPanel.nothing=\u0628\u062f\u0648\u0646 OptionPanel.number_of_different_files_for_automatic_save=\u0639\u062f\u062f \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u062e\u062a\u0644\u0641\u0629 \u0644\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a OptionPanel.number_of_different_files_for_automatic_save.tooltip= number n of different files to store the maps into. The first automatic save is done in the first file, and so on up to the n+1-save which is again stored in the first file (cyclic) OptionPanel.OK=\u062d\u0641\u0638 OptionPanel.path_to_automatic_saves=\u0627\u0644\u0645\u0633\u0627\u0631 \u0644\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a OptionPanel.path_to_automatic_saves.tooltip= to change the default path (this is 'java.io.tmpdir' of java), enter a directory path here: other possibilities: * freemind_home stands for the directory, where the auto.properties are. * default points to java.io.tmpdir OptionPanel.patternsfile=\u0645\u0644\u0641 \u0627\u0644\u0623\u0646\u0645\u0627\u0637 OptionPanel.pl=Pl OptionPanel.placenewbranches=\u0648\u0636\u0639 \u0641\u0631\u0648\u0639 \u062c\u062f\u064a\u062f\u0629 OptionPanel.placenewbranches.tooltip=Where to place new branches. Valid values are 'first' and 'last' OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.relative=\u0646\u0633\u0628\u064a OptionPanel.ru=Ru OptionPanel.selection_method=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631 OptionPanel.selection_method.tooltip= with the following switch you can enable/disable the delayed selection scheme. Auto options. Do not modify these as they will be saved to auto.properties anyway. OptionPanel.selection_method_by_click=\u0639\u0646\u062f \u0627\u0644\u0646\u0642\u0631 OptionPanel.selection_method_delayed=\u0627\u0644\u062a\u0623\u062e\u064a\u0631 OptionPanel.selection_method_direct=\u0645\u0628\u0627\u0634\u0631 OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.automatic_save=\u062d\u0641\u0638 \u062a\u0644\u0642\u0627\u0626\u064a OptionPanel.separator.behaviour=\u0627\u0644\u0633\u0644\u0648\u0643 OptionPanel.separator.browser=\u0627\u0644\u0645\u0633\u062a\u0639\u0631\u0636 OptionPanel.separator.commands_for_the_program=\u0627\u0644\u0627\u0648\u0627\u0645\u0631 \u0644\u0644\u0628\u0631\u0646\u0627\u0645\u062c OptionPanel.separator.default_colors=\u0627\u0644\u0627\u0644\u0648\u0627\u0646 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 OptionPanel.separator.default_fonts=\u0627\u0644\u062e\u0637\u0648\u0637 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 OptionPanel.separator.default_styles=\u0627\u0644\u0627\u0646\u0645\u0627\u0637 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 OptionPanel.separator.edit_long_node_window=\u0646\u0627\u0641\u0630\u0629 \u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0637\u0648\u064a\u0644\u0629 OptionPanel.separator.files=\u0627\u0644\u0645\u0644\u0641\u0627\u062a OptionPanel.separator.html_export=\u062a\u0635\u062f\u064a\u0631 HTML OptionPanel.separator.hyperlink_types=\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0627\u0644\u062a\u0634\u0639\u0628\u064a\u0629 OptionPanel.separator.initial_map_size=\u062d\u062c\u0645 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0623\u0648\u0644\u064a OptionPanel.separator.key_typing=\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0637\u0628\u0627\u0639\u0629 OptionPanel.separator.language=\u0627\u0644\u0644\u063a\u0629 OptionPanel.separator.look_and_feel=\u0627\u0644\u0645\u0638\u0647\u0631 OptionPanel.separator.new_node_commands=\u0627\u0648\u0627\u0645\u0631 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u062c\u062f\u064a\u062f OptionPanel.separator.node_editing_commands=\u0627\u0648\u0627\u0645\u0631 \u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0639\u0646\u0635\u0631 OptionPanel.separator.node_navigation_commands=\u0627\u0648\u0627\u0645\u0631 \u0627\u0633\u0643\u0634\u0627\u0641 \u0627\u0644\u0639\u0646\u0635\u0631 OptionPanel.separator.other_defaults=\u0627\u062e\u0631\u0649 OptionPanel.separator.patterns=\u0627\u0644\u0627\u0646\u0645\u0627\u0637 OptionPanel.separator.selection_method=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631 # fc, 10.7.2005: OptionPanel.separator.undo=\u062a\u0631\u0627\u062c\u0639 OptionPanel.sl=Sl OptionPanel.standardbackgroundcolor=\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardbackgroundcolor.tooltip=The standard background color in html notation OptionPanel.standardcloudcolor=\u0644\u0648\u0646 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardcloudcolor.tooltip=The standard cloud color in html notation OptionPanel.standardcloudestyle=\u0646\u0645\u0637 \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardcloudestyle.tooltip=The standard cloud style. currently, only 'bezier' is supported OptionPanel.standardedgecolor=\u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardedgecolor.tooltip=The standard edge color in html notation OptionPanel.standardedgestyle=\u0646\u0645\u0637 \u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardedgestyle.tooltip=The standard edge style. 'linear' and 'bezier' are supported OptionPanel.standardlinkcolor=\u0644\u0648\u0646 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardlinkcolor.= OptionPanel.standardlinkcolor.tooltip=The standard link color in html notation OptionPanel.standardlinkestyle=\u0646\u0645\u0637 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardlinkestyle.tooltip=The standard link style. currently, only 'bezier' is supported OptionPanel.standardnodetextcolor=\u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardnodetextcolor.tooltip=The standard node color. In html notation (#RRGGBB in hex values) OptionPanel.standardnodestyle=\u0646\u0645\u0637 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardnodestyle.tooltip=The default new node style. 'fork', 'bubble' 'as_parent' and 'combined' are supported OptionPanel.standardrootnodestyle=\u0646\u0645\u0637 \u0631\u0623\u0633 \u0627\u0644\u0634\u062c\u0631\u0629 \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardrootnodestyle.tooltip=The root node style if no other is specified. 'fork' and 'bubble' and 'combined' are supported OptionPanel.standardselectednodecolor=\u0644\u0648\u0646 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u062d\u062f\u062f \u0627\u0644\u0627\u0633\u0627\u0633\u064a OptionPanel.standardselectednodecolor.tooltip=The standard node color if selected. In html notation (#RRGGBB in hex values) OptionPanel.time_for_automatic_save=\u0627\u0644\u0648\u0642\u062a \u0644\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a OptionPanel.time_for_automatic_save.tooltip= time between two consecutive automatic saving actions (in msec): To disable automatic saving set this number to 2000000000. OptionPanel.time_for_delayed_selection=\u0648\u0642\u062a \u062a\u0623\u062e\u064a\u0631 \u0627\u0644\u0623\u062e\u062a\u064a\u0627\u0631 OptionPanel.time_for_delayed_selection.tooltip= Selection time delay of nodes when mouse is over (in msec). Change this value to 1 if you want direct selection on mouse over. OptionPanel.undo_levels=\u0645\u0633\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u062a\u0631\u0627\u062c\u0639 OptionPanel.undo_levels.tooltip=Determines how many steps are stored that can be undone via "Undo". OptionPanel.userproperties=\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 OptionPanel.windows=\u0627\u0644\u0646\u0648\u0627\u0641\u0630 OptionPanel.zh_TW=Zh OptionPanel.zh_CN=Zh CN page =...\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0635\u0641\u062d\u0629 paste =\u0644\u0635\u0642 plugins/ExportPdf.xml_documentation= plugins/ExportPdf.xml_documentation =\u0627\u0644\u062a\u0635\u062f\u064a\u0631 \u0628\u062a\u0646\u0633\u064a\u0642 PDF plugins/ExportPdf.xml_name= plugins/ExportPdf.xml_name =\u0628\u062a\u0646\u0633\u064a\u0642 PDF plugins/ExportSvg.xml_documentation= plugins/ExportSvg.xml_documentation =\u0628\u062a\u0646\u0633\u064a\u0642 SVG plugins/ExportSvg.xml_name= plugins/ExportSvg.xml_name =\u0628\u062a\u0646\u0633\u064a\u0642 SVG plugins/FreemindHelp.xml_documentation= plugins/FreemindHelp.xml_documentation = FreeMind Extended Help plugins/FreemindHelp.xml_name= plugins/FreemindHelp.xml_name =\u0645\u0633\u0627\u0639\u062f\u0629 plugins/NodeList.xml_documentation=\u0639\u0631\u0636 \u062c\u0645\u064a\u0639 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0645\u0639 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0648 \u0627\u0644\u062a\u0639\u062f\u064a\u0644 plugins/NodeList.xml_name=\u0639\u0631\u0636 \u0645\u062d\u0641\u0648\u0638\u0627\u062a \u0627\u0644\u062e\u0631\u064a\u0637\u0629 # fc, 2.5.2005: plugins/RemoveReminder.xml_documentation=Removes a reminder from a node. plugins/RemoveReminder.xml_name=Remove Reminder plugins/TimeList.xml_Created=\u062a\u0645 \u0625\u0646\u0634\u0627\u0621\u0629 plugins/TimeList.xml_Date=\u0627\u0644\u062a\u0627\u0631\u064a\u062e plugins/TimeList.xml_documentation=\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 plugins/TimeList.xml_Icons=\u0627\u0644\u0631\u0645\u0648\u0632 plugins/TimeList.xml_Modified=\u062a\u0645 \u0627\u0644\u062a\u0639\u062f\u064a\u0644 plugins/TimeList.xml_name=\u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u062c\u062f\u0648\u0644\u0629 \u0627\u0644\u0648\u0642\u062a plugins/TimeList.xml_Text=\u0627\u0644\u0646\u0635 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 plugins/TimeManagement.xml_cancelButton=\u0625\u0644\u063a\u0627\u0621 # fc, 4.2.05: plugins/TimeManagement.xml_documentation= Shows the calendar module by Kai Toedter. plugins/TimeManagement.xml_hour= Hour: plugins/TimeManagement.xml_minute= Minute: plugins/TimeManagement.xml_name=\u0639\u0631\u0636 \u0627\u0644\u062a\u0642\u0648\u064a\u0645 plugins/TimeManagement.xml_reminderButton=\u0627\u0644\u062a\u0630\u0643\u064a\u0631 \u0639\u0646\u062f \u0647\u0630\u0627 \u0627\u0644\u0648\u0642\u062a # fc, 3.5.2005: plugins/TimeManagement.xml_reminderButton_tooltip=When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.
If you close the map, the timers are reactivated the next time, the map is opened. plugins/TimeManagement.xml_reminderNode_onlyOneDate=Currently, there may only be one reminder per node.
The current remnider is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}.

Do you want to change the node's reminder time (YES)
or do you want to keep the old one (NO)? plugins/TimeManagement.xml_reminderNode_showNode=Time has elapsed for the node " {0} ". Do you want to snooze for ten minutes? plugins/TimeManagement.xml_reminderNode_tooltip=Reminder scheduled at {0,date} {0,time}. plugins/TimeManagement.xml_removeReminderButton= plugins/TimeManagement.xml_removeReminderButton =\u062d\u0630\u0641 \u0627\u0644\u0645\u0630\u0643\u0631\u0629 plugins/TimeManagement.xml_removeReminderButton_tooltip= plugins/TimeManagement.xml_removeReminderButton_tooltip =\u062d\u0630\u0641 \u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0630\u0643\u0631\u0627\u062a \u0627\u0644\u0645\u0631\u062a\u0628\u0637\u0629 \u0645\u0639 \u0647\u0630\u0647 \u0627\u0644\u0639\u0646\u0627\u0635\u0631 # fc, 5.4.2005 plugins/TimeManagement.xml_todayButton=\u0627\u0644\u064a\u0648\u0645 plugins/TimeManagement.xml_WindowTitle=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0648\u0642\u062a plugins/TimeManagementReminder.xml_documentation= plugins/TimeManagementReminder.xml_name=Internal hook for scheduling resubmission tasks. preferences =\u062a\u0641\u0636\u064a\u0644\u0627\u062a previous_map =\u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 print =\u0637\u0628\u0627\u0639\u0629 print_dialog =...\u0637\u0628\u0627\u0639\u0629 # new from 20.12.2003, fc printing_settings =\u0645\u0642\u064a\u0627\u0633 \u0627\u0644\u0637\u0628\u0627\u0639\u0629 # fc, 10.5.2005: property_dialog=\u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a... quit =\u062e\u0631\u0648\u062c read_only =\u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 redo= redo =\u0625\u0639\u0627\u062f\u0629 \u0643\u062a\u0627\u0628\u0629 remove_all_icons =\u062d\u0630\u0641 \u062c\u0645\u064a\u0639 \u0627\u0644\u0631\u0645\u0648\u0632 remove_arrow_link =\u062d\u0630\u0641 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0633\u0647\u0645\u064a remove_last_icon =\u062d\u0630\u0641 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0627\u062e\u064a\u0631 remove_node =\u062d\u0630\u0641 \u0639\u0646\u0635\u0631 remove_node_background_color= remove_node_background_color =\u062d\u0630\u0641 \u0644\u0648\u0646 \u062e\u0644\u0641\u064a\u0629 \u0627\u0644\u0639\u0646\u0635\u0631 repair_link =\u0625\u0635\u0644\u0627\u062d \u0631\u0627\u0628\u0637 repair_link_question =\u0644\u0627\u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u0645\u0631\u062a\u0628\u0637\u0629. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0635\u0644\u0627\u062d\u0647\u0627 \u064a\u062f\u0648\u064a\u0627\u064b\u061f # fc, 27.4.2005: reset_node_position=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0645\u0643\u0627\u0646 # fc, 11.3.2005: RevertAction=\u062a\u0631\u0627\u062c\u0639 save =\u062d\u0641\u0638 save_as =...\u062d\u0641\u0638 \u0628\u0627\u0633\u0645 save_failed = Attempt to save the map $1 failed. save_unsaved =\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u061f saved =\u062a\u0645 \u0627\u0644\u062d\u0641\u0638 scheme_evaluate =\u062a\u0642\u064a\u064a\u0645 select_all=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u062c\u0645\u064a\u0639 ( \u0627\u0644\u0645\u0631\u0626\u064a ) #fc, 26.4.2005: select_branch=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0641\u0631\u0639 \u0627\u0644\u0645\u0631\u0626\u064a select_favorites_folder =\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0645\u062c\u0644\u062f \u0627\u0644\u0630\u064a \u064a\u062d\u0648\u064a \u0627\u0644\u0645\u0641\u0636\u0644\u0629 select_folder_for_importing =\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0645\u062c\u0644\u062f \u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f\u0647 # changed from 23.1.2004, fc. selection_method_by_click =\u0646\u0642\u0631\u0647 \u0645\u0641\u0631\u062f \u0644\u0644\u062a\u062d\u062f\u064a\u062f # fc, 2.2.05: selection_method_delayed=\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062a\u0623\u062e\u0631 \u062a\u0644\u0642\u0627\u0626\u064a selection_method_delayed = selection_method_direct =\u0646\u0642\u0637\u0629 \u0644\u0644\u062a\u062d\u062f\u064a\u062f set_image_by_filechooser =\u0635\u0648\u0631\u0629 ( \u0645\u062d\u062f\u062f \u0645\u0644\u0641 \u0623\u0648 \u0631\u0627\u0628\u0637 ) set_link_by_filechooser =\u0631\u0627\u0628\u0637 \u062a\u0634\u0639\u0628\u064a ( \u0645\u062d\u062f\u062f \u0645\u0644\u0641 ) set_link_by_textfield =\u0631\u0627\u0628\u0637 \u062a\u0634\u0639\u0628\u064a ( \u062d\u0642\u0644 \u0646\u0635\u064a ) sharp_bezier =\u0645\u0646\u062d\u0646\u0649 \u062d\u0627\u062f sharp_linear =\u062e\u0637\u064a \u062d\u0627\u062f split =\u0641\u0635\u0644 style =\u0646\u0645\u0637 toggle_bold_branch =\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0639\u0631\u064a\u0636 toggle_children_folded =\u0637\u064a \ \u0641\u0631\u062f \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0627\u0628\u0646 toggle_folded =\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0645\u0637\u0648\u064a toggle_italic_branch =\u062a\u0628\u062f\u064a\u0644 \u0627\u0644\u0645\u0627\u0626\u0644 toggle_left_toolbar =\u062a\u0628\u062f\u064a\u0644 \u0634\u0631\u064a\u0637 \u0627\u0644\u0627\u062f\u0648\u0627\u062a \u0641\u064a \u0627\u0644\u064a\u0633\u0627\u0631 toggle_menubar =\u062a\u0628\u062f\u064a\u0644 \u0634\u0631\u064a\u0637 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 toggle_toolbar =\u062a\u0628\u062f\u064a\u0644 \u0634\u0631\u064a\u0637 \u0627\u0644\u0627\u062f\u0648\u0627\u062a undefined_error= #fc, 14.11.2004: undefined_error =\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639. \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u062a\u0642\u0631\u064a\u0631 \u0628\u0627\u0644\u0645\u0634\u0643\u0644\u0629. underline =\u062a\u062d\u062a\u0647 \u062e\u0637 underlined= # added at 27.8.2004, fc: underlined =\u062a\u062d\u062a\u0647 \u062e\u0637 undo= # added at 2.5.2004, fc: undo =\u062a\u0631\u0627\u062c\u0639 unfold =\u0628\u0633\u0637 url_error =\u0639\u0646\u0648\u0627\u0646 URL \u063a\u064a\u0631 \u0635\u0627\u0644\u062d url_load_error =\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0645\u0646 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 URL # removed: follow_link = Goto: user_defined_zoom =\u0645\u0639\u0631\u0641 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 user_defined_zoom_status_bar = Changing the zoom to the user defined zoom value of {0}%. user_zoom = Print Zoom Factor (0.0 - 2.0): width =\u0627\u0644\u0639\u0631\u0636 yes =\u0646\u0639\u0645 zoom_in =\u062a\u0643\u0628\u064a\u0631 zoom_out =\u062a\u0635\u063a\u064a\u0631 OptionPanel.eu=Eu freemind-0.9.0/freemind/Resources_it.properties0000644000000000000000000022263511527433212020376 0ustar rootroot#Submitted: Valter Mura ( valtermura ) - 2010-01-02 20:55 about= Informazioni su add=&Aggiungi about_text= FreeMind - Programma per la mappatura mentale gratuita e la costruzione della conoscenza\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, e altri.\nQuesto programma \u00e8 un software libero, rilasciato sotto licenza GNU General Public Licence.\n\nPagina web: http://freemind.sourceforge.net/\nVersione: antialias_all= Antialias su tutti antialias_edges= Antialias sui bordi antialias_none= No antialias apply=&Applica background= Sfondo bezier= Bezier blend_color= Miscela colore bold= Grassetto boldify_branch= Metti in grassetto branch= Ramo bubble= &Bolla cancel= &Annulla cannot_join_nodes_with_children= Impossibile collegare i nodi con i figli center= Centra cloud= Nuvola cloud_color= Colore nuvola... close= &Chiudi copy= Copia copy_single= Copia singolo cut= Taglia decrease_branch_font_size= Diminuisci carattere decrease_node_font_size= Diminuisci carattere delete=&Elimina documentation= Documentazione edge= Bordo edge_color= Colore bordo... edge_width_parent= Genitore edge_width_thin= Fine edit= &Modifica edit_link_manually= Modifica manualmente il collegamento edit_long_node= Modifica nodo lungo enter_base_url= Sto incollando i collegamenti relativi. Inserisci l'URL di base. enter_confirms= &Inserisci conferma error= Errore #export_branch = Branch... export_branch_to_html= Ramo come HTML export_to_html= Come HTML extension_menu= &Stile fisico file= &File file_not_found= File $1 non trovato find= Cerca... find_what= Cerca find_next= Trova successivo fold= Contrai font= Carattere fork= &Biforcazione help= Aiuto html_export_based_on_headings= Esportazione a HTML - Basata su intestazioni html_export_no_folding= Esportazione a HTML - Nessun collasso html_export_fold_currently_folded= Esportazione a HTML - Contrai i contratti html_export_fold_all= Esportazione a HTML - Contrai tutto # Daniel Polansky: This way of maintaining icon text # will ultimately lead to unbearable overheads. icon_menu= I&cone icon_help= Domanda icon_messagebox_warning= Importante icon_idea= Idea icon_button_ok= OK icon_button_cancel= Non OK icon_back= Indietro icon_forward= Avanti icon_attach= Guarda qui icon_ksmiletris= Sono felice icon_clanbomber= Pericoloso icon_desktop_new= Non dimenticare icon_gohome= Casa icon_kaddressbook= Telefono icon_knotify= Musica icon_korn= Cassetta postale icon_Mail= Posta icon_password= Chiave icon_pencil= Da raffinare icon_stop= Semaforo rosso icon_wizard= Magico icon_xmag= Da discutere icon_bell= Ricorda icon_bookmark= Eccellente icon_penguin= Linux icon_licq= Carino import= Importa import_branch= Ramo... import_explorer_favorites= Esplora preferiti... import_folder_structure= Struttura cartella... import_linked_branch= Ramo collegato import_linked_branch_without_root= (Ramo collegato) senza radice... increase_branch_font_size= Aumenta carattere increase_node_font_size= Aumenta carattere italic= Corsivo italicise_branch= Trasforma in corsivo join_nodes= Collega nodi license= Licenza di FreeMind license_text= FreeMind - Un programma per creare e visualizzare mappe mentali\nCopyright \u00a9 2000-2010 Joerg Mueller e altri.\nVedere COPYING per dettagli\n\nQuesto \u00e8 un programma libero; \u00e8 possibile ridistribuire e/o\nmodifficarlo sotto i termini della GNU General Public License\ncome rilasciata dalla Free Software Foundation, o dalla versione 2\ndella licenza, o (a propria scelta) da qualsiasi altra versione successiva.\n\nQuesto programma \u00e8 distribuito nella speranza che sia utile,\nma SENZA ALCUNA GARANZIA; senza neanche la garanzia implicita della\nCOMMERCIABILIT\u00c0 o la IDONEIT\u00c0 AD UNO SCOPO PARTICOLARE. Vedere la\nGNU General Public License per ulteriori dettagli.\n\nSi dovrebbe aver ricevuto una copia della GNU General Public License\ninsieme con il programma; se cos\u00ec non fosse, scrivere alla Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. linear= Lineare load= &Carica locking_failed_by_open= Blocco della mappa $1 non riuscito. Apertura in sola lettura. locking_failed_by_save_as= Blocco della mappa $1 non riuscito. Azione "Salva come" annullata. locking_old_lock_removed= La mappa $1 era in uso dall'utente $2. Il blocco \u00e8 stato rimosso in quanto vecchio. map_already_exists= La mappa esiste gi\u00e0. Vuoi sovrascriverlo? map_corrupted= Mappa corrotta. Vedere dettagli? map_locked_by_open= La mappa $1 \u00e8 stata gi\u00e0 modificata dall'utente $2. Apertura in sola lettura. map_locked_by_save_as= La mappa $1 \u00e8 stata modificata dall'utente $2. Azione "Salva come" annullata. mindmap= Mappa mindmaps= Mappe mindmaps_desc= Mappe (*.mm) mindmaps_filter_desc= Filtri (*.mmfilter) mode_na= Modalit\u00e0 non disponibile modes= Modalit\u00e0 move_to_root= Vai al nodo radice new= Nuovo new_child= Nuovo nodo figlio new_mindmap= Nuova mappa immagine new_node= Nuovo nodo new_sibling_before= Nuovo nodo fratello prima new_sibling_behind= Nuovo nodo fratello next_map= Mappa successiva no= No node= Nodo node_changed_discard_changes= Hai modificato il nodo. Vuoi annullare le modifiche? long_node_changed_submit=Hai modificato il nodo. Vuoi salvare le modifiche? long_node_changed_cancel=Hai modificato il nodo. Vuoi annullare le modifiche? node_color= Colore del nodo... node_down= Nodo gi\u00f9 node_up= Nodo su nonboldify_branch= Rimuovi il grassetto nonitalicise_branch= Rimuovi il corsivo normal= Normale no_found_from= Nessun $1 disponibile da $2. no_more_found_from= Nessun altro $1 disponibile da $2. no_previous_find= Nessuna ricerca precedente. not_saved_for_link_error= Devi salvare la mappa prima di scegliere un collegamento col selettore file open= Apri... page= Impo&sta pagina... paste= Incolla new_node_as_sibling_not_possible_for_the_root= Non \u00e8 possibile aggiungere un nodo fratello alla radice preferences= Preferenze previous_map= Mappa precedente print= Stampa print_dialog= Stampa... print_preview= Anteprima di &stampa... print_preview_title= Anteprima di stampa quit= Esci read_only= Sola lettura remove_node= Rimuovi nodo rename=&Rinomina repair_link= Ripara collegamento repair_link_question= Impossibile caricare la mappa collegata. Riparare manualmente il collegamento? replace=Sostituisci save= &Salva save_as= Salva con nome... save_failed= Il tentativo di salvare la mappa $1 \u00e8 fallito. save_unsaved= Salvare la seguente mappa mentale? : saved= Salvata scheme_evaluate= Valuta! select_favorites_folder= Seleziona la cartella dei Preferiti select_folder_for_importing= Seleziona la cartella da importare set_image_by_filechooser= Immagine (selettore file o collegamento)... set_link_by_filechooser= Collegamento ipertestuale (selettore file)... set_link_by_textfield= Collegamento ipertestuale (campo di testo)..... sharp_bezier= bezier marcato sharp_linear= lineare marcato split= &Dividi style= Stile #toggle_bold_branch = Toggle Bold toggle_children_folded= Contrai/espandi figli toggle_folded= Contrai/espandi #toggle_italic_branch = Toggle Italic underline= Sottolineato unfold= Espandi url_error= URL non corretto! width= Larghezza yes= S\u00ec zoom_in= Ingrandisci zoom_out= Riduci remove_last_icon= Rimuovi l'ultima icona remove_all_icons= Rimuovi tutte le icone lots_of_links_warning= Stai per creare molti collegamenti allo stesso nodo. Vuoi davvvero creare i collegamenti? remove_arrow_link= Rimuovi il collegamento a freccia arrow_link_color= Colore collegamento a freccia... # removed: follow_link = Goto: user_defined_zoom= Definito dall'utente. user_defined_zoom_status_bar= Impostato il livello di zoom definito dall'utente al {0}%. # new from 14.12.2003, fc FAQ= Domande frequenti # new from 09.12.2006, Dimitri webDocu= Documentazione web # new from 20.12.2003, fc printing_settings= Scalatura stampa fit_to_page= Adatta a una pagina user_zoom= Fattore ingradimento stampa (0.0 - 2.0): ok= &OK # changed from 23.1.2004, fc. selection_method_by_click= Clic singolo per selezionare selection_method_direct= Puntare per selezionare #new from 30.08.2004, Dimitri combined= Combinato as_parent= Come genitore # added at 2.5.2004, fc: undo= Annulla redo= Ripristina delete_child= Elimina nodo # added at 22.5.2004, fc: most_recent_files= File &recenti menu_view= &Visualizza menu_navigate= &Naviga menu_format= F&ormato menu_extras= &Strumenti menu_insert= &Inserisci menu_attributes= &Attributi # Beware: "Edge Width " and "Edge Style " must end with space. edge_style= Stile bordo edge_width= Larghezza bordo menu_file_import= I&mporta menu_file_export= &Esporta edit_node= Modifica nodo # added at 5.6.2004, fc: node_background_color= Colore sfondo del &nodo... # added at 25.8.2004, fc: choose_edge_color= Scegli colore del bordo # added at 27.8.2004, fc: underlined= Sottolineato font_size= dimensione carattere font_family= tipo di carattere # add at 16.9.2004, fc: import_linked_branch_no_link= Il seguente nodo non ha collegamenti da cui importare. # added at 09.10.2004 add_link= Aggiungi collegamento grafico less_than_two_selected_nodes= Seleziona almeno due nodi per eseguire un collegamento. choose_node_background_color= Scegli il colore di sfondo del &nodo: choose_node_color= Scegli il colore del nodo: choose_background_color= Scegli il colore di sfondo: choose_cloud_color= Scegli il colore della nuvola: change_arrows_in_arrow_link= Cambia le frecce del collegamento add_local_link= Aggiungi collegamento locale link_not_available_any_more= Il collegamento non \u00e8 pi\u00f9 valido. Il nodo \u00e8 stato nel frattempo cancellato. file_already_exists= Il file {0} esiste gi\u00e0. Vuoi sovrascriverlo? error_creating_directory= Impossibile creare la directory per l'esportazione. export_svg_text= Scalable Vector Graphic (SVG) export_pdf_text= Portable Document Format (PDF) goto_link_node_action= Collegamento Vai a #fc, 14.11.2004: undefined_error= Si \u00e8 verificato un errore inaspettato. Prova a creare un rapporto di errore. cannot_add_parent_to_root= Il nodo radice non pu\u00f2 essere aggiunto a un nuovo genitore. cannot_delete_root= Il nodo radice non pu\u00f2 essere eliminato o tagliato. cannot_add_parent_diff_parents= Tutti i nodi devono avere lo stesso genitore per usare questa funzione. no_format_copy_before_format_paste= Non puoi incollare un formato se non ne hai copiato uno. #fc, 15.11.2004: accessories/plugins/AutomaticLayout.properties_documentation= Regola la formattazione della mappa.
Il primo livello \u00e8 nero, il secondo blu, etc. accessories/plugins/AutomaticLayout.properties_name= Formattazione &automatica accessories/plugins/BlinkingNodeHook.properties_documentation= Questo fa lampeggiare il nodo. Stai attento: non associarlo a molti nodi e ad altre formattazioni automatiche sullo stesso nodo accessories/plugins/BlinkingNodeHook.properties_name= Nodo lampeggiante accessories/plugins/CreationModificationPlugin.properties_documentation=Questa funzione tiene traccia dei tempi di modifica e creazione dei nodi. accessories/plugins/CreationModificationPlugin.properties_name= Mostra i tempi di &modifica accessories/plugins/ExportToImage_PNG.properties_documentation= Esporta la mappa nella cartella corrente in immagine PNG. accessories/plugins/ExportToImage_PNG.properties_name= Come PNG... accessories/plugins/ExportToImage_JPEG.properties_documentation= Esporta la mappa nella cartella corrente in immagine JPEG. accessories/plugins/ExportToImage_JPEG.properties_name= Come JPEG... accessories/plugins/ExportWithXSLT.properties_documentation= Questo \u00e8 un metodo di esportazione uniforme che usa script XSLT. accessories/plugins/ExportWithXSLT.properties_name= Uso di XSLT... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_name= Come XHTML (versione JavaScript)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_name= Come XHTML (versione mappa immagine cliccabile)... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_name= Come mappa immagine MindManager... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_documentation= accessories/plugins/FitToPage.properties_documentation= Regola lo zoom affinch\u00e9 l'intera mappa sia contenuta nella finestra attiva. accessories/plugins/FitToPage.properties_name= &Adatta alla pagina accessories/plugins/FormatCopy.properties_documentation= Copia il formato di un nodo. accessories/plugins/FormatCopy.properties_name= Copia formato accessories/plugins/FormatPaste.properties_documentation= Incolla il formato di un nodo. accessories/plugins/FormatPaste.properties_name= Incolla formato accessories/plugins/FormularEditor.properties_documentation= Associa un semplice editor delle formule alla nota corrente. accessories/plugins/FormularEditor.properties_name= Editor delle formule accessories/plugins/IconSelectionPlugin.properties_documentation= Qui puoi selezionare un'icona usando una finestra secondaria. accessories/plugins/IconSelectionPlugin.properties_name= Seleziona icona... accessories/plugins/NewParentNode.properties_documentation= Tutti i nodi selezionati sono inviati a un nuovo genitore. accessories/plugins/NewParentNode.properties_name= Nuovo nodo genitore accessories/plugins/NodeNote.properties_documentation= Associa un semplice editor di note alla nota corrente. accessories/plugins/NodeNote.properties_name= Nota accessories/plugins/PMCalculation.properties_documentation= Calcola il "carico" per compiti differenti. accessories/plugins/PMCalculation.properties_name= Calcolo PM accessories/plugins/RemoveNote.properties_documentation= Rimuove il contenuto di possibili note differenti. accessories/plugins/RemoveNote.properties_name= Rimuovi note accessories/plugins/RevisionPlugin.properties_documentation= Evidenzia lo sfondo di ciascun nodo modificato. accessories/plugins/RevisionPlugin.properties_name= Mostra &revisioni in giallo accessories/plugins/SplitNode.properties_documentation= Il nodo \u00e8 diviso accessories/plugins/SplitNode.properties_name= &Dividi nodo accessories/plugins/UnfoldAll.properties_documentation= Espande i nodi selezionati e i suoi figli. accessories/plugins/UnfoldAll.properties_name= Espandi tutti accessories/plugins/FoldAll.properties_documentation= Contrae i nodi selezionati e i suoi figli. accessories/plugins/FoldAll.properties_name= Contrai tutti accessories/plugins/UnfoldOneLevel.properties_documentation= Espande i nodi selezionati di un livello. accessories/plugins/UnfoldOneLevel.properties_name= Espandi di un livello accessories/plugins/FoldOneLevel.properties_documentation= Contrae i nodi selezionati di un livello. accessories/plugins/FoldOneLevel.properties_name= Contrai di un livello plugins/FreemindHelp.xml_documentation= Aiuto esteso di FreeMind plugins/FreemindHelp.xml_name= Aiuto... plugins/ExportPdf.xml_documentation= Esporta in PDF plugins/ExportPdf.xml_name= Come PDF... plugins/ExportSvg.xml_documentation= Esporta in SVG plugins/ExportSvg.xml_name= Come SVG... # fc, 28.11.2004: cannot_move_to_child= Impossibile spostare un nodo in uno dei suoi figli. # fc, 14.12.2004: accessories/plugins/EnterPassword.properties_name= &Cifrato / Non cifrato accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EncryptNode.properties_name= Inserisci nodo &cifrato... accessories/plugins/EncryptNode.properties_documentation= Inserisce un nuovo nodo i cui figli sono memorizzati cifrati. accessories/plugins/EncryptNode.properties_0= Scegli la password per il nodo cifrato accessories/plugins/EncryptNode.properties_1= Le password non corrispondono o sono troppo corte. accessories/plugins/EncryptNode.properties_2= Digita password: accessories/plugins/EncryptNode.properties_3= Ridigita password: accessories/plugins/EncryptNode.properties_4= Digita la tua password. accessories/plugins/EncryptNode.properties_5= Ricorda che la forza della cifratura
dipende quasi totalmente dalla qualit\u00e0 della password. accessories/plugins/EncryptNode.properties_6= OK accessories/plugins/EncryptNode.properties_7= Annulla accessories/plugins/EncryptNode.properties_wrong_password= La password non \u00e8 corretta. accessories/plugins/NewEncryptedMap.properties_documentation= Crea una nuova mappa cifrata accessories/plugins/NewEncryptedMap.properties_name= Crea mappa cifrata... accessories/plugins/EncryptNode.properties_select_me= Selezionami per continuare! accessories/plugins/EncryptNode.properties_insert_encrypted_node_first= Puoi modificare solo lo stato cifrato di un nodo cifrato. Inserisci almeno un nodo usando il menu Strumenti. # fc, 2.2.05: selection_method_delayed=Selezione ritardi automatici # fc, 4.2.05: plugins/TimeManagement.xml_documentation= Mostra il modulo del calendario di Kai Toedter. plugins/TimeManagement.xml_name= Mostra calendario... plugins/TimeManagement.xml_appendButton= Aggancia data ai nodi selezionati plugins/TimeManagement.xml_reminderButton= Avvisami a questa data plugins/TimeManagement.xml_cancelButton=Annulla plugins/TimeManagementReminder.xml_documentation=Aggancio interno per la pianificazione di compiti di reinvio. plugins/TimeManagementReminder.xml_name=Aggancio interno per la pianificazione di compiti di reinvio. plugins/TimeManagement.xml_reminderNode_tooltip=Ricorda impegno il {0,date} alle {0,time}. plugins/TimeManagement.xml_reminderNode_showNode=Il tempo \u00e8 scaduto per il nodo " {0} ". Vuoi ritardare l'allarme di 10 minuti? plugins/TimeManagement.xml_reminderNode_onlyOneDate=Al momento pu\u00f2 esistere solo un allarme per nodo.
L'allarme corrente \u00e8 programmato il {0,date} alle {0,time}, la tua scelta era il {1,date} alle {1,time}.

Vuoi modificare l'allarme del nodo (SI)
o vuoi mantenere il vecchio (NO)? plugins/TimeManagement.xml_removeReminderButton= Rimuovi allarme plugins/TimeManagement.xml_removeReminderButton_tooltip= Rimuovi tutti gli allarmi associati ai nodi selezionati. plugins/TimeManagement.xml_minute= Minuto: plugins/TimeManagement.xml_hour= Ora: plugins/TimeManagement.xml_WindowTitle=Gestione ora plugins/latex/LatexNodeHook.properties_documentation= Formula Latex plugins/latex/LatexNodeHook.properties_name= &Latex plugins/latex/LatexNodeHook.editorTitle= Editor, chiudi per accettare # fc, 18.2.2005: accessories/plugins/HierarchicalIcons.properties_documentation=Se uno dei miei discendenti ha un'icona, essa sar\u00e0 visualizzata in formato piccolo accessories/plugins/HierarchicalIcons.properties_name=Mostra &gerarchicamente le icone # fc, 1.3.2005: icon_full-1= Priorit\u00e0 1 icon_full-2= Priorit\u00e0 2 icon_full-3= Priorit\u00e0 3 icon_full-4= Priorit\u00e0 4 icon_full-5= Priorit\u00e0 5 icon_full-6= Priorit\u00e0 6 icon_full-7= Priorit\u00e0 7 # fc, 11.3.2005: RevertAction=&Inverti # the prefix for the reconstructed map (revert + undo). freemind_reverted=Freemind_Reverted_ # fc, 5.4.2005 plugins/TimeManagement.xml_todayButton=Oggi plugins/TimeList.xml_documentation=Visualizza tutti gli impegni e i nodi corrispondenti. plugins/TimeList.xml_name=Visualizza la &lista degli impegni... remove_node_background_color= &Rimuove il colore di sfondo del nodo #plugins/NodeList.xml_documentation=Shows all nodes with its creation/modification dates. #plugins/NodeList.xml_name=Show Map History ... plugins/TimeList.xml_Modified=Modificato plugins/TimeList.xml_Created=Creato plugins/TimeList.xml_Date=Data plugins/TimeList.xml_Text=Testo plugins/TimeList.xml_Icons=Icone #fc, 26.4.2005: select_branch=Seleziona rami visibili select_all=Seleziona tutti i visibili change_link_arrows=Cambia le frecce # fc, 27.4.2005: reset_node_position=Azzera &posizione # fc, 2.5.2005: plugins/RemoveReminder.xml_documentation=Rimuovi un allarme da un nodo. plugins/RemoveReminder.xml_name=Rimuovi allarme # fc, 3.5.2005: plugins/TimeManagement.xml_reminderButton_tooltip=Se premuto, viene programmato un timer alla data indicata. L'icona lampeggiante richiama la tua attenzione.
Se chiudi la mappa, i timer vengono riattivati quando la mappa viene riaperta. # dimitri, 8.05.05 filter_toolbar=Filtro filter_dialog=Compositore filtri filter_no_filtering=Nessun filtro filter_selected_node_view=Nodi correntemente selezionati filter_conditions= Filtri filter_edit=Modifica filter_edit_description=Modifica elenco filtri filter_unfold_ancestors=Espandi i nodi filtrati filter_icon=Icona filter_node=Testo del nodo filter_exist=Esiste filter_does_not_exist=Non esiste filter_contains=Contiene filter_is_equal_to=\u00c8 uguale a filter_is_not_equal_to=Non \u00e8 uguale a filter_ignore_case=Ignora maiuscole filter_enter_value=inserisci valore filter_add=&Aggiungi filter_delete=&Elimina filter_select=&Seleziona filter_not=&NON filter_and=&E filter_or=&O filter_show_ancestors=Visualizza precedenti filter_show_descendants=Visualizza discendenti # dimitri, 10.07.2005 attributes_all=Tutti gli attributi attributes_attribute=Attributi attributes_close=Chiudi attribute_delete=Elimina tutti i valori attribute_delete_value=Elimina questo valore attributes_edit=Modifica attributes_edit_in_place=Modifica attributi attributes_edit_tooltip=Modifica gruppo attribute_font_size_tooltip=Attributo dimensione carattere attributes_dialog=Gestore &Attributi... attributes_dialog_title=Gestore Attributi attributes_import=&Importa attributes_import_tooltip=Importa gli attributi da altre mappe caricate attributes_assign_dialog=Asse&gna attributi... attributes_visible=Seleziona visibili attributes_visible_tooltip=Selezione per Visualizza->Attributo->Mostra attributi selezionati attributes_refresh=Aggiorna attribute_replace=Sostituisci con attributes_restriction=Gruppo ristretto attributes_restricted_attributes_tooltip=Gruppo ristretto di attributi attributes_restricted_values_tooltip=Gruppo ristretto di valori per l'attributo corrente attributes_select_all=Tutti attributes_select_all_tooltip=Seleziona / Deseleziona tutti attributes_for_selected=Nodi selezionati attributes_for_visible=Tutti i nodi visibili attributes_deselect_all=Nulla attribute_list_box_label_text=Valori esistenti attributes_popup_edit=Modifica attributes_popup_optimal_width=Larghezza ottimale attributes_popup_hide=Nascondi attributes_popup_new=Nuovo attributo attributes_popup_delete=Elimina attributes_popup_up=Su attributes_popup_down=Gi\u00f9 attributes_show=Mostra attributes_show_all= Mostra tutti gli attributi attributes_show_selected= Mostra gli attributij selezionati attributes_hide_all= Nascondi tutti gli attributi attribute_top=Tutti gli attributi conosciuti per le mappe caricate attributes_skip_root=Salta nodo radice attributes_no_import_candidates_found=Nessun nuovo attributo trovato attributes_adding_empty_attribute_error=Impossibile usare una stringa vuota come nome dell'attributo # fc, 10.5.2005: property_dialog=Preferenze... OptionPanel.automatic=Automatico OptionPanel.de=De OptionPanel.dk=Dk OptionPanel.en=En OptionPanel.es=Es OptionPanel.fr=Fr OptionPanel.gl=Gl OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.ko=Ko OptionPanel.nl=Nl OptionPanel.pl=Pl OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.ru=Ru OptionPanel.sl=Sl OptionPanel.zh_TW=Zh OptionPanel.zh_CN=Zh CN OptionPanel.fork=Biforcazione OptionPanel.bubble=Bolla OptionPanel.as_parent=Come genitore OptionPanel.combined=Combinato OptionPanel.bezier=Bezier OptionPanel.linear=Lineare OptionPanel.default=Predefinito OptionPanel.metal=Metallo OptionPanel.windows=Windows OptionPanel.motif=Motivo OptionPanel.gtk=Gtk OptionPanel.nothing=Nulla OptionPanel.relative=Relativo OptionPanel.absolute=Assoluto OptionPanel.first=Primo OptionPanel.last=Ultimo OptionPanel.selection_method_direct=Diretto OptionPanel.selection_method_delayed=Posticipato OptionPanel.selection_method_by_click=Usa clic OptionPanel.html_export_no_folding=Nessuna contrazione OptionPanel.html_export_fold_currently_folded=Contrai i correntemente contratti OptionPanel.html_export_fold_all=Contrai tutti OptionPanel.html_export_based_on_headings=Basata su intestazioni OptionPanel.Environment=Ambiente OptionPanel.Files=File OptionPanel.language=Lingua OptionPanel.language.tooltip=Questa \u00e8 la lingua che verr\u00e0 utilizzata nel programma. 'automatico' prova a caricare il modulo linguistico scelto dall'utente. OptionPanel.experimental_file_locking_on=Blocco file sperimentale OptionPanel.experimental_file_locking_on.tooltip= Funzionalit\u00e0 sperimentale OptionPanel.draganddrop=Drag & Drop OptionPanel.draganddrop.tooltip=Se il d&d \u00e8 abilitato. OptionPanel.userproperties=Propriet\u00e0 utente OptionPanel.patternsfile=File del modello OptionPanel.docmapurl_since_version_0_7_0=Docmapurl OptionPanel.browsemode_initial_map=Modo Sfoglia mappa iniziale OptionPanel.browsemode_initial_map.tooltip=L'URL della mappa caricata quando all'avvio \u00e8 selezionata la modalit\u00e0 Sfoglia OptionPanel.last_opened_list_length=Lunghezza ultimo elenco aperto OptionPanel.time_for_automatic_save=Intervallo salvataggio automatico OptionPanel.time_for_automatic_save.tooltip= tempo che intercorre tra due azioni automatiche di salvataggio (in msec): Per disabilitare il salvataggio automatico imposta il numero a 2000000000. OptionPanel.delete_automatic_saves_at_exit=Elimina i salvataggi automatici in chiusura OptionPanel.delete_automatic_saves_at_exit.tooltip= Se i file devono essere eliminati automaticamente durante la normale chiusura di Freemind, imposta le variabili seguenti a 'vero' OptionPanel.number_of_different_files_for_automatic_save=Numero di file per il salvataggio automatico OptionPanel.number_of_different_files_for_automatic_save.tooltip= numero n di file differenti in cui salvare la mappa. Il primo salvataggio automatico viene effettuato sul primo file e cos\u00ec via al salvataggio n+1, fino a tornare al primo (ciclico) OptionPanel.path_to_automatic_saves=Percorso salvataggi automatici OptionPanel.path_to_automatic_saves.tooltip= per modificare il percorso predefinito (che \u00e8 'java.io.tmpdir' di java), immettere qui il percorso a una cartella - altre possibilit\u00e0: * freemind_home sta per la directory in cui sono contenute le auto.properties. * default punta a java.io.tmpdir OptionPanel.Defaults=Predefiniti OptionPanel.standardnodestyle=Stile predefinito nodo OptionPanel.standardnodestyle.tooltip=Lo stile predefinito del nuovo nodo. 'biforcazione', 'bolla' 'come_padre' e 'combina' sono supportate OptionPanel.standardrootnodestyle=Stile predefinito nodo radice OptionPanel.standardrootnodestyle.tooltip=Lo stile del nodo radice se non specificato diversamente. 'biforcazione', 'bolla' e 'combina' sono supportate OptionPanel.standardnodetextcolor=Colore predefinito nodo OptionPanel.standardnodetextcolor.tooltip=Il colore predefinito del nodo. In notazione html (#RRGGBB in esadecimale) OptionPanel.standardselectednodecolor=Colore predefinito nodo selezionato OptionPanel.standardselectednodecolor.tooltip=Il colore predefinito del nodo, se selezionato. In notazione html (#RRGGBB in esadecimale) OptionPanel.standardselectednoderectanglecolor=Colore bolla nodo selezionato OptionPanel.standardselectednoderectanglecolor.tooltip=Il colore della bolla che contrassegna i nodi selezionati. In notazione html (#RRGGBB in esadecimale) OptionPanel.standarddrawrectangleforselection=Mostra nodi selezionati in bolle OptionPanel.standarddrawrectangleforselection.tooltip=I nodi selezionati sono contrassegnati da una bolla intorno. OptionPanel.standardedgecolor=Colore bordo predefinito OptionPanel.standardedgecolor.tooltip=Il colore predefinito dei bordi in notazione Html OptionPanel.standardlinkcolor=Colore predefinito collegamento OptionPanel.standardlinkcolor.tooltip=Il colore predefinito dei collegamenti in notazione Html OptionPanel.standardbackgroundcolor=Colore predefinito sfondo OptionPanel.standardbackgroundcolor.tooltip=Il colore predefinito dello sfondo in notazione Html OptionPanel.printonwhitebackground=Sfondo bianco per la stampa OptionPanel.printonwhitebackground.tooltip=Usa sempre uno sfondo bianco per la stampa OptionPanel.standardcloudcolor=Colore predefinito nuvola OptionPanel.standardcloudcolor.tooltip=Il colore predefinito delle nuvole in notazione Html OptionPanel.defaultfont=Carattere predefinito OptionPanel.defaultfont.tooltip=Il carattere predefinito del nodo. Funziona solo se il carattere (TrueType) \u00e8 disponibile nel sistema OptionPanel.defaultfontstyle=Stile carattere predefinito OptionPanel.defaultfontsize=Dimensione carattere predefinito OptionPanel.max_node_width=Larghezza max nodo OptionPanel.max_node_width.tooltip=La larghezza predefinita massima del nodo in pixel OptionPanel.standardedgestyle=Stile predefinito bordo OptionPanel.standardedgestyle.tooltip=Lo stile predefinito del bordo. Sono supportati 'lineare' e 'bezier' OptionPanel.standardcloudestyle=Stile predefinito nuvola OptionPanel.standardcloudestyle.tooltip=<Lo stile predefinito delle nuvole. Al momento \u00e8 supportato solo 'bezier' OptionPanel.standardlinkestyle=Stile predefinito collegamento OptionPanel.standardlinkestyle.tooltip=Lo stile predefinito dei collegamenti. Al momento \u00e8 supportato solo 'bezier' OptionPanel.Appearance=Aspetto OptionPanel.lookandfeel=Look & Feel OptionPanel.lookandfeel.tooltip=Il tipo Look&Feel da usare. Sono supportati 'metallo','windows','motivo' e 'gtk', mentre 'mac' \u00e8 disponibile solo su MacOS. Predefinito significa che viene utilizzato il tipo Look & Feel predefinito. Se desideri utilizzare un L&F personale, digita il nome della classe qui e assicurati che siano caricati i corrispondenti file jar. Se riscontri problemi con Look & Feel, allora scegli 'nulla' qui. Questo funziona per gli applet. OptionPanel.mapxsize=Dimensione-X-Mappa OptionPanel.mapxsize.tooltip=La dimensione iniziale di ogni mappa OptionPanel.mapysize=Dimensione-Y-Mappa OptionPanel.links=Collegamenti OptionPanel.links.tooltip=Imposta i collegamenti relativi o assoluti OptionPanel.el__buttons_position=Posizione pulsanti OptionPanel.el__buttons_position.tooltip= sopra / sotto OptionPanel.el__position_window_below_node=Posiziona la finestra sotto il nodo OptionPanel.el__min_default_window_height=Altezza predefinita minima della finestra OptionPanel.el__max_default_window_height=Altezza predefinita massima della finestra OptionPanel.el__min_default_window_width=Larghezza predefinita minima della finestra OptionPanel.el__max_default_window_width=Larghezza predefinita massima della finestra OptionPanel.el__enter_confirms_by_default='Invio' conferma automaticamente OptionPanel.el__show_icon_for_attributes=Mostra icone per attributi OptionPanel.Keystrokes=Combinazione tasti OptionPanel.keystroke_newMap=Nuova mappa OptionPanel.keystroke_open=Apri OptionPanel.keystroke_save=Salva OptionPanel.keystroke_saveAs=Salva con nome OptionPanel.keystroke_print=Stampa OptionPanel.keystroke_close=Chiudi OptionPanel.keystroke_quit=Esci OptionPanel.keystroke_export_to_html=Esporta in Html OptionPanel.keystroke_export_branch_to_html=Esporta ramo in Html OptionPanel.keystroke_open_first_in_history=Apri il pi\u00f9 recente OptionPanel.keystroke_previousMap=Mappa precedente OptionPanel.keystroke_nextMap=Mappa successiva OptionPanel.keystroke_mode_MindMap=Modalit\u00e0 MindMap OptionPanel.keystroke_mode_Browse=Modalit\u00e0 Sfoglia OptionPanel.keystroke_mode_File=Modalit\u00e0 File OptionPanel.keystroke_node_toggle_italic=Corsivo nodo on/off OptionPanel.keystroke_node_toggle_boldface=Grassetto nodo on/off OptionPanel.keystroke_node_toggle_underlined=Sottolineato nodo on/off OptionPanel.keystroke_node_toggle_cloud=Nuvola nodo on/off OptionPanel.keystroke_undo=Annulla OptionPanel.keystroke_redo=Ripristina OptionPanel.keystroke_delete_child=Elimina figlio OptionPanel.keystroke_select_all=Seleziona tutto OptionPanel.keystroke_select_branch=Seleziona ramo OptionPanel.keystroke_zoom_out=Riduci OptionPanel.keystroke_zoom_in=Ingrandisci OptionPanel.keystroke_cut=Taglia OptionPanel.keystroke_copy=Copia OptionPanel.keystroke_copy_single=Copia singolo OptionPanel.keystroke_paste=Incolla OptionPanel.keystroke_remove=Rimuovi OptionPanel.keystroke_add_arrow_link_action=Aggiungi azione collegamento a freccia OptionPanel.keystroke_add_local_link_action=Aggiungi azione collegamento locale OptionPanel.keystroke_moveToRoot=Spostaallaradice OptionPanel.keystroke_move_up=Sposta su OptionPanel.keystroke_move_down=Sposta gi\u00f9 OptionPanel.keystroke_move_left=Sposta a sinistra OptionPanel.keystroke_move_right=Sposta a destra OptionPanel.keystroke_follow_link=Apri collegamento OptionPanel.keystroke_add=Aggiungi OptionPanel.keystroke_add_child=Aggiungi figlio OptionPanel.keystroke_add_child_mac=Aggiungi figlio Mac OptionPanel.keystroke_add_sibling_before=Aggiungi fratello prima OptionPanel.keystroke_edit=Modifica OptionPanel.keystroke_edit_long_node=Modifica nodo lungo OptionPanel.keystroke_join_nodes=Collega nodi OptionPanel.keystroke_toggle_folded=Contrai/espandi OptionPanel.keystroke_toggle_children_folded=Contrai/espandi figli OptionPanel.keystroke_set_link_by_filechooser=Imposta collegamento da file OptionPanel.keystroke_set_link_by_textfield=Imposta collegamento da campo di testo OptionPanel.keystroke_set_image_by_filechooser=Imposta immagine da file OptionPanel.keystroke_node_up=Nodo su OptionPanel.keystroke_node_down=Nodo gi\u00f9 OptionPanel.keystroke_node_increase_font_size=Aumenta dimensione carattere nodo OptionPanel.keystroke_node_decrease_font_size=Diminuisci dimensione carattere nodo OptionPanel.keystroke_export_branch=Esporta ramo OptionPanel.keystroke_node_color=Colore del nodo OptionPanel.keystroke_node_color_blend=Unisci colori nodo OptionPanel.keystroke_edge_color=Colore bordo OptionPanel.keystroke_find=Cerca OptionPanel.keystroke_find_next=Trova successivo OptionPanel.keystroke_apply_pattern_1=Applica modello 1 OptionPanel.keystroke_apply_pattern_2=Applica modello 2 OptionPanel.keystroke_apply_pattern_3=Applica modello 3 OptionPanel.keystroke_apply_pattern_4=Applica modello 4 OptionPanel.keystroke_apply_pattern_5=Applica modello 5 OptionPanel.keystroke_apply_pattern_6=Applica modello 6 OptionPanel.keystroke_apply_pattern_7=Applica modello 7 OptionPanel.keystroke_apply_pattern_8=Applica modello 8 OptionPanel.keystroke_apply_pattern_9=Applica modello 9 OptionPanel.keystroke_apply_pattern_10=Applica modello 10 OptionPanel.keystroke_apply_pattern_11=Applica modello 11 OptionPanel.keystroke_apply_pattern_12=Applica modello 12 OptionPanel.keystroke_apply_pattern_13=Applica modello 13 OptionPanel.keystroke_apply_pattern_14=Applica modello 14 OptionPanel.keystroke_apply_pattern_15=Applica modello 15 OptionPanel.keystroke_apply_pattern_16=Applica modello 16 OptionPanel.keystroke_apply_pattern_17=Applica modello 17 OptionPanel.keystroke_apply_pattern_18=Applica modello 18 OptionPanel.Behaviour=Comportamento OptionPanel.placenewbranches=Inserisci nuovo ramo OptionPanel.placenewbranches.tooltip=Punto dove inserire i nuovi rami. I valori validi sono 'primo' e 'ultimo' OptionPanel.disable_cursor_move_paper=Disattiva il cursore 'sposta' dei fogli OptionPanel.disable_cursor_move_paper.tooltip=Non visualizzare il cursore 'sposta' durante il trascinamento del foglio OptionPanel.enable_leaves_folding=Abilita contrazione foglie OptionPanel.enable_leaves_folding.tooltip=Abilita la contrazione delle foglie == cambia tra bolla/biforcazione per la contrazione (se falso, puoi sempre usare lo stile dei nodi per cambiarlo) OptionPanel.foldingsymbolwidth=Contrai larghezza simboli OptionPanel.foldingsymbolwidth.tooltip=Larghezza del cerchio di contrazione OptionPanel.disable_key_type=Disattiva tipi di chiave OptionPanel.disable_key_type.tooltip=Digitazione tasti: se attivato entra in modalit\u00e0 modifica nodo OptionPanel.key_type_adds_new=Aggiungi nuovo tipo di chiave OptionPanel.key_type_adds_new.tooltip=Digitazione tasti: sovrascrive il contenuto (falso) / crea un nuovo fratello (vero) (richiede: disable_key_type = false) OptionPanel.selection_method=Metodo di selezione OptionPanel.selection_method.tooltip= Con la seguente opzione puoi attivare/disattivare lo schema di ritardo selezionato. Opzioni automatiche. Non modificarli, poich\u00e9 saranno salvati comunque in auto.properties. OptionPanel.time_for_delayed_selection=Intervallo per la selezione posticipata OptionPanel.time_for_delayed_selection.tooltip= Seleziona il tempo di ritardo di un nodo quando il mouse si porta sopra di esso (in ms). Imposta il valore a 1 se vuoi la selezione tramite passaggio del mouse. OptionPanel.HTML=HTML OptionPanel.default_browser_command_windows_nt=Comando browser predefinito Windows Nt OptionPanel.default_browser_command_windows_nt.tooltip=Per Windows (i segni "" sono necessari a causa dei collegamenti, che contengono "=" nell'URL). OptionPanel.default_browser_command_windows_9x=Comando browser predefinito Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=Per Windows (i segni "" sono necessari a causa dei collegamenti, che contengono "=" nell'URL). OptionPanel.default_browser_command_other_os=Comando browser predefinito per altri sistemi operativi OptionPanel.default_browser_command_other_os.tooltip= Questo \u00e8 tipico per Linux: OptionPanel.default_browser_command_mac=Comando browser predefinito Mac OptionPanel.default_browser_command_mac.tooltip= e MAC: (grazie a Nick!) OptionPanel.html_export_folding=Contrazione esporta Html OptionPanel.export_icons_in_html=Esporta icone In Html OptionPanel.export_icons_in_html.tooltip= Dice se l'Html esportato da FreeMind deve contenere icone. Il problema con le icone \u00e8 che spesso i collegamenti non vengono trovati nell'Html esportato. OptionPanel.Cancel=Annulla OptionPanel.OK=Salva option_changes_may_require_restart=Per visualizzare gli effetti dei cambiamenti devi riavviare Freemind. # fc, 12.5.2005: GrabKeyDialog.grab-key.title=Inserisci nuovo tasto GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=Cancella GrabKeyDialog.grab-key.assigned-to.none=Correntemente non assegnata GrabKeyDialog.grab-key.assigned-to=Assegnata a GrabKeyDialog.common.ok=OK GrabKeyDialog.grab-key.remove=Rimuovi GrabKeyDialog.common.cancel=Annulla GrabKeyDialog.grab-key.remove-ask=Sei sicuro di voler rimuovere questa combinazione tasti? OptionPanel.separator.language=Lingua OptionPanel.separator.files=File OptionPanel.separator.automatic_save=Salvataggio automatico OptionPanel.separator.default_styles=Stili predefiniti OptionPanel.separator.default_colors=Colori predefiniti OptionPanel.separator.selection_colors=Colori per la selezione OptionPanel.separator.default_fonts=Caratteri predefiniti OptionPanel.separator.other_defaults=Altre opzioni predefinite OptionPanel.separator.look_and_feel=Look & Feel OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.initial_map_size=Dimensione iniziale mappa OptionPanel.separator.hyperlink_types=Tipi di collegamento OptionPanel.separator.edit_long_node_window=Modifica finestra nodo lungo OptionPanel.separator.commands_for_the_program=Comandi per il programma OptionPanel.separator.node_editing_commands=Comandi modifica nodi OptionPanel.separator.node_navigation_commands=Comandi navigazione nodi OptionPanel.separator.new_node_commands=Nuovi comandi nodo OptionPanel.separator.patterns=Modelli OptionPanel.separator.behaviour=Comportamento OptionPanel.separator.key_typing=Digitazione chiave OptionPanel.separator.selection_method=Metodo di selezione OptionPanel.separator.browser=Browser OptionPanel.separator.html_export=Esportazione Html OptionPanel.separator.attributes=Attributi OptionPanel.separator.icons=Icone in "Seleziona icona..." OptionPanel.keystroke_edit_attributes=Modifica attributi OptionPanel.keystroke_show_all_attributes=Mostra tutti gli attributi OptionPanel.keystroke_show_selected_attributes=Mostra gli attributij selezionati OptionPanel.keystroke_hide_all_attributes=Nascondi tutti gli attributi OptionPanel.keystroke_show_attribute_manager=Gestore mostra attributi OptionPanel.keystroke_assign_attributes=Assegna attributi..... # fc, 2.6.2005: OptionPanel.antialias.tooltip=Determina la qualit\u00e0 della mappa. Pi\u00f9 antialias necessita di pi\u00f9 tempo. OptionPanel.antialias=Antialias OptionPanel.antialias_edges=Antialias sui bordi OptionPanel.antialias_all=Antialias su tutti OptionPanel.antialias_none=No Antialias OptionPanel.cs=Cs OptionPanel.nb=Nb # fc, 12.6.2005: correction, please remove the other translation of "follow_link" above follow_link= Apri collegamento OptionPanel.ColorProperty.ResetColor=Azzera colore # fc, 16.6.2005: OptionPanel.keystroke_option_dialog=Preferenze format_menu_edge_styles=Stile &bordo format_menu_edge_widths=&Larghezza bordo # fc, 3.7.2005: accessories/plugins/ImportMindmanagerFiles.properties_name=Mappa MindManager X5... # fc, 5.7.2005: accessories/plugins/ExportToOoWriter.properties_documentation=La struttura visibile (ad es. tutti i nodi espansi) crea la struttura del capitolo del documento.
I nodi nascosti (ad es. i nodi compressi) sono inseriti all'interno di questi capitoli come elenchi o paragrafi. accessories/plugins/ExportToOoWriter.properties_name= Come documento di testo OpenOffice Writer... # fc, 10.7.2005: OptionPanel.separator.undo=Annulla OptionPanel.undo_levels=Annulla livelli OptionPanel.undo_levels.tooltip=Determina quanti passaggi vengono salvati per la funzione "Annulla". # fc, 13.8.2005 OptionPanel.lt=Lt # fc, 12.1.2006: if you create a translation of the documentation file, change this value (see german translation): browsemode_initial_map= ./doc/freemind.mm # fc, 1.2.06 link_not_found= Collegamento $1 non trovato. # fc, 15.2.06 icon_smily_bad= Non sono contento OptionPanel.hr=Hr OptionPanel.nn=Nn OptionPanel.se=Se OptionPanel.unfold_on_paste=Espandi il nodo durante il comando Incolla OptionPanel.unfold_on_paste.tooltip=Espande il nodo durante il comando Incolla o il Drag&Drop # fc, 16.2.06 accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Esporta la mappa come "applet java". accessories/plugins/ExportWithXSLT_Applet.properties_name=Come Java Applet... accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Pagina web accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Esporta la mappa come applicazione flash. accessories/plugins/ExportWithXSLT_Flash.properties_name=Come Flash... # fc, 21.2.06 accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=Alla sinistra della radice i nodi sono spostati in basso. Essi diventano figli del loro fratello soprastante. Alla destra della radice i nodi sono spostati in alto. Direttamente alla radice, i nodi cambiano lato. accessories/plugins/ChangeNodeLevelAction_left.properties_name=Nodo sinistro accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=Alla destra della radice i nodi sono spostati in basso. Essi diventano figli del loro fratello soprastante. Alla sinistra della radice i nodi sono spostati in alto. Direttamente alla radice, i nodi cambiano lato. accessories/plugins/ChangeNodeLevelAction_right.properties_name=Nodo destro # fc, 27.2.06: PatternDialog.ColorProperty.ResetColor=AzzeraColore PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_parent=Come genitore PatternDialog.EdgeWidth_thin=fine PatternDialog.as_parent=Come genitore PatternDialog.bezier=bezier PatternDialog.bubble=Bolla PatternDialog.combined=Combinato PatternDialog.edgecolor.tooltip=Propriet\u00e0 del bordo al nodo genitore (\u00e8 applicato anche a tutti i nodi figli) PatternDialog.edgecolor=Colore bordo PatternDialog.edgestyle.tooltip=Propriet\u00e0 del bordo al nodo genitore (\u00e8 applicato anche a tutti i nodi figli) PatternDialog.edgestyle=Stile bordo PatternDialog.edgewidth.tooltip=Propriet\u00e0 del bordo al nodo genitore (\u00e8 applicato anche a tutti i nodi figli) PatternDialog.edgewidth=Larghezza bordo PatternDialog.fork=Biforcazione PatternDialog.linear=lineare PatternDialog.nodebackgroundcolor=Colore sfondo del nodo PatternDialog.nodecolor=Colore del nodo PatternDialog.nodestyle=Stile del nodo PatternDialog.nodetext=Testo del nodo PatternDialog.separator.EdgeControls=Bordi PatternDialog.separator.NodeColors=Colori dei nodi PatternDialog.separator.NodeStyles=Stili dei nodi PatternDialog.sharp_bezier=bezier marcato PatternDialog.sharp_linear=lineare marcato PatternDialog.undefined_font=Carattere non definito accessories/plugins/ApplyFormatPlugin.properties_documentation=Visualizza una finestra tramite cui si possono cambiare insieme gli attributi del nodo e del bordo. accessories/plugins/ApplyFormatPlugin.properties_name=&Cambia formato... accessories/plugins/ApplyFormatPlugin.dialog.title=Cambia il formato dei nodi OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Sposta a sinistra OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Sposta a destra OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Copia formato OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Incolla formato OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Inserisci icona OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Aumenta rientro nodi OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=Dividi nodo # OptionPanel.keystroke_accessories/plugins/NodeNote.properties_key=Insert a note OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Contrai di un livello OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Espandi di un livello OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Contrai tutto OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Espandi tutto OptionPanel.separator.others=Altre chiavi dipendenti PatternDialog.separator.General=Generale PatternDialog.clear_all_setters=Commuta tutto PatternDialog.clear_all_setters.tooltip=Attiva o disattiva tutti i cambiamenti indicati. # fc, 1.3.06: accessories/plugins/ManagePatterns.dialog.title=Gestisci modelli... accessories/plugins/ManagePatterns.not_found=Il file dei modelli non pu\u00f2 essere caricato. accessories/plugins/ManagePatterns.properties_documentation=Modifica con un editor di testo i modelli definiti in patterns.xml. Il risultato viene salvato automaticamente. accessories/plugins/ManagePatterns.properties_name=Gestisci modelli... # fc, 14.3.06: PatternDialog.nodefontbold=Carattere grassetto PatternDialog.nodefontitalic=Carattere corsivo PatternDialog.separator.NodeFont=Carattere nodo # fc, 19.3.06: ManagePatternsPopupDialog.remove=Rimuovi modello ManagePatternsPopupDialog.add=Aggiungi nuovo modello PatternDialog.patternname=Nome PatternDialog.patternname.tooltip=Nome modello univoco PatternNewNameProperty=Nuovo modello ManagePatternsPopupDialog.DuplicateNameMessage=Il nome \u00e8 gi\u00e0 in uso. Cambia il nome prima di chiudere la finestra. PatternDialog.childpattern.tooltip=Il modello selezionato viene applicato a tutti i figli. PatternDialog.childpattern=Modello dei nodi figli ManagePatternsPopupDialog.Save=Salva e ritorna PatternDialog.icon.tooltip=Se applicato, il nodo avr\u00e0 esattamente questa icona. PatternDialog.icon=Icona PatternDialog.set_property_text=Cambia PatternDialog.set_property_text.tooltip=Vuoto: Non toccare; Meno=Rimuovi le propriet\u00e0 (imposta i valori predefiniti); Pi\u00f9=Modifica le propriet\u00e0 accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Cambia modello OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Formattazione automatica dei modelli OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Modelli PatternToString.color=Colore PatternToString.backgroundColor=Colore di sfondo #OptionPanel.automaticFormat_level1=Root Node Format #OptionPanel.automaticFormat_level2=1. Level Node Format PatternToString.NodeFontSize=Dimensione carattere OptionPanel.level1=Formato del nodo radice OptionPanel.level2=1. Livello, formato del nodo OptionPanel.level3=2. Livello, formato del nodo OptionPanel.level4=3. Livello, formato del nodo OptionPanel.level5=Formato degli altri nodi OptionPanel.automaticFormat_level=Stili di formattazione automatica # fc, 13.4.06: ManagePatternsPopupDialog.duplicate=Duplica modello ManagePatternsPopupDialog.from_nodes=Crea modello dai nodi selezionati # fc, 25.5.2006: accessories/plugins/SaveAll.properties_documentation=Salva tutte le mappe aperte. accessories/plugins/SaveAll.properties_name=Salva &tutto accessories/plugins/SaveAll.properties_save_all_cancelled=L'operazione non \u00e8 stata completata. # fc, 23.7.06 OptionPanel.loadLastMap=Apri automaticamente l'ultima mappa OptionPanel.loadLastMap.tooltip=Se selezioni questa opzione, all'apertura di Freemind si aprir\u00e0 automaticamente l'ultima mappa utilizzata. # dan, whenever use_rich_formatting= Usa testo formattato use_plain_text= Usa testo semplice # fc, 30.7.06: FreeMind.progress.gettingPreferenceDirectories=Recupero directory delle preferenze... FreeMind.progress.gettingPreferences=Recupero preferenze in corso... FreeMind.progress.updateLookAndFeel=Aggiorna Look & Feel... FreeMind.progress.createController=Crea Controllore... FreeMind.progress.settingPreferences=Imposta preferenze... FreeMind.progress.propageteLookAndFeel=Propaga Look & Feel... FreeMind.progress.createInitialMode=Crea modalit\u00e0 iniziale... FreeMind.progress.startCreateController=Avvia creazione Controllore... FreeMind.progress.loadMaps=Carica mappe... FreeMind.progress.buildScreen=Costruisci schermo... FreeMind.progress.endStartup=Termina avvio. OptionPanel.tr=Tr OptionPanel.level=Livello # fc, 13.8.06: map_not_saved=La mappa non \u00e8 stata salvata precedentemente. # fc, 27.8.06: plugins/TimeManagement.xml_Find=Cerca plugins/TimeManagement.xml_Replace=Sostituisci plugins/TimeManagement.xml_Select=Seleziona plugins/TimeManagement.xml_Export=Esporta nodi selezionati plugins/TimeManagement.xml_Replace_All=Sostituisci tutti plugins/TimeManagement.xml_Replace_Selected=Sostituisci selezionati plugins/TimeManagement.xml_Goto=Vai a plugins/TimeManagement.xml_Cancel=Annulla # fc, 2.9.06: automatically_save_message=La mappa era stata automaticamente salvata (utilizzando il nome file {0}) ... plugins/ScriptingEngine.xml_documentation=Valuta tutti gli script contenuti (ordine ricorsivo, prima le foglie). plugins/ScriptingEngine.xml_name=Valuta # fc, 4.9.06 OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Valuta # fc, 6.9.06: error_applying_template=Errore nell'applicazione del modello XSL. # fc, 11.10.06: accessories/plugins/NodeNote_jumpto.properties_documentation=Passa a risp. dalla finestra delle note accessories/plugins/NodeNote_jumpto.properties_name=Passa all'editor delle note #accessories/plugins/NodeNote_jumpfrom.properties_documentation=Switch back from notes to mindmap #accessories/plugins/NodeNote_jumpfrom.properties_name=Leave note # fc, 12.10.06 OptionPanel.max_tooltip_width=Larghezza suggerimenti OptionPanel.max_tooltip_width.tooltip=La larghezza predefinita dei suggerimenti in pixel. # fc, 13.10.06: renamed: plugins/NodeList.xml_documentation=Visualizza tutti i nodi e il momento di creazione/modifica. # fc, 10.11.2006: OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Passa all'editor delle note OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Mostra/nascondi la finestra delle note # Dimitry 25.10 OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Cancella nota # aki 19.10.06: (TJI support) accessories/plugins/ExportWithXSLT_Applet.properties_tji= Il Gestore dei processi include i file accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Esporta i compiti dal nodo PROCESSI al modulo Gestore dei processi. accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Compiti dal nodo PROCESSI al file Gestore dei processi... accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation=Esporta le risorse dal nodo RISORSE al modulo Gestore dei processi. accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name=Risorse dal nodo RISORSE al file Gestore dei processi... # fc, 14.12.2006: renamed: plugins/NodeList.xml_name=Trova e sostituisci... plugins/TimeManagement.xml_menu_actions=Azioni # fc, 23.12.06: plugins/TimeList.xml_Notes=Note # fc, 30.12.06: accessories/plugins/SortNodes.properties_documentation=Ordina alfabeticamente tutti i figli di un nodo. accessories/plugins/SortNodes.properties_name=&Ordina figli # fc, 3.1.07: OptionPanel.ar=Ar # fc, 10.1.07: plugins/TimeManagement.xml_WindowTitle_All_Nodes=Cerca e sostituisci plugins/ScriptEditor.xml_documentation=Abilita a scrivere script pi\u00f9 estesi con FreeMind. plugins/ScriptEditor.xml_name=Editor degli s&cript... # fc, 24.1.07: plugins/ScriptEditor/window.title=Editor degli script plugins/ScriptEditor.menu_actions=&Azioni plugins/ScriptEditor.run=A&vvia plugins/ScriptEditor/window.Result=Risultato: # SimplyHTML.properties # # resource bundle with strings for application SimplyHTML # - English Language (default) - # edit menu definition simplyhtml.editLabel=Modifica # edit menu items simplyhtml.undoLabel=Annulla simplyhtml.undoTip=annulla simplyhtml.redoLabel=Ripristina simplyhtml.redoTip=ripristina simplyhtml.cutLabel=Taglia simplyhtml.cutTip=taglia simplyhtml.copyLabel=Copia simplyhtml.copyTip=copia simplyhtml.pasteLabel=Incolla simplyhtml.pasteTip=incolla simplyhtml.selectAllLabel=Seleziona tutto simplyhtml.findReplaceLabel=Trova e sostituisci simplyhtml.findReplaceTip=trova e sostituisci #insert menu definition simplyhtml.insertTableLabel=Tabella... # format menu definition simplyhtml.formatLabel=Formato # format menu items simplyhtml.fontLabel=Carattere... simplyhtml.fontTip=Carattere formato... simplyhtml.clearFormatLabel=Rimuovi formattazione simplyhtml.clearFormatTip=Rimuovi formattazione simplyhtml.fontBoldLabel=Grassetto simplyhtml.fontBoldImage=resources/bold.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontBoldTip=grassetto s\u00ec/no simplyhtml.fontColorTip=Colore del testo simplyhtml.fontColorLabel=Colore del testo simplyhtml.fontColorImage=resources/fontColor.gif simplyhtml.fontItalicLabel=Corsivo simplyhtml.fontItalicImage=resources/italic.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontItalicTip=corsivo s\u00ec/no simplyhtml.fontUnderlineLabel=Sottolineato simplyhtml.fontUnderlineImage=resources/uline.gif simplyhtml.fontUnderlineTip=sottolineato s\u00ec/no simplyhtml.formatTableLabel=Tabella... simplyhtml.formatTableTip=Formatta tabella simplyhtml.toggleBulletsLabel=Elenco puntato s\u00ec/no simplyhtml.toggleBulletsTip=elenco puntato s\u00ec/no simplyhtml.toggleNumbersLabel=Elenco numerato s\u00ec/no simplyhtml.toggleNumbersTip=elenco numerato s\u00ec/no simplyhtml.formatListLabel=Elenco... simplyhtml.formatListTip=cambia il formato elenco simplyhtml.formatParaLabel=Paragrafo... simplyhtml.formatParaTip=Cambia il formato del paragrafo simplyhtml.paraAlignLeftLabel=Allinea a sinistra simplyhtml.paraAlignLeftTip=Allinea il paragrafo a sinistra simplyhtml.paraAlignCenterLabel=Centrato simplyhtml.paraAlignCenterTip=Centra il paragrafo nella pagina simplyhtml.paraAlignRightLabel=Allinea a destra simplyhtml.paraAlignRightTip=Allinea il paragrafo a destra # table menu definition # table menu items simplyhtml.tableLabel=Tabella simplyhtml.nextTableCellLabel=Cella successiva simplyhtml.prevTableCellLabel=Cella precedente simplyhtml.insertTableRowLabel=Inserisci riga simplyhtml.insertTableColLabel=Inserisci colonna simplyhtml.appendTableRowLabel=Aggiungi riga simplyhtml.appendTableColLabel=Aggiungi colonna simplyhtml.deleteTableRowLabel=Elimina riga simplyhtml.deleteTableColLabel=Elimina colonna # help menu items simplyhtml.helpLabel=Aiuto simplyhtml.aboutLabel=Informazioni su SimplyHTML... # About frame simplyhtml.aboutFrameTitle=Informazioni su questa applicazione # Font Dialog simplyhtml.fontDialogTitle=Carattere formato # Font panel simplyhtml.uLineLabel=Sottolineato simplyhtml.strikeLabel=Barrato simplyhtml.previewLabel=Anteprima simplyhtml.previewText=Anteprima testo simplyhtml.familyLabel=Famiglia simplyhtml.sizeLabel=Dimensione simplyhtml.plainName=semplice simplyhtml.boldName=grassetto simplyhtml.italicName=corsivo simplyhtml.boldItalicName=grassetto corsivo simplyhtml.styleLabel=Stile simplyhtml.effectLabel=Effetto simplyhtml.colorLabel=Colore simplyhtml.foregroundLabel=Primo piano: simplyhtml.backgroundLabel=Sfondo: simplyhtml.noLineLabel=nessuno # Paragraph style panel simplyhtml.textIndentLabel=Aumenta rientro: simplyhtml.alignLabel=(allineamento): simplyhtml.alignLeft=sinistra simplyhtml.alignCenter=centro simplyhtml.alignRight=destra simplyhtml.valignLabel=Verticale (allineamento): simplyhtml.valignTop=sopra simplyhtml.valignMiddle=centro simplyhtml.valignBottom=sotto simplyhtml.valignBaseline=linea inferiore # Margin panel simplyhtml.marginLabel=Esterno simplyhtml.paddingLabel=Interno # Table dialog simplyhtml.tableDialogTitle=Formatta tabella simplyhtml.tablePanelTitle=Formato tabella simplyhtml.cellPanelTitle=Formato cella simplyhtml.tableWidthLabel=Larghezza: simplyhtml.tableBgColLabel=Colore di sfondo: simplyhtml.cellMarginTabLabel=Margine simplyhtml.cellBorderTabLabel=Bordi simplyhtml.borderWidthLabel=Larghezza simplyhtml.borderColorLabel=Colore: simplyhtml.thisCellRangeLabel=questa cella simplyhtml.thisColRangeLabel=questa colonna simplyhtml.thisRowRangeLabel=questa riga simplyhtml.allCellsRangeLabel=tutte le celle simplyhtml.applyCellAttrLabel=Applica a simplyhtml.cellGenTabLabel=Generale # Paragraph style dialog simplyhtml.paraStyleDialogTitle=Stile del paragrafo simplyhtml.fontTabLabel=Carattere simplyhtml.paraTabLabel=Paragrafo # Tag names simplyhtml.cTagNamePara=Paragrafo simplyhtml.cTagNameHead1=Intestazione 1 simplyhtml.cTagNameHead2=Intestazione 2 simplyhtml.cTagNameHead3=Intestazione 3 simplyhtml.cTagNameHead4=Intestazione 4 simplyhtml.cTagNameHead5=Intestazione 5 simplyhtml.cTagNameHead6=Intestazione 6 simplyhtml.cTagNameLink=Collegamento simplyhtml.cTagNameUL=Elenco non ordinato simplyhtml.cTagNameOL=Elenco ordinato # List dialog simplyhtml.listDialogTitle=Formato elenco simplyhtml.listTypeLabel=Tipo: simplyhtml.listPositionLabel=Posizione: simplyhtml.listIndentTitle=Aumenta rientro: simplyhtml.listTypeNone=nessuno simplyhtml.listTypeDecimal=1.,2.,3.,4. simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. simplyhtml.listTypeDisc=simbolo del file come punto simplyhtml.listTypeCircle=punto rotondo simplyhtml.listTypeSquare=punto squadrato simplyhtml.listPosInside=dentro simplyhtml.listPosOutside=fuori # Find & replace dialog simplyhtml.findReplaceDialogTitle=Trova e sostituisci simplyhtml.findNext=Trova successivo... simplyhtml.searchFromStart=Ricerca dall'inizio simplyhtml.searchDown=Verso il basso simplyhtml.wholeWordsOnly=Solo parole intere simplyhtml.searchUp=Verso l'alto simplyhtml.matchCase=Maiuscole/minuscole simplyhtml.replaceWith=Sostituisci con: simplyhtml.textToFind=Testo da cercare: simplyhtml.replace=Sostituisci... simplyhtml.noMoreOccurrencesFound=nessuna (altra) corrispondenza trovata simplyhtml.allOccurrencesReplaced=Tutte le corrispondenza sostituite simplyhtml.replaceThisQuery=cambia questa corrispondenza di simplyhtml.replaceYes=S\u00ec simplyhtml.replaceNo=No simplyhtml.replaceAll=Tutti simplyhtml.replaceDone=Fatto # Error messages simplyhtml.unableToUndoError=Impossibile annullare: simplyhtml.unableToRedoError=Impossibile ripristinare: simplyhtml.unableToOpenFileError=Il file non pu\u00f2 essere aperto # Miscellaneous text simplyhtml.imageFileDesc=File immagine simplyhtml.defaultDocName=Senza titolo simplyhtml.cancelBtnName=Annulla simplyhtml.closeBtnName=Chiudi simplyhtml.okBtnName=OK simplyhtml.leftLabel=sinistra: simplyhtml.rightLabel=destra: simplyhtml.topLabel=sopra: simplyhtml.bottomLabel=sotto: simplyhtml.insertTableTitle=inserisciTabella simplyhtml.insertTableMsg=Quante colonne? simplyhtml.close=Chiudi simplyhtml.standardStyleName=predefinito simplyhtml.styleNameInputTitle=Salva stile simplyhtml.styleNameInputText=Nome del nuovo stile? simplyhtml.newStyleDefaultName=nuovo stile simplyhtml.docTitleTitle=Modifica il titolo del documento simplyhtml.docTitleQuery=Imposta titolo a: simplyhtml.layoutTabTitle=Visualizza formattazione simplyhtml.htmlTabTitle=Visualizza codice HTML #fc, 14.2.07: ScriptEditorPanel.changed_cancel=Gli script sono stati cambiati. Vuoi veramente tralasciare queste modifiche? # fc, 2.3.07: OptionPanel.separator.mouse_wheel=Rotella del mouse OptionPanel.wheel_velocity=Velocit\u00e0 OptionPanel.wheel_velocity.tooltip=Un valore pi\u00f9 alto fa s\u00ec che la rotella del mouse muova pi\u00f9 velocemente la mappa. # fc, 15.5.07: accessories/plugins/NodeHistoryBack.properties_name=Indietro accessories/plugins/NodeHistoryBack.properties_documentation=Torna indietro nella catena selezionata accessories/plugins/NodeHistoryForward.properties_name=Avanti accessories/plugins/NodeHistoryForward.properties_documentation=Vai avanti nella catena selezionata # fc, 25.5.07: OptionPanel.use_tabbed_pane.tooltip=Se selezionate, le mappe sono visualizzate in schede (come in FireFox :-) ). OptionPanel.use_tabbed_pane=Usa schede # fc, 11.6.07: accessories/plugins/ExportWithTWiki.properties_name=Come TWiki... accessories/plugins/ExportWithTWiki.properties_documentation=Esporta la mappa come documento TWiki. accessories/plugins/ExportWithTWiki.properties=File TWiki (*.twi) # fc, 31.7.07 really_remove_node=Vuoi davvero rimuovere il/i nodo/i? confirmation=Conferma OptionalDontShowMeAgainDialog.dontShowAgain=&Non chiedermelo pi\u00f9. OptionalDontShowMeAgainDialog.rememberMyDescision=&Ricorda la mia scelta. OptionalDontShowMeAgainDialog.cancel=&No OptionalDontShowMeAgainDialog.ok=&S\u00ec OptionPanel.separator.resources_notifications=Conferma OptionPanel.delete_nodes_without_question=Eliminare i nodi senza conferma? OptionPanel.delete_nodes_without_question.tooltip=Se si seleziona questa opzione, i nodi vengono eliminati senza conferma. Se lo si preme inavvertitamente, ci\u00f2 pu\u00f2 causare perdita di informazioni. edit.decision=Editor HTML edit.edit_rich_text=Vuoi utilizzare la formattazione tipo grassetto o corsivo? OptionPanel.remind_type_of_new_nodes.tooltip="Chiedi" lo chieder\u00e0 (se sei in dubbio, usa questa opzione).
"S\u00ec" mostra l'editor per il testo formattato.
"No" mostra l'editor di testo semplice. OptionPanel.ask=Chiedi OptionPanel.standardselectednodetextcolor.tooltip= # fc, 4.9.07: really_execute_script=Vuoi veramente eseguire gli script inclusi in questa mappa? E' possibile che danneggino il computer. OptionPanel.resources_execute_scripts_without_asking=Gli script devono essere eseguiti senza conferma? OptionPanel.execute_scripts_without_asking.tooltip=Gli script di FreeMind sono in grado, principalmente, di eseguire qualsiasi azione sul computer.
Non dovresti eseguire script se non sei sicuro della loro affidabilit\u00e0. #fc, 13.9.07: PatternToString.EdgeStyle=Stile bordo PatternToString.EdgeColor=Colore bordo PatternToString.EdgeWidth=Larghezza bordo PatternToString.FontBold=Grassetto PatternToString.FontItalic=Corsivo PatternToString.FontName=Nome carattere PatternToString.Icon=Icona PatternToString.Child=Stile nodo figlio ManagePatternsPopupDialog.Actions=&Azioni #Dimitry 19.10.07: node_location_help=Il trascinamento cambia la posizione dei nodi, ctrl+trascina cambia le distanze, doppio clic e ctrl+doppio clic li azzera. #fc, 19.10.07: really_convert_to_current_version=Questa mappa \u00e8 stata creata con una vecchia versione di FreeMind.
Deve essere convertita (raccomandato)?
(In caso contrario, sar\u00e0 utilizzata tal quale, senza garanzie). OptionPanel.resources_convert_to_current_version=Convertire automaticamente le mappe create con vecchie versioni di FreeMind
alla versione attuale? OptionPanel.resources_convert_to_current_version.tooltip=\u00c8 possibile aprire senza conversione
solo per le mappe di dimensioni molto grandi (\u00e8 richiesta esperienza). #Dimitry 25.10.07 OptionPanel.separator.root_node_appearance=Aspetto nodo radice OptionPanel.use_common_out_point_for_root_node=I margini iniziano da un punto al nodo radice OptionPanel.use_common_out_point_for_root_node.tooltip=I margini iniziano da un punto al nodo radice======= #fc, 9.11.07: ManagePatternsPopupDialog.apply=Applica PatternDialog.setscript=Modificare? PatternDialog.setscript.tooltip=Uno script pu\u00f2 essere associato allo stile. PatternDialog.script=Script PatternDialog.script.tooltip=Lo script come codice Groovy. #fc, 12.11.07: OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Gestisci stili #fc, 4.1.2008 changed: toggle_menubar= Barra dei menu toggle_toolbar= Barra degli s&trumenti toggle_left_toolbar= Barra degli strumenti &secondaria accessories/plugins/NodeNote_hide_show.properties_name=Finestra delle note selection_as_rectangle=Selezione rettangolare # fc, 8.1.2008 really_cut_node=Tagliare davvero i nodi? OptionPanel.resources_cut_nodes_without_question=Tagliare i nodi senza conferma? OptionPanel.cut_nodes_without_question.tooltip=Se si seleziona questa opzione, i nodi vengono tagliati senza conferma. Se lo si preme inavvertitamente, ci\u00f2 pu\u00f2 causare perdita di informazioni. # fc, 9.1.2008: follow_graphical_link=Vai a: #fc 10.1.2008: changed: accessories/plugins/NodeNote_hide_show.properties_documentation=Mostra o nasconde la finestra delle note. #fc, 16.1.2008 plugins/ScriptEditor.new_script=Nuovo script #fc, 20.2.2008: OptionPanel.separator.save=Salva OptionPanel.save_only_intrisically_needed_ids=Salva solo gli ID dei nodi usati OptionPanel.save_only_intrisically_needed_ids.tooltip=Se selezionata, gli ID dei nodi non usati all'interno della mappa sono omessi. Si noti che non \u00e8 possibile collegare mappe esterne a nodi specifici senza ID all'interno della mappa. # fc, 10.3.2008: OptionPanel.plugins/scripting/tab_name=Esecuzione di script OptionPanel.separator.plugins/scripting/separatorPropertyName=Permessi OptionPanel.resources_execute_scripts_without_file_restriction=Permetti operazioni sui file (SCONSIGLIATO) OptionPanel.resources_execute_scripts_without_file_restriction.tooltip=Se i tuoi script Groovy necessitano eseguire azioni speciali sui file (apri, chiudi, leggi, scrivi, elimina(!)),
devi attivare questa opzione.
Usala con attenzione, poich\u00e9 gli script maligni possono danneggiare il computer! OptionPanel.resources_execute_scripts_without_network_restriction=Permetti operazioni di rete (SCONSIGLIATO) OptionPanel.resources_execute_scripts_without_network_restriction.tooltip=Se i tuoi script Groovy necessitano eseguire speciali azioni di rete,
devi attivare questa opzione.
Usala con attenzione, poich\u00e9 gli script maligni possono svelare i tuoi segreti! OptionPanel.resources_execute_scripts_without_exec_restriction=Permetti di eseguire altre applicazioni (SCONSIGLIATO) OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip=Se i tuoi script Groovy necessitano avviare speciali applicazioni (come il browser) senza richiesta (!),
devi attivare questa opzione.
Usala con attenzione, poich\u00e9 gli script maligni possono danneggiare il computer! plugins/ScriptEditor.FORBIDDEN_ACTION=Gli script groovy di FreeMind hanno delle restrizioni. La seguente operazione {0,choice,0#File|1#Network|2#Exec} \u00e8 proibita: {1,choice,0#Accept|1#Connect|2#Listen|3#Multicast|4#SetFactory|5#Exec|6#Link|7#Delete|8#Read|9#Write}. \u00c8 possibile modificare questo nelle impostazioni del programma. # changed, fc, 11.3.2008: plugins/ScriptEditor.cancel=&Annulla modifiche ed esci plugins/ScriptEditor.exit=&Salva ed esci # changed, fc, 26.3.2008: plugins/TimeManagement.xml_closeButton=Chiudi # changed, fc, 7.4.2008: PatternDialog.nodebackgroundcolor.tooltip=Lo sfondo del nodo quando non selezionato. PatternDialog.nodecolor.tooltip=Il primo piano del nodo quando non selezionato. PatternDialog.nodestyle.tooltip=Lo stile descrive la forma esterna di un nodo.
Valori possibili:
fork: senza casella di contorno,
bolla: nodo con contorno rettangolare,
Come genitore: prende lo stile dal nodo genitore
o dallo stile predefinito del nodo radice,
Combinato: Bolla quando il nodo \u00e8 contratto, altrimenti biforcazione.
PatternDialog.nodetext.tooltip=Qui \u00e8 possibile definire il testo del nodo. Quando viene applicato questo modello, il testo precedente viene scartato. PatternDialog.nodefontname=Nome carattere del nodo PatternDialog.nodefontsize=Dimensione carattere del nodo PatternDialog.nodefontname.tooltip= PatternDialog.nodefontsize.tooltip= PatternDialog.nodefontbold.tooltip= PatternDialog.nodefontitalic.tooltip= # new, fc, 8.4.2008: PatternDialog.separator.ScriptingControl=Esecuzione di script # new, fc, 10.4.2008: OptionPanel.resources_don_t_show_note_icons=Non mostrare le icone delle note #new, fc, 11.4.2008: FreeMind=Homepage di FreeMind # new, fc, 12.4.2008: really_remove_notes=Rimuovere davvero la/le nota/e? OptionPanel.resources_remove_notes_without_question=Rimuovere le note senza conferma? OptionPanel.remove_notes_without_question.tooltip=Se questa opzione \u00e8 attivata, le note che appartengono ai nodi selezionati saranno rimosse senza conferma. Se lo si preme inavvertitamente, ci\u00f2 pu\u00f2 causare perdita di informazioni. OptionPanel.resources_save_folding_state=Salva sempre degli stati di contrazione OptionPanel.resources_save_folding_state.tooltip=Se attivata, le azioni di contrazione rendono grigia la mappa e ti ricordano di salvare i cambiamenti. # new, fc, 17.4.2008: plugins/ScriptEditor.sign=Firma script... # new, fc, 18.4.2008: OptionPanel.resources_script_user_key_name_for_signing=Chiave alias utente facoltativa per la firma OptionPanel.resources_script_user_key_name_for_signing.tooltip=Se vuoi firmare i tuoi script, inserisci qui l'alias della chiave.
Si presume che la chiave sia conservata nel portachiavi predefinito.
La password della chiave segreta deve coincidere con la password del portachiavi (predefinito). OptionPanel.resources_signed_script_are_trusted=Script con firma affidabile (raccomandato). OptionPanel.resources_signed_script_are_trusted.tooltip=Se gli script sono firmati da parti affidabili (ad es. dagli autori di FreeMind o da te), lo script viene eseguito senza restrizioni. # changed, fc, 24.4.2008: # this is still the old "export_branch", but as many users didn't find this feature, we # have to describe it better. Moreover, it is put into the node context menu. export_branch_new= Ramifica come nuova mappa... # new, fc, 28.4.2008: icon_yes= Importante icon_folder= Cartella icon_up= Su icon_down= Gi\u00f9 icon_smiley-neutral= Inespressivo icon_smiley-oh= Sorpresa icon_smiley-angry= Arrabbiato icon_encrypted= Bloccato icon_decrypted= Sbloccato icon_broken-line= Rotto icon_flag-black= Bandiera nera icon_flag-blue= Bandiera blu icon_flag-green= Bandiera verde icon_flag-orange= Bandiera arancione icon_flag-pink= Bandiera rosa icon_flag-yellow= Bandiera gialla icon_clock= Ora icon_hourglass= In attesa icon_calendar= Data icon_kmail= E-mail icon_edit= Affina icon_stop-sign= Stop icon_closed= Nessuna voce # changed: icon_flag= Bandiera rossa #changed: OptionPanel.remind_use_rich_text_in_new_long_nodes=Usa la formattazione per tutti i nodi # new, fc, 21.5.2008: icon_freemind_butterfly= FreeMind icon_full-8= Priorit\u00e0 8 icon_full-9= Priorit\u00e0 9 # new, fc, 25.5.2008: node_is_write_protected=Il nodo di destinazione \u00e8 protetto da scrittura. # new, fc, 6.7.2008: KeyDoc=Documentazione delle combinazioni tasti in PDF # translate only, when you have an own translation of this doc. pdfKeyDocLocation=./doc/FM_Key_Mappings_Quick_Guide.pdf icon_info=Info icon_full-0=Priorit\u00e0 0 icon_prepare=Semaforo giallo icon_go=Semaforo verde icon_list=Elenco icon_launch=Avvia icon_family=Famiglia icon_female1=Femmina1 icon_female2=Femmina2 icon_male1=Maschio1 icon_male2=Maschio2 icon_fema=Femmine icon_group=Gruppo OptionPanel.separator.icon_properties=Icone OptionPanel.icons.list=Elenco delle icone standard visualizzate OptionPanel.icon_order_description=Qui puoi ordinare o disattivare le icone standard. Le icone devono essere separate da ';'. # new, fc, 16.7.2008: OptionPanel.sk=Sk OptionPanel.el=El OptionPanel.et=Et OptionPanel.id=Id OptionPanel.uk_UA=Uk UA OptionPanel.vi=Vi # new, fc, 22.7.2008 select_icon=Seleziona un'icona mode_MindMap=Modalit\u00e0 MindMap mode_Browse=Modalit\u00e0 Sfoglia mode_File=Modalit\u00e0 File # changed mode_status= Modalit\u00e0 cambiata in {0} mode_title=FreeMind - {0} # new, fc, 25.8.2008 OptionPanel.defaultfontsize.tooltip=Dimensione carattere predefinito per i nuovi nodi. # new, fc, 20.12.2008 OptionPanel.ro=Ro #new, fc, 6.12.2009: really_convert_to_current_version2=La mappa mentale che stai tentando di aprire \u00e8 stata creata con una versione precedente di FreeMind e memorizzata in un formato vecchio.
FreeMind sta per convertire questa mappa mentale nel suo formato attuale.
La mappa mentale non potr\u00e0 pi\u00f9 essere aperta dalle versioni precedenti di FreeMind, una volta convertita e salvata in questa versione.
Convertire e aprire la mappa mentale? OptionPanel.eu=Eu freemind-0.9.0/freemind/doc/0000755000000000000000000000000011532143331014341 5ustar rootrootfreemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_it.odt0000644000000000000000000012761111527433212023002 0ustar rootrootPKTf9^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKTf9Configurations2/statusbar/PKTf9'Configurations2/accelerator/current.xmlPKPKTf9Configurations2/floater/PKTf9Configurations2/popupmenu/PKTf9Configurations2/progressbar/PKTf9Configurations2/menubar/PKTf9Configurations2/toolbar/PKTf9Configurations2/images/Bitmaps/PKTf9t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKaD S6p9[-gi&2Ήπ *0q6>˷Cz0^| 0M>0DK1a/} G=TNYfq<3qˆذ@%/cu_LWA 32UY)/4|$vNlV~#n{kx\ɭTJ2;0("t4= LB쁵OAMJ]{}eA&//VZ]#="D("Q}!ІJYS6:D >NeKًL)TKq)ڛ QrL"ʿM.j{1o/^Y-P QE/# F]aroq1|}˥y` \E'| V'wv SО슠X"*žЫaֈ{TFHheH Ja ӻzPs:={+,;:~N LGKVs`fcj>;;H/ι7{zvw/չ7{ɊSC"g YoХWV-wp!U&تMLl&&>0㷾nt71%& /#YU>Ļ4b%|}X.jg]ˍXkam^Jq zqa|\y%f@졿LHFMBPjK`~u2 {)'ϳiWri[A K kI|]g!gn?ך^_mq~^Y|V)An;l?bq+ZIbt%-&KN<"J\{o%0烊mYPn`^OMWau]M{dhTcN8zkY*quHmoL>Vc*o~VRNU8GIK&9ݮõQ.pa RMg+Av, Obfe#4zI]hfCSFePMze8]Bb<*/@Ş,j LMr"nCB >?ϧw\>)|#mv>$R<|IWcǯ4n[wm:B͆ڥ} P [4U,~ĕw@ bѭ)Bw\y_JE[˰Hf51XZy-KlI?ZZMNhi' #gKQAV4*KWrW2ݐnPK+xޖX;iީ4/֔*l&Vf7Mko.N5 YdY!n YwӀ9 Wt 7%܌N'Ucn5'ANUgњ0dz;O]jЎH-O ~N<䳃i\urU! QRԧ1E?֝돁灙<c͏lNB3~6ql=N.ZTu{9 8(:: T'$=A>6H3w6Ѯ5~A$pcO"pzv̷ ץhH dK+UTLAVͬ>, tŲtI:"r*)욆Zp|uYiL Y+I8>c cuFj !_ ASiX"#bcڮhH+ 2LH0ovƇi腯EXmUu T8~4&6+enٓWJŪحAW)veŠ:8CH{;D]X ԲrlZ݉*yX5zL%/hU5!w5m d0.~r\I!uCcjګ>ŐPA@Hs*aQUAHzmfR"oa]MvVNKk8cX1wr̶}.AwԃY5LO&yM BAin~ݧc Woԩ<%؆r)gC@/ki5H"E)pJZOf!RA&ĮjiUD>D|MZhTE8ލl} B6h!0U/o"Vʓ' 3<=L {X&8Nt2am1/Q4^U+7CiIY5Q'n$4@.|&_h?^ Rn27n2 m2n2n2n2W2ff F?#)j!&Zb0c$Jg}"s,6>K,@d:QR8PQ{He?D&]+$=]uƼׄQwhNM^]6v%j5a9t &U&ƶ!%;lΆZb҈i(X)$Nģ=DBa,Ԃn%^h⏹M(9kD?qqBN҈ D@|Ze[bpo+r)2#LiQ{i`X5P7j F%Oְ$Į$.`cF@7T4QW4$-6<{*tK>Yy˝C ,}A(Bϑ"AR }LR䊿`k,H`F ߀44]kX\\/VML$r -xo_K]x%0Tfl _V~i?>~ٟU )>^Ԇhi9' ynl`G:-i1KxPũ؆l7)V '&QMhK1bqcP*AĩEm*!Y23A$lsl蟉h*qVd(X[PkDٖ/ڳESt[,2bW!@:(!(.i? .ivfl:49/i{d5>P0>~Kn4 zGnV|`U*/S4LPg>b}?պiSBPK~kͼ PKTf9 styles.xmlZ_o6ߧ04lO-9ɚxMCl-6WIHʲwG%KE6`Kxǻ?|}ٞIE~D0< Ϸ_wou7/fcJD\f,Dc 6jeA)󕠊UN3V:^n^Uv05;詛k6Djf7bJFXdռmӺX-UUͫEtss0pL W/XPZDhx3T|CldPMOߎ&Q996 s׽t^$ތ݈Oh} 2 y;%/&r T`]qWg+5{|=iX\dCFh1LY]B\O38U^jgwmV2Iđxz?Qs8/}"ȖzTAbWM lY(H;,1DX2E99 EFXJp!gjg-{ZS.~Yh?[:ȭVW1Zih6I:4f QGYylWeٴ|%T&hpKRrͬSy3x9=*'2 %Ǵ`eZ$!XJ7`tv}-ƻ4hYM7M7iEՍzXU6gN~xIAAL`=2EJf>11{޵9ǙPMQy9'EfajcYh3c:U% L -.̑~mpvlEdIjq'Mk^w0;'rWL;찘o@}}l6|yQ'7l>D{33Ep1GQfoC)B _KHpB ]'>]`\Y4$%\#7d&o$>&Sn'v,XcPt~6]29֦DZSW!ڢ-=ҐB"$w ,e`-e{)U3o)q ־25Pڻv8iLD\g|))3uLqE%hs޵RgYC زBCz=4-U6*lb\ݲhxYxH`HHe?vN-B6<K&zŌs>΁LzM[6=w;TEOo3'ghQ}6]=.o/FXis ֞{g1vcL(-{es{6!˗C5UIU gز Xs 43w_}r}H2z@l ζ68y]q`B(~hnc MJcߦ]ʫͺ _ISAm"f^MȨjd4Etf=-|PKVu (PKTf9__meta.xml OpenOffice.org/2.4$Linux OpenOffice.org_project/680m17$Build-93102008-07-11T17:07:02Valter Mura2008-11-06T20:42:402008-07-11T18:27:1219PT1H20M0SPKTf9Thumbnails/thumbnail.pngLe@]- `!w,8]kpw&ݝawλ_z](J .#-x6 x^Q Q:FRÿۀuɝwpMhVe !UN gMa0#!'LHl~HIIق?H}t9*T [(׶(TnK8+Qc~Ld2򭦁&mA]?\h5虴/|.mWLV :N+Ԁ2BHvF6->>Fvy~'~ ױOzVZ{xl?y(aB8.Kx{@ueGcPήs;d"G-}8O$F ao,BjBc>CդmZBz=>\3ډgJiRtZ$7^5+1(· ͟éÃ=oGofֽE()VK b@zmn8lh8ܹn &u?ݩ( W*|&@O&Tϸba&Z/W^`\.I_kO>1%;5JU}'K-6YTV_nKF_MtȱpSJCS:r9 ߊ7 }抹usD zO-9Bѳ)Ti 5 t't )9T15dSRSW؊1 y}MTb VT-&0°UZ7mjb6Vu= ݳ-~[:,x =x:(q\Llީt_J >ro#ת1B5ROƛ&?uJ_h~Z97}ZrTŊ j8\UءeUOlc)&X>uGB"튪Iճ20LDM$2'Q`!.,*i2ڭWh:qtρJl>x m7bEMGRl6?%yfiL=RP1yNf8u Y:[j A>C& mn׹[Hр]xG~nf@ƣ7W4C[lE̔%`) &ilW_jux58}H8;[x?[Do'%*n_{OBn C-ӌlmw]湏A[} D ,4EtJf (σV3/%s'~:92y{KiekI#eLB.y ]eșYˣn_OV.'SrJ?7DV1Vǯc,`jc20 vrSb!fg;[@ɍao})VT? RCL)wsvgY[Lm>Yq֟s;;NQ"};= ^AeδoT-2Tk刾f;(NG=T2.(uk8Y6K^ L挞/ITmJw =(#$%'k/·_a|8u?kO603I8`G=6/rP~6F9."JAEQ7 l"sX猾1_;D%!'~ɰ0LkcWGU -B{c>ihg n둯|̧.c$luFhH붣mT1P\3l6iT_>0!x =ks?2} c|$hFs7s! _ׂX{vP9$9#6#z+%;$ޡPSwt[ĝ Ԇ_~OkIglϧ|:N6q5 D?PGXxQ+´<@4SCSz"rk9#OsKr)E=Lq.;sM暋X{$vm`|wQ!ƃMհnU3n݉x 6;!8RzjĜStkOTa\d(xlѝHU_5Jpۮ ߎ (/sEžgq˩ƔZlo> kD_N#a۞Vպu-/`%мViQrOaE8;>t@a~IM,$曗\Ej^_\{~~!$d}a*X"2-0;hmGjg`_tlYX R[ #4$ϏnZXJX*c[e!(v輥]S0kJ~E/ m@fg !J qPg_`jv/MWvJKg^3}],N'gޠw>!X"+/׳+B֯rhHIJA(E c w/5N[SK~OI d2cmOuxԟ}n9_shwt~u3uRQ4 ѭ R6f/ F[hw3q,^£;*.ֆᘯ[\czZ捜=EXvOC[ :-)+PBc+zn'^9`,u!Og7.!] C T2Ly -٬ov^y" {Y d4!6i##-nKᫀWIVQ,0{⾌oBb㌟ S ȥy{Z{{wW UIt$Ǣx"܇Q1d5 D DH7yi1LXҏW6pal-滴ݧ32_FK?qdk>[>ϗSu, {FtOgC(`7Rt@)E&Іe6KsGvwbL GFx Rt*:I3Y"y=? x["p+*$n@ K1~'B!A:͎-!~z[ BYIf0I j}\zStRƣT&MD03ŜKcx/qg ~PW t>ڌ~0'94AjD3~ZtKU&ED)xtZڑ!{-[Vd0Dn< N0A47#ruJNlu4Im*'Ɠ Oϥ{Egt~>y? Er'f8Cc"kn(,y՗O ovѪYۤ71k PtU+ x^ͳ,dS3YZvou4ɋGWvM/vPX}/mor;ŕQv26kFR3V(8^2{g親XTmFHdb82ѿW~M5x;ە*KI;qalh|1S{)̟Bc #=DG4뇜4տ,NGzwY#@X}\P=wG\&ߣ9Mv\%pylPUcyBz & U-7/P yvU|&oꇬ_E.2f4dRGEEӑV^FՈB 967 JV]*wgC"\mZ'Ifޮ5!>Hly;¨ 41{iFKWlx8EOיiZj\d$dk#e+Ld)1~a1D:M;V [BGjM4#2;[JG;d(qGG'NHyqՋ):qEd; S[bM";Hg *}#nz 2f.bLSAq|7QNJu[_CV1nZۓ9>{`a c~ס&q|z$J(ݤ_ٌƞIX?nb=VkQS=E71dQ{KD4fBT}rBc@qj"<V F |D?*_PHJhXc%.iaf)PȈpe 1:dND^R6_s[E7Rߦh&|`,)&7:RX̦z7 B;ѬCdN2Q>+9 M{I6ga[/D<iEրͤus31K?j+wI2;չ}{8!*yǕ*Lq`'@hNa|UP:7eM 'J ɫ YOW3`&;,hG?;nV*y(`-9ɜ%KiS0V0}W6*N}ИV rhኀ+DAw/șIJ6Izz6C訳.0>hA1{{O%ڑd. $EοPIiqANzH9M*Gd`~ZրKઃU"$w(dhVM3'ˈ"s?%sn>bsJ5:rdxTل-_;C q(4*#'kAڢq9$x:ΰV`w#О7% KWhb}VCTSPNTj9BHRhҹ^U*DG <*;~J~[LbtA @^b>.fzta'"eڥ^7WRlw\8מg~ 9|JO հ\|yn">,ϵ8U on&/cB m:@xcWkmlj\ ·ws$/>l>ӰolNֺeA&.88~؉^5bEXM,0jryc߁4kʓU id]xUJ+(}aդL ^6_z;Ɣ$D)!, 08?9ƭ4r^[+(^ (<Lp"#BF>uL U9[)ϸ;=ʹk渽W4wee*< +J U[ IYC3jݺރ]Nj,~b-*VMԍ"WxV?Jtq39 BKF#o &q6R.Ety;<@jiRFpQ U"8/$e 2U,$NGPjUk}uWJ²%5{iTwNgk+n |'nfG#.ފ l0y@o0M1]}g&WYDb;bWn̙M v8A,/4桚Ҁޝ;*`^=^w_$2] R (I/Tj mWR*=֗5W_ę1j/j^Keܜ:G 7.+ogsA/)O{/t*JKv[D%O5ݏ)9AO:-ϟ _KVwg"aM1lE&T7<4$b[QtzʊL;tʥTv9ފW5{m Ff';̵RL"PK5e3T KW| H3YnMǢqgVjG UYF낧L)M]ubu2Ht5)$4TXhlwUz3cKs=_xP2@*0tUVAz%pcWq̉91:˗JMt@8ā5ڸg}p;R 5*D)Q<7p}<]xqh4J gk9GnT"٥nUk۳ @dRw3%ʵNDu.BUcHci' ӉYjٜbPMs6mߝ O{(V%cRzՎf;Xs깯m>9EhuWr@)xcya>_$bxBLV9u Y7u4"GijbDKtD"ɺu@4#Nj͘Wt*Z,.[k=FhKWlNT4P9Cf(OUD.̷׈ROTn!n$%L*nrQ-[QJbBlF/&ɗsZc)O"zhP=_伟Xc28Neh)5RwƒR=twU!54L)Whq00oV-l$c0p1؜OPd`>#ٵP_QT) {ktJ9Ts%”ܸtvOADɵ]{n 5pBL;^7<{ߔBLP"/LUqKH6 5# X<АIA>UpI9!(S õڢ+^ya#G/qY\BTGYL˔|"# ^}B٤@ee?:- ‡…FR"TnHDwOEXO ?hX+Rb O'O_(WGu%!wMEd~3\S."NY\7:+rpPSKސZj%xPA}TX+#o"L%X~+)0UP.ԬҖhewK4G~tl퐣U(#Ua,Պ4 a?MXHuHn<v,)rGl]Pb|/|R5A/. ~c߀RVE-BU__2X4КUNnbu`:٦}+O\$_-l=334d)MkNnF x6>#9lqR-ƺ8AD B|gV Ywt>rBi߼O9$4~jqG]4NI"K_epfx&?_spK-Xdg nN[:`NnD::z~LI4C8C $$DR~etX4!xL}5DqpKh<_m[ &}%y" W/}2( ["z3H{1ד԰[zY7V-1/` p~n:WoE)tn>BX@n>K~cThS}&b"]m%_\i٤a=S2⹝\F'm ӷ pRʩ\ח"ݤZz,_]-niHn 5'_IJP0D kb 4|0Nn_:2#vM4 ![Nw7=םj'u G|ִ1\З&!Y2UݱGFVEru2WՊpOS_WڡGu{[W[$r ud,?e}tͱFᅢdt3͆ĜtnXZI@+ G'ڃk2=z 撛Y i$~;c7N$?ꄻ|50zADT8m }ovgzZȶ%cZH~ P Zvew);t#'؞{㱌b[Y>( iIn*#kϯpZc@PtB\]8je@0H`p%Ft._"-DN䄂N_gYnewQmKچSޟdZa4T4|A{gC{4*ɿ7Xw/A9{Y *]c@A7,~ hE-ӧ׏s-8f.d > 6]0}+򽵚)C\/аvu͉ ˣ[ (㋬F3N-R $F.Mq)蝝}Z͘м0~v>BCЍ %ѮÙ v>Xn)U۳IA<_h4+9*z0́3n ,1w̑6w5:HUCC^6JӬ847{,AEC6oב|YvW Z yeB_xuj>ZHC9>pOi,]]* s"?ҍf%T7zawbY{#𻝮#D#$K0s6DY"B?- 5+nk9ڹhfvJ`]m#z }U6>ΰag{Mі='#vP5BGǍBUxx [, ;4h5> g;  I8BTaCRdy=?\Tt<“-M.zɌ/oNW 9S2ARl'o 1_(/Q3E>z'7s^yܓ%NV~NR.g{S!4`7`pI9~@Z?)dAkְ-!4!UzqoQćĿ]z*;ƳLZ;pob3xkKT)ٷ p#d:s(Es=!%:F+` 7f0v| ͈!$^(noݴϟ M9O,_cnb܋֏KMSL_ GLǾ\ᰬk w|Kj"lwL9łŔ2*dQ,O(i/ihP}id㴞g|WUs z lEI 3|}|WS>\k/Y/'bwx$vu)wDý6+̘+:֕\kXo< E,}>y ۓ& U3*ⴋy0}(MڢVO}GpGgy4 t6̳}89y-E>y8#R5a9&00ThN~j2_2Kuw[t/ 3IwIdZny#&jr<"$e~E J}n߻h$n<'&Ѫj .zwZШq{KkM.<`oby)?r-uUtmUbE˾2}+uOJ ucIrm$؈bBEe^Ee9S͖CBJ@,Qg5B"LꃰUCVUX2 A%q6'/]1I$I&˕8`s&f#z*;Z'L%(q,>G7L ~[χ|oؕje7l#QS-o}k&dn2{_uf~D(pKzNǫ4s C˓kLY'R Ckoh|i$+>9|eh /z_xgt0"ؤ_^]˫59--׌ߌvc5SL#M #(ޗ%Qy]tW}*.+ @6{W/c1cet~W9F䟴JqY佱cCg VDf>TL)D}p\z݃>Ϩ0N[* H^z9f%c-;8zgunNp;e4W߰.@sI1*i=rW=h3% 3kVQk9#73JltA+Q76 IchL0fO⋬CC/aRF.ɖn&Js[nU>!x%ViVrB 5WBʠ+{R,/x0jR$W&PtVnK^J^&E-KdžoE8x{\ Qi&,)>wܶ<;v=6=c2cu7;Sv^:If'UqO^85ءW,y8৉B$T' 2*=2G}իENTHܯQLCko2˷/KK˒>Q m#Nuf.2W$s^4G##ƕ)"] уO>ГNLtQvKe\@`ږ34XY7)(S?!Q$8qkPm;˫>AȬBRCmed]xs Ө?J=S|A槐2d>r\?)&u&PE9:XH2EvC",Q5ON?aY-E. EVtqQv]_ qWh"u:ZEp`Fڞ eҦs r[Tj]$0ښ%MGT}C6+ki *EA MP'&)wAzQQ) ]^Dz B$?! {9gvfw杝wVA7&- @|e4Ň̼ V>3.޴B^|qp[mQQTQdmn~U0t~Q'r  l䢏Su.4,|F+R_TL蟴({IuSgгH)e7;'HF̊~Ee*]}Uwgn˅lzE?#ֵؘIܭeRqnuY85S8ɔGEn,P$-fW )"flV(UUJg+ g|~5}Jv\x94&h3c6pc8m.Nͼk4/Mc@gaC+fa^%˴{AkǔJBRla`Q6.uZg!;DޏeR_솿sh)i%ͫ;|ynr%'JvdPBm=wk;r>i& D(;T>.MF+OOSm~$mpQ4=pugՕ8mCq^O#BM&mV{;4xD{氳x[qÀ!gC7AT݅4C<&!!+o)Ŀ蚱},WM=igmH"ؼ2;*Bo _B]:6 ]\ERt)AEP{ Q5%%S |sCR58Whѵ܎O#zp@μgxIqQ}OwpON@X?RwLLw^5,V0/m =V[ЀjBO{]y 4r < &1 [4N[Bۭm; 8xʶFvdDwz3! ?y"fwgqQG ~w:{:GIgm`)gHJ_GmD"IԮQ;RWX}5X"oNk%DP/SdYWE 7yNk5HdWdi AhqأU_ʷ}xؤkX<^B޺+]B}aE7Cs*a;"Wcf=3/ңZ4յ#}QbF1LhvS༼6<9x*?،r,EZ[t[?-~>R`!{mFv#($'=K2^Ax]hWFr.cx-D(.Yk߅p_0oJ{*ߪi{bƔKuJB tsptuS(Y(u >UtR--#񛓦 z,%/ѷ[={PE+xDrQC:TKYTN&PĖ*1 F0-˷Pa(oNVF+9~0Hע5z'LCjQvCe!)<(P8m)(Fy/xG-Z3zݣCޅkXa˪>rYbonBL؝jk+ njYonx #`&e?.CɨYr5(Uc^QǞKZpe#d mPižAb..,R6tqYM&R6ߩ/L)ʌc̀ުw]E.3f7>69mG2qIPD&o f`(V.$*?"PQqx;Z#`V `V`B-q!wv4L3q RE[LB$}\&djc۳1VmN@с?!3MTQH!ltqGOC&t3J.ДX*WȒRABGRO1޻jݴ>afI 1吣vRN~EBzpJշV7-}".Ȇgr&_vqIy?8X_7#G D+K矶[edN8f +rv({vBW/A1;;or+Yz sz^`L F-~O1ꕽTaC.qL|80q 1;j&`Ueē!g(=v~'ɀՋ5a+#j"FgXnn[27<}9fEeCw%g-bls'48r,JfaBܠ~{;uǎf9=(ӚiҶy'wTo6ODuv E{ iC-V$el.Y#Kÿ:>gh0%ܓ~ N8B'N]ٹm,ptG]gh^ y%pKH!Z Vj0Fzx6TAݣd\QWPj9.jGB5VQRyXx}EH+g\Z tsN-XdǎѷVƃ|3 3t<8;zJ%^a +Oq1-ʦg`췪8篊fRe\]?s36/ V@A}s~vAWeyHG͈ZF80)/ُ2{SMp8Wmr :r7[7/~)ޛ >FT@SrNLYq*'܇]ҧʽş$: ?j{xk01r?*͔u$?]wiR:T \ 'OT:ݕ:vn*•0>Jzhs.PB).ĭO|q@"oy6+w },)ՋX%Om"H`("i 89L_TtŅsN,!VQ} ._s{,'jobG]Z5c\ dꖙt_Y HԤk76zh;tfNlF7'mzz`ʧ80"PUj.xMڂ+m,k!)VF2s) z Lٱ5US#A S,훿 w/^!?Xwy,+ d4|G?3x:n܋zƹfٷEz!^Nvץ۞y? u'سUVA;?&[kP?u9K߱jut. 8q܍B[KnNƝcJ^?)xRwǭ;~-l٬&I5l=vR&~}f5tMKN72jvn u`~}XLމ:# I?ЮcJ_=IL,]ͪz1M))P*հX9@|0; kx}b]F] LiF=ZdSQD F9xGH#0\XryG%u]Bk&&Jly2 3OŦЦa\RsTi$pp2%P&XcA~x,XljUD*P$ypIu]S[՞se{s>_u f3؆UI5:k[GMMȒԳ9itL]0[wfP!L:.5#J[fx?40)lqoZ"U<PKhq PKTf9META-INF/manifest.xmlKn @9΢M8.ւw}ਵkэ1^8'"0R>LjGn-gl7s(1ENƑҾ freemind-0.9.0/freemind/doc/freemind.mm0000644000000000000000000035515711527433212016511 0ustar rootroot

FreeMind
- free mind mapping software -

Rich text nodes

Application

Fun

FreeMind

High

L*tus

Low

This is a note attached to the node. Use the "View" menu to display them   at the bottom. Notes may be hidden completely as they reduce the space   available for mind maps. But for long text this is the best way to keep  the mind map clean but to attach the text. 

To link to a mail address, set the hyperlink as mailto:don.bonton@supermail.com. To link to a mail address with giving a subject, set the hyperlink as mailto:don.bonton@supermail.com?subject=Last phone call.

A new search and replace dialog enables to quickly search for text   fragments and to replace them.

Its functionality includes

  • Find as you type: when you start to specify your search text, it   starts to reduce the amount of displayed nodes. It searches for the   text inside the nodes text only (attached notes are currently not   searched).
  • Sortable node list: the main table is sortable by each criterion. Even   by Icon. Thus, it is easy to find all nodes with attached note for   example. Or to sort them by creation date to get the latest changes to   the map!
  • Cursor support: moving down moves from the search field to the replace   field and then into the list.
  • Node Path display: if you select a line, its path from the root of the   map is displayed below.
  • Direct access: if you press enter inside the table, the mind map   displays the selected node (menu item "select" and "select and close").
  • Replace: it is possible to replace all occurences or only the nodes   belonging to the selected lines.
  • Export: new striking possibility. Select some nodes and export them to   a new mindmap. This makes it easy to generate a todo list from a   hierachical mind map. For example, if you mark every todo item with   the bell sign, then simply sort this list by icon and mark those   containing the bell. Then press "export" and you get all these nodes   as single nodes in a new map.
To import Internet Explorer favorites into FreeMind, in pull-down menu use File > Import > Explorer Favorites. You'll be asked to enter the path to the folder where the favorites are stored. The folder's name is "Favorites" and you can find on it your disk. On Windows 2000, the path is C:\Documents and Settings\<user>\Favorites.

HTML Example

There are several items:

  • Item one
  • Item two

And we have boldface or italics. Underlined a strike-through as well. We can have table:

Cell1

Cell2

Cell3

Cell4.

 We can have various foreground colors.

The new editor supports text formatting in nodes and notes (the little window at the bottom of the frame).

It is stored as (X)HTML inside the nodes and can be thus exported to HTML very efficiently.

The notes do now directly belong to the main window. Even if it is not visible a tooltip indicates the content.

Using Filters the current mindmap can be reduced to nodes satisfying certain criteria. For example, if you only want to see every node containing "TODO", then you have to press on the filter symbol (the funnel beside the zoom box), the filter toolbar appears, choose "edit" and add the condition that the node content contains "TODO". Then select the filter in the filter toolbar. Now, only the filtered nodes and its ancestors are displayed unless you choose "No filtering" in the toolbar.

Using the settings "Show ancestors" and "Show descendants" you can influence the apperance of the parent and child nodes that are connected with the nodes being filtered.

There are many different criteria filters can be based on such as a set of selected nodes, a specific icon and some attributes.

Attributes are additional meta information in the form of text pairs attached to nodes.

Thus, criteria like Context->Home or Context->Job can be expressed. Later a filter limits the display only to certain contexts.

Moreover, Groovy scripts are currently stored within attributes.

It is possible to see all currently open maps at a glance.

This kind of navigation was already published in 0.8.0. But now, you can use other directions as well.

It is now possible to move nodes left and right. They come closer to root or move as new subnodes of the node above. The nodes can even change the side of root with this navigation. You can use it by the control+left and control+right keys.

Patterns are very useful helpers to get a consistent layout of your map. You can perform various format changes with one keystroke.

The pattern editor is opened using F11 and presents all currently defined patterns.

The following basic actions are available:

  • You can move the pattern(s) up&down using drag and drop.
  • You can add a new pattern via the action menu.
  • You can create a pattern from the selected nodes. If only one node is selected, its format changes in comparison to an unformatted node build a new pattern. If you have selected several nodes, the format changes that are common to all selected nodes are gathered in a new pattern. For example, if you have a bold node with yellow background and an italic node with the same background color, the newly created pattern would consist of the yellow background change.
  • You can apply patterns to the currently selected nodes and finally,
  • you can remove patterns.

The patterns are stored in the patterns.xml file in your <user directory>/.freemind/ directory and are reloaded the next time you use freemind. The patterns are not part of the maps.

Inside the patterns, there is a left and right hand side. On the right hand side, the format changes are displayed. On the left side there is a plus or minus or empty box. They mean the following:

  • Plus: indicates that the format on the left is applied.
  • Minus: forces the corresponding format to be reverted to the standard value.
  • Empty: No change.

A novelity is the possibility to associate a script to a pattern. Thus, patterns can now change much more than the pure format changes. For example, you can put macros inside the patterns that change the selected or more nodes at once. This functionality can't be overestimated as it opens complete new automatism capabilities to FreeMind.

Inside the preferences there is the possibility to change the layout of the automatic layout functionality.

Thus, you can change the color and appearance of each level. For example, the used color green is difficult to be read with a beamer. Now, you can change the color to dark green.

Observe, that changes to the specification doesn't change the layout of the map directly. You have to close and reopen the map, first.

Currently, these format specifications are stored in the preferences of the current user and not inside the map. Thus, on a different system, the automatic layout of a map may look different. This will be changed in the next release of FreeMind.

For advanced users it is even possible to change the number of levels. Change something in the preferences of the automatic layout. Now, the format specification is stored in the user preferences. Open the file <user_directory>/.freemind/auto.properties and search for the line automaticLayout_level, and duplicate the last <pattern name=...>...</pattern> entry. Now, you have one level more.

A new search and replace dialog enables to quickly search for text fragments and to replace them.

Its functionality includes

  • Find as you type: when you start to specify your search text, it starts to reduce the amount of displayed nodes. It searches for the text inside the nodes text only (attached notes are currently not searched).
  • Sortable node list: the main table is sortable by each criterion. Even by Icon. Thus, it is easy to find all nodes with attached note for example. Or to sort them by creation date to get the latest changes to the map!
  • Cursor support: moving down moves from the search field to the replace field and then into the list.
  • Node Path display: if you select a line, its path from the root of the map is displayed below.
  • Direct access: if you press enter inside the table, the mind map displays the selected node (menu item "select" and "select and close").
  • Replace: it is possible to replace all occurences or only the nodes belonging to the selected lines.
  • Export: new striking possibility. Select some nodes and export them to a new mindmap. This makes it easy to generate a todo list from a hierachical mind map. For example, if you mark every todo item with the bell sign, then simply sort this list by icon and mark those containing the bell. Then press "export" and you get all these nodes as single nodes in a new map.

Some key strokes makes the handling of icons even more easier. If you hold the SHIFT key while pressing on an icon on the left toolbar, all other icons are removed and this icon is the only one after the action. This is for example useful for changing the priority of a node.

Another feature comes with pressing CTRL while choosing an icon. It causes this type of icon to be removed one by one. Suppose you have a node with the icons (1)(2)(1)(3) and you press CTRL-1 you get (1)(2)(3). This is useful as with the normal remove methods, only the last icon can be removed.

Flash and Java applet export can be used to bring mindmaps into the internet.

The difference between the two is, that the Java applet looks exactly like the map on the screen, but needs longer to be loaded.

The flash application is very fast and has some different features built in. But it has a different look and feel.

FreeMind can now be scripted by using Groovy scripts. Groovy is a very easy to use scripting language best integrating into FreeMind.

There are two possibilities to use scripts:

  1. Choose the script editor to easily add, change and test your scripts. Technically, scripts are attached to a node via an attribute starting with "script" (like "script1") that contains the script. Every time you choose "Evaluate" from the tools menu, all scripts attached to nodes are executed.
  2. Create or change a pattern and press the script button. The script editor appears and your script will be associated to a pattern. Every time you apply the pattern to some nodes, the script is executed for that nodes automatically. Thus, you can have the scripts with keyboard shortcuts as the patterns are accessible via shortcuts.

Every script is at evaluation time started with two predefined java objects coming from the map:

  • node is the current node. It is a freemind.modes.MindMapNode. This node can be used to retrieve information about the contents, its children or its formatting. Don't use the setter to change the node. Use the following instead:
  • c is the current controller. It is a freemind.modes.mindmapmode.MindMapController. This controller should     be used to change information. For example, if you want to change the nodes text or if you want to add children. The methods that can be used are sumarized in freemind.modes.mindmapmode.actions.MindMapActions.

There are two automatisms regarding the effect of a script:

  1. If a script starts with "=", the result of the script is taken to be the new nodes text. Example script1: =17+4. If executed, the node the script is associated to will be changed to 21.
  2. If a script starts with letters (digits and '_') only and then a "=" sign, like "sum=17+4", the result is taken to be a (possibly new) attribute named "sum" in this case with the content 21.

For more examples consult our little scripting guide below or our web pages.

A last word on security: before scripts is evaluated for the first time in FreeMind, the user is asked whether or not he allows it. The answer can be stored for every script but observe that a malicious script is able to perform every action on your computer that your users rights allow up to delete all files or send them to pirates.ru. This said, be careful and don't allow scripts when you don't know that the author is trusted. Finally, scripts are never evaluated automatically in FreeMind for these reasons. Thus, you can open a map without problems and have a look at the scripts it contains.

If your scripts want to change some map data (which they commonly want to) they should rely on the methods provided by the MindMapController c.

These methods are summarized and partially documented in the class "MindMapActions":

http://freemind.cvs.sourceforge.net/freemind/freemind/freemind/modes/mindmapmode/actions/MindMapActions.java?view=log&pathrev=fm_060405_integration

The listeners mentioned below (ie. NodeSelectionListener and NodeLifetimeListener) can be registered and found in the class "ModeController" (also c):

http://freemind.cvs.sourceforge.net/freemind/freemind/freemind/modes/ModeController.java?view=log&pathrev=fm_060405_integration

Here we present some snippets of useful Groovy code that can be used as parts of your scripts. More scripts can be found on our web sites.

  • Change the node text:
    =17+4
    (Explanation: if a script starts with "=", the result of the script is taken as the new nodes text.)
  • Change an attributes value:
    attribute_name=17+4
    (Explanation: if a script starts with a name and then directly a "=" sign, its result is associated to this attribute which is created if not already present.)
  • Read and change the nodes text:
    c.setNodeText(node, node.getText() + "_CHANGED");
  • Read an attribute
    def value = node.getAttribute("key"); // value is of type String.

  • Create or change attributes: the following method checks whether or not an attribute with the same key exists and replaces it. Otherwise a new attribute is created and added.
    c.editAttribute(node, "key", "new value");
  • Remove an attribute by name:
    c.editAttribute(node, "key", null);
    This method returns the former index of the attribute, or -1 if the key wasn't found.
  • Traverse all children
    def it = node.childrenUnfolded();
    while(it.hasNext()) {
    def child = it.next();
    }
  • Traverse all children and its children recursively. The following examples prints the content of every node including its childs
    def stack = new java.util.Stack();
    stack.push(node);
    while(stack.size()>0) {
    def current =stack.pop();
    print current.getShortText(c) + ", ";
    stack.addAll(current.getChildren());
    }


  • Real world example: nodes may have an attribute "work" that specifies the work needed for the specific work package (e.g. in days). This script computes the sum of all work packages such that each node gets an attribute "sum" containing the amount of work needed for all descendants. This script, if executed via Alt+F8, automatically applies to the root of the map. But, every time, you change the values, you have to reexecute this script.

    def calcWork(child) {
    	def sum = 0;
    	def it = child.childrenUnfolded(); 
    	while(it.hasNext()) { 
    		def child2 = it.next(); 
    		sum += calcWork(child2);
    		def w = child2.getAttribute("work");
    		if(w != null)
    			sum += Integer.parseInt( w);
    	}
    	if(sum>0)
    		c.editAttribute(child, "sum", (String) sum);
    	return sum;
    }
    
    calcWork(c.getRootNode());
  • A very advanced example: the last script is integrated into a listener that detects node changes, so the sums are always recreated when a node is changed. This script introduces a new element in scripting: the "cookies". It is a usual HashMap where scripts can store values that they need the next time, they are executed. For every map, there is a new cookie map, such that cookies are map local. Moreover, they are not stored persistently and are lost after termination of FreeMind or after closing a map. In this example, they serve as a static variable in which it is stored whether or not the script was already executed and which listener was used in order to deregister the old one first.
    class MyNodeListener implements freemind.modes.ModeController.NodeSelectionListener {
    	freemind.modes.mindmapmode.MindMapController c;
            MyNodeListener(freemind.modes.mindmapmode.MindMapController con) {
    		this.c = con;
    		}
    
    		/** 
             * Sent, if a node is changed
             * */
            void onUpdateNodeHook(freemind.modes.MindMapNode node){		
    			calcWork(c.getRootNode());
    		};
    
            /** Is sent when a node is selected.
             */
            void onSelectHook(freemind.view.mindmapview.NodeView node){};
            /**
             * Is sent when a node is deselected.
             */
            void onDeselectHook(freemind.view.mindmapview.NodeView node){};
    
    		/**
    		 * Is issued before a node is saved (eg. to save its notes, too, even if the notes is currently edited).
    		 */
    		void onSaveNode(freemind.modes.MindMapNode node){};
    
    def calcWork(child) {
    	def sum = 0;
    	def it = child.childrenUnfolded(); 
    	while(it.hasNext()) { 
    		def child2 = it.next(); 
    		sum += calcWork(child2);
    		def w = child2.getAttribute("work");
    		if(w != null)
    			sum += Integer.parseInt( w);
    	}
    	if(sum>0)
    		c.editAttribute(child, "sum", (String) sum);
    	return sum;
    }
    
    }
    
    def cookieKey = "work_update_listener";
    if(cookies.get(cookieKey) != null) {
    	c.deregisterNodeSelectionListener(cookies.get(cookieKey));
    }
    def newListener = new MyNodeListener(c);
    cookies.put(cookieKey, newListener);
    c.registerNodeSelectionListener(newListener);
          
  • A sorting example: Currently we provide a function that sorts all children by name, but if you want to sort them by their icons for example, you can use the following script (or change it, if you have different sorting criteria):
    import java.awt.datatransfer.Transferable;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.TreeSet;
    import java.util.Vector;
    import freemind.modes.MindMapNode;
    
    	class IconComparator implements java.util.Comparator {
    			int compare(java.lang.Object pArg0, java.lang.Object pArg1) {
    				if (pArg0 instanceof MindMapNode) {
    					MindMapNode node1 = (MindMapNode) pArg0;
    					if (pArg1 instanceof MindMapNode) {
    						MindMapNode node2 = (MindMapNode) pArg1;
    						String iconText1 = getIconText(node1);
    						String iconText2 = getIconText(node2);
    						//print "comparing" + iconText1 + " with " + iconText2 + "\n";
    						return iconText1.compareToIgnoreCase(iconText2);
    					}
    				}
    				return 0;
    			}
    		def getIconText(MindMapNode n) {
    			if(n.getIcons() == null || n.getIcons().size()==0) 
    				return "";
    			def retString = "";
    			def it = n.getIcons().iterator();
    			while(it.hasNext()) {
    				retString +=it.next().getName()+", ";
    			}
    			return retString;
    		}
    	}
    
    
    		// we want to sort the children of the node:
    	 	Vector children = new Vector();
    		// put in all children of the node
    		children.addAll(node.getChildren());
    		// sort them
    		java.util.Collections.sort(children, new IconComparator());
    		//print "The set has " + children.size() + " entries\n";
    		// now, as it is sorted. we cut the children
    		def it2 = children.iterator();
    		while (it2.hasNext()) {
    			MindMapNode child = (MindMapNode) it2.next();
    			Vector childList = new Vector();
    			childList.add(child);
    			Transferable cut = c.cut(childList);
    			// paste directly again causes that the node is added as the last one.
    			c.paste(cut, node);
    		}
    		c.select(c.getNodeView(node));
  • A presentation script. Everytime you select a node, all other nodes are closed and this node is expanded by one. Just give it a try..
    class MyNodeListener implements freemind.modes.ModeController.NodeSelectionListener {
    	freemind.modes.mindmapmode.MindMapController c;
            MyNodeListener(freemind.modes.mindmapmode.MindMapController con) {
    		this.c = con;
    		}
    
    		/** 
             * Sent, if a node is changed
             * */
            void onUpdateNodeHook(freemind.modes.MindMapNode node){		
    		};
    
            /** Is sent when a node is selected.
             */
            void onSelectHook(freemind.view.mindmapview.NodeView node){
    			if(c.getSelecteds().size()>1)
    				return;
    			// unfold node:
    			c.setFolded(node.getModel(), false);
    			// fold every child:
                    def it2 = node.getModel().childrenUnfolded().iterator();
                    while (it2.hasNext()) {
                            def child = it2.next();
    				  c.setFolded(child, true);
    			}
    			// close everything else:
    			foldEverybody(node.getModel().getParent(),node.getModel());
    		};
            /**
             * Is sent when a node is deselected.
             */
            void onDeselectHook(freemind.view.mindmapview.NodeView node){};
    
    		/**
    		 * Is issued before a node is saved (eg. to save its notes, too, even if the notes is currently edited).
    		 */
    		void onSaveNode(freemind.modes.MindMapNode node){};
    def foldEverybody(child, exception) {
    		if(child == null || child.isRoot())
    			return;
            def it = child.childrenUnfolded();
            while(it.hasNext()) {
                    def child2 = it.next();
    			if(child2 != exception) {
    				c.setFolded(child2, true);
    			}
            }
    	if(!child.getParent().isRoot())
    		foldEverybody(child.getParent(), exception.getParent());
    }
    
    
    }
    
    def cookieKey = "presentation_listener";
    if(cookies.get(cookieKey) != null) {
    	c.deregisterNodeSelectionListener(cookies.get(cookieKey));
    }
    def newListener = new MyNodeListener(c);
    cookies.put(cookieKey, newListener);
    c.registerNodeSelectionListener(newListener);

Once, you've created or found some interesting scripts, you probably want to get a FreeMind menu item with an own shortcut to execute the script.

To do this, save the script to a file and edit "ScriptingEngine.xml" inside the FreeMind script directory inside your installation.

You'll find a template for a script action that is commented out (ie. surrounded by <!-- ... -->). Uncomment the template and fill out the following bold places:

      <plugin_action
      name="GroovyGroovy"
      documentation="this is my first installed groovy script."
      label="plugins/GroovyScript1"
      base="freemind.extensions.ModeControllerHookAdapter"
      class_name="plugins.script.ScriptingEngine">
      <plugin_mode class_name="freemind.modes.mindmapmode"/>
      <plugin_menu location="menu_bar/extras/first/scripting/groovy1"/>
      <plugin_property name="ScriptLocation" value="/home/foltin/test.groovy"/>
      </plugin_action>
    

The most important change is the location of the script. Moreover, if you have several scripts you want to install, the labels and the menu_location must be unique.

If you now restart FreeMind you get a new menu item (in this example in the "Extras" menu) that carries out your script. Observe, that the "node" variable points to the root node.

If you want to have a keyboard short cut for the new script, you have to add the bold line into the entry in ScriptingEngine.xml like:

      <plugin_action
      name="GroovyGroovy"
      documentation="this is my first installed groovy script."
      label="plugins/GroovyScript1"
      key_stroke="control shift M" 
      base="freemind.extensions.ModeControllerHookAdapter"
      class_name="plugins.script.ScriptingEngine">
      <plugin_mode class_name="freemind.modes.mindmapmode"/>
      <plugin_menu location="menu_bar/extras/first/scripting/groovy1"/>
      <plugin_property name="ScriptLocation" value="/home/foltin/test.groovy"/>
      </plugin_action>
    
freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_ru.pdf0000644000000000000000000035511111527433212022775 0ustar rootroot%PDF-1.4 %äüöß 2 0 obj <> stream x]K:nUc=l@ $"* 2,ɧNEwIH=yX>Ň__ߖ}k|XҾ)g)_ip)7R~,1)-3Pnv#=m=+cqǖ2)57`umeK/J= *Gx{랬tH0͡t;7wtżzm`!g5p%s#II#s2ofg ;K16ǥ=0ƦM6a`Ⱦc_Z㺟m+ILPix8ʃ- o>GX ~ׇ?~8!?=/y v{t~{LKoo>s%-/cx^n?~_y9@qKr܎Bvqv2gc۽'X jDFVn75A7.x .^nkfB7xJ{ōpn2lFn ]YJn/?n13OM$"E@q[?o$PAFSYsX${7Qc^w?s V{nk޲>62Z ~n/i؟(@VL)@m"cvMEJuyxt$R,3µLW O̡ SÚ-e\6@mZ8&m2Ws9T!P" P P\Mb 1IlA* bVZ"e2 TxJ P O)(&(R(sp-@Ub* R.%J.S *@ TyJP# b^"e2 TxJ P O)(P P20Z O)7;ؿvZ<`1DVʹ6 `#/{SPDQA %ݠxl}F;M ^oضGֵT}(Ɲe[܂4gmF;h/# w6qPp:zTЅaib1n8Ay8ؿTcU Jcl\@3? лx҆Z }NG!J:eVxBf }٧٘T|<u/&U[3IuFd!?6irX=ok^GqǂF b 5G >~.Z*?J4+m[*b-c3rEC.+l DFcH>RGNtv`T zE*rj".c||"9o+1RSĺC 2L֑3td؋< z3 ~ܹC;gHPcX~W%ZꔝiM}}8cԎ7RWѐ.㎽zu^JSw }3*dwXf :lӿv:kB@EzJNǹHH%Z]TFJVn  bMa 3"9-x ƆAs{j֐%C!Bjw`Ƃ<v'x;?^ )}?xᵾ$ō f##T?RZ5 d\:NVXev@&S_pT4+߉51w-ס.uA0l<.x-_ZĴ+8`y/?*|xk#HM<D^DTC#$ ?xZ7$ PPc Ps PP3ɡ")###(TLrȀEe. Ep-B$PPZZ ,TLrAJ -\~^.BkijLr*Ee. Ep-B$*PPZZ ,TDxEe. Ep-BN8PPZZ ,TDxEe=e=e. ;QsVsP P PNJ>D%!ʵt\KPs' ##D(RF(sYp--BkiwP O( &Sxjg{qFfgux:NI >_[{qoVb/KӇT |0elF5K- +&fg(ugLgO'ST4>(ҬU |֭\3[l};U[?g}l. +SM{yT̼O`eڃ1L̓ U,hqh[wkv)Vq|-]|bl8.p06Ǥ o4[^\+1"j ln7m]/n{mzi*/>p֝eY`B6c Or*,X#0[tar38zTBe++&vmn*e\j@**q6q_x.QܑAE XS"?1XF|>:'Xfb(R<㴈F,4Z38k[1N&%qqU^6틋H}_佮n27~> aXw:;.\‘EJ\SH۝X)N.A8odff}fQgƬ#eaL,;ZΗ|4_̗{#yH7%<ƟֳvQ6e9iiqo0gƩqegZT ˰gU]RmW6TTM*fjSaJy'$RmFE6}TA(?uڕR͊Tf!(DY|j~hgܕfUn7\2RsXwۢShU[iC|}"څR2iU 5ez@Ku&Wtz󗶑NK+*ʬ:Vr{q$ĊO?{_}W3]Z7~TS7x?,V%::N3U_[>\R`XnH6-kF\o|aD8H6_1ob(pJ|VGf&¸|שt:6~}r e7uþ@Gc?r"10>39m_wXN?įj\fueV;IZlz@RE ' /?tdu|0zu =wV;3AA x <{{Ry6~!f KM .B p;]u gVqtt!L]/}&Gx@t&8*h~9?TR06^AzlT&nCQ[a7-5B^-ǑppV?DvHV#kԇ5Ò1%4GNL~n369C&-4 ZlUy⠯Ί6~0N_YK#'oO&'+D}"'f{jGqSgh-1RJP͡n¹TEkSo sƃ/UqK6.R)k[qWPܮNa$=ŧ8n6o . 3w8Iu#}7+!X4NAE}X3M04z4YakX!2aſW?۫; gI،?iG9qo&mgLoaj^﫝6"ULO^)hq4q^*=ƭ\^vXWzglmrL7sHЮ,z>4Tr~evNj.3qM~$,zkVP"d sV0M-%h1\77l-8McZ"F8Q:8[囜C] Xq5R)x,<zevsZkiZ%B`>a4N'qߪN!,rئ{gp'dE׹^R:~so<1|~<~F+Cj>r6Z8XŜYP7:=y^t@#^]/?oć~~ endstream endobj 3 0 obj 8326 endobj 4 0 obj <> stream JFIFC     C   `" {p_^P,=$aic*X]`YӚ:#2HUdo ~8!5]YbB#{K@_6IT6vj=й豦Ȁo\*邹fŇKiπ[h+In|<%iFo+a`O-SҴe@-D1ݰ#[bu.3ү,9/EZ3$) 0!146 KŸ4<qN۸e inXlUJÔErVkܗ KEudL <&Xߙ=n[T0}ݪ3sMWxg{!Sdq#` JC+g/vQ񦹘!ݨݮ\dfFc:F/UxX&aƝ'-=jmq&zn; CBz8Y Ƃ0c!nǙ1SmtVS@ 9*9r+9e:|@xf9c2/6#(u}v?կ 2([VY~HQ( YCfV{0 WWkB8~H\u<9 09?5 1ޕKM#eX=aXJidџ*aR=+FrNVf欻T;W+`cV&>'1!Aa "2BQ?BLmͺ{t#w HJ2ځF]P,YV(s5a$x%%(] R+OR*4 3)2ɝFyA)]C8Macv/P2 1+3hD-ҌUʱ Nڸ WB !1 "AQaq2R#4Bb0$%35Trt?SV+qU&?CqZ@:BftG|M}}7RmtEo%>ɻu#*?X@+jl&YnP lWϗߞ:KE-7j"ZeZzqbM,!]]pSzWC2r]JP6U9%e)E}IE1\Sz] llvXvY:*h@dTW"x%PVPVFMm[}LпTwŝyi}Ht󕤻7S/<=| rz̀IM{p*;"1S_*3GbrVF?>T-iKJxz<`<ˈPWX$+C+]@ Q7q>p!!HJE^u=DlumWոF+;`F'yBKA:uhNݤQe+qA)ID]$v J0Pj(e qA8 ÓSN]pR1r=C#jk"Te{S\H7GY*JfvUt}F 2:Fqw\s9SW CaH7ڒj M L!<ӤJ_R(QIP"|Qƕd7f)>0Qw&G(J9G+0[X |eX߇vUP;Fz^`x{9ImƇa?9yì(*Ltl^ƾ횣\fZIg2]E/^ya6e&}+T i7l4bB~rHڰ#|/mOJ2Mur!T=uEQ|"VU[N$⣴(!1AQaq 0?!NF OU)LGRB @'`m4~2P(pBY2i([i(3ed/"SWfKZx~gK‹ej& uf'фy% GsfrGD#ZRmw4X2l*ަ(G'v!ϗ&%&s>JzU3durRkIѺ u5[YJ3+Py ӎ.wuŃAMeT ! w1gNX(!\ƱT(UHM.##8={ h8XDyOrKˍW`5G(+% +kAK}f\]rNzp~Vl&Q4k9cA4  |$dX v3bU8/&ZmauiM X$Wpz ?@I=cÐ @R<,l֦&"12q/4*D}HtH #(B}DL!w@O8ҙSG:^J~/$K NHsHV$rxKPE=sLEBy!)=襻POS$!s{&ȦQ륕!T#÷ɕQ{ W<ݽQxc IR:_<'e<o"1!AQaq?|B0az\Dt x"GB_ңX!6_5Zf}Ϧ)r1qoͺ o1?M 4[}OqMv?-^wLюo7`OF;m0n[StŔ}f[%!1QAaqс?hn(XAD0ժ8X9Cb2 ]CV9A+zt}̘an=%Ƌb3Yp/ikC ZîG."{>"4Hv^ CqIYP׍3 xxk] =y&!1AQaq 0?%@PtXoY( Lr9A F. =/ʞ,VрHp@p_~QZ.w Ll`YA2a&J d׀Krx-DDW$8RLo7 ܼ@B wRWƝL\p!ȂClgp!rP"@ ffM$,GXG`I*/^2n%hGb:\/ SJKyoD@*e C輿D /jj<+0!w 6g{E$fNvpU,Ϩ2' <QڸnL}}18or\ ' k`2s4M@3SǶΰًw2N>  _xa$+$DL h6rQ׃i{۩||4L`]^zĕIF ?N`?tPPzᲝ 1! Sept?HW~@(Lf'q&Wp:eVQ y dDTU? ,]j~VрܚDŽ>0+0kȘm"5HfG @\)ADtjP c\4FG1p˿/8: x0ܻS6bLqՏW 1-Ղi  *H(ވ9Ae]!U0(0b0F|SO'>AɘŮGw> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream xi`ŵ(\KϾOL"h4fFҶ͋,XH7I6  3!$A`02$CBbg#$$Ƙ,;UӒeHr{W:U]]9RU=>rZd@{՛g/Fޱ=ծO|!f%o4o>Bڷ_du??Bk>R3B}A!N5B:~+^v]M[W$I)*̝m ԀnC_&$& 5lC7'+h@wC-=e MQڂF/oSO 0[}D`lO+ìi>M Zv | OBV_z݇FϢ?Bmx 2 A)-E7o极9la5?na߄@ .L s-_5q(#.t!ڄXw13W3\ dH2PZ5Oρ^x~=0y%7(#c-6`;,]0Fb؇'wN~ WZxRt=ߢ?q73f sqBv%{+'srqpgy LGuROZWZvz؇PS 5u|//=W|yy9Μ`ld_/'&-wM69NoA]AE//C?@?{^@cpzN2݅x9ǟo)|AdJZ,c%v{{coN U1gu6n-9^T`l๹@5h]8 8a(z }q^C@h0b+2-x-жx]p݉2G' ; 1if#a.bgV3071C5X"`KOQ1ϸ876r/r?w]|?2/ =?՘-N]Q/QS?~JzR~Z/!>/2-xq~<~!|n7:A'LfZTnf(t/|)#k߀nAsX $_ \qQA#lN3/fE%B"AQz8D?OTD_DГد0{I\}dCW|Դmq&,5\jQ-^W9'7CY$OSx>v ܀[ymaJ>5ԉoB k1+nUMkcw*0k*«og)3 z :l~b/Xr{6`Prr-W@} 3|5z桥@m~CQ7lµvh[A>1IUj!B5N>@Sa_FGQЮa oP *+tO2oc'hCpMxzaqL ^!e=WYKƆښ|.[UY)O%x,*E!1۬l2:F9MjFٙ&ii2gd 2Z,t~IJHIXR.P#jLڤH1br?5G Sxop^ Ph@uuRZ] =h% =]͘iЩQ4m#!=ecmkF{-o {eujIG)ZfFUjLh )Hٱ7 h@ʰFZ3r(;Kڰ9]Pu3m !ܿ݋|&ao/2̀yCs}Q|=4"#!*oFr. jiG;ÏzɓڿdmIs v!Oe"b1` ~F!Z@.,&=!FCCГkkյP z15(aT:_'Q>&H isUL4)x4M& [fΧv1!!n{3p1EˋZ{əT(3@zXJz2uj?വxmҼE+(Ty3.g}1>>\9]$FSQ^3Wj:a.7_|Es)On8/}^ Y0g-Yg oBMY%i0W(:6M{aq=p+f?"O.zDƟ\b\O.Y(ցٽD#!dLTqNG#2B{Sf1hf*cL1Oy?Z#hc ~Vc5 ܳ,ҩg1hT -< iAy.Cpq[8ݸ`,"l [b`?ΆcgecĻߌ|29yř8⺸>nXȶvnЙvR8ݛܛ3 #R pD"EeecL|i"7i`6Aj^0WP 4ju1,42 qh Ǽ-b$Ss "'mwD\b0vSdPI,84o T&Rq\O7Zuq9x0;77iA}S 9dk)$f|:oɑ|}eap}.9L:.\o 4}ℬuzAhяM; C>1"<*i2,f 3'[RcqJŀJUtP18},zA @b)r@U`cY״/YNJU܇tO~'nQPT1Gfb\I)?:/OC}!v3w,"E~^Jo8}O O[q<)I: ŲR)쨮V٣"Jr8\vUr%NyRͳj[g:c[a!S[P74xO?:wrFZ/ym(_{~/]8y9P*<{}}c{]=~K1?b_53nGd#]n\\`zCL:FM! iXMr"%65? zO_iqʞHιA0$  M9nKy3H o@ Ay8^#l0r',xµv`.;EN*5ZTY32~M#8++ZwAK0s<.F巊A;8hR*L]Rh VR| $T9lĤvE`'6.ڧsHpM[/ty};pϗ;%@x By$(-  2m=wrt F;_ [0T{M Q!ƛfَ(VB&H>D%"XDʄ46I!%~jҁ="\".y9Xoh ^m׿gZB?YpjbIoPaJwxb g!&^>۶Ua1_Į$!I$~#?zMvX\-f "h_劊V*QB;*" 6sչUXWY-:-rV2Z-5Fn ջϓPH梱IWF] #J9d@h[8<TDB%8Ds\ h@[ V\$+V\ZP7M4C/*4LVp(qf"`EP,pGo=Ӫpv^'yWT/W؟yY*Ϸ3+ c5@DRQ<Ƽ&[""h$T;CJDŔ$C!٤#J7M>./sNR*ڤaóZrSl!q;c:rv5oWCPQ A* APv9(B XrSYLLz(ͤ<!P cPʼn$x_4TD䙠q&~,~L(R>GL%em {ʺ [YQcSS)8^'jFLD%~!%D@_C@S6R.3>L6loj +/Rq>o1n{s B")ﲹ|!$vvwWwOhTwok _Yo Uȹ.iʵ4%Kj&H! 7>hM j>E|*e#*;q~)eUjE%2A'g\kZo^Nt]38~D%r,jW H-<|YW%~~k]akowsOs^sM[|,X *Gge[L[оBp:g1 s8SKcZCD( G=XHj~1 Hps=6lL j $9rD qqsG########-x$SQ-pN[|tw{Q8 $D$d%/d>Pa]X*|;TE)δV*ꎞڍ&vM>30O.WW 4-'r m-L MNf> ҈VҨ52seJ긐PW%7ݔfn$ ((L,˔qesJ[11F(mr!mIAnLW}dt%=%->Ke)ʿ3<{j_y">=zO E"ΜbKe9qS8#VX/P'YGQ1K?fp J/3pLC6#R=[Dĺ\C/_J]xdWTLaXhmq3u%DPX*[t=ɞKp%Jz񮆖#/oNIg7z}szVv6$žt6,Ч/4`u;TIeluó {n/ຎE5咏ucGp~֭5Xf4ι:}CHW}}cáÑφԾ>Aj6:WSg0v`"!l7."UV{d-m˄[L89>2H 8#SPO?O g9K Kx,ԏN+.&_:L"A] w__-o~`Ւױ\ȉp-_ث7BĎ#YJd9=n&s*[/|j9;s.wn1:%eGyZSZ-(~ icX ߏ8qFbn\2}4͑ȁP.jHɠ̋<'${C=F߈O?H0 ō p߈`Ѕ0" hgi|jfąj6KgfE4ՏSO06yRa;;z//}g*kQ/Q]p{ޟ{@abchȘTrxC 78l=HDSL{6:[#lGF8zLFR;% x۩[At?"@+JB'$Wry͎qaVv񥥡D.1'&^ SQ ^ꦫE NtOufj.>s@5 DGu7jSHT|XF8þ 5(M#]PJ>El6"JI5f H}jT,xάrʒ77T69V_|IG cTǙǿi掸Cbm 2&W8۸~[ '$ s9/qQ(]X3 ET je$ Qz+#8*u%'jQ^6 TyEoR6)*l\OJR*ڤ*pA6Nx{SWPt +gP\9ɑ$E+E+3_:ŵ&pX*'be!Hz \MTo[:r vwwwq=COHCݩ7Kos#rg~Eۿq`~jC  ?lX aWEdek%..hYZ嵳 uaY3{?+#v-y?{>;,H7j ÃJF "8]ѡUP0$:::jW"Dq4sQ6}}||tDӺU0&sBL0$EpCQLEpe6 r]AeE34GTk=Eg^)oWbCFRXUItiUa1ӼXgbuXӽSx7O4`ЊJQACީP펀/9$1w↊}UÝːZ\Q(?O&mVJ[uvѦˑ$@F*f|ȄFH5#kFf$QPS`U1ZN%]ZMpvusp.Lykj:p՝%A℉F;ĸ0Ԍ㍤N7ljW|瑆MCE"*9;eצk b>SV{4Uݘ<_ݓuocxmqsym|loLtߨŴqӕ x ..Ce7iC 'y*^WZeL~N{CC7uc̓'c6Ě'I'I߷`q:&lJae?.(}8[fgUjr'XMWK UR*YK-85BƇF,# S'DtU#10\-HeLV>urݕ~桶چZ%VDrKjU.;y+tix SC`{.` mMJ0^"_[/ԘFԮZdnjଂ땊ڇFŨFr$c !$ HHfhe =+1TMÀG|y,&Dq: Rv8.s08[LL ns*{?2 e ZkՁL dMAlӹϻNTq}4 jPe ]KiT !a nz8d>cc>E{1P*uVW(΢RM^vx]?ɩ?vLt0ac`4\o<Nu,6uDqk2_:@\>&j}B_g5Bk{.{{w8$ R&Z+vKG|Fq=WTY.vQ htTd,ŧ 0x4M"2 @F4,xR*\Z&Wn p{;x=N?EH$'D)aQfh;G't\8ǥtnMR)RR78O"{FW3QLwNWz삐Tj,yRd"ȲeϾ{y,oȃ7l.%jz'Yt:]."t<: -7_pG[0#\2X{ o7&+ L}D/S{ћ]|fkoW K9;bULI_Ijh<(wd%0xfbzTEKhւi3e^#jU %G51Inij7&z4Pԝ˥lZsid&fH%LI2=erK>KV63م9ے@v2f~!#H%>QLfl&0;^3[OUa7L 9yA4E3cNr>aY?3SE^8JQ/B,pyFl("AD #5he8Cgz0]*+cu٘/H?+\VY؂zff {P}ii^!kIzS1Z inpK j"%* *^٩ucnVzX&ߗMNwNR1ޒ˟3*ӟj]r].7 5ᶚKKv,UCu6.>;K\q1[lDsV9uF4&y-HC(gB~+SQ+l9/xxҁ>ũ)tNkb56zra2OTUY|'7zP4by2qY:؊K.w R d˪ (o,|zsvlkC \YZ?@VX/0]=0A'/ !trZ@JEqrN9cXFrW뫶-{ϯhhiigy@UW\/ө(uo ._/^aY]cX `<2-Vi5] Lޡ8[c[*D ЎZN1*BYp=`sX<|J*;+Ѫ7:u1CwbHcxj|b"ϘΙ]?b>Ef' e߾-+kv|_~WzB5{;n;r;]vogcLx|C% VӸATH {TY  <V2<@&n{Jx 3UuUA>0]6Q#Ts7V6.& ^Y'䔬=A&40tdPqS;A} z0jj95>Ar,,̅a\t5bB 30/c EVa `"HyK#퟇wϺh3p;uxKYann"ϰo upYLibn+/l-|bCƻ`t?Yy5'^FX_~ ~;^v8~s,ômv;60;v:ڨ`(׀jD'qXl0{(X1;M-rFiT{\˘ ZGrM]N7DZOr_C=О n=EuPwR>G)bd;AXQrE3r a+0B@f/Sf=W5 7jS[sUl2Vm}`[̜0⩅Ģ0=LN75t2KX]D9 q"=*VauoU"$pBp0].D _Xa,[=<măs:I6V9UNl=N8ŅCE[c.)91\ /]2VW xV6Ѻcu z p]w?sܢLE0؂:6 GW?:"(~~AT9 u\ݡkwZT;ǯR_bX# o%v_%Sy>HOh\0l 'BMb&gA;Lދw _o?WWՌ(,fAA4ZDwA^uƃ=oXCZyApVnmcl$3 6L4j}eOzÞ!.hℵY7gt/XF8l,/#d@c?EQ"_EV[#jɖ TV?Vq彗|qmɸ)nl߼o^MCˑek~%ٍ&u <gAbЀ$N)ʩ@քM$k5zќ t:ݨF݃ݢGdV{Sn[ (,fD4 |YDXmI?Nw,Ydl dd ̗)  p8,Vʒy^rpU}vv:*,v vէxs`ϩwQ%S3اã̝Ʊu9u]` y'?7[%Xͺ ;7n^kU ;͟nTی8h*ȶFu(/ o2lŷ {}̝>rF< ۫q.F6F`V*FE9c24pr]Kӹ,6"?[NvϛkSgʣed6%-ZSbei..V%TNyyy9M996H\vwZnn. -rBJ,HCQ*)ZTnز'g%&'wRPPר +tzj%7O ,\tatAP0;럞j,M>Q[V&[t߿o(]golȖ2X3ekAsvYg)wJ8wzbӳQHg#ZwnwnZ2R X;ʪ.h5jk~3ϙr ONDQ'EvEQsjv$MXO`A`+:%r^|{xRSwڬH};<ޡ^sKg5hM!TVYKyVNdy=͞XѸɬz{}-g\|V$ IvgnfBˊNV^34"MVSmu]5=jQ3et+5ѧ4c];@e !G+r 1$mY 0R,nۭVZC`J PmFh4sp/) z(CJ2>o^W>V#[5Uށ:pGG<[] 6}b'qbxqj)Z`:}κ<%4=H}!e31sT;>&-.X{[Rssf) No5f5].5AF_}ӵ[ҽuY̬Y'od+o`Watfthyrf f>Y,̒K%KC PA` NWQ+"n`Zq;CSx!Qwbڐoi$Ncr(uX9JGPGYcN>w^~ȹ\ubetxx̪"G,5xxTpig6%$ggKt1L'6,|P_(zӞ9+wW.SMU]Ѳk+OIi*{Qwr#,nX=/ <56~vi8ɇCljkQNJLm‹[}9}B-w-YW䖺H,&nat⮽ߊ'3{^iJ;FR]s[ h6ԈEvDE"Xl̊Rm$'p$*&ƘW\.IH:\j\qjԮjl(ImN&U'K꼻sX'ryMj#7=A{Xs?#4&8LkgHWFz8S޶Ց$3U\W<F^U+ VzoUU Bc=9\씭bH i ^Ԇ(֨1E:Ov2*CԐ3ȝ].k8"Gur( |n(V=9tl1!i6+=I}:A .~|X]<UjkfQT}+ŗ\׽bWs=҉BgikVH_I8gA+.Yw߭k64( ^5'RЭgRCWЭnQI' ЧW17]ZZ8Xj{! mᯂT%k/H_>W?&yoԔ: y JDw2"f,-M;er;ɂ.1-^esV+OUZ\XSINs8[m=Sfa42P"Ғ(%SG K&ߙr&b8Sj_ oWPC5$~tT)Zr0@ 0 0:{! l M^ -G>.[,|J"; r ]6gd%F0R*"-50O*0T%vH'XilMK$'w'rNa+ l+Bdpj]xk>O7-뾵'={6$+;.`cf] l%;܈FEF$ &qˠHN ,n7 c/TH~e(cggPpDMjPOנwYդ "RT RRV J| "R$\Ҋ/J.NQk$4[n2g1qjhc䶞F۸Pq5[_4P>%L%PbhɀR #)hr>S_nb'Y ?[{MPVF:}O. vjUuB^*ePۆ^Ȑߪ@U!..ξb{JU-7\z߅:TOn "zC۠@.Mb7GW} '}b@nICykSח_hkۣy3od^d5 jL_~kȱ|m.sȻѷ!h :Bw3Bl|m+XE@9ǔ2h)F(s4 Y^X!GamRb[Gn<*TO(*ř*Mu2vш6uN6~SMhjv Q`̖&fg,(0GXX6Yd(ZXQ_}}m uQ` I}Sm}>@ȇ 6(0W:@u\%P`Urzȷ| ̡T2TCSPD8?u@9T:Has\I=̦2?e- )[@aˮT`ʊm9ig=Ct-tQ8@R?k(,(0)_W@5H?6q&U)XC? Ci4t\S4?$% SIDCh-ZjCA^-poWJP+F& o%B /hXSfg!lBMyʋU:*PZh,xc;@ӷ.M~G-Zml@i^uC|9-ٴ5{^hzmztY]\!Tn1mpKY/}czƘm}Rf <#y#h#䑞krE6@B&e+.@^GKzH[ n}_VT䥭.OKk(tZ Chg̈U 8fb-JOLr~!EzEWYRks28* wZTr옞#J#8s_E<{s8ٔs|uE,a"xP2bMѱuC coP(#wҞmol#ݤpzJAEޑmCzKfT 7(WAƽʺMޤUpo۩2*k5]Nm(3W+ q}![C[ةhH{">UZ#s"WQA\vfK҆2p/Τu #|mUE0B\d|[-F%ڻ6w S KiVMC!)"~R(PD9Z<p2t]rǓdĜDJk+vZ+vMYV̙iҎGL;TRcgR3q⨿IIfB9#{{~cp~2sٟgI-{=8hWϷgfL֑\?!]x~!%߈JO'DH{YFhj:V[fĽkeU_WahBa}u j,u]EO&jF8KUU5@۫R`;۸ukM%c1':0hlfha+:Ca{!5ެg7\c\p4xMU55G =B۹RDJڐ<+KjQԒZ?ƙ 辽S5Y ݑHSL `UP%} &GXkRmRj<"d]Ѱ'.5ٯMvk0j Ә93h0Hhj6G8ƸKcDqmH -Ead0dQ׌@\blc ` 9FYև45bDO 6##kIDj,D x`hѸc 6b!LKU EZXLD5̎N4[I=50yagM-nD5 R㳊V"TQa=6g"J:tWnf<3pͪZ?jXQ~FSa-;dB3SX+15nF1QX (6<&U› /eϏگ&GSg|gZ,Ƣ(1F uL"D5LdʰI0DBC@4Hj&t{=DVc.`Q#SGa-iFXM3P]=22R5-dN92\\=d7a=&4b|% ];l vvogvumc;:wf7 oUCŰٲbTQ oTOq˰>,N~0OCb,bW Vz`6b>SE1{$i#ظLh/yLRe 6^|fg0 f2%H3;Z٤KfK1kʆXJRT̫>HљQ`L3!ʌb|t Uk|@تQ⺰w'EmŹ交bѡhv ߗiNЩXq.$T%FL6.aiZ2A2z 5 GqAk8̤}݋7;F&v٬#)q~f!j6pA\T۷ifkE$%9ւvsYˢ8,~@_\:D-> Z|@hD-> Z|@hDDFW.zR qv1m'o!}x } s-~Ə}gSPw08ߍ9 ./eVf/v筚Zq;+鏑('k! r qUy~=S#Ӏ?MGqQ} kV5 3A1A\{,NЯ#}'_{r?IߢJjR|I5d*O) s eQD<@h}8!ra&eϽ SV&.2"t0>m+oOI HFQ@ 5z":94?# :=.G-Th{Q NBC"ك`fi$=Cvd$6į_CȔrtb spӇE% C?W2K0]8]9~3ST/>A;MIC!úL|G;Ov,ݴW#S9A;Ā;,mw[+>%ۭ|{d pD/7r_blCĿ"Fq7Wܟq-~􂎂 &'DO1݂1m!W@\H@^]- 5 >.4: ]SqjAiyʿ= cne8~ 7Nᯡ/>ՔeW9+It\:]~\NO,<+< ˳"YE Fg pg p5__/xB-+ QR őWmS'B2[-Bd>uX>G#ďLˇV=lmEæ:\*y* RDy)=N_YRU,?2Y O/Yʔm"BS(R3 _v>v Ort_-;rΧʝ'7H79Z2eg˜9-sYU]ypgp.'-k>s~9{.Sk,kJsM%g&䟐eQBЭX DqJBB+|X"Iy\..EbݪLIn_Y5X[ZxYFo+Kow+TANY&_K&ҭHg!Er1xC- ׬HVq"oB<10?_!BVV{HXj m8`5 Ҥ-EWdZ/c{f+K; :@Z~c'5KKhy+ ٕ#+⃨_5NIwY Y1ϔ,hdOr/GxG+)),3Q={eOמ{R#ä랒 ;,$=%]t'/r/UM%Mm:ֹ^|IUkz~޸=~/ok=.ࢧ4(~i4#!.%{InllAI¦-@w۠AQEZЋ<0`Kb+z&+*)R! &+B}ciS4\ag!"B|iͿ6nm6 ԛ~tx$=d|+XVT[kMݭlr[ALZ796[觡BtZ]wӸ? ;ttF::.ӕ+/TҺl#e_ơ3||35e ;fm}s Vk-*$ endstream endobj 9 0 obj 23016 endobj 10 0 obj <> endobj 11 0 obj <> stream x]n0y *I@B Q>@H TȄod[y2I)&s}m֙>!6]NJk3&i=>nyX5ݦ0On8I;t.bǸ>]LT95WJx%_ o5J;t66 deYU|mϖZr:MSUd.  ՜xP~  6pʒS%x/lLg)XIq>Y.8 ßJeRspGZ)RٿV RF>^?Ys8q&X/$g*˳j}$9s%>?GV>ULiw4#s endstream endobj 12 0 obj <> endobj 13 0 obj <> stream xyxŹ7Zݳo={3=FJ3#i$jYF. `VK 66+@8NrXrl A9$88' 1 ܷjF^H{=nԞѫ/@z4X$o|O?E!lٸ*_d,? /*_W#y!eEmRV} oLxFf6CokG ]eO s B?[i_9H_P-W^ +Uã ?fa0Y!AU4)Uj`V)^? CR8T:mh M-ֶ9s;y],\ws-_r5W:h."?[w!oWySTq)ʗTC(FP y4zB2z6棇P 'V{<4FPExN7FT^tkI(E])|^2_$q޼2rÕhAfC;]~\jFЃ !tT.Em1 h5c2؉*oU~at:\gO pҫu[ z78(V~x(Ńx ?ޯȖ;*Jգ>$BxbUƙnB_CGϠv[FfGeMP5  E[Vt 0/ /s?P\8Q6A xmK$W_тEx/O댒 2# %\BQi'9+5h3w>~^v)W6f>d^f~>U,+IeR-v}ZuK?!Nv%;)7=̽XXxX|Eg͈H %+(~.j7 (}Aw܉ởE/_7/ǽ;9"-L:`E-pe^eeFv;}8hc6ŃʗTuE |:=S?382*.?W}eue?R( 5h~8 8zd/i]? V XjHBux1K28Vc=ހ7ñ |[q8O ~3,Ps1_,dp\lceB=<<ɼZb׳#wW؏9Kr[]Ľ{DPt+6+S<(UK_Q>|WJWmPݠzEUQG@ZD^F2Raea. ZLɬd/c`Cq!> MvWv ^_A'ߍڡ~k׹$Z<w|pD/am:>佻r |ŠN|]\uA-T |r<wk jBjE˃}}+|E G,?]\hK+@vhТOn)+,`ACUm\{~d+EU+厹sZ-M|!Ix], KKp:lV7 zVV)` ѡ .*-Z"ii=d?#chBgh123%jITI̋=%q|Ik @ AqbƗ8  by8[7;vI]hSIt@bNiv48[0HmJM.i>^i@|O08JN஍҆ $͛0%hE_3P׈AS{nц~iyAs;yqtnuU[X$={v y5H΃ &`hxЄ+Dxs^( T n3t8I\23o t'+ǐ[ܳr@ NtxlhmduTo6Ό\p$ֻTbR#i1ÄQ HM-tA ڳ &6A\<÷B>OPDxI!?;g}-G?D$JD"1Q_OD= uKӅTr$3! "|v`k?${ۤ6@bbl@5- H$'!rej}26{C!j'SLڽu;o._P޻B]v@3Tkޕg[N]p4Z,-_;@2"@xhq5zjQ@z2I ɳI`q?z7MVNhp7M&N>z=,T2+٣=V{,{mD^$;Sy&>i3h ߺ쀌o]vI[Wd054o@ <)| %$!7<)#4Fr47NbDԳymdyly\5OyHge RA^zO3b=$C,ҪH1\jY Ǒ_GB}dҙvqS85d9'Ч";@♢)|UBSRck3r˵٭9,n*lKN<8>CG=(G0/rXƲ\[sFilܯTܾ|*'!af;ӫQ3ѨQ*U!s}GeJ"|9̹L.3 s 1[]ƴ0nBR"bFQ4f9``Gc*g6ervR ŢRHbTá+XY ,}ʋdS˜w^SL7}ܯ??9܌˗\E"]آ3e5ˢ-kwuR|\abaiuLChEV+Q[Od`u![*:%qC$ Ob9)xbl]!';Y't4T&!A!Bo&;3ә ?=MgHc_8ԑls@I$j|XjZvz2<gGH"=$OTCeHmH:Gs0y{n7jۺ "?mv&q[7yn%+ے7WXcȶ 9 gl]b~ΐ5bb~4$X.7aRFE ҎiѲ?u_${D?8dƂDp*x4>K42ΔF NgEOk!۵M3AGljq w]V"s#%T=8Fr\a(ws*IfPtQB*%х{7r{޲jY"81^beL-me72vS9$M`Qu s 6Z\fwSVڞM.Ѷ!n@u:fUDOr#H#XU9J!B9BvB9Z6WTPJOVdQsœټ^CGf"I!!` G$2@? WG,+yλ'XV4a(u֨Qh1.-.6w.FwڛuLc]3Ρ|{:?=H5E}'n-~=#iHϊ4تd59+ -vp#vNTm] 9]z*SC3|¼E("""c'GNDPi T2u0P{2l,~՘U wBHM,>9gH$h3KLi$a.2D*zJ ({-,y%QjZ5 ,"2^d/Im".u/Z^`BRD8D}}GD\ĥ(u(A"|d݃zu Ny uE-tes j!@)%ah!\S;m<*@8Pl'13ܣ YpӜu/fEG$dľiZN_ЊI_ݲͮ_0Btc>z<Mm6_¥vWrhЌwT -#7Σ6-Ʋw:{8ò]lTjf e].7nFw1RMJN1 "nƦL&*MʐVYy넕fJ4\fh&' .WT :%k)I"8 ((UR#+ԥ-Z6CW-R]]f 0[}+%dx,0ac+2M=hAy4Vk ~f6{b.BZZ,[Zbh{UJ_9VH+E%TLlkpr|.nal4AHKAeJJKdt)'+P·ZEvV,D"#KchTb/BRzВݕTKj }MKzmz%Qzz=Qxzҗ) J tU 뤜!=lQlzt' =G0r_IOA/$A_BpYe̎t<~QsFi/t;okv^rc /_f^#:8,s(9sC07MpJ} e>=wRAtFމp~hI/PjiirC6==i h>Ke"ި6M6[ Ĭ^NvSD.HSӲj PS#d\Zګ. ɂʐ5^\~@G><%SMNB6 0t :z[_umɊ¥}~/do#:vm~tvwÏʿ?N>DО^-ln^a#F)Y{EOǕCV"}g6!tYT<@irM"r`V^w@O5tuuLSL̑Ӥ볏h 21H%oTa"xP9=`cS};ȱU*4BQJﶀ=||3$O퐚rԵtTJ4ҺBM k.:BCWYKj vՔIѺ<^Q{.̀|:Z\ J+싕ە{[|d¼nz?ZTCaݚT?2P92̰*ǐFOfPXɬl`Fݮ{71̈́cZ #Q3BBvh*j;gCYTj)Zw߲sv7");L6[|NPǛ`Rc:g] S+rUN 7D-B$G~XÃ0&gcSM[F]j&asG5aKM&KвYY{BFmmkWyMv}}EshmѨd}?l~+J6Ek[jvg6(L$ Znwk8: KQ%łhCmc3N7`V٫oiO°ZVCӧYa5Փ(DlY&ّd\[v<:dit%B3t_0Աtx HGP:MUTA 0?gnW# T@֠HnsZTPhI3 B=~؞J:"9:A*Ȳ%`N_,?a xg+źˍo:FgD8!h[n9Ls1Ғ׃u Pz.zv(1eme֘MLދǾ#{N( #t%1»"8 JB5Jmxَ$(3F dfgc Ng"`9NVޠ`"oSLcRf($bj|4gq4Rw''9炸0 q'D0!@ S|{&mt@AC XHϞ.fY_v$5|c5W}K0~Ck ~(9Žko^~2]aطo|(?p9f-Z56LHj8@ cN; nyr7r?+nX,yW 6Y'Is7YiXkظwi4o {6|>J9M_[`;$d/:VȭQX4h-K#p^ZU(#wӝs:#$P,*SF>@g_j-dW WyP7WMx"Tݯ<Vb|.ZcmuűXZnoWCuםo_Vǰ+K:1QC8Q%B>1Y$`^d'V-ͻn=VS܎Jc9=fGl:05Ly LFʀFitS{Tz_hpF։q =D:}TZ@4ʦЀD'LS  EKy ǝ^!R;9)G͎$|shm2Rm((~/+(P]  E0aY=B} !]y::bĖ=Qhgao=n^g/_=HF"-Hu5.j>6pO-ܠE$Pd,Tjբ\ȥ$bݥ&"DK'Q]K;$&#uHC;,KoI^i4!,q2@a&""~=ӏCtp59CwW;ӳ~kO[z$)L&Ꞑ+HLܯz5"fP4cW92 Cžߕvv͗gqӬ9W  :pӓ~˓5|6D,VJF#h&cbP T>KAIZ$0/ $b^JsHY!v|4& &@3H5ƷFlSnD0VC{zBb鑪mM}g(*Jgs.S(bμJCֶv4(ikۜr!onp-hqkw=F^DX zSml酑yi2RbH.|ܣI[;uKV,Nߛ~1jҮt^oo'v: "56^g9Jg*JhI8I:'iܑd1dɷD$Lv9iNSKg٧8$_cf<<޼yC|f>3S]|&~oOsJ]qܞPsܟ XڡPx/%3 #1Pk; 8|*Y 5ffgԊtgό_rp쭟vii-_$!_JHM 6'ĥ7_Kٌ)VlFg^%i.^X)3C" :)`Q)fi E]]L:SOiDvPqPqTiıd!;w`:9&/;8#@iD4"4i 1Ѧm;lFt}~EFR@=!_b҈ccdTzYWn_@Fֿ4ja?a{}T+\ y$C)+ϴW JJdG<릑wYxaqyWtWUݫ7bo4tTхګu4i&.ݡ;-юb>ۺXGծՑ֫U;t;/ OGF7MI@2;3ZufmS+Wa6@Cfp& Z7>_1n-z2%UQLQApLΜըTh" zvW3-/H{%,"t1 pAPE\*U #\N C蝹XĥkD-ϫ &/'2i ~d13(ͥp*Iv#.#|AvMN8ɒw=4RұI~pi9TDGGvp4}r 'FOLR#3ķ,ڼ.kD`)nKӆK4>Tjؾȷo?|ՇU!ŕJ}4FUW9qP[MV(vea=|@r!AB4v(xJSB<aDvqS1"ZbǙd 4G6YQ̐g&vPG9vR 4=" `SyT4/)ۋVxA{Q ,ijcb]VϬv5ab\6^l$?x~Dg}vu;t6S qǩ*&d5{măٻ(M Uۏ\T,\VyR_=ѵSY6+u |hn0}< mFtf!Ƅ ʧ5(o r,F۝lԪUd24#EF#a*"xh0!T2B0$¸ ' z<9699U2L&LE8#;"l@o9i N'{BѸ?AA #q'd$_ g#( r1'ؼ?=h3Ϋ*lO_SDPٽE"z?FVY׈}-!1+<:N/xV~m=/^Հl>?][LZ :!AWh40.g[DK"[@yXRV%,JxX/X)褖Nj);C\URV"62(.2o=|'9{gàGK#M\y24<Vʭ;`2u8'@iod7u\<6r@kѴ}]2X(]ԾWO ˭ֆ^蟳9:ۚt9W SkF'֑$Y%$2!mqJ iAKp+]Md]_r"QD%$ˉZy3AtG?~u)ё ^H$QU D`%O>RT;ass䊛-juTTlz-E1jl!+%y\XbњF#Yɉ? z"S@;#<]fupl@ &b\^h GVN_=_E|I-[(q:N &<1'g[,q+CUOXY2ZȔUi>c{FکggOF5yd^ě=x gDFNTPVGB*a(9v)Č?нt$m^;;ײwbBYy~lcF|ui :eR܁U}9+>B]6jQS^ONI??"Y%H=1q iXIҊg2S!+Yfp;dd:L4LZt1ƬB36n#CѪUqWD"'gG OP띎q[;TI"6k*B[~\xH?L-O߬-JKPN) Ӽ(fD@"zW~a#6ww|ҹWWyi[忘v93'[|*z+4j5^Ί+iIhj[ua%Eu9z$3}oN/dUTP>SO+~Fʀv{6"NF:3yb^lu+:VnWP٢ ivEĉo'Pڰ3GK)(K <ϓu |YI׻.>}>::ÇB)؅:bryc֞Ֆ2 0LT2 l Y#X&|aq.Օ1D#Eե0|dLl#3ljqL΢H朕Q*Lrv&7rD*4G$y\]p9&Oʔ3=W΍mؘ[t\(z[";9ލT_Ƭ҈@BnMo# g<̮VpQ9F1"wjFcCj+SYlUXQ6(urSn 1ư8icFX:I|D"t zڧj@Dň7kR(P 4r5C2hcx@/*.x;˗|\Y(?qpo<0pq`W4pwrԞĖ`0*M:'eV1HT)Y M/S`E$1W~쏈n<v3nu.K Dqp#+%@cSs%`TǸ, |zԫ&U`pF,:LjLg1LFQ,$rLJa*p?L0T&J2KZ-۠~m]aV@3>΍唦$](^2d<>j;;;:KG"=ec1g̻;7m0ae5zWQEIe6s={5j*~IRXgI=ɾܺܵk;Ie?z`OALzesw=n̻Eh9r\ Y,aɠL1((o@4F9Ě92aX0|+ dmn؄LæqkM+vOb઱+Ʋ1&Q#΂ӣ')ؙ!_?X%^' &8_]NN]6,Iaf0Ȉ =( ӥQ̃ThE!x80A-^$~/R)F1PfGGO80OF1Vd>a>{ #KK5d~߀HmɯTɒ s*j\E,k R}+,Ťh!M&(f*c 8![ `ϚK7zE'P uUXw'sS±3'35-X-3W,hwA}׬/&MKsfޢg)KZ^֍~Dzb5#_qvP(*@:b0|>şŞ dA*ɂVmO$ףEC`' >NJk A/0 NRȫlDコ/Nsm:J$^'!@㫉DHTCE|@C yb =E:;ܬ\%i y)Bb0H;5`kv teU+Q,tԭ Ht WvPx8<>V0#S@< [Za*[  ˝?s]0z:RD(WY-q YB]uGT7 aANZ@ 'pP:(S)rª`9,%=71z6͂x}[[}}{ۍrWWڣQ:#) quKq5^22+Cw o9 ԇXCuȘE$_8SMv5Վ0AGnz"UKFe&J;GJS+1^5h}J M֒;˄tWMC"JnT o&ˤfWRm~az:sdE>? b1Kh>VSQSc*jC4AmJG>ZG3|~(ɍ_|)gSgy2Yt#@WBa0\/(RB4>rpLdLXq'=/&YbY|/sgLFV}՜x(Ǚ8n9C &(wPX̘aBb &7dS;X`0e&ee,Y^Y2eHS4hG98?}cG؃lOp O -%\u1;;4B3 ^͐ޕN(#Ego'v(X\8@EK걬Ck-[%,_O,/a˟Lܗh 4Ef*9e C`]0d/rZFЯ藷E&{b t_4> ug8 9#v:.`>jy0;ײÎD̚mNMSkD'>3bNZ5 a ]AROpeiQ!LT"ͤ76"jTN0  :%ؖ؎S z$zi~f'59+/%(ܻEChjJE:I6b+@GiϧХS#o4dF6}Sx]=B߹SΨ?6iufcN#c "ԮSbt#s8xL0 qJ<**ġW=>2Z[3:]2SXDgjOO,'rZ3Kּ(-Tj7Xrii}?Jƚmˋ@ȄdAbFHzYÞT1agPV-ΒG4=! #IdTylH$t.:)uR\BIk}Kfo"ehc$ z{L̓ۚɘLG  ΐg4Ed 6╭x=_}X_{C֑"3[9\ER WI*ܷj˪U HRjO*:!Q;mfQ @TF/P4hu*j*aH9FLP\yNꤩ%"h@3qirV3jsHYL%W,8s@' G::c|лrY.. ws .AZٛWAM<>E ;|zh -PqHJ θDҪΕUr1^FkHDzN N7YG3$.Ȧx:n6f9 /YXڿ[:AKRP/TY:408ɬ},ȟěnNɃd?2-&u5/U45Hc &CDA/6B,Kqi"65qRRx(!ĩ+bk5FR _q 9%Ԗͷ)sWF}5:r"{čU8i0٩; 9QqC_;?6/5"z3ksy("@17~@`\_W65:FzjS >]tNAkg}YXx#مF9ҡ܆1 G<<Ǔb11ٰ48F:𨜕~iLb4<+Ȯ4S.kۣL'4VQSͮ~ݪѸlۈwJ ez٧!edG6!t~6JY6b1`H^i[sdDGC+?|ii{Cg"u7/oUWmwַ8{Oe3w/Y6| AX yze@W3fkzVA}9;mĬb.`Ƙ8sS]0`a(EmhW};xgj1 }@7ԣhP&Υo2ˏ3k'AFG+̫ 9l~%eyMͺfL!{ٳ1A)QO-ƐN=1BLG.* *P& ;xQgP <ԖoA˅hDVfl6!ߩ΢,દfT]dH  &|ﮙ5g-Ȧg] @2e3ɀ`zK1'ʦ{oGqWuϾ{Oҳhf$[lɖHeIeII^c^Žmk1.˞@\!J!ѫdCw+{N:o|d.K A';=jaQzq[!u,H! b~m7)TpYt{掲3ʼ~;vL#~sԸWf@1:lǗq 5!/ch㶲=fK'j pkU LR*jPʝv5!D1WJh6fvQrUBUSUFUUMoQ=}@?zYjŵk}R> -Z2y ^e€?LS3t2+/W1N%c*Z?#",3tff_]G~+_ 5lKyťd,(Nd4YMY J?bҹI?*&8 ȑvǤ[9 )2ayfoS*۔b|o2F@; >;kg"sadsJgiXDp^#Xd,ڀtI+y&XLC YQ )ii?A)~-Fk'҉LsKMXr8JIq E*)izwd--`!Rͦ0AJ$kSWȮ NBj(EȖX*_jNܢTSB.5E3WLsC)ԙq `O@)k.k˸ "mDefY/je}s1Fj_ 17ڇ߾N?7);c2KD+f'g[Z8C;Ռ+4&HBU :Ŕ<"6 tdnLx݌Hc,_d3nJRb˳n9lo4rNwBM%ƀS͟I*R+jW^n_s>xkЃԲNef /v],P*g3# 0V!^V9`TfRDqzҵ|c!I")9OOb1cMrZ.TFLfӢ>C$yPUeIKA kRqSix&W)ܮ X́2JΊؔbJՎx uK?4=O֩޼]Et_wKG6wn5WaKpC(X}5?޿u` cQM덉Ent,q|`Kk,VRz(F)x" ;@?j mbgvFlmͦPZjLG';h2Zrq&|)F!51QL,H5H'iFfYNHn {ńqƉ3sJKd`hP<b֒xI(b0;+Wѥȭϼv 5RHxo#|*TuZ;mmyy6>mn\V-nd'OS}Ň)MPфO--ۦ{䁠1~b{@ È!cl: 8'!Ô6 *&hV`[!z@c3> m8A_/*&?HoFE=뼹̖Ili!(PGaX< K}y70۸e]ݕǮ}_S;dݗ$D_|[*|iADOlşQ;NSA:~/jj#cH}mY6˪6T͘J,7kYaIF>`?lQ~[ 3L#7CxFPqq>Fc6`FփA~N#%0R'gpH1FHŁh@s&q:PdK[ 1__CK?a87ԽRQʏC. z@Dc; n+B}&>~?`zwy &ӍalR s>,cKSaNS!i ~gZ N FZ!Q^G!ϲu`X;2*i`zEΙK)ͅ&( yP#tct %CMppdbT )ؠ(ᗌȤt"'@>"h+Rl ,=avA@[fTfhikiNhd@hvjh .ZqD~Z''P0hg$҂M _nd'sMύ7ō\$/ 8zn9l㠣Q[`Xޔ]Zs&"qolΝ=u&XAd0 XtKm!ӪijN:K"ѽVӓf\kQ%՝┪ŷ&WI'%MuYILIŹș#i딜Q 6sh8~ &0@K/@lIb[c5YL~ Ĵ8@_8|Ű)j#6c ~S@%`SNOzT#LĉV)K /a<$Jw?<2hah82pCʩN>#p=\)ԇ8MدFF0Kͦ`J)-c~YbwЗ۶ٯoq?B?MuAF+iyJŘ0 (Oaz򘗆L# d)0RV516ADBF՜ht%S@)i ݌g[~X3#UyU4y:%h#v^Q T.9 L.ްjpd!{q#j$ُ޳[Fn3Oy}EfխogxbOc/~gxn_i@Gi ,z40oPԚ#)SXF'STT ɇT*F]D):ԫe燬hN `xeikBT)tO"֋H=!?fǮ^`va[EQF=af0n:} ^_Wdo"I~\DvbD?f#?­%7jQcS6V3K+KNv 3$ek2aw4n=n<<>5ƷO1?c>}=ejƣ{RzTHضFNx&j3Ac4!b} V&?16[x=CkLTh# awøg ~n^b}r8Hi4rϺcS&쵷 weje5O( Êy07F/N[_ԕoW,Xχ/+, #/He8CҲ!M<)ƪ≩t:MH6W1+`/^N-m^a0d%ca~#|u}%ϖCX Mc*Y^JiBY|TdΎBU̇A "ÏP,KJF٤\1 5GaMX0HQ +\!r8PcL**NVYTTdS62H xljycӂg0q`RLAC %J@bQR플(ėJN7ҵ 돡°>0|%H~ H=DAT2P-&!PbR+娸2̀ F @Dݛ8 Y-JΨ}H:w96@*z7\,K+DiXt|1Pni:xdRL/HF 0NJW,B"}1,N;77s޲(?q巚jה%uyke|yz3Jݩdtbt-Nj"д8[4uฉ †PcLa\\(2qJbtNs,ZX5 v 1=U2֚ɭ9%ncOW O&l __g#̮=,hVగ|m  ƙQ\lyQMV<!`"xQ@9uV[ȣEwr!Tu9)C 'HKJXKKXK᱿VXo^zTXv $}LzU;UUC*اRQfbTM*JJZI R@[K@dd[?H &kMs⼠H%HtLc$3Db/P]V)ג R0E\|Ƅh;EÝz85񇡡x%Wmki;>rC.b5KͺӺ,{ͣ7ORW+nгro< k?3m=jSv?_ZxK5? U*jon66T&M~}%},@PBcT)l"@pj؂ 20LJMFT5;ѯ]A[Jl ZYhh1H@q؉ɘ,f)cջ6cʊ rӫՇPWGZ]va-uUPW١gN1*0 lXQk`Min&bG~ uJqItתOm 5M񰤁 r$0ȝf ^9(%Gn'ٌ~aFrx(1⏏c8See"wvOi}D/A,pUr_V)͖ҊH/,㛽; 90 p` JzD38pit.[i`Ai7WlIj/\ /@c5"(a@#mLl½sioߏ^z׹箙5+d>'۴`]m&Y*]gw .ߴr \v5rż'JShZ߷xsۍ*N~_]Brفr\5닫2+txyY]@uZFшNkJN:trᓑjeABVVV;V97L滴wn7=}U+w8Oq>wl's=69j֩e]s]{8EQKRi%W8Ie[daT  \4Lg#wsÈ??uTyTfxϵ_>:S=jTO7)u(;Tjzz^l~Jҳ 5kX|۬]e%ɲ_i%P\hT\ Q(Zkc_7謵Pgs-.%N1(T._G=M}qlRЕJjWnuYĢ7(*9>"툩 <}D/C\ .84dKպʙZMv~PSBvm_5J3;C% ?|5~}?u0XA'0=Lgr1He}pQF= ;m~Y>zDup?[>/9TBck;ԯ'T O g-ŕy qKx.Ki2#3~0-%&SlDc)P 27D"nLJAֈBmtԨ:ցĄH@^H- 1JO"t!wV=zwzjPߍO.i/ZkOܲk<8蝹wv|U7(}#W=0'+Vkݍb3Y%W7nyF7:7 0 "rGY9vYe(ꀓ8:uؒI+1"nHs:R[07Ja$4Rt,hz?eHN$U88 t._'SyL~W~<} Ev-KvJ9W T`yAjH$~~9V>$?,8:oeCtD|EOOzYZ]_?/8fV@#Q9RsqVhn \NΫBW~Y. | q0%[zIf`3$[D$XVQbD'WM&tNnwsz RTcԧEJGce^y3+|' _֥1 q1 DZ>.B.әEDy58Z˓GxU|&@'8YɊ1 5:fz1Vx wL)'CT $J(8t1s2AU(73')Z"vl`g)ћ-PU`r:p8:N\d Yc%3qĮO4ꉳcE0r:1O!,b³G1d-u}$[؉4"nXe F55x +5HFr!${X:QT]=ʡ+Jn5L'0Ea 0e814HѴJmUNe kxFÇeu:]Hth*wC*ф`a#v@p> /DY 9nn;OG(E\岒)D;"Dq;h,wGz8T0bWVJX(_ͼGayv0!mO\g3/>G|(;cCp E)}ZiΨOfkYegM ݜdЉ8!34v^Nl6p6#v]Q0cѾ@"a21c% \LX<$S)ȚAܧ8P)Êg/|.587|GRY$>Ҟ&3WS=ZFWDaQ&PA/]qVYtKkgF$LH`ex^X FaZȸXfL33gkLNEޗ7DC7tk ͑`vu޽|J/\ a~MYm]1JFWpkJI躔\Kz @lCaC{]kc*vkNN)G!C) T'*=?CS~}~O| ꚴk'r\TUX.ooI.~q2vڝE[8nQ'=)[ڞ ׊iq0\VѽA4jAizPKh a;~)W*2l+ Ys_러ݎNʇ.\&j%Ѹ, ୷j w) ERMv˭CNL*mZk2HV*5-1Вɴa[,^ÞL pΰzkNܢ wMnE/nbHZ4OWld2C"+.m[>2"֮wf߻ȿQbWw ( "Dwnֽ.խg6err-0uΕ:zYF(Cʾ!T FbOcaTN4xX\t(Y XLE~7v[4heCvx*24ADU\IT yϧxj'GSUM״6RF͘&DHG0& $ }NrmjE⣅o.T:Fz2ُ^AoY+D|)r}|?cއ_<Ձ`knzgݱ}Yk.?wJXѡ%_Ėe6\+d=R+g5ql&q~?R553fTYlļ#ļ%B["aKVYRP\-%-%ļD4o)YS2T~`ɉ_‘kYI cɂD7.-^UJWn4#kOTi,fE L6 -$7.p7?."{>}J1=v8 0Qp\R66-Á'R G iۯ; dT A ;܇ƛt`$6LF-JgTH-0QM؈kznț^ M?tt/f޲n. Sm*Ds)C;5࣯߇m'cC#ݴ_FHF>o|sߞS9{.v{Z#Bt<*,u)v{vuٮhs.3n6kBumrrrY2h,;x٘F#!fQ#l?fjV4иZEjWvʎ!G_>hDɔѲTc@ QƃW84wgqPv}µ*#{;Om3z?x?i?v5B[ex; |8}S`9 SԚEFY=/YLq̤wb%Ǵ'U5JЫ!q^v<f23L>MbE@V/ v-WUzcdQdszQcüleUϗ^]>() dFx bܘ#5 zd#r"hҙU0G)͂B sDH2NͺfR8\YPR&ZWep32˃5[5iwʤ&]]cklV"HOu,+^fV+K-n+It7/6v'*˧MO\%~uWL.[Y3.G2YӚyE;N˟nΌT뎭nj:,e;T .>s[|Z9cO%H P(ERA0cmPL5N.\O֥/ N^^٘\~2d`)33e& *^oOn[ƬNgz^.Kl lA@=t<,*RA"XߝrS[Q8Z]ea)Q8ըڧ*FE3MnYp成Kh`HvZ“#?=* 9yj5y迖7W0T%{_Fj+7}4uɦԚ[fh}.Z ܠА"Hb(N JBPdcOR3Mf2xm,\cڏ [F*%#@ĄGB9:!SG%c!:Bueh9m# xcUjoWLQ[ᇭS`ɛMqD^ ZiĘ5gps9Jm B bjdT }e C@i4i) E)|,e eЁk(XȲrE0>9>btqqT"(rU\.xl`01D1d(7Qʺ=AM[nuol^[._QӻKo>6a\Oo)G{RWT𾍿F4ahJk3=4IAMZvo9 T `^hd4NEd(.L0F'sBgN`rZI9a))pmsy+_&[d,5BO[`=cYSyG ^fBǁP1# 9l ̂&i&ŸYSZ,cky7zm<%)M6q#-J]Q?zT߰$s+ߤ> `1pgG\?~ij|a=-R>.Xe1A:::S\;3vgQϚ~ov;^3{ϼۜx5y9;"M.])+[Ѱ=V4 &yEz>)+ܦӖ͚nAz N.-fɥYYTgGy=;Z}NBPb l XM.D;>}J0*E˜Ұ?YRT8e _ R)mPTB|e`s|׃zr:PH35:|/ (7e HyY`<(,H^F.OQ`::<QZzNدQZ}\NekA Q9,l<蚧)g@O,~7)@y- [A3J+$q6>3P37~Xy=%ʱ6TV='occ8_\&~R^AG P*t̗BBbT_>ܲomMo F Qп)[:._~aqo6v[ώ\'c_82Em\%&J,FlCDo:ʋӐj0csMR~fǬg6Z^sߙwO믚c5kz,6W7YYZXY\6|֊E++ꚋiZ~ukk$*Mס2˽fkҫDGyrs, z0 rH rOIaŸHa%x*~(ZORX#_FoZSH z IaY5޿v2OHaDJ)LJ|),Cir3$d:(tD j0ۜasN kA'u c[&*)lI$Pk]2G _BJ_I*'a5n#J)Ƚ\ 6rJaFKaFHaFFmIHaFR¨0j#0j`T 6 .QǤ0jQ*2Ku$^,0h6 [P\t [I6|zINw<{ {Hl>A1ϑp A%$ Vwu$>A0F# 6ˁьz#/R*FW9VERp(=D9$0x8iQ\=WcAH2;=э~g62 ё[й l"qX~4(So@FW/}A?y*ǿ4JDzrBߓCwѱ%O{M<%>3DɅ?H6iG6oDqTP,.Rr\i\ry} ѹ{=iW\B\ʵS-eiwSu鶒Rmo3J-2tR=W\Q2~s`?\=0fz"-T˭`ə/Dȑȷ໭c!u&؎ Hyۥ6!5ُl%ȗa+)k:|HL+ɫ{X)n!7qN)M?H[mF!IݭCWm:Hz(b+)C7絉)6R3z˸ImFjuV6zj%϶"eq}IhZL QHmz:Ӊ~kX=q Il#g:ȳZh [x m XZn{/ҥX=??Ek'/R a1A;H^8:4nCD]Q#u'ɗvKTIڱUzoNwIpiq+SGRlmupGסnŃ׊9m%w:In3ۤلz9JNް]dyvTVp l@e$ ɼӺ8 Hwz턾kBέNʭ_il'5#u[h$P*$?PI5&SdR:)~=r~-:?߾q+iOx"KQCl$p#Žp_b3~[Hbh11|y)wN}R-o(;V]R+U~ މx$`2-GO&a7#JJAT0ކ{#ܻK)d[I6oX=5wvp {{zP77כkےܜց(3v~=WZY.A$7[ܵs[ߑܵ[Ա[ܻgqdž\UU:rd:vz{/H?9MK6_9ޱ5]ulus]=Jt :E\Iډ%sB5Ի!׹}rT7'׺g~ 5F dc;*C[6Л;zPfʚ;QYp[uwp\ߕZ:Z2/ב+֣7lj\{G׆$p(p]ATܺM\oOW\w{?`7)ז u؏rAkۊ*ۄi]X QT\Giu/'eڃC ]m=][:GvVE\/.*-[pK̡s6+*Wzݬ~T׽8T =ΥkPu Dɦ\_`+֞.]b5#vsQӶuZѳ(~nݠ>}8ǁ^nmm؎^<׍m6"DeݴzyW{j~Nn'Ժ~*r ^B{Oĉ[{Ibd@d@_U*u&"tRSzZ7u6M1{dэ)<~E\c~v%̹kk.jkw; w*@Mj WtYU]Qma;lBXH8NHkQer’JXg+juQWɶut I5zT-B=лC$RܲϡFu!AYbJsKBd*FVnKk a)NrKQD=e{+7Ia+օH_ΡZ4<ޅ192&[K.(Twצ.I:/D)DnE zp]wW'~KM$QQSmD2j_?q"fڻ63{+YIcؖKDe?$PJ04f(I vIji?SZ:0+IZәGH>{{ww'`~3s}&qBc7aO1Oss-n#1߰\,]hb>z !NfpOG'ʍ uMj-{"Pխ_Ph}æ ¯uq2\MybrB|_ ć˂mǿI6`39vMV + /V +J~a%_X/V +˅~K2~~^b_7 V 7bcOvQȈAx<ަaNTDԲ$% v0{,pY9 : ۃ=[|rB>E9q߸Ӗe\O.2>m@"+ +@0>F9϶$P ICl0T` #f!Y̪UJO-#f8,R`Cl1հFbvδ_{ո~:fլ8kl3 Q#2b1I~+[Zkn-PLt,x @?01> CWǯ\$فHρ ?6hmHniոhY(Xk9yZuY-C:v Q`ٻ [ Z#U4o .s*cㆄp'*6V6nhTݍ]SY3nPTŭT*֩֙KXku5FZ`վ[po(5@# "4I P4?@*9׏ Oqta'mrc(P$;z rNrcB@.a8u\_ib@?P@.] ! ]ltIiyrJZGr=ha U!򘐍BVZZ䟵m!!U&B:֠zPn UALDV iYBz+NSS~)?䔿` !\ҧlrmȿT]ܠA@4 Y.d)m!\jJHD@_E94^\IBxL 'WD}Z~q{ C{4y[rTHܷ%ޒ\įaKx m::ʋT%"b#ˈ*XCTR\Dm2q 6cCo |_MA"o' xw%o*Q/(Н2͘af$zFF'kYeʻW9 +vZyNRu#+y/f;azPZʝ 9G@Y=lzcnKO(uޔZ1qVת)46MSi.S0֘Vvsyl6d&srnh vK){DvH&GHdGdLW6z"Ӕ &}/CɎN P:ZG2QZsR΃GFiD#^Y.@m*!54߱|ӝ%DwN^`))ӞttjE5O\-F{;IIp)y>"=#qIp#~N-M\܍hZ 7 SW84reޤ۸ϛio @]& QWT0ٮl6QmNn7\n2ôA'Uw9Qq4*Pzͧ2Q/_™{n5'+ю:ӻvU!mrL-a54M;: =hPsXc5-Q:YSxS6' OTʎh$=|")w@!})7qLtvNBR9bP endstream endobj 14 0 obj 40574 endobj 15 0 obj <> endobj 16 0 obj <> stream x]ˮ@D /oWx^$Sb{ m3I,@qwϙrOvkٷqʯm׌?:xkؼiI俾WC6KcSwWl={L+4%~f_&mw~_)/:o5\ _{IIR|[y6D&>cb*u:Y--S.g5PB o6뤭h_@;N纅\9 Jz;=sAYt)_B-1w{hO/KLI=&q/S~C~G=q?o_A4{/^=o:?;o> endobj 18 0 obj <> stream xܽy`8<35{߻g&͝p$ $ Q#A9<ʡG[m=Zm rTiJEoxUShX~?n}~s3p㊛#-D4na# ^GFNyABO/NS7BH^{CmW![W-^(v=Bw*WA#?C^|n\u!y"]~B?I-\"(s/nqS;* 7B!3C~O I9S4#+*FXl\  Ge1>LәںƦV?Gn}ȇPxsb5?64>T%.<=~a\:|7vBx+=n@kx>zU@1ģ}9z&}9m+x5Bz ~ ݌ [ y44݅~H@סѷw !9 O~B6?Յ'΋~W2}̯F_[X^x`ezkpbyȃQ]~-}=昊Bm|M'~FS[LT/@pC?G7/ 9P}Zhz~C/O4TZO=DL?f3fp x:?ohBD#w jC^M0S{} ` =Xq^00DsM0^TZ s`~vpN{ }Nf)w<'to O) (h:43m_ԟ?pOoS:9~`F`b^ m9+Zi_gKp^ޢDϡoo16f3'2$3[y #<ނ.x  /ˡ8Lfԯ\>qG |Fn9/ o|Fm|TJB/PQR?^v!fz1jz4|Û=cfLysR!![)7o*RCn| kawQR C6/d(;ЇG)}u~$ESA=I?Pkѽc1u)PoS;_2!i:D_>t MTZЍ@.z^!Cꠞ|/^ CRue~ PXֳ)9`;^x6b `VIrt#g!?*d/y=GRG{{Q-"x'V? 38i+k+P+,P,~]ݸk iC*4W6IjLUY^%Dz[edeeSdu*Y, s 25s#syMJhw~n3,] 0soGPG5xzNᗅG ݅B]?ͿICoW[綝{ 9 gn*\RpRxВooׁ>@̢< Y],`kиh3aL0œ\(ei_A3 Ge@e4o'9Y3ֽOߥϻxf9-P_ITW8(/F¡`۬:FR*20h ]pAC `Ḃ!'fĖ\r^KAj),׌q- rY!}P74,gi&*ft qTnqmC7_o*L"~s:g9`P|1 cY''+ 348kHH=CT9X%5B;E:36sUCK/ Mu|mc_qlϙG늩!*(7-$^6ژdk(P(%kb.u )W8Mۊj'&'tO3QjK6nTOL~HRE*t!6GsynHb Iٹp91,͎C݀C+ e bj #6knhI:N&z*#Cld(mN#Q|i4$JH=28۬<}{~{a7j G=F=N}G0 jACEJ5:_' #55%TAd(,5&14 c7MT&5%I"p8TuS8^c k >-1 b@JU*>G !5ɚ5Lf5(C!;SnlPD۟FlXgzHAXqF|@f̀{ I#z/9 $=YrCG","20F]1Jh[C2 0;vw7qUWR'N6^/l Lq5dSˤr/KR0R>D?*=Əȱ 2j^`_0R~ *BI $Z.̘8Ѩ"Y*uiuJK$FaRHڨwHUgW59j)eOٯoVbT2<(R@_? 8c9.jq~E/!0iR!"695ea\8]cN#Ŵ9&K, 1X#1< E4OvCadQlO"wMH9URG-E/rW%G-T+P6) ZJWnRRJgt~PDH {3 j{PЀّ.‘j5"BGE(j3iD,@y Y$;w quOUX߯:-;k~1S ;\ st'B085XD\&Foui>Sk],@@~zG8İ9vt ʖ) _.Af9%wA]dHPsT~]R7۬cR:AקuN~%tƙޢ t(@I^M6t1۔8enVgB*+ 4@F 4[/F_̖XhvBXoڥ˿9M #IgoW=eμ[6^`jnIjAcC1{S`z<[J(Y|| tԶF&LLd6'2 {E oZ>Wqr) "U `HEs]ZAæ: !>j>2ާ2L&䪍4.8P3&JPf kl%< ;BAIw(SV;,ff9h8j6TaGt&٤9Fe0a`YItYa+jyLbѠ@Q…!W#OSn]<)buMc?$CM+fN2(Yލxҭ`։D-耠QXRŸ9)ړUߡwѡ7^\EvuU@JT(b҂ Msm҂tm rQ0ěB+:s5 + -g"45pN3RxTf$UN_ f XM{:0п22V!ցz8Cs~m NHGP7P⍣m=vh9IWT@Gj5 )LEI6U&*\rm~ӝw_?'/{{-s$+ޜs-^|ꙭQZ g;0?>z*PhqНjKx+k`f3v]ep$>OAQ E.$ nOzw mlyp5W8-Z}j iKaZw@,D+[k[4՚#5|>ۢo!o{\-M7cwpHM4fpM2p\,@g]M y2?R[ݧ9LoU˦d[G`gոZ"iuQw C b8j K#.9nwݛXb)$f|)ikU yJ^ww0(x CI>'ýE$ Dj%:"  l%Ud-dEmfp$* k[yEgk]]y9E=6{q}2͙6vf=_Sl e=֙آ{=r*F̈' 6y&vJs(c\TONjp+9ω%KO0?Փ1"Ŷ;}? S/1锗v:]Uvp r5)ԧRU_ ]K%9 nI(Z#Ύ{QmVc ݘhWʋdS=}LGӲ)pWtG*ap2c~z4r7׌Yoา-B0a.hPl_L;4V*,=5:qiDQc^'$,E>jt,#YR y* j%v> mqzKqae^I1%53ϱcF&g!`lj !pe:7hSTM~gTNWz) fMIia#f\ADu:_-1NRWȌhI\u6/ZҖO// b!z3'8$dU< TɰYLXoEC88fs^ƆbjQN'~Q"cuRQJABQIi?D=푲tQ^<.MoZ|;[xʕKtܳt=nm%ޥ?^'Kzo6w/k.q5#vE‚D{b?'DZɾԞ5|SS>lxpTvT{Ç2]_jXZNiwq/m_]VYBt: U_#I_ߠOZMBj+Qڰ^p#zAY. c[CrFށ'GFM\wL'M5hU׼k`f v<eXN MrWqDv#tc!Tդ`v7uM2 QsqOʔLCaH&JL.I*-M9 'h@HRW/hZ^t2\B;>oKDO?;DbAkaAIƊ7DרKsF O3 HX[C!cGu3onq*Sm6tm/5W6GuVb,2ZQw ".Rn.A(csL}P,bR[ˆ@AAʬ4AUn#'`#ԋYD%S'=O:/=͛ML]?h~ñ[ӳ}zi|˛%ݒtE^|[6R+"Q[a]hV׮o|DrnwT:ǬtwhEs-$Pqw/"M?p?E``dJVÏJqiHV1bҵJ'kL''Mv%$'O% Iy2reg@s]1*$Z4[Q=r@ Cu#4᎖A,c^YiJ*$MGcc~5u G[XE~aAO԰HTN4EU2߂z*4\Bn}q2KoZ¯s zѤ%k~P̒7izD"lץdF( lJBKB(j`bqw><4V2Dd9|vW؟g5oxig0+zysdqj/GS›H/1_CJ9%e ԕDeSE@ʢ GP]QAG,tH^Ѡ(Wr^Z^* Hrw,pI%1 bOU =*+Նiѳ*?uLG-ŻOַs/n-s/$L3/3/,ތo7dYUb$76Y :M~gAd鰕> 2%Kj>}ye^;r{ԧ/g,_FLNFT*E4 !oL\̷0h(UAL@l&TE(Q!F\*-% B82d @cRD崲z%(*-g+L6ځv(hҵURzn//aLal lѤTCdC3#L jd+.JKA-Iqٔ͝#/N`JL6 +YsF{PyC!aګ9}-+zR1>}4hՏfE_77xiRUޛC Ak vF.)D)^ݘ6 `evm3gЬ&lf ,L{f36ˈl~LRbv⁷Ѥ]g$p4UG#z3qQzIأU 34SvQݒ*_m0db|( lmE: Vȗ Tq DQ=TEJ@Isc'*bLalFR)Dxi_,\ARQsǯRP˗F||Su7\V;o{ZTPKJGś63e3mᄪlM;n )1=?t9/# 4zUNF4MQώpŊ@]\\p%CA7v>(,UUOzPXOt.b +p%:H0 MrI9G_}7RO4G"VROBŞL4c'x96SS]]Uz$4S0L8h+~DXFYU* 6 t,Ȫj(Dhhr".^ղjVp֘qʈɳhԃg菳L+SDwƜ`C~+H>}Ur4k):52axI #AX_VKC7 ZErc[E>V$xe-::Ij[All>:D"hQL:\/QY!tJ* Ɖ`Y$7oM3#`yY4ʲݖRoF%F|fPa·Ze`8鬝,z؏vA8MEN+@K8u]!{v{q8yy5Ki)GmK.?v'gy]O~Xqf̔:gYft aǗ^D]kmQQ-:I}*_CZy2]mڱ̵̿$ syB_85^֘>,HJ i%T`.'n]riևߠ0e!G'G.ZC@M"ĴLrTvRCP{VGI '4X㊆Wr'X@,f X!mvF]+1OO$h#TKb?HPlES3QzADuq,Ɓb̉R<$;d I6n/AiejxRr.=-iPt׎[͎So^q_z{ْ5M)j}΋d좋zzfs@gH=g OYw^ζlEuyE(wLi\?mۣ)JGWe\)a1[>2oy?Qٗ/CjEjMKMKʿ5ZlfQcXcGa˩"t۴:Vź;; }b'PrSPQr[ 1 wGu(+a&ib墩h:) 'U%z@%zhI!DU :[VM n܉;y+L%-c i7!ӑ8DkuTƷ_xYCލډϽ^NaZN蛫q3ZcS[.~T"@g{ɣXc^;YJń'._uq:ǯ0vJ-iTd nCkR*AկTmV)T85#kL)`6MM -%C(qR:HlsE`#':udrh8Ps<;pfWi*n`tSw΄櫧E7Th1&y&8?Ev}7+6Wc>_g(#.LD0.=m1s~Ⱥ=\Am3QŃfq?ތX&dqȯ[x[@8 e},6+rkQG굍$q1'dNdq79xas@\".}PYjNWVxG|^|mõO~ɩ>|!L\/z*;aM[qRIhSbck$0QRo?XsO8ICQHNV_aEim'~”L$x ӝ'%x|eQw֋ ,1'N*!<Ă>z%Du} OxQg,Ez{D)0~Q28 ~%U#/8%~+uHl$åj]ꚪJ^JqA]5dO,m\!]AjIUD,< yjJc&uVΜLv~Iϟjc}mii׃sCpwY|zD r#c?~o=Qu:_uSaIΏG<QWȤXXyJi͏tWSK藙䖀V 0p<51Osb~SL;5w_R+i^(!WK(*hA VQQwwC\ܷq1͏woݽpϽPݳwomx=7= "$h2P7y:4xҦkk*77U>xJyxʊ thՀI [iK75zbN^3'׉ywf|@{-M[Ø5J~6}RSIן-}?OV`]`w)  vf0*> z9PvrO0pФUY\O6E뉷]4&n~QFA,` `0"@O!$76*|~BT,i$i,rC%$oqr8co13E2~I` H̙fm I7%_|bjaA l%T[-Xc$޼fG3;ڻ {7|~38ǒT~u%yKGG[FDYxY Σ/IcRh j֪ZBnqQTэ**/!'+9Rڑ4:-:t4Y&X7af>)J dKȩmwwG|Vjla9n,B|L3%C[F?{W c2Eī1DYYڌqo^qoЖei틩uL"['+۱c&I d>UJ+H(Ɍb_H5JJcV96i$މ8qq;6pZIM#ĜCEAP )ѿ]a4Qi껕6fR]i6_%nEA'd"l]SlU$zOOT:{A(#"36I˙m9i&T7L?*C68j(Q3{lELiCL5.'rCjZ1q]"+OJZrJ`ɴ^ >.}c=ݡw nzt]uE k~qG ʆs}&8|zS2OѸM:gxܚemr842|MZb# Kd皸W ,$D9a×g]vl28MAK\:nBP8CNldQ<4>*$Gg##33iܭRVfI7eLA Q)CငOn:W[Mɻ0>u*@XR 8hıǝ!WVD nw(3etx~9RHڙ0(K:AsO|5/T Fc2? AP8.7qDRUh*Zb"  gW=HwzȉiJDAxC+I <%AȿkDN&IUⱲ &.=]Q-xOCEnJWow5m %/F] Y NՊ%u^FG 'X HÂ]ouAj+D (5G@˝(hyJNʉ`ge%}h+$En-FZNkʳLkًQ߻BdIcM=9'&>kР'm&h!w0YTN[6tэ=ޗ@qV-3ZeGVIdY[’9q4ZZIQrEB=$< !2lM.7ǹ9NbFMrs9W]U=qz9qja#O?7tG}!g:Wcz{˥cnc?D_M;x}Ghq塊Wa3g7SQLU$Sb6*;*_*Q,7U͟LgSd{YeM922"!_tF|`v:j,vzGMAATD(oO6-*`j4m6*&l]4^[+ 6%ZܓO"X tx6_2}K_l^/0Џ)MɫƬpİ4>=vp]b1()ʒ¥0˜_1mw>,ۓeOou[|DK_ߖM r*e(fxPσFيC?~j6BWJV.\֍|IKgيL^v'ă94l;pc(! F|ml|mo|G-J"%J< A ;g^<QǓd}<)^ \+SeV b_ASiG0qŕ&~+6&^d YƨtC+h !m5EEIbV1.kRr2]Jv .[X-^iuJvjiBnHEΎK/2[kGcs*1Fy1[?Wi鳈OVnĔQmxhw2 /;WУ:(؋6VD. e69̬L%XU+py r#\~(lvyE'$[ UϹuչ[Srw7lws^=^&'H?~}8ev i?VviۡG={ЛZd)淮uOϘ)0~lh me{|)M+.ӢGQX."ttOG4 zҷvwM^vwθ6ǤMqȂ|1ҒdMJN2Dv.F+l)B~|Q`O)^nؘA(-GKrhkzʗ*_Sފ}9^/o]^.p J۟9!cm7x9;9\#&"3D!5O%(`9_!ć&?@At];o9^f|/,FU6Uf&ZA~QL6@A0|)eVDKbJ/teb1?NܐMܚcRW֏&TxV|=cH1&? CS –=¤FZ$OS`* PҾjU=||itIV6IFSVXv ~~96gɗ骾6zWo|m_tO.H12Xh$m7`2&ZEUI^nv%dg&RzR%K]MОu_MsHdl}!c}}/JoiӒ5IỦޟ)Gm7flwFi/}v25Imo-N1A5_;tٍ?PELݢt ,zVqVASo(ixqLbc:=NC?<wRŇA m8==#T~j3/cov^^go ^K%* !Sœ*ysQ憿~a]fJ\Vę#ٛKY4ӈ^CG۽ oFDӏPn.u0!y|䝭?fl=\>vcl2v A:ڷؙR٭K[X5kfd>&%hʖ.,]`{ZSY쥿!HU 9C1x[#T-1wd7j?N*J.RR>:\ƣCYٷzryܯ .L+--)~䧥ee1%NVqɚkg6~aKum'X-D}EY"M^㭌Q]@L#ͪGؠF& :҅c: Eb /|4+yZ_X1G1e7N7G~-:n4ݼ\GL?yř[u^dFsX[,|G0dVgu>u1,>>Sc"c6鼉U'ٰ?ag喷a`^鼑X7X72uHGZy#˱G|uua:H7YFg-1~#tbyIyoЙrΣ~SyoS:MΣ~SyoWuCGQQuΣ~%X+:_I/tFV,'oeu-/輑'r=ui><|.dn{ )HO+:odv 7U'>?\g6`Σ _#>ۓ'7x :Fxy܃sާO'/#A7u<>T?-W'viܖ$zQX kg%sJ!t-GfYս qꩢfr-0uWfXR7Num>$4 I)m+x/c#!t/pj2lnjCoK8Ao$Py Ɩ=GB1 >$wì ?zxݲ$7Hy[$ºU+>fڈl->NCw#8Z k IGSi9}_y4k˩ccЪ @MZ-8:Ʃy{h0}d6&;*!܊zJoEJBޖ0JffK{(+A(]&hzJc$P!0yƒIʫ=Z#y۽&TnSi8[35:Ux wܵ2)yoz=3rxǥCWHZT߄sFqi;P.mq"peR)~i8UU!*^iH/=)`:f;K ǔ0Uu>կ.&éή2R߭'}Q=cnAI|Q JҀpX@|9#J#3שnߠ tx~-qi(J!'mkQ*J2 1Gǥi7aK uy0 IjG^ihNFA/Ƹ긇cArJ~T QDv!JI; 7\ LL Kr0_Oހg`dT&<iH 0P1u2*cqGhL31״NjTeѽm붖m;ZZwvJMmZ[w6ǚcGFT4 Σ-L oW^*(ZkhF9)j%_C=x3ʥdqOy$7)Uv# o\/O#wbjokPQZq2,:sV]Y-a#F'=$I7l,6Vn*ݎĊʚ7J7֙cngGnCb.{iR6)qUW$'$VMz\MJ?o) *k&M^6 xm$Ik&M^jpk==iR#ZJ)WͷVFUsoӝ}-#ҮZ._KnH+{v:겫:+:{^=s՜W ˳Jh3n6[.cXwW~קvW[hm҆Iw\.G?R.1Iw3MɆ7(L@}"pq!T]\sT5r5Y]|O5 g@{@<hp])Pi'Y{^ǟN==ޣ]zYARخǒ(9>hu" O̓N΀buҐix4 W!*ixuUhttBEjr` wr=\!C|D@H93gD=!<#b/6 6>X@/`yY:KBY>g,Z92/m£m MoAiAZ:C3tyӌP fE %9= 8PJqo2,n `(Q! (Gy8ʃq5< 8F%J j҂3UUOdq7'Dk[U_S! vfBC&;q2se.lmәuU5%D/ao Ɉ[ضl{Bhڑ 6U&טP&XZ -„vdB;2&#Ӊxŵ(>W}4 >-Jp4Bxx(5\0G x*ThtFFEFآQQj}QNi; F)GKR(' K"{FŃ^L- Ś4I|aBHd}'E8G1ĝ&igq3"_J+(z M_ ~(5Q<3u9!yL[2cğ/$ؚ.Y{CR=۟aK s"4E;ϢlD>)=Tnx ht+6t#b4 MSS42 :PCJ*0T`P C *aPC% *0T`[@3[AQz4 MSS42 w@;w~;~;!Ǎ%8P@B (P@ (P@(Я@  ?A ?H I B$Ga4/uD O)7nD){A@=v7̊ C  a(PC!  0`(C 0`(PF$ 0#HA`F0# aFA# 0C'Q6az-Ey}QAm!-) 1e'/vDBos:=\XWX0l<[AؾX+`_,;a k%˕ @@rТU;A@mP$P6ߒjJE0Q1 )6 NSwNsoӼ4?)\b!Wa':lyasasasaf$RMPx›(lP0GhX0E徸 w zmAG\c( _oB]ZDC r%Q _EJV~&ouyڂ(G. j{G߰5_i)Znk5fnQxU5/Qs}QsQs%QsQsQsyQshKtbt|):6:::2-FdͪR+92GFOy(jD!ZdYI ōVC,ϟ`[]BG6 v\Oojz}bv bJ]:? M!3}1jih^t[xҝ#^{3yt==,uʙlNۺ AvN_a9vdJ5Veˍ]HJ\k*BKLϞkR6 3.}ONuf{"lvfC!9Ctr,˱f.W#MNrUr-e9$F2me9F2t� SxE+*ß Fz!-ø: ( ZMCILBB'(fb2 endstream endobj 19 0 obj 27975 endobj 20 0 obj <> endobj 21 0 obj <> stream x]ˎ@E|b]d!y-y`h{ƀ0^íK) [k8kxcS]b$mzZV__!6;uݦ>m$c]ҧ_q^<)jV]cYχf~N9_cPx:Uw:ϋtI%t?q5shP,ր--)ؓC ^)u4u^kكKzn{e}02Kw1-en^,{O=<nB\YB7Y>Ba=z+pK/wّN5-ΠUPZ:2h=wwouA7_})_rx}a֙4];C? Kj endstream endobj 22 0 obj <> endobj 23 0 obj <> stream x|{|TWy$I&CIcȃ# 4A9df2<ZH*ڪjZm; j_TjVEПZ[m[{3h??w{^k^i@XWRp+^S6ǃ}RGqR侥87%ԅk'o0dp\>L~Ǖ8<>*ԋ8ބ ׿)y?A٫\{q|#~_0t;ټ?}8Fd}Pѳ1D~t!!O K! &[tb󬧿G# 8E.B64: z؆[ /?CrcG\zGkz8Y$'6Oq0\M;XYSP ad43vOA~{R x=?b2\YΒ{jE/AE0 B+xOgU^ٰ#'<-6@*FHHG`D7(Ub'G*~K~X*F_3T"Ary6Н u37şd-xded3q^fn^3b \;;{H-)Ep/|Iek1C/Xa%Z/ }31)1BG$=y#|(.zlrZCЍx C#e`R4!SX(E #A!"<'Zx]/bbh犥]\+⛺guo^MφUM͆n]=q3O &q.s 'RT~źtR;]!bU~0v+p^.Wo" zLQSBhW >I69O!l,J EQa$[ڮ.kiIsX3.6z3BJJݟbkb]R$ɶՃ@HD^X5Ic|[X0>F:ܙ3e-cS4d(9qv%؄*EE,EЋNu,Ao8*]fNg2Lby 3͌K,Y\u!ӊ:nkټSj|1c/KiXdVCO5 |r{ :MyRE FJN!Rssv%l練ifF3+fgg` tlK1*\uY$5D` \Ơ+?@50? g0kx~Xv-jB76lzhl&Ylc)zjOhmۻW.RšqeҾIttNPBzt\1 Q $6FΟ0gENcg4(Ui8"MTiNcVc::g?]eg8`C/I8/ xm/"pd^o(,ʶΫYq>ڱaq絧?[YVKgeegڢ"uV;}Jbӟ+)?(!\dҭ`g-]Z(nKGA"syg9$ܟ*)3g%KkP(/eu[5 co g}--h.1Wͺ5ҎO$9g٬_1Ɯs֘5jZגm5bsyV1&su&o5пkd )4/H1Crf@IzZb:;{GE#%n:f%=b6#=- 1}j*9|. 跤Z,z6#p1 e015 հڰ  xCɄm!d01![ac ՛r,O=+--->z%WB7 {j5KTYKTeʓ~ҧzV~_vxk}b7?zci{4g+=b{K'w\hf3uV4!2,OdsMk껌zXm˨˪idd5lmOjtgtgxuޤ>7Û՗3L2:DŽ]GLA)SrvhH/HI]ÒCd~bhԋGC}ʐ4 ŒU\R]i `$ $ڪ+O-S* &L,`PT@*L8X!jt݉w{`?w~q%!I^]oH̲b!s# E[%n;;y7M>p@̻sh {?3xf7;#)+c}i$-8`> f)]7`dyR"x4\`n^ˍnYix4Yd*X#)M1FRX1FpDi\vgt7琐5r("a8 "mŰJ(Ӱ*NpP^!C!Wed3ÃeM.$;XT%|F;8DG S臩ѣܣ_}F?T#7Z1H8fSP*0_ɤ_&5>l#r)<0j ׭emz57Y=g Njw5 QyiZ6`}3Bf7"]MHiǖZ4ʩ`7^_SH7LّbhOӟ-sܳnI߉*I{]$0yQ;0-o)fˏoa<ӟCqӇj{w%5=ZEU*Swf}؎c呋?{{=Q< p$*{"CCh?]я hn]JOqQ˼#&_S^\L)6~R||Z|ג]2|V[-ТqVKkZ 5.Iw\%K;FJToJ.Ej BH|/ ܾAqKrH/*0 3JPZ7/_^YMUTHmW(()A%0ܲM{@\l'Jn2K++ngp铜ܧxnVKe )OrJ!d.mCR*m/>Ia'$~}NRƀ<`k2׋7.G.bn[`ݴ7R̶у$wԧ$/N8ʃhtى}ȃ΍~ܠTAcQ~ܚ(" C.V3!Ntj0N +!NDr{7du(!/N0;Ȕ)nBAۊ>T C|ЈG AE x݃#ۍbeFEjK#>i=pAwH^}7v"+AJTw$e/nƫxF$[sdxސv>'UpS{SfƆRqSz@050LAtOOzAT>wG zPe?,}hbd?rW(䯫.j [y+\!b[ \0x%6vk^P߱nic~]Cӆ&~m[SSkӆs9Ån{ GpfX"=H#0[dن~HMKL_<~.ebԅ\2#\a aN Na(ƹ8e o@,<ĉupE>gS?C(B} `ou3tzcŶa5Fw! :wϚBg6_1cQڀ9&#asH:TJ!kJ1֔x;b)~XSB5}cM鶝tcbD)gݸHit4^F/ H̶/L,\a_:z~ѯQ^OFѕdt2ZHFd ]1JGf ;r3d2$dQ:hb5p=;WdUUX-´.c31>r 4We-d W*_54. zn >ǸaوƋohcb\#U@ X!,tczc;fHOwһ`nk9(DL9(1r(%%/ @P@}DV\6QzUGvA"V֟KQLXoTpGQ#R[%8뱂eGq ;jdZ>;8rYJYAyVGe.a]rհ5Gh]E R[!6J\ENFRCa`51f3cdL6zhF0Ύ9׋Y+rBYKPbQZhK9鄖^)v[$o֐HF t,D H%bqBBj%%1F:~a~ I?pG> rVX MNt˞39yxNW!9]-~~\lj1CQ.v[mȕ핤qgҞ^)Q_ [8loP'V8V4Ʈk7UukBW+ĄU3]kk0]˦2]LW-ӵֱ:Ǎa)ɘ=E]k,U8qȍ@Kda{KdmR{ؖ"uqZJJS4vR%#!h+-)Icq8 u –C1q|\b`n0H$8!*\#a^lP endstream endobj 24 0 obj 8715 endobj 25 0 obj <> endobj 26 0 obj <> stream x]j0 ~ Ct-(-e{V2Cc9';I.ݵ3:7oe(]: )J (r0`h뚰w-otwVv^Dw~u3@9i`>½XR;i=J >6LqWV/漡u6;e0/ᱲʲx r\e."2W9?"3O4=NqE=:J7LV mκJ{m endstream endobj 27 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 7 0 obj <> endobj 30 0 obj <> endobj 31 0 obj < /Producer /CreationDate(D:20091212231608+07'00')>> endobj xref 0 32 0000000000 65535 f 0000120046 00000 n 0000000019 00000 n 0000008416 00000 n 0000008437 00000 n 0000013447 00000 n 0000014788 00000 n 0000120189 00000 n 0000014809 00000 n 0000037910 00000 n 0000037932 00000 n 0000038135 00000 n 0000038640 00000 n 0000038998 00000 n 0000079659 00000 n 0000079682 00000 n 0000079881 00000 n 0000080570 00000 n 0000081103 00000 n 0000109165 00000 n 0000109188 00000 n 0000109387 00000 n 0000109951 00000 n 0000110362 00000 n 0000119164 00000 n 0000119186 00000 n 0000119375 00000 n 0000119700 00000 n 0000119884 00000 n 0000119947 00000 n 0000120288 00000 n 0000120385 00000 n trailer < ] /DocChecksum /29CAF8ABF0B85BAA6822EDCC78A6A8BF >> startxref 120572 %%EOF freemind-0.9.0/freemind/doc/development/0000755000000000000000000000000011532143331016663 5ustar rootrootfreemind-0.9.0/freemind/doc/development/icons/0000755000000000000000000000000011532143331017776 5ustar rootrootfreemind-0.9.0/freemind/doc/development/icons/dan.png0000644000000000000000000000534311527433212021257 0ustar rootrootPNG  IHDR$z pHYsod IDATxSwX#X_0 0 maxxth^^^E!?7B CCޛ]vn۲in޶eOW3BQ"0B#vYQdlLס=^u_8c8c׺:|u_C(aE!E`@A "qN_9nuqĺ:lvt:b]ֺlZvT0ðBb  Fwlˍ[[]98o_~^._9:[az/sب><'F@0j6~scqg;}GPϽ<s۵f㮵.8{:98tc >ӭQD7:le'!_.}I"~(u6ߝw6GNs aA?;AE.mM>r&i0w)-/UE2ޝWm쐐#ǿ۰@(!AxNN?Eɟ;ouCRkZ167f;>}{إmurVPF`o羯rBA>uฏNN@`79aVTq14Ta q4)Z`J\!>,u=n!0@g/{~ 48R1Yᖚ*5Z$rg8ErFXnڣDJH+îs&V`aj;A4d-km7ΊE&kkAX+$Lf_JjSDX_ԣ'8:vseaq c5DO<:I͑ 8\]t)pt Fq039x'W"/簞\3V-a߯j{^>I/>Ar82"_]:xb}]-[W'~ٺ/7ı᡼ |Tr2YZYVf |Bd_n̡K rѱGc?#|I&"7:# V+K [T#ͣ q"(w ''@&E**) I)+G/(Oђ(%^\%Rp(Vοx%4?b7n3o}kXX)CŃʢ\miXƚ~R,=PXp?$DpFqoeٔnb4g_]]oοο̚m:07[Yq󦼸@_]anEJNObKrPVzc@8o0%ab3G ŕEieJڴh-m y`5ͽ5YS-4 xZahnF_b3b\u(8-,w'0VpsEVy|dd6[獖9e7>5uqc EݝٔkOĄW$!nHh߹V\X&iFyt #g?}3G` 3Dݿ9nSGǏ>Nee:No1|D094zQ1k%Jg8ɜ1Q2?,ߏRKRe`&d `BzҞٖ(NZ zΤG7m! ^+42@35` L)4RfBSj;3=d  * _d1}NrtډOZdž%J\+Uh fB290!׌M J[_2l@^V_^TrpÔ:qR82=j/З$JOLI'\#RcFdaЄbDM(w* Y9kS8͹=YPK̂jy3I}2|+KR+a=O# 뜐iFeIfD:=,UI̔>5K/7\bj8S<^8e2zP6U3`ӨD ݼꜽW[ fH`6juUbU,55ؚyQBsL#OwٗfW &u)7iIENDB`freemind-0.9.0/freemind/doc/development/icons/chris.png0000644000000000000000000000441611527433212021625 0ustar rootrootPNG  IHDR!L` pHYsodIDATxiT_D@d A@s%s,KMm5+gl243*32]+3[-kf涝jn2 =w><7AA[nI4 w_d4A2A #ے7p<t(=/wB?@h2F3"4]SڕB>[ě¦93IbЉ$S X kb2@4Ls׎!2_gXORpH M£H8 B`HEhm"Mj5Q!ޑ2Ltai8QmCah;)G׋R.A3FhbtlsBH~hsșs,ౣA ͎FЉv$;bQ驉 8m23F2=O \)6,!*Hʡ.T\V.]:{"yBOفA1H@SdA hM  3uMPogl݊WyowQ/UjaGSH=J@rO߃@!4A 8p趵V.wƅ~@{p+k^)ocLa.C# mKh2@ d4Lo\lW.Q1s_w-l+_Tl/޼b !ۙQ8[BMqf:T&}\&Ž+jIs_UabǁbD1(k^k0~c.gSɷU=ow\[|ɝ#Kې0Bm- /k28Y~'ucO/Mj=YΦNfmڽzI|IO'XX#̏ 3C;'qiڎv6~m1EsiF<Ď7G-=xt5 xdz;tl2 A "|E_~j9PvboiN⒲ԤMCD!x$ ff<==595LMl8qI5T!@>l޶eal.@bX$"Br\qlh׏OM 򬬤ye)+ks6^_rtߞuzTfd"sD)w1 $|いCſDުw$4%ZssE䭏҂]9 K]]Y{ 56> FGe;Izuᠺّuu-[[kL pcDxD-q]<*qZxL?ЏNccWMe]^+U_.{y;ZO:t{BН'#mzȨnd  '5*k'l8ϫ_/,9z~ڣSUȌ tq 8q"+/)T1"rQpv09 y@"V|:,}csy敒+k#ht8ҹ4n[XXXX!¢#L[kIENDB`freemind-0.9.0/freemind/doc/development/icons/dimitry.png0000644000000000000000000000532611527433212022177 0ustar rootrootPNG  IHDR%n pHYsod IDATxWT (RB  !r^^"`PtDT@颠H*Ch)PA306{us^SR !AH, W!@H*/nkk . E< H$ P* B $!D*jo|gmtPE!!,+y R % $o%7 (R%~X8)j uHZ߃zJW ]* 2z",QEˣ*AȚe3?q $Jw"Zl.NA´Px$VY AT ,$ɠrXT*Fq-'32r?}X[c{aC+dpJlVV Qho#I, !%̩ 4q{td.}h?WTAC*bS pyL ۋE*j4Hja%$x^>&uP8E]Z_OBFhicLh#Q251D"VY)/Qj*H##]Z;I@kQZVI[Mut?7p+o]+S'3p:w ۇjd Un Z8CP~%!`(87sd^F=QJjXm:⼹dD4 vwx֦;L,/}zWm5l8dMxy\[qod[^l}^Xk5Z;9';h_Ͻ^eYsς_Q^tj4xȚ,2C\/&WXpW{ Mi !v>o6ef6]Hw>ttZJ`y/୬.Wk"SЋ١fѶ~Hw+ ~QuǃG֥4ǂHs=5w`/X.?,d^7 3!ŚsyttL?*ˇ.g\9[se(..sf.7{ZDƞt?{+=Cx'Q)֎g *+ <6gi..9Ks|=crs ]IOr,8Sn ?c8A.K+y<ϞγK,03;Ϙ[`rE4g4IAMg1Tf$_;mr|TUjY\ȥ)$sA4;L2XLqN zWr7|$jtUljq!V&ű6ο74U4Sl$sv97S,ck,u=DE\ulETYbuʝ3!f/K:Wz><`O's gd31Mh-TP_av$ςv!-*/bv]Vu^ $ۂ]M#־3S0}h7;3̤7OV50:45?O~Ǧ1csIENDB`freemind-0.9.0/freemind/doc/development/Readme.txt0000644000000000000000000000030111527433212020617 0ustar rootrootPNG files of the icons have to be copied from folder ./icons to the folder .../.freemind/icons; Line "user_icons=chris,dimitry,dan" has to be added to your .../.freemind/auto.properties file freemind-0.9.0/freemind/doc/freemind_da.mm0000644000000000000000000033063711527433212017151 0ustar rootroot

FreeMind
- free mind mapping software - 

translated by Jan Krümmel

0.9.0 b20

Fil kommandoer:
Ny map       - Ctrl+N
Åbn map      - Ctrl+O
Gem map      - Ctrl+S
Gem som      - Ctrl+A
Udskriv      - Ctrl+P
Luk          - Ctrl+W
Afslut       - Ctrl+Q
Forrige map - Ctrl+LEFT
Næste Map    - Ctrl+RIGHT
Exporter fil til HTML         - Ctrl+E
Exporter branch til HTML      - Ctrl+H
Exporter branch til ny MM fil - Alt+A
Åben første fil i historik    - Ctrl+Shift+W

Rediger kommandoer:
Find         - Ctrl+F
Find næste   - Ctrl+G
Klip         - Ctrl+X
Kopier       - Ctrl+C
Kopier single - Ctrl+Y
Indsæt        - Ctrl+V

Mode kommandoer:
MindMap mode - Alt+1
Browse mode  - Alt+2 
Fil mode     - Alt+3

Node formatterings kommandoer:
Italicize                   - Ctrl+I
Fed                        - Ctrl+B
Sky                        - Ctrl+Shift+B
Ændre node farve            - Alt+C
Blend node color            - Alt+B
Ændre node kant farve       - Alt+E
Forøge node skriftstørrelse  - Ctrl+L
Mindske node skriftstørrelse - Ctrl+M
Increase branch font size - Ctrl+Shift+L
Decrease branch font size - Ctrl+Shift+M

Node navigation commands:
Go to root  - ESCAPE
Move up     - UP
Move down   - DOWN
Move left   - LEFT
Move right  - RIGHT
Follow link - Ctrl+ENTER
Zoom out    - Alt+UP
Zoom in     - Alt+DOWN

Ny node kommandoer:
Add sibling node   - ENTER
Add child node     - INSERT
Add sibling before - Shift+ENTER

Node redigerings kommandoer:
Rediger valgte node       - F2
Rediger lang node         - Alt+ENTER
Join noder                - Ctrl+J
Toggle folded             - SPACE
Toggle children folded    - Ctrl+SPACE
Set link by filechooser   - Ctrl+Shift+K
Set link by text entry    - Ctrl+K
Set image by filechooser  - Alt+K
Flyt node op              - Ctrl+UP
Flyt node ned             - Ctrl+DOWN

For at installere FreeMind på Microsoft Windows, installer Java fra Sun og install FreeMind ved brug af FreeMind installer.

For at installere FreeMind på Linux eller unix, download Java Runtime Environment samt selve FreeMind applikationen. Installer først Java, udpak derefter FreeMind. For at køre FreeMind, eksekver freemind.sh.

Log på som ROOT for at installere Freemind lokalt og gør følgende:

# mkdir -p /usr/local/share/freemind  (opretter en mappe til freemind applikationen)
# unzip freemind*.zip -d /usr/local/share/freemind  (unzipper freemind til mappen)
# chmod +x /usr/local/share/freemind/freemind.sh  (gør at freemind kan eksekveres)
# ln -s /usr/local/share/freemind/freemind.sh /usr/local/bin/freemind  (laver et symbolsk link til freemind)

Dette vil kopiere indholdet af .zip filen til /usr/local/share/freemind og oprette et symbolsk link til FreeMind scriptet i t /usr/local/bin mappen.

Ubuntu & Kubuntu

Easiest method (tested under Gutsy Gibbon)

This is how to install the most-recently-packaged version of FreeMind. Start the Synaptic Package Manager (under the System menu), and then do the following:

  • Add the following repositories using the Menu Settings ⇒ Repositories:
    • deb http://eric.lavar.de/comp/linux/debian/ unstable/ ("Third Party Software" tab)
    • deb http://eric.lavar.de/comp/linux/debian/ ubuntu/ ("Third Party Software" tab)
    • The multiverse and universe repositories ("Ubuntu Software" tab)
  • "Reload" the package list using the corresponding icon.
  • Mark the following packages for installation (or make sure they are already installed):
    • sun-java6-jre.
    • javahelp2
    • freemind
    • And, as you need them, freemind-plugins-help, freemind-plugins-svg and freemind-plugins-time (you might search for "freemind" and install everything you find...).
  • Apply the changes. That's it, FreeMind appears under the "Office" sub-menu!
Note 1 
I've added the libbatik-java package under my personal ubuntu repository, be aware that (security) updates might not happen timely. It shouldn't bother anybody much, but just in case...
Note 2 
Ubuntu's online documentation explains Synaptic (https://help.ubuntu.com/community/SynapticHowto) and how to add extra repositories (https://help.ubuntu.com/7.10/add-applications/C/extra-repositories-adding.html).
Note 3 

2008-04-18

Synaptic shows JAVAHELP2 has been packaged. When you search for JAVAHELP, you may see javahelp2 - the 2 is a version number).

Synaptic shows FreeMind 0.8.1 has been packaged.

FreeMind 0.8.0 doesn't work properly with Java 6.

0.9.0.betaX is not yet packaged, check therefore the UN*X installation method

På Microsoft Windows og Mac OS X, kan du også bare dobbeltklikke på filen freemind.jar placeret i mappen lib for at starte FreeMind.

Bladre rundt i filerne på din computer

For at bladre rund i filerne på din computer, skift til fil mode i Menuen: Mindmaps > File mode.

Du bladrer rundt i filerne som var det en normal mind map.

For at gøre en mappe til den centrale node på mappen, brug Center i dropdown menuen.

For at se, redigere eller eksekvere en fil, følg linket i dens node.

Fil mode er for nuværende ikke særligt brugbar. Den er en demonstration af at det ikke er for svært at føde data ind i træet fra andre kilder end mind map. Der er ikke noget vidnesbyrd om at folk aktuelt vil bruge denne mode.

For at browse mind maps i stedet for at redigere dem, skift til browse mode i Menuen: Mindmaps > Browse. Med mindre denne mode bruges i FreeMind applet, er funktionen ubrugelig.

Årsagen til at have en seperat browse mode er teknisk. Browsning er det eneste du kan gøre i FreeMind applet, som kan indsættes på din hjemmeside. Normalt vil du ikke bruge browse mode i FreeMind.

Selvom Freemind primært er et værktøj til at redigere mind maps, er det designet til at kunne vise data der kommer fra forskellige datakilder.  For at gøre en specific data kilde tilgængelig til visning i FreeMind, skal en programmør have skrevet en så kaldt mode til den data kilde. Fil mode er et eksempel. Vi har ikke kendskab til andre modes der er implementeret. Det er endnu ikke klart om nogen overhovedet ønsker at gøre brug af denne arkitektur; den er her så den kan 'udforskes' hvis nogen ønsker det.

Der findes næsten klar kode til skema mode som gør dig i stand til at redigere skema programmer. Men igen er brugbarheden af moden langt fra klarlagt. Til forskel fra mind map mode, er andre modes mere en demonstration af hvad der er muligt, frem for noget der faktisk bruges.

Download appletten, som er freemind-browser.

Det downloadede arkiv indeholder freemindbrowser.jar og freemindbrowser.html. Opret et link fra din side til freemindbrowser.html. I freemindbrowser.html: ændre stien indeni så den peger på dit mind map.

Applet'tens jar file skal være placeret på samme server som mappen selv, af java sikkerheds årsager. Du skal uoade FreeMind applet jar filen og din mind map fil til din hjemmeside.

I FreeMind appletten, kan du kun bruge browse mode; du kan ikke redigere fjerntliggende maps. Klik på en node for at skifte folding eller følge et link. Træk i baggrunden for at flytte mappen. For at søge i mappen, brug nodens dropdown menu.

Kilderne til oversættelserne er højst sandsynlige ufuldente. Hvis vi har glemt dig, så lad os det vide. Alle folk som vi har kendskab til der har deltaget med mindst en ufuldstændig oversættelse er listet.

Du kan opfatte multilinie noder som et afsnit eller som flere afsnit. Hvis du vil til at opbygge en videns database omkring FreeMind, Kan du ikke komme uden om at bruge dem. I stedet for at have en almindelig tekst fil med alle dine noter, kan du have en kort node med mange multilinie noder som den børn.

"Videnskab er fakta; Ligesom huse er lavet af sten, så er videnskaben baseret på fakts; men en bunke sten er ikke et hus og en samling fakta er ikke nødvendigvis videnskab." --Henri Poincaré

For at oprette en barne node tast Insert.

For at oprette en barne node mens man redigerer en anden node, tast Insert mens der redigeres.

For at oprette en søskende node, tast Enter.

For at oprette en søskende node over nuværende node, tast Shift + Enter.

For at slette en node, tast Delete.

For at slette en node, men beholde den til indsættelse, tast Ctrl + X.

Alternativt, brug node dropdown menuen ved at højreklikke på en node.

Noter oprettes ved at skrive i dialogboksen nederst i vinduet, noten oprettes i tilknytning til den node der er valg når der skrives.

Note editoren vises/fjernes via menuen Vis > Vis/Skjul Note Vindue (on/off funktion) eller tast Ctrl + Shift + <.

For at redigere en node, tast F2, HOME ellerr END tasterne, eller brug menuen Rediger. To finish editing a node, press ENTER.

For at fremtvinge en lang node når der skal redigeres en kort node, tast Alt + Enter.

For at opsplitte en lang node, brug knappen Split i lang node editoren, eller tast Alt + S i lang node editoren.

For at indsætte en ny linie i lang node editoren, tast Control + Enter. Du kan ikke indsætte linieskift i e kort node editoren.

For at kopiere noget valgt til clipboard mens du redigerer en lang node, tast højre musseknap og vælg kopier.

For at indsætte special symboler så som ©, indsæt det i dit favorite tekstbehandlingsprogram så som Microsoft Word først, klip det ud og indsæt det så i FreeMind.

Normalt afslutter Enter redigeringen af en lang node, og Ctrl + Enter indsætter en ny linie. Ved af fjerne markeringen i afkrydsningsboksen "Enter confirms" kan du 'omvende' funktionen af de nævnte taste kombinationer, d.v.s. ENTER indfører linieskift og Ctrl + ENTER afslutter redigering. Du kan sætte standard værdien i preferencess. Endvidere, bliver værdien af boksen gemt i løbet af en session af FreeMind.

FreeMind understøtter fuldt ud unicode. Derfor kan du bruge script efter eger eget valg.

For at gøre en node Fed, tast Ctrl + B.

For at gøre en node kursiv, tast Ctrl + i.

For at ændre baggrundsfarven på en node, vælg Formater > Node baggrundsfarve i nodens dropdown menu.

For at forøge skriftstørrelsen, klik Formater -> Større (Node) Skriftstørrelse i nodens dropdown menu.

For at formindske skriftstørrelsen, klik Formater -> Mindre Node Skriftstørrelse i nodens dropdown menu.

For at ændre skrifttypen, brug feltet på værktøjslinien.

For at kopiere formatet på en node, tast Alt + C

For at indsætte et format i en node, tast Alt + V.

Brug af fysiske stile

For at påføre en fysisk stil til en node, vælg Fysisk stil > Stil efter dit valg i nodens dropdown menu. For at gøre det hurtigt, vælg de tastaturgenveje som bliver vist i dropdown menuen.

Fysisk stil 'Default'

Fysisk stil 'Normal'

Fysisk stil 'OK'

Fysisk stil ' needs action'

Fysisk stil 'Hot'

Fysisk stil 'Detail'

Fysisk stil 'Folder'

Fysisk stil 'Topic'

Fysisk stil 'Larger Topic'

Fysisk stil 'Waiting topic'

Fysisk stil 'Object / keyword'

Fysisk stil 'Object of code'

Fysisk stil 'Question'

Fysisk stil 'Open question'

Fysisk stil 'Bad'

Fysisk stil 'Blue'

Fysisk stil 'Pink'

Fysisk stil 'Cyan'

Fysisk stil 'Automatic MindMap Root'

Fysisk stil 'Mind Map1'

Fysisk stil 'MindMap2'

Fysisk stil 'MindMap3'

Fysisk stil 'MindMapDefault'

For at tilføje din egen fysiske stil, givet at du er en teknisk mined bruger, rediger dem i filen "patterns.xml" placeret i mappen ".freemind" i din hjemmemappe.

For at tilføje en sky, tryk Ctrl + Shift + B eller i menuen brug Insæt > Sky.

For at ændre skyens farve, brug Formater > Sky farve i menuen.

For at linke til en mail adresse, sæt hyperlinket som mailto:don.bonton@supermail.com.

For at linke til en mail adresse med et givent emne, sæt hyperlinket som

mailto:don.bonton@supermail.com?subject=Sidste Telefonopkald.

For at tilføje ikoner til en node, vælg en node og klik på en af ikonerne vist i den venste værktøjslinie. Hold Alt eller Ctrl mens du flytter musemarkøren til venstre værktøjslinie, så du ikke mister fokus på noden.

Du kan også indsætte en ikon ved at vælge Ikoner -> selvvalgt Ikon i nodens dropdown menu

For at fjerne én ikon, klik på det røde kryds øverst i ikon værktøjslinien.

For at fjerne alle ikoner, klik på papirkurven i toppen af ikon værktøjslinien.

For at tilføje et ikon uden at bruge værktøjslinien, tast Alt + i.

Der er ingen option så du kan bruge dine egne ikoner; du kan kun vælge mellem de ikoner som FreeMind tilbyder.

For at gemme eller vise ikon værktøjslinien; i menuen Vis brug Skift venstre toolbar til at skifte mellem gem/vis. Ikon værktøjslinien kaldes Venstre Toolbar i menuen.

For at oprette et grafisk link mellem to noder, træk en node og drop den på en anden node alt imens både shift og ctrl taserne holdes nede; slip museknappen før shift og ctrl tasterne slippes.

Alternativt kan du vælge to noder ved brug af Ctrl og så vælge "Tilføj grafisk link" fra "Indsæt" menuen eller dens genvej Ctrl+L.

For at ændre farve på linket, brug linkets dropdown menu ved at højreklikke på det grafiske link.

For at navigere til den ene af endenoderne i et grafisk link, brug linkets dropdown menu.

Et eksempel på et grafisk link følger:

For at finde tekst i en node og all dens efterkommere, tast Ctrl + F eller brug Find i "Rediger" menuen.

For at finde den næste match i din søgning, tast Ctrl + G eller klik Find næste i "Rediger" menuen.

For at gennemsøge hele mappen, vælg den centrale node ved at taste Esc tasten inden søgning.

Søgningen er en kommer først søgning. Det falder i tråd med ideen om at jo dybere noden er jo større er detaljerne i noden.

Husk at det ikke er hele mappen der gennemsøges, men kun den valgte node og den efterfølgere.

For at tilføje en enkelt nodes til en allerede valgt node, hold ctrl mens du klikker.

For at vælge en kontinuert række af noder, hold shift mens du klikker, eller hold shift mens du flytter fundt med piletasterne.

For at vælge et komplet undertræ, hold AltGr mens du klikker, eller hold shift mens du med piletasterne flytter fra en node til dens forældre. slutteligt gør Ctrl+Shift+A det same via keyboardet.

For at annullere valget af flere noder, klik på mappen baggrund eller på en ikke valgt node.

Du kan flytte noder rundt ved brug af træk og slip.

For at indsætte en node som en søskende, placer curseren i den øverste del af den node der skal være søskende mens der 'slippes'.

For at kopiere en node frem for at flytte den, hold control mens der trækkes, eller træk med den midterse museknap.

For at redigere en eksisterende map, træk dens fil ind og slip den på baggrunden i FreeMind; dette virker i det mindste i Microsoft Windows operativ systemer.

For at oprette et grafisk link, træk og slip mens højre musetast holdes.

Hvis du har valgt flere noder bliver de alle flyttet eller kopieret.

Du kan 'droppe' data fra eksterne applikationer, så som filer på Microsoft Windows operativsystem, eller dele af tekst valgt i Microsoft Internet Explorer.

Du kan kopiere og indsætte (flere) noder mellem mindmaps (som forventet). I tilgift, kan du indsætte normal tekst eller HTML fra andre applikationer.

Hvis du indsætter almindelig tekst, bliver flere linier indsat som flere noder, hvor deres 'dybde' bestemmes af antallet af mellemrum før teksten i linien.

Et eksempel følger.

Træ
     Eg
     Bøg
     

bliver indsat som

Hvis du indsætter HTML, bliver det indsat som almindelig tekst. Desuden bliver links indeholdt i HTML indsat som børn af en ekstra node med teksten "Links". Eksempel følger.

Eksempel på resultat efter indsætning:

Hvis du indsætter en filliste valgt i Explorer i Microsoft Windows, bliver det indsat som et sæt af links til filerne.

Hvis du i FreeMind kopierer en gren og indsætter det i en tekst editor, vises træ strukturen ved indrykning. Hyperlinks bliver indsat i <> paranteser. Et eksempel følger.

Træ
     Eg
     Bøg
     Google <http://www.google.com/>

Hvis du i FreeMind kopierer en gren og indsætter det i en editor der forstår rich text format, vil formatteringen inklusive farve og skrifttyper også blive indsat. Hyperlinks bliver indsat i <> parantesersom almindelig tekst. Editorer der forstår rich text format indbefatter Microsoft Word, Wordpad eller Microsoft Outlook, eller nogle tabbed notebooks i Linux.

For at kopiere en node uden dens efterkommere, tast Ctrl + shift + C eller vælg kopier enkelt i nodens genvejsmenu.

For at positionere en node frit så træk den i dens usynlige håndtag, placeret i siden af noden i retning mod roden, og flyt den.

For at folde en node, tast mellemrumstasten, tast Skift mellem ind- og udfoldet i nodens genvejsmenu(højreklik) eller klik på den blå minusknap i hoved værktøjslinien..

For at udfolde en node, tast mellemrumstasten, klik Skift mellem ind- og udfoldet i nodens genvejsmenu(højreklik) , tast en piletast i udfoldningens retning eller klik på den blå plus knap i hoved værktøjslinien.

For at folde eller udfolde noder i niveauer, hold Alt mens du bruge musehjulet, eller tast Alt + PageUp eller Alt + PageDown. På store maps bør du bruge denne funktion med forsigtighed, da den kan lede til hukommelsesproblemer.

For at udfolde alt, klik på den grå plusknap i hoved værktøjslinien, eller klik på Naviger > Udfold Alt i menuen.

For at folde alt, klik på den grå minus knap i hoved værktøjslinien, eller klik på Naviger > Fold Alt i menuen.

En foldet node er markeret med en lille cirkel tilføjet i den udgående retning.

Skift til en anden mind map

For at skifte til en anden, allerede åbnet, mind map, højreklik i baggrunden og vælg en anden map i genvejsmenuen.

For at skrolle en map, træk i baggrunden og flyt den rundt, eller brug musens hjul. for at skrolle horisontalt med musens hjul, hold shift eller en af museknapperne.

For at zoome, brug musehjulet men du holder Ctrl tasten, eller tast Alt + pil op eller pil ned. Alternativt kan du bruge zooming feltet i værktøjslinien.

For at sætte antallet af trin der gemmes til gendannelse, brug pull-down menuen Værktøjer > Indstillinger.

For at eksportere en gren til HTML, tast Ctrl + H. Den eksporterede HTML side kan indeholde foldnings support, alt afhængig af indstilligerne i indstillinger.

For at bruge en anden eksport funktion, brug Filer >Eksport > Som XHTML (JavaScript version) i menuen.

For at eksportere en map med et ovebliks billede til HTML, brug Filer > Export > Som XHTML (Klikbar kort image version) i menuen.

For at eksportere mappen til et PNG billede, brug Filer > Eksport > Som PNG i menuen.

For at eksportere mappen til et JPEG(JPG) billede, brug Filer > Eksport > Som JPG i menuen.

For at eksportere mappen til et SVG billede, brug Filer > Eksport > Som SVG i menuen.
Denne funktion er kun valgbar, hvis du har installeret SVG plug-in.

For at eksportere en map til et andet XML format, for hvilket du har et 'XSLT transformation sheet', brug Filer > Export > Bruger XSLT i menuen.

For at eksportere en map til et OpenOffice 1.4 Writer dokument, brug Filer > Eksport > Som OpenOffice Dokument i menuen.

For at importere en mappe struktur, vælg Filer > Importer > Importer filmappestruktur i menuen. Du vil blive spurgt hvilken mappe struktur du vil importere. Ved struktur mener vi træet af alle (ikke nødvendigvis direkte) undermapper med links til fillerne i disse undermapper. Et eksempel på en indsat struktur følger:

For at importere Explorer favoritter ind i FreeMind, vælg Filer > Importer > Importer Explorer Favoritter i menuen. Du vil blive bedt om at indtaste stien til mappen, hvor dine favoritter er gemt. Mappens navn er "Favorites" og du kan finde den på din disk. På Windows 2000 er stien C:\Documents and Settings\<user>\Favorites.

For at importere MindManager X5 et mind map, brug Filer > Importer > MindManager X5 map i menuen.

Du kan indsætte (paste) map's eller grene i Microsoft Word, Wordpad eller Outlook meddelelser. Generelt set kan du indsætte det i enhver applikation der forstår rich text formatet. Tekst formatteringen og links indsættes også.

Klik på et mail link (mailto:don.bonton@supermail.com) vil åbne Outlook for oprettelse af en ny meddelelse, hvis ikke Windows er indstillet til noget andet.

Du kan bruge emne(subject) i mail links.

En alternativ måde at indsætte en mind map i Microsoft Word er ved at eksportere den til HTML baseret på overskrifter(headings), kopiere HTML'en og indsætte det i Word.

For at redigere indstillinger, vælg Værktøjer > Indstillinger i pull-down menuen. De fleste ændringer træder først i kraft efter en genstart af FreeMind.

Instillinger inkluderer keyboard mapping, opførsel når der eksporteres HTML, måden node valg med musen fremtræder, valg af antialiasing, og mere.

Du kan udskrive ved enten at tilpasse hele mappen til en side, eller udskrive mappen på flere ark. Dette valg kan ændres i menuen: Filer > Side > ... og afkrydse Tilpas siden i dialogboksen Udskrivningsindstillinger.

For at udnytte pladsen optimalt, vælg landscape i sideopsætning.

kan se hvordan udskriften kommer til at se ud ved at vælge Filer > Vis Udskrift ... i menuen

Brug af rich text ved hjælp af HTML i noder

Noder der begynder med <html> bliver vist med brug af den indeholdte HTML kode. Denne feature er kun brugbar for teknisk mindede folk. Et eksempel følger:

HTML Eksempel

Der er flere punkter:

  • Punkt et
  • Punkt to

Og vi har fed eller kursiv. Underlinieret og en streg-igennem . Vi kan have tabeller:

Celle1

Celle2

Celle3

Celle4.

Og vi kan have varierende forgrunds farver.

Der er ikke support for HTML nodes og billeder når der eksporteres til tekst eller RTF (Word, Wordpad). I det mindste er brugen af HTML praktisk til publicering på Internettet ved brug af Freemind's Applet.

Bruge billeder i noder

For at indsætte et billede i FreeMind, tast Alt + K, eller brug Indsæt > Billede i menuen. Ved at indsætte et billede mister du al teksten du havde i den node. Billeder insat på denne måde bliver ikke indsat korrekt uden for FreeMind og bliver ikke nødvendigvis korrekt eksporteret til HTML. Billeder i FreeMind er en foreløbig feature.

Fr at gøre links til billeder til synlige billeder, tast Alt + K. Du kan trække og slippe flere billedfiler ind i FreeMind, vælg dem som multiple nodes, og gør dem til billeder ved at taste Alt + K.

En mere teknisk og ikke særlig brugervenlig måde at indsætte billeder følger. Det er muligt at inkludere HTML i noderne. Du skal starte nodens indhold med taggen <html>. På denne måde kan du have billeder i dine noder.

For eksempel:
  <html><img src="linked/Apple.png">
  <html><img src="file://C:/Users/My Documents/Mind Maps/Linked/Apple.png">

Eksempel på billeder (virker på nogle Windows distributioner).

Bruge eksperimential fillåsning

Nuværende version af FreeMind har Eksperimential fillåsning, disabled som standard. Nuværende implementation forhindrer ikke 'race conditions' perfekt, men skulle være fin til de fleste praktiske formål.

Fillåsning sikrer at der ikke er flere brugere der redigerer den samme map samtidigt, forhindrer dem i tilfældigt at overskrive informationer fra hinanden.

For at enable Eksperimental fillåsning, vælg Værktøjer > Indstillinger i menuen, gå til omgivelser og afkryds i boksen Eksperimental fillåsning.

freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_hr.pdf0000644000000000000000000030252311527433212022757 0ustar rootroot%PDF-1.4 %äüöß 2 0 obj <> stream x]Kcn]u@$ EVI&@Nl#QI鈴'3hiZ'")G^e#=i|iߖɅ-w螶[žue{[AdZ원VɌm3cqǚrg~{ *|`*k)Zl.|:N@j Rb Cm?imșV9uNjYmMkYm֖d(ʙimqQF9ڀ3ͯ(Tά6LkˣBjάtl( gR[Lkۃ2 șim뮌rfgZ[( gVpFcL]Zڔm tkI`ܛ+{V\RYdݳ{1]8YHZɽgV,$*!O{ s#%9/oJ"s^2:"Cdz sZ2;9/٤w,mursuhS3Ѻ Wѥ"*+6O_us[٘#Ԙ>#yItm̡=c7]{qkFe9JgTzt$EZѤp6SfH K1 !5Xf 6fԬWtmfJ8r)p{;8х(yN{6)m YL7$%}9+>B̜ZYRٮOsR2\U}7)5ěNVMʥBΤL6j+WKя߾՗X8W˟?oyq[PކDxM|{y{?ߡP~-/WoTO(5>n~߰t?*< }~o}!0ˁ ^|A蠑q$ :7`/<4}4(_];dG;&^D-R^a.X:'+ryޕ.\ Jio ( ]0P+v@ VlD_C7.g%<,SymJZt0v14'շYO|ʄ] U)=,QW[:~]˷%P=Yg+EEkY_v tU)+Ir)E*nT++o:tR;&@Iq+Q!SSq'o!S?s`aÊ%"Wn 28bLE.oPP@ak%"Wn 18bgLE.oPP@a%"WxLP )[ym@+@c+P1Հ +P1U i6(P(rq%@e(B, JE.#("4%SPV$@ E`ĕ4%SyFc T)Fc2OxL!P@a3%"WxLP )(PP"0J)ݨqÇqqKqqԸJfj\25^L+ƥSc,<35FuKs\SuvV8s>`k*ꆭ_&5,:,a?8(~ ؽVkZ@@ N`A֕B9xZ>|sK鑇yZgntWqS֬ɒu|5%nl1W"5@p\%K uJFCxL? a'aKZewp v^M@.K^<Q^Jb0ʷnKGy}9yJ=l/"66|a0v=KJGûe%('3gݏqp)rpNr7/BIw) TN2jufH>RN3=:Nu iX!BQvj8[`JH?g`u`QlSvUpwh0fi7[S9DZ3  oPRTاsXHН!ͫceG1NJܱ뺴ֆ>razDK0SHQ!HB$[!x[^˫U_E^ƄR'ԊZ{uzgP s5ϲs5у-Ϫ gRV[&Us lP&Vklͨઞ(s wp(L58[ 0e9 oia{nZlg zbeHIjDC*ٓf;;B5~6EكtV[RrEf.L!"}Tޭ\WH+ise>T 쌯jfn, 9&({>L&_UCλz2ྦྷ%gdYKxAk#),ArHDٿQ_gvu' ct4/<8L ҽxDd'iEO*.L=;] fck9yo_ߥ}#օq!YKѴ$!yhp\w$޶ZS,ʹ wjq򇩕9RnH6(mǖ 278\yXo} 3WU-Xz}5w۩๱wUG;h[; GF5COu:M73}]盧lˑPVsd|>6o\yk45/׽f׈\Z!߽2"~ͽ_#>8\L=P>X(> SoҷP_a-mGs/@Av\YjJE"LK"]Ïn a' GN$GJƕfƕg-"EI `PPJW(KPxz%"W$F\ƒ$(!(&ĕ4 4:9L(0b᭏ bĕ4#Q$t: JE. !I(q%BdZloB+B'PJ %A(OwOGMmmc=T6Ş,1ّر:؞vɶﴝlbz(֓CdFvlGviLjzXgG`vd4v k},GK~]ޏKS"1Rg1ej R#Ip>Bk 1aj GcO&Gi5wcJ[;25 QO8=pxJV-'Y#k893Ij(;kZe[H׽ܝ@BGIT4 ݶCaZG5iYw&x5xO$$S4F%R'$gwF9-InqȃrvLC'D쏶I<־@k۹7ω:a v֛Vчݛgdx=mf.BW>Cݕ;R5#ihkg؄N<%Ze%]Z↼#Nl;Js4>,ϼvP}GJO]fe, <75Ck6u +nH;}$V,hޛ&Gd"v97]ey}-MFvĩaIsR$*/^뺊U F0Ύ}ʳͯ:a.Ą^T7nx(?DmMѺ4t]>xPY7{*`yL{~]2nĈ%()}Դ9!S{HT3RPZ-2YA{ށ.TɱHԅ7 aOuZ0|X|w'CC|!,OZ<ܷ8.cHE{TjGN^D-߰wG[nbΏd>6}gP)#Śq8J%㻇iWno.ϳA\AHD,{&A]b=X:0 $OO[;j0]w7tہd( 99)ps,nsRI~Ț$>waD%W^-&ޯ%Ahl6|G``\IoO7.I~3z>%bzyW޾-ze%A Rq\8.v9s%B]w_n"{X9aj*B(RB0W$nDI~nK8BSƕ7{ b 4%8BS\IN4.MI*NF)N㢐:i\y$_~c~#)PI PBrrJW(KpWy D^@O7}ۻZi㔫$&ڧdFyvWF{f9ɄIުdءDV ܋n]-| r?Loܟ[oӶ-KvC=WC\;#FG'gi8?Q<ܧm]h۽OZcFFE= -QͽtgßC9+hKPXwo)m+hD/wf_HR #קDZܴzn?ܫ;luA ̕3Y^>1ߛIh6i+(/ZB\ȭ(xix3t葐ݬ:XcjxS'la_V/Dvw^snT_X/a}QK4ظ'mq]܏HKW|оhr=^d3 t%[cmkQ ^H_6K-ym % r5IJ5F['y5ZBa ] Ԥw :dR~okH+NSd8hC*JC v\EUMߑ/a9q)?:L0gw P~.۟GץTDPU endstream endobj 3 0 obj 6725 endobj 4 0 obj <> stream JFIFC     C   `" {p_^P,=$aic*X]`YӚ:#2HUdo ~8!5]YbB#{K@_6IT6vj=й豦Ȁo\*邹fŇKiπ[h+In|<%iFo+a`O-SҴe@-D1ݰ#[bu.3ү,9/EZ3$) 0!146 KŸ4<qN۸e inXlUJÔErVkܗ KEudL <&Xߙ=n[T0}ݪ3sMWxg{!Sdq#` JC+g/vQ񦹘!ݨݮ\dfFc:F/UxX&aƝ'-=jmq&zn; CBz8Y Ƃ0c!nǙ1SmtVS@ 9*9r+9e:|@xf9c2/6#(u}v?կ 2([VY~HQ( YCfV{0 WWkB8~H\u<9 09?5 1ޕKM#eX=aXJidџ*aR=+FrNVf欻T;W+`cV&>'1!Aa "2BQ?BLmͺ{t#w HJ2ځF]P,YV(s5a$x%%(] R+OR*4 3)2ɝFyA)]C8Macv/P2 1+3hD-ҌUʱ Nڸ WB !1 "AQaq2R#4Bb0$%35Trt?SV+qU&?CqZ@:BftG|M}}7RmtEo%>ɻu#*?X@+jl&YnP lWϗߞ:KE-7j"ZeZzqbM,!]]pSzWC2r]JP6U9%e)E}IE1\Sz] llvXvY:*h@dTW"x%PVPVFMm[}LпTwŝyi}Ht󕤻7S/<=| rz̀IM{p*;"1S_*3GbrVF?>T-iKJxz<`<ˈPWX$+C+]@ Q7q>p!!HJE^u=DlumWոF+;`F'yBKA:uhNݤQe+qA)ID]$v J0Pj(e qA8 ÓSN]pR1r=C#jk"Te{S\H7GY*JfvUt}F 2:Fqw\s9SW CaH7ڒj M L!<ӤJ_R(QIP"|Qƕd7f)>0Qw&G(J9G+0[X |eX߇vUP;Fz^`x{9ImƇa?9yì(*Ltl^ƾ횣\fZIg2]E/^ya6e&}+T i7l4bB~rHڰ#|/mOJ2Mur!T=uEQ|"VU[N$⣴(!1AQaq 0?!NF OU)LGRB @'`m4~2P(pBY2i([i(3ed/"SWfKZx~gK‹ej& uf'фy% GsfrGD#ZRmw4X2l*ަ(G'v!ϗ&%&s>JzU3durRkIѺ u5[YJ3+Py ӎ.wuŃAMeT ! w1gNX(!\ƱT(UHM.##8={ h8XDyOrKˍW`5G(+% +kAK}f\]rNzp~Vl&Q4k9cA4  |$dX v3bU8/&ZmauiM X$Wpz ?@I=cÐ @R<,l֦&"12q/4*D}HtH #(B}DL!w@O8ҙSG:^J~/$K NHsHV$rxKPE=sLEBy!)=襻POS$!s{&ȦQ륕!T#÷ɕQ{ W<ݽQxc IR:_<'e<o"1!AQaq?|B0az\Dt x"GB_ңX!6_5Zf}Ϧ)r1qoͺ o1?M 4[}OqMv?-^wLюo7`OF;m0n[StŔ}f[%!1QAaqс?hn(XAD0ժ8X9Cb2 ]CV9A+zt}̘an=%Ƌb3Yp/ikC ZîG."{>"4Hv^ CqIYP׍3 xxk] =y&!1AQaq 0?%@PtXoY( Lr9A F. =/ʞ,VрHp@p_~QZ.w Ll`YA2a&J d׀Krx-DDW$8RLo7 ܼ@B wRWƝL\p!ȂClgp!rP"@ ffM$,GXG`I*/^2n%hGb:\/ SJKyoD@*e C輿D /jj<+0!w 6g{E$fNvpU,Ϩ2' <QڸnL}}18or\ ' k`2s4M@3SǶΰًw2N>  _xa$+$DL h6rQ׃i{۩||4L`]^zĕIF ?N`?tPPzᲝ 1! Sept?HW~@(Lf'q&Wp:eVQ y dDTU? ,]j~VрܚDŽ>0+0kȘm"5HfG @\)ADtjP c\4FG1p˿/8: x0ܻS6bLqՏW 1-Ղi  *H(ވ9Ae]!U0(0b0F|SO'>AɘŮGw> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream xy|ŵ0Z=ӳLϮhf6KZ% Ɗ-KcKX2mdlv00baM#C$l@B|1diީ,Cnn=uT-#=ڏX$vzS_GttFH:mǝ˖#y !Ƕ.+2Ddok_2!z?Q c*hL vwV.w vt]6{akG>7p>BU >E"y>T/>?y0|?=gXS5Z`4ft=^?BH,@_~y*>g(2}i4kdE/AQ=: Z؅܈h)Z:-EtU?vt%UK(V"jAGGJ܇a%rZ:O;j@؈D#_#z4ztҁ.@ŧF#_R%h]Do3|R,nFh *`CNS¨0)E{]$ `EU@W؅VdD9xW',:ʖamO(k,Eh:/'u=Lѷs0Z;^n.~Uj7]C|&K`o_߰0h}KpifRVN]Y|a"]p%f7s=JQxXW|q( mB~~^zU ^o*A_E'X5XmXUVĿaLYna*?W+ތB+(=/EWkS[G4=3 =q3;ţ(>Vߙi:O'ڊ'f`x) oşŷW8~o93 +)ϖ {ؗ!/NWSŪ/YT7VAїO@?{~Πa 3 N2Xxލ7 A ça2wY-a[Cٿ+ƔyT}*~SF}wL.V/ryVZ<܃S@ns3%ޯWt6P,BӘz*>ˁ2-qh+}N?5!&ʹ0`E%L'|61̕M!*KY5A68SgEX]G%MnM{_Q~G}eRiU5ՍUϨ~*O+`9j6|"܊[(4ALd[߲_cBH>Ze ' -"A>"|qAqe:c0ϯ0o0*(#PcRE_Q3Ə2e'gAw#(kav=Iwy|q}z>7[Evj̹]< ",7ZKkJEs8Vxя@aB@}N9AqhB({5ir:^E1;AW=jDG@P#,DOvcgK }f[/9iu7.EuoBx;`.w)+Sx9gA{w(5ӓ _&tl1\ 4ܥU 巔U@j΂p7/ @z@~Z`3oVACK@o/lJ(Wρ<}lѷ 9NnxY.@;^AM R߱1>g={+&h"Wn z/D 5?68K}E.m0"?W3lzec` Uk0 c *T=F{tYbi~cü\UeEy6.K&KX4 ]NfyѠi5jT Femx|"Y8M#]P5bU6f-Eh-E8B#jL ma?F a:o^Y/ORxoP:mޅ8,=жy! Nike1@@cل)8= &5,lwGzCq2" M)׌s*$I1,!1I@~hs-`(b\`&":rסu k(7i|GIqe>@wίk" YV3x*5^ZJXD 496tٮ /@CۮP mI}qf3yrr"d̓#OР>gֶyO.,[av`ekλ>qk:eS`ʍ:"q{&TjJZq~b^ &^8M ݟ7=&3l8p@{޳v@GtMo| pW6PtMϭEy ZX߰1pu'xEoXq3, ֝i-3[Krp㌚>O*h֩g0`:4a>>%?Q<8HxEZ9jN~ ϵȕ?lj\ɟm\1Ո?KEy2} XT8Ik@,YC B-cú:%q&qm\ׯb۵t[i{fT<7oj?T~- ~{8_]V6&qhjª ί h8V~Yp3hLƠ16M/2)6{YI)%z!j3IE Ģ]|hL 0B͍$xl6NLOvS;MM(wA'Tw{U55UH<mGU=T]UY[S[SmΑyGĆ*}$b}x{ZjH7D=F`eIȎS?ٿco%b11~{ok-V`CI^gͺch: R"G? UxZ #ǧ[Sm0L~qA?;N/>v~7'@$ &mI 46D_miUP N}oB [UTUj?-P :gi$ |Y5)r mGd1 ]tE;;SqN`kiL࿔qgE9Ja-CTUE„avp8d5\ S5^ZZ[2+UZߓ XMx9O?uB7w|hTYQv8|e xtU 4#W82[mkϻlAg#u?5hqXsk٭`x7/|5{RuсM yf՝Jpc<[U 8i}JwCts>ᖰ Θ#2W#O6~/ I[ɓFОTszcywW wT":pjPtdYP7 7\Q:&t;g N;\Rԕ3;09Z'TKīs *'ng; m]['Nm_;-?z7Gr^8|+}߽-UGYzAUb!,ͺ򺶚!:Q|5x7]!N1AKQ>4YLV EQLSi?{%a7#yX8D}yQM Bi .5`s1bV#T[=Ӥ}EyQ4@N#Wd3䙙<˜0'32L][7 eצR+vR Z3Df\Ѡ. `3W;a YZ j0M&CJ]Nw7DŽHV'-l<79yЈ{@G 6l9pο$Œ$*kDjI*Dsչ+Ѐ7 ՠ-. ^δNe?Kݵh ;01vjA [O5N5-HcR8̫ħ٢AKGHX #_4~/D{$ " LF{+1* )DIq!A ֔61lWlXbclbۢMlKy\Ri$J&p9ކmLlz(ͤŦjc0-aZ8,H%FK<D"N08??.i^;/Gl-E?V^I+ !lƠFR3w9pt$f(F'~ "Y/^ÅYs67ӆl3/Zִ@1 ")u:Qʟ_l|i:Q-)ڥDۜhb[(/WQUݍ4Nꠂ iNM, tv1r! SRF>8i *bTD}\KRպ v6 AeԥŻW)"8p'+)80? Ž,3=e8BIW";S'QN@$%JBIɏ):1ԋY.5XH,D2pXOR\bP'L'+l]'f C֡Pxd2r %sHi88\ѲˌM7br;SnJݡfb@ǝf2z)p]Y=c%~SJ3gQ]Sw.l?ֻ|K\l.,YRwB"k\Cɵ`vW:u-}쑸ÿWL UGo(Bc;f :52KE; nMum"ZV}_z ƧMz-ziMMԺԹzsvt8>WwT@MMݎMŧjGGhX-vyg{ JQRe%X,Xh3Uj~Պ˫nU߬aVMV醪pUMR; Fݠ^ޣQ}K꟫5:W=fm52ă)15۰<:Y%&S9+t:z֥zcrF>b@dt`YLQ0jcLe5͚}g5  FvD_b&Fl4=dv/Y]IGIsы)T2J1 *W2JQ١ܬT(.Y>;v'Ot\gtBfOe9q%I6u ?ivփ)x'|#;ԙ…8uͺ'.AUE<0PL!EzA<6x!a)D@dmJ] pasJ4a*lZs$@xI*%qv%-_|ICE=4jm7P}aXC"NW8Էj|ڤS%m˫_>b./Z]SxI4x)}%sQWn!iIgsؾn$+kJ=+ R4v"2='D=c LcbC=06ъ[P9 { ?ɭNb}gEO,EgbK,(ć`tt6 ՠ=V6srGs\bRAAždLSKu]⮪l+pA=I#'tPP#0u@1$aE  &3?Ơ% CgGJ?CGX,q}f^p18!"/ D6|ӆ mh @+m 1MYQknΊ\`-i$"oajcR K!o~"jMt ,g@z /[I$Le@Ad[E䤦xԬTUJESx-y6;W޲u( 9B|8w~E^b=[zk^wś֮TW;}ѥutL Fed&9*Y(yxWԅq4Ƚ#I_T-pxPǩ|'ER! @J|ŽSLyXQ1T9`\/;'J|0u S%c^6$ ڴBjZ!7C[jHq2x+x"VJ&p<RO:K|YA.b\\)FmCFR>vuWÏD۾,c 0ՌsŐ@К| Xr>,o# Z UKn{x%_tEke-5\}\̷lq1!f$ٻX^knް=k_@<ʥ3SkD׋cjc܀Wi: bL+<ƴX$ʹ8V??GJ1Zʝ0("F6Gv1Y"ak% M㠪tn!Dhp@ Y1$qp!Ă!p6p\>3, X?KT6 `l:ȧt&RBY ZWz/!n~?_bSi:oo:Ry;c3% HT,0G!xzϏw3oRi-Τ -Ѽ/^w.y{8h﾿sRwx&zdN[gr;EAA=C/:=rOb6k+׉:VW:Fѯ{X@&eP(KfAZ y8V fgiJ nQԙNeyFP)Il4XmT_[V_׬sc SӏtO=:v-1օ_O#2M Jƣpw0bmoy;=0οk<KE)IbJdy&ELfNp6g8:Z`N S/4O-NN5zE>g#J}cAQ:|Π# F#a y[#Hi4DXЃ'W{hc 7. j8c4/ LFv3q/_s:t, |qc D@ (襥Iԡ\6y2y*y:H, ?X TFgΜ=9&ve[~Ý4Y8:CT,6 3 0$P'2h$O"z Fu DYsm 59NOIlb)ɐ?o +kܴ_h,iӰ[k~2덪c1jwѨl¦WKv{cdM. kDA V;׻:OOdP f*ZUA‰^WЉ8c8 rtLo/5!M # ψp1xnN+}JTk~$:L,B f}X7D)Ӝ适qXb 4a)γIq#iIGľ^ 6(C KuhdkNm⯏LxơRb#CH!:A0 35[Ǖeuu/]hb1#:}/^UL0WsTh%y6&,@vBxI)KO0w$xsjXG5x oV˘Rm]]Bk֯&mOG^3#l";Nl§16!vo?:UhB,`LaنčWcΙ0P|zxsh}R%#qͧTX5Qy?#ՙ4$CaBeLi!M{'d 1ف$oRHiV .xa[GVh83XέYRbݟ\Þ>_PpeO]kԐv6ġcXfAıwnwХ5&y;ieU_+~ H=7Hut :lg{R*9&eA8QF "4JYD4m hV7Dݑh,^\[p(d4jjiU_m[[?n+(K* p. \xs+6Y`}Vl% f3L63a2bSuFfmFfmFO eJK&N&N%؄Mȩۄ皐R\>•rsRLvpD> ΁> IL(J5쭑do${kdn tP'Nk$S[NEzޮ߶dxbIyK qَLnukGoC ڶi];>ψ:Mo+C,U|Nkܯ{^/FRK8} >aMJ<~6$;cP jGZarw0wqw2<<QkP9 s8NïL[˽tu}nXXGJcѹ$yy/]!dfiPzEy ,+&G)9*ʗ]8j5E8q[\S!P a 'DC1l1pxC\@@#GD4$|BYųRϸ,z2ŷ7CJrgcztN$g "EW1!!7H `iR3q։4}^7|=ݵjEwmk[r~z`Ogm˿_MJ ut%jdiWmGrAӈ_êqls"ćqXTy,I)ޥr]\LyRLv$G7FA7.5[ę=)^ɻKiR'rYԠMRӤ497!43RBCNgTzb 2{=> &.bp2@hp':8/[*g9"+4C¾RR_a)iPrփ^='T$~weGw}n#|]*m _i7T-I,X :uj5yWW[}^&6u}%vybQ&N> llR<.~6t?[ ԎZ$':[vi:"kMJ1buu#ct{#q 4[ZNZN[)393ݴ&F]kJY SmM/h4!x tU$pr o-Z1Z>ZqvUU'NW9* , X0F\*և6Ojrd{>![!~;S)G;(F>bR`^E1fN2g!Luܤ9>d[bG\y9?/ ϻ!N 1PM}}3o^?q -),*kI]1KbIfA9"viE]bƤJq.369RѲҚԶKM>O6vTajPLll@x'S&uܤ3|:I˴+yUݓM\*i)" 6Rm׬› އb%8hxD! m@{L1gN(cAwh,Ww:&3r)('KVǚX2Tgڣ3]6ukgt}\a_utKM!?@C̦ #i.5[wbw/`//A+;#Lh$.߰3E/:@4h>bKr ~ {wLY\XXopQDLѠ5 p0kktZ m6+R8qqq$HǑ#!G?}8l1R6D~( !E/*G|Q9#c9*`tIFz!D4/)Ij~W]z݅&֤7/#'m$FcIUM]3/`gi|Ɛ_+A#xčGȅ'lNN(NVۨ@X7#>D&\"%Mrpy'ePĬ%x[|I|6L[Cå%aK R1{<}u'&JmFFEX|̥̓pΛnh6i\n|f=0 [.hٺ8}.X==?}yG(~5qp7x/) 4. W1XQ-KZ2nu*h¦ol)Eł@8WS5oඎT*NO5\ܳh힯OUVyυfZeشу&6xZy?q`{]&wqi["G#)F4ЎA,AòCxW{DpcySwי%+MX,.z紐gŗfYsOPoJo:\3U!~13ժ8*ꬹ H0%>MKz] )t8p2g|XW3JNU5&Nnjb&EP(J4HHil`W-ݐnWP|f|Hx ['i#'9&NrFS9fK}MKF|6rtnᩔ|n.Y;Ree gg33ǒtBJ8c<ٸtqU[ȧM?WbPт~k75'$|<- 0ԓBܭ}>My~u8%fUHcyD:E!pad61;CjJCm`h2Ml## >^^{yX/*iIfECYD3?55R?=*)k52ZTBϣ[M @O @V" [K=?Qqk5VK#ކyV|7ΏԨ&WR@㓼%IӢjFjM@(ݙl6P3$W_Niˑa|rmC(mtph?l=,ړbȪR}| b1f&̐j9;P;R .bZɊQ{ mpM;M0=NG%pK4 K^h01TDl`bidA4隐 +[ZBڹƆͪ],V(ΡG/>XM1zvY+nVtt3CLWҬ>fo#Sm-]BFù-[#--'[,\N-E' DvY Ds r 9i%L~GBJ2rh\yPfSu\e{'3 CK֌@BԄHU$%^p>SRRԬҝ\cVqć.Hj`~c >fKEGN?[P{N7y1ݹ"Ug䜮|NN713緹OފWn긭k$h{-?.mvLi-- eY@>ֽwM뚵:x9u4Lx._jn=1щT\Oڃ˦"Z ZbU%Ǘ,JK?"]~$}t+(@)SܜG㭱\s{Oݼ2fh~{Ux[-ky=x&{]]OTF%:6[KRoʚ3qKlDD;O2nYta)MQ_@dw :|AwqCC.:14e عs$EA,e)H2BvbNtDwiE翴g ϧ>;*҉翰Љ?kƝ;nx)"]]14]91^gj.]!}[I ,j4\= Tj&5`]pqskKkL?تG Iy)i nO$Zx"Db&ʕ7aŕk`f#?k,ÊԱOԃ:8U&*:0[a1^5ox7*] AΒ"e Q iAp`q'<䱔`-+69&'2 Ԗ+#Mee؎SeLu!IyqzIZMt&A^TuH`(Z?~X"՞@M8y` q|r|`ߢIy9j+iJ Ws5EBTR)uJ`]2n8Vau >+6}ǫ{/+NmhU\wΥ:V4v[Cr=&K%5 =]lHF<-ڮ*8wvN>8pϱdVW]m8XFčbs`!BɡPEi a4ނ o"C_φAo=Uv6^]M,M6}#fb=\dX2|k275~dr&- WOUg@a =ݛOV)=\_Cz^Uz,~?4԰deS+ fЛeD F5OJ7J-Jh rʖ$R]Uȝ${RA4^eo؄S?op{w/)ӟ`mS?㊱(/gnҖƺ􂚐g6ٵꣻZYQ ~qÉjd&\/vTջ S ZUj;x{|XQ5T֪#UUW*͈{Z#A8zi\$٪zDh( 7GXv4x:( G̛7 %y#&?rH*NsDqؗx#INؒH.rjͩT%RhT &]p4YBȋ^iuB#FU4UyEd\L3|q#8weXٟ<Sה=lTJZ f'u(ɓ䨒I3t΁@Q%R9pyg|IÑPMVOO CN(䯧= RN# T͉ CtFl且t^Jne+(lz[^V\.m ?/0OK"VQ^$0'}%2LKHRERU? i 220?C磦aROS/FI(L 4PmE]J= 5+ J@pW\gZHo.'hl# Pz_O9JP%mP^}Fi `QG=> h%iA|j~lyh-}`v=5|ynsvsִx׿S3RW@ۡ"}QBIQyԋ`̘Po\WR~yuνW-$ iڎItVf'KH(C?Ԍx(UQˠf-m?J`rj*c@a:0;sIQZӮOqfjͥDt=2(&G`.:ndtp%Қ.:VHQҦWn3j w[஛]k@.toa rPbf>[*_9|8"m#նQiH78OоJ"= ᔹdF'_;ϣ]Tod켖=Cf'C\Z'Kѳp̋܍MtlI$XٞϾq7ČN< %k@ >WA-v=H}\W-v 2 -;03stYYsꓩ,֌:N]sZvf>%tퟦ܌-<9,M7'hPύL7H}ٖCPfB$|83ާ(aKZlP5sXem|7wFyO-HTJPʡZ-V]I"LnYO+INk!jP5DKF߳uqY؛kƆ[š޼bp`p`kop@ FFY2p`NR3",~iTf~Ⴞm#|aWgMߎ2[`pG}@[/Ue˅}݅xn[ӧ|CšBWO~GWa0U( o@](tt qa a֭kGwBHmޱUyaakw6ҷ.Ϗ }#eھГVU)wm 3W]IsReI 5. w u eVx޾^oT5"G {2dT腚[F;ac–|08'D,;a#;##[wө ݅<F&K7/Hv@a@OI,$`B}|7%ĖO0>i0t@z.BH߮<,2O PaLPk֝] N07C/?nAz9 ݀ݣhّ/ GwvQ^:IhO1 mwoW h}#–}zȈ6e~~-}}cChwhmp82c f}q_OsD-Gvtm7 AC{wJK$Gi1gW0G֚޽;CFdX';?c_;F6?Df|?De5KڗYj]XmmBˢ V\cTvf t1` tU}dag. $%vP Yмk[!'[okph`wdN +(J,D h97/඼Ĥ>`)K'R2w wR52;#\ 26 X |wȧW. o}zz](#[K>1}2vD.GF%L8VsKH/y%{$H54&Hl*cQ|,znqD Aٍ׀t  i >0(>|(9ڻਮ2~>&А6]umH$$̓ QMZ, SB0ZIèSfc jV-*:B@m%QjVsMsי{[8%nH pOlcٱ ӗvR7緍;B }p.* U555ϵI4,\X[ ^>PnI_u`Bz8T7ilMvkbtOMj7L%roRt?Ǐvjhjhjhjhjhjhjhjhjhjhjhjhjhjhjhjxh@{v??[\.Z-'V&|Bww.ƟckF*MfgVNuOjr@g<\­6y/B;tGܱXhpecd7\F%хh ?L[Ǩ\%Efq9>@qrrn!Y{.V[a c aW6:8ۋY**Baq]UhA| 9,SS7TZ߳|3 3o#%y#d?$@UTl?CA.9NUIkFt;+Qv.Xr#1|ϒ s! 9'g*a) C½H K+6  #+`DԀ%^(f:Ms48M'I F*"ai~F?heyefw v5h:ʏ OXʍՕ!BRxc>eo .Q>T#[@RQ%ZT 9[>%Agu#x~@WZ!.T9_mj':\%`,VCQ3UۅŌUa;OUT"õ*`LUsp5scglT]Z$̀j@h#nXRJ ݠ ȁ in`CdLbi19؀YCBh 4Mvk|u?   9ƫG>7T>ʀF|zh; y Ky&D'lH`|10m?P6뮼0oldnOgkt1cD'BJ[̵l%˯0'|l\}p"k:I^*{2[4.MR)SKY _T1U?0n^t^|vnz)+Å]cGĖR=Ǿ/"~B 1ƮF~ſޠvPqP{$%GIg?fqH}HIH{8=҆Ky+o*'*G+*uڪJJ*HNoP|9+56",}=uu\45UWZMjGLz#aDE"sܣ'RWBDHBn!R ,f$:+YEt7^[Ei"Dѿh]HυxSk!ސIgfpC$=}D[;fAD '$ND ̂~GD=(GD4-[<,:Eză"}De}"MK"$dHU@C.Ru[E-"4f)l&Qʯ: QuNyZ,Nm+tȉmY"Xf܇E: "cZ/"b̗IBQPDHQ BZ"$*Qh@XDt{n 8W!|RyB:@a6=֭\=20̄~0cDcVƀ=;û~ }9zO 4K]oFGnͦM}zw3:ՇdZ#qX^/GP4I2XҀ邺a9FX?p[]f\o>555]Env )Otp:$wJF݌|df$Kiǒ9׹ՙX2긾3K=]4H7shuif)Mr3s9Jv9i"S*_bGU{rHΦxɒ字`z@cjs2_N<:+c¹9]5u6vs[aUt3ֶZͭ]-U0g[#))cH\о͢5۠4+A8hV*u6B(P KFR6mi\²0<5dÆRPGlwmw:G鄾.lg!a!"MmS;ض ԝk@ {Ndx{㍛ܰ)35sK5]y uT/ fIglU,37vYv\v_nAjq nvX;dv]JnɎά4w)i1oy]e:t+UqAAue3HU !-UhT廖Ϋ8BT~4I_yۖV׏Ƹr[kSzPS? QԫZ >?l,鍵tfS-ǖwǺzI,fbj_&^g٢_^Iy5~fsy>>|j$5ɑc'yjj2U/D^% [oTb1cZLQnWv1x& _ح;釯K endstream endobj 9 0 obj 21923 endobj 10 0 obj <> endobj 11 0 obj <> stream x]Ko0 CEX%ԧ`:5lv}ql8ޝ'O 'uxAuKo#0)\1}m5&l7Efشŵz{Q]}vR:*Kb> endobj 13 0 obj <> stream xy|?zΙhF.vɒ%ٖ18)" =Y1e BBB[(- IpMi)h}es~m#9K~~Ϝe̜9,9ѕCWthqH^s#?"^C\}fFH.Rzp9B]|^{{.ܣBA a(G.klBr5݁whvq{P._}_Re_檁W\Ex6eu6@˄Rhuzl) GbD!ndsM-Bk۴b3fw¾`rw#B?~*pawEQ܄^Bh>zut7^GO"ڀ_E< Y1Dl tz0J FȎՏV4 =/KPsI۪ȁCPz}#՝h.>D&Gз]~U==ЏcDv>o^=-r!t)\Aw z ץ؁$Cg3j8{z[p'WՙGs"/sJG C70o#  ~7_o Uh#փ0z?BO} 7qh9P-s#Aq""W)UU[/*j@Ex16.]+͓7ECЏ?¸`:T]Q}Eh: D}/+?WlTcC3v1ކ4a b>m< ^*va]_0w>~^6ÍFo_dl? ?rp[++VnEJ90W( ۡI|1| ȅ-۸_rw+WW.Q]PQ)!@( K эh+.=zC@8}~P-NO+OKl JJ&-MG[ma{˽#竊f*nWHxUPUzdd+|rO_˫QԈ2'@{ 9&Xa4|2V aۄ7MfM}c3Op@Q'YR7"sbr6lzЏSdypQ[ rq?^>g~9?(*R$xLXp\)({)W ~4^W(} '7، d)w)w'('wV"zC\@]:'"_x^J> [i"mM"Cq#\Rďĝ~4=<0~^HtF;>r,~&  ڈ9ڙˁ&qi M~ XgTb+)n:{KQɫxzѭ=4xʑx-E ? ,ւt@6UH,gOwd{;lkQJCw {E!^<Tt.Qo%zOC%̃p*s ۭUL =\T/7tBЉ.vgWoގVU֡%@^]݅ZfEYHy~o= (~ xmTx`-z] 6G-3ln4ꏪAV/3Rg"y沥riۋZ \6ӘN5$X4]Nj1DAj*9Q;<_ܹ^ OjmF~L: -/r|%јYai <ߜF'X~ˏ \ u;/%~{tn۩t4NZȍ:;cfnIJugu³hFh굣=gv}Qܵ&|( 5X3*t*c۠ۥwnmxszG} WqѨ"~T/|g׬Q DJNʏR @]E3XИzD >c=  {΃YBr67J3eԙw367vKsK Z+uo킥j秝8W Q> #5/ w^ZpEsՠ^Cj9ح~9qgZ{Q1 `i?v//WewmO^~Zra>F,]usAXm:;,ڿuXu$zޭSwK\ہ 3o;ko[wfmK{wLg}gVKh-@W"*޳OFhY+Èթ0Z3FjuT:V':G%ESi1V_#{xC/IyJ.9Q\*A'IƗs3%~1qxcd*A^<\4Eွ<:.qe 8t>O=gǮ3Z6 E)t?@љ6o} P QzŞ7K}n=ɫw td`wgِ-G 9ŝv)8Uɘ'>=N`Tɟ(bXNvx䢠Wz O"<ӡy8@=A zDh"/孹\a}SѝCy] UJabJ^]O8;OO$g''NCqPu|7rY~XX1F:Yߣ'z<1O95  Yf1D,JV3jHy,Ji`H#TkV+0ValȤnC⤩XOXrZ)ʃhpWVg[;3r_9Fִ:FǪEY4X]"]4K񝐤N` 1` V,MVaoif]|<Å-R چ('d->vOWL^b)Tze&-9@:#33ti 'gx u}B4w:cyzeFܥBNwj˥XZG^m\{%𞝄nAU8Lq~Ÿ3M*%Mlt:8ƪv2dMOC毲~ljZܟTq \.9%7R:bpz&5Q Qݴ O\ АdklrM9^"4e"+~glkmi۬B8ĥgh/FQ ms ֘gΨf\>5=_w乕y H$bæf^cdHͫNp[^ܼ:H%~GZ,DBZ@QZJ-vM2d%ֶd1&Kj$ӂ|2d5T'|hS꛲6MNdN)Fʎ4TSt L:PqRݵޭ-ļ@qz37ZnEko/>], xwb-u˥->ƠPh^WX>u[7kno@iUZP#l?=Ht.-軻 GGd88%Wx]szHNj\ֹI_qC Í6͖M63ވE0wS.hyCOi D#Q^(QYP20Puߓ-6)eCQR(GG]3NPPjı8Bc25%Ͽ,*86y,N &OM*1.N'[رk<0VXڦN#ZQ!BD(h2,^dz/+^4Mp!5{E/6.txNnF LRyVc=tq*VN:O>>VY²&-c05arC *m[1 @O<_/2|CG)ΎSSdd+ hx^, BEtLk@_Os{Rk@ry\< /Xf=oهЁN]q^EHw> c\>ōWVp*wrv0=X=;0g{@;mo6vҎ*'P.+" `d-qAa`>sg| 40,p 8uA(*hS-lt"PRLnk- S<<<++IogOoF2qޚUkȅAEscS2!w6:U܌6\(1}`bG̎PCc[JSX5 +AW 33vJ)Ȓ17g,*|LpGAP% ^̭P.ұƸ?Uh;5dwj'R,P4l^d#MJX Y1[͈vD~ۋOi4EWѽJ\eZT\oZx?OȰFƏ ̪,Il**KD)*ŲixR+ bin%K(jdQК[3 a _ZΧV'e &^1:FAwAe 2SL8F@EtyhdXDWwex` ({ngC_rL!jVR2@J8bGw Q38ffznRɬA0TCh:kHEY[ $E OK;ڢ&k ';ME\sd41 4TZ ( ,[IL<_ g_r׌JW̓ŕYT۴F5[:G$dSuA`тUMsHĤufn1.pȊ| Sn!Xb`ldH'%-VhEdz&%RJ4ScշTMZ-)FK[LPi^j<{`:lhE킌Z'jOTч-RR*x>J Fu2{,bGV Ŧ8,uir9 ==@"yGַ9Ktϫ]r+->HYL#Խs+_s+1jNa'l!wu[[|? ;X$,~ejnE/G*+7NL0yoU&sԋKRydllqg1/ƪ:HyPIiJnmlx+msѼʶɶT,oy~cwY<{皋t`E Oh:9ՈTT8Q%MT*AG[(]qiٜ3Ȇ A2pG @{4t088hrCL% FCRC&D[ۀST,Mw0!} h3bR@ Oӆ:]E`A)Ԃcq*wڵW껏|<?]kZDvkn|72M!eB~[nGAcH *=Lh?%ةdsrGScعYj7FTLXV TVVYeG>*|줏(eZϟ-B=^ӞR>qBGn/ U$JS/ F F,? т0Z8X Χ'1(Bɤ?2?J þ?<L)Й7ps {H8l44{D9£*lfݮz]ūs'4=@N$GJIdjG7QpZ:Aź>iN'Qbn/NajAZTCi0u0#ޡ Ĵ((S+O*\* ڦEw.jiAeuv1ƍؚ"/-Xq}eÊcQ>O$2g-^\7u?+gHBuNKNgfMM4%rB0H#r,sDa}.2 л]t93QCk3@3/Md'ԠGfbҁ}z|%f 5>4Lo10H5h*{UB0v3Z%F%RA)HP 6{?ǯQ h\u}|z2 7xʶ˶WDyޘy*R`,? g:Nʺ`#ԷGFjhbɂўV ^f"@u|ڴi}]?Cn5,~9FN_Z5HDh%lWCΩE/JuHȥCrc< AȦUFFFWyU>0+ݩe9(ѫ赐omuL+P'A~կoz}^[RdoEs'uLJ?k:K]w;!;O>csG}eI JmF6RKVSfO5r9dȤa΅lRfu @©,hE.,LSTJZ&ڨ]KkQXM;O=N3.=\] T@we-m*)-!kⰻs,]&6ex6--49i#`z]|9 Nӿ)|DRAK) 驮=]T(.[t611a\b()RmJ %:Feٶޅ,ʅS 2`g.%Ӊ#H;(Ԩ~G >BYsՏA:j}ٛW"aI9F%MIl p*̪LgCF^_ԹԿl*ٶH.&*Y~hZ*^3)thhsF%"llKfRi6<6Fh}ъ…E=E-E Z7FV>5fO̤ H-8Y%9YE'YYCQ "!Ct Q57)[k5]uگ\\": sʂs3PΆ&ٗnVL_Ͻ7t1:@u*w"- >%)CA Xi+j>&CeKoRe񽚣Z)%3I# ZFv d#a@C!ޗ^VGzzB9YT<}C;'h l3>AHx@mZC5HdGhD!Ez"Du47Y:6ji8R9rIe~H燃qWҹtx"B!b֌IlZ]RKqʩPGljQ¹+udJMPl-Sk 8T֧AZ܀ ӧ74tLՕ0 OUq'=0qw,ëՂ7ݍ$bfm6.N?Dmu)k$~krjZ uZ+3Y `Ab@俹f'w %^\kzhV: $s)$wi7W{jzH=}{~S=<ϫj:v=~3zKWjbҟgitΜZpL,e7o ]P\/ݨŴ-nW5yg0ټJEMD]WFA( }_8 jUn:.!5hSoS.Kw5h򴮀j/Cx8T hEӽFK>H\)u'ce1M M9͙;^QwǧH<nmFK*EOCh)se)j贲RTIsj/Ń&e˼\_7S4)9^ИGaj8+kY/Q,*{=^:Պa4tP:>Pܹ̻*^n5i18?$O/_(Xut ;2߼|{vi8|44IgH=_  ȉAjbK }}8x4^{߈GJwk&4s^R|-Ëu\|hQ4#5 'Wor71 fQDAr,(P>-T3@,="HAq\i%5+|ܷ}M9xj@$ok)*Dq*N:%S sTDR"e"C7}#woiSzߤ g=㬇wf[?!lض(ٮKW\Rul݈CF&AA8dÍ<wRuwpJ6a3 0עhkƞ`~ޏCq!R!6c9kVN~;]c~Wnw`*}Sk580XgM`aĠ-PGѯ NeW*z#1&evER(BKQiHDnV(vkZ`4F8q<% =} ߣ^'0%3dpf;VGszY?X&.-YEǎ),-:V>"QC0GMAna!z&ᛂeWAY73KLK;^{OXi^k0^swh6Yvx'qa.Xհᶠ Ɲ=~W\a C3/ZUKkpW uTC!odiuoa f6f66zܪǃFjsFifMJU)ޠ7f1 J5~ƏQɍn6kQi`A)d;]{~6x ިxI^Y g#ƍqYsGڋ+0 .<~h#}vNwtqj0VK Z?L9$٢$$<.I"%4<S䙚r^{n,pJR[A zR# v )N)έJĥθ?1E_IXfq\)S3z!lnlpLptu)#qp#6J_!8Ib^A}d /qH&ĉ2#Ӎ =23n+WDW|qo~Ew";(h_AHªCN shd-E:pQRG^ND^tNyR⚭6䉪ZDhQ͟_15ZB"'WNAiw", WKEO>:893S&%{,h9Y-rJT-7D/1rg&;f2 ANsr֣*~G|KT\-^m,~r+7Ed҆7oJxP0 x# $ =q%vv,6cd͒9g (˰<Q*a,@xGp l鱃y8=Ǣ7B8ĊE"_`M SX ^h֘]68Lcq-pa.)n9.xMT 8)2"7$p/Vʯ"tn<Ͽy³|K.FۨjjU# lŎx2$R`~ISƭX^FL&b4p(BnebÏz3LLtջg2?edgGCH$1g- ˼$=ϋ]SE R10]GiB9p<:H*ވf8KC7_AWhllܻ;/+6/>g}T')"ȇ*Ur7~P:lsKvo>! F>ƛpw2/IOJu/: C 5<8ПNB0&XSNEX^'ȢZuEISE&_:bv/ w*ȍ\@b]bbO ͛,x= ŢYWz|藁,G+3A*)F먣,`gm٦*S(G#˜.وmD -RHdW7l@ fbq@,;|ON0>ғ5?IݠF\.7@C(hW`po83-D&w.~mh{((jEfsb,b)_?!~oy!Cn:Mr4-~PD8~Q^Ռ0&6>2r}R%JK(dM0 x<akf&$dYPh _6Ɵ[eVsμdĜ(H YzJBŇX >$ޑ<$I BxG|Q-Q,:'1K̠35"v6brvD*xxzD0mKQ-:NlIY>UFUn k[r%7+V.wyp<~Ց!\CxoWz^|ǫ|:L{ߍIĊb|z"Y(>h_FMzxGX*;CO#W*C p -F>)K‹$VWۈJ2#ιe[ភiP!rf4C\&LYP[2U Oǰk RT} !5~a f+Y)+OeҎ$^g4K:b-8CЂp)H{ ·t@Gu㫟YKfWYWCe,Fns+JtK}O$nr}-D~r}o#yʸ7_6GEp_~VdVtvݖJ>f o\;2?ƆkeB\l_WFڇwt7Q#+ ;[nyE)=k_/+sW W \ߘYs[pf?+S) -iTH"\(9-eBBAmO&;$T*j$ct.4~ԙŧfTBU^ĻO.e~OcMycAo4i&LJ s~b֜S?ֱ?Sҹ&tN]TN01t!B*]5&b3'~t{\"HD[b 'גּ.Z'قsL B-Z0F ;N _!0qOnDw8.LG2ȓ]Pr9{L,:|3ky뢫w}̗Ys痿mF<-KLGaRYƢkkߵW񑗟o_xq(Yh F(A+o#mEوF|(7Ó{WS~X`;6Y[]4Q`CBE+?}C n7\D(:VEtLyna?8!Fb!fYÐ.J= {j~%Tz@H j*e%ׯẄ́Ic99ys B7<`; jPs G` #ό3j5$zTfK!~K\h #t0t8$ƈ$9sp<;*$pdžOX4USTLHF߿ `'#j#92+KIگN,$N5M>{v w k?;_V֜ۀҌR|@F@gY%Y.x6kU~G|wZ7{Oprjgo.)*+Ϡ1n^~E1SjT׹g~Ǹc,> L%1eɉNx1'FhT`\HF# 09x|g&XJm#QwLGlpPX7UeÖZY* 0Gjmm WO|_m\P9l}[s`XZZ^߻ޛ7u]I'oڥ'ɒ%k` 6 05-$CNBl:$_Cҁv%`fO;6tJ;i&iν6t:}=s}}zv=]xN=M|r {Uݧ.Te,tXH (h CA]^^ Mt]:* \Hṃ/,DRh`jSBs}ylo5dgdzY^> dT|Ib)%GT|YTBOU_:\_m]?PY۹1y%k=t@}zD|կ CeejLouPt f%V.`^$A2JB`*HW J miSoW5Oc.n=Ư/ #լz/ ۣbU{9imHO6p'2WV=C. x{ AnZ3s1(1 (~N/ -%71 JkD^ ??=XLh<|(vsqoRg?SsEkczڱy%+R{il~/Wi^5}0|}-b#̔3z]0Z$/ńq t;LO /~~_Z5"QS㊃ʃT+/oZΪ)naM@nU8\`ȯdr` 03i_RҠ9( ĉĆ!©J|Fdz*^W+.FMn~\_w~??>_5|qJ{߱op3]GHo2N&HBvæҩbZ1J+v'mn_h1`򔂎^G!8'G/lQq1;ئ{q0Oi&6i歸N .XSŽ2}d/ݗ#W$r4m&e| #~~鬒F{a bĒr*% paíEb\?^?ÿ~ GΨ՛bn}nB=X˔ïЛqFYe21^2igt0~,=ӿoZt܊[c0űR/*LQ#2Wkh@wݦ1s6v?:`'(z8 z2vbLg+~j|%oM5_xgS{^i\݌o7؏L?N# d-0g.*h2.D&3fÒX0f2Ƣ&cAޡ 2J\l 4Ss4w/ic@{dJX! ,/v?8Gݻ F¼&,j|d73?i7 Ay$FcnG:(6Eq+VoGlO֥ um롁/q4MVg6zg(`܊~{s) mQ'Kz/87= +K 3&1Ua]6*$$qf۽#c%+%E nْK+y=dco[|%f)o4Ķ Fe9miջ"iչ-Ҫd͉wUy& nx=f T8F]S@Ǒ M3SA6;:K !w8:dӌ_}KV"Ɇاn*+x4 Y3UFiHn6Td*dI:z+JO+z:a_WRxot4Ծ%ey[ *F 㦭 &2Mnt/btx7#> 3Ka`H5T 9Rxt^6͖̫Q30טF bנFpR+͡~?1h ;NƎؘcvw9|?T;c zN?`XuЏ#~_G|sg$D]>,%%(\i>/ X_Tą-f.kYG iӽ&O` wAxWef\l6MJQcث+% vZ&vRBrf+yrЌ8VB7f) U@V0 qa\`MF0xab139umcs0]l$kڻ^Cn\nj%tPϨΩr=xQj50tr3wH[Gyt\fFra4Qk t1챞.?}鉟V=;qgg>S߇oP sPZ[wڠ&*^d;9'邸dBsM>*NN_U]./ Sar'؆s9 [q==(M cAoVEiUW{ 5`}Id?٫V.y5pD荅jCU)PGPKwbtKTWO]]q pkGe:rO&֝c QnX(D7pr~HVF-X(A0X3xT:jWϩejz/\%g#5<0Hl|XZ+ ZlrNlr +9ҾP>.z0hkhyI $^sbMo׎X tX|vIQB:[b巭*_>۰Sh;-EQΗn Ɵ}e`tODgmTZnX<}AF֫Pj=Iu_!!RƦYe|FÑ %i;KwvfB*ZS+u+&cT:#˒$7bT7ۢ.0Qvp5,4Z5؊e\Y=gG1M1sJ p&rMIC*f;R`+*Z р՟:|:kՑ)F-L_M cRhVmlZMZm`a9MVcrRI\lr,//aPZqJբOCMƫţ%/*g{ʷЏ ˹7TXOZ4Y{q yB|Tâi)YF}颙hgE̯qUHpn(j.uѫncFoEaPtӝWL bmhB 4 HHzf %WDƕ%Rqk%oQroRGap^fP23Wغc a/BE[`6*e ً}嫽*}m2^oԌٟR+f̛wƌ~N%z7 0O!5]"yͪVrM[vN@jkչ UR+QnVyTk={=[oy+4ϣiMU'Y9_x0Ze˦xm2@H2逑sD`<35!'O  3a?٣G`~WǫѪULK^)` ̕17Lc_!EJ#vN7]"<,HSe rʾurS 8* b UE;^BӓAt] H IC`=C]2q^ˆx 'ƥ|a}Qb- >Vh?rӧ~i@ok|?9[J!Nޤ<>Vg7;ԟ}'IW/2K`âuqϹa<͖Ƶ [0,K^QBry+;e/ e<=4NxtttH[K%EM zQ{H0%tH3q2ש+SS4j_Gmo Bu8rndO# bf1P(rEsMO г.:|zT]\*[*Dz"og0YPM}rE"zLBz-ƧOqomImi;Z(Wr+J ܧ x<&/󧼧g"~O#N$)E2ʫ,Uj2~CN.p@st|s>xĸ_uqժ~ARq>_׫JƁy C@:iv8W"W৯MSr*eI_<1NUq*S\T^OIId.4l2P/㷐Xo _'xx,JTh}>7zA4ʝָZ@~ ⁉25<%rl4sf$I`e p6]\/#5ܓ"|IYCZ .'[hW\51 ƞ1",Dv76gK"uh^(Q!ݗ(1wCV.ë߬27nrr^XZ]? j52~~Qz_#5So2+g^bZrJ%w%yFEO`CxCԆy`cَll4lܕғW!w:fcܜ&4,( vFehkj,Uc1Xz VCegdYMV֏8F#ё^~~eOWJm^iWja@r ^4b#挹W-I{SYfv#!!hwb'ctV[k:MNKWŭVZ}kZ "kb tGD==zٷg.7(Xst-~ƌ)8m'6U ˂<]a^.WTPx B 9p8pWa$G'G g ,^7ifKAM>y;r5F+sEFdWrTӣ2ȒBz& EMQO9Nlk$;$])) >MHUzry4e >J KJʼJEd?o2Fi3ҧ٦ɻDx?aЯķ4{̛ܭ>+h1ە^eɡm(W_x~hhq;f~bK*ny^WɛQO_ֻ7Wl 91/KEt:f^ȏ&tz ,Uu:EJ%9q⵨Uz[ r^]g3'g`pF=-rRβ \A0wRsU<@JN R3%,# -h*h/` q1׎nTq7n)flגP&QxYNYMLRd/V=}'S] 3JcÄTOf%*`޾}1^ُ]wdǙMFXMqkhW ;V|:h\F}t)@Q"ZggU2yG g0U[TjdyY{QY[Ѭ5J><. e}M6,ĉ_z tx%Mxf%32|#9[FX-YQD,B) z!|N˝>v)^>Nk}8BꠊUCѢ1cYf[_yy,l:=95Lf]l!/9tX%F%z'g8(o 2 `tӻ3i+׽~s,|הsm SJ^|*wސ;*rhWP1gł;7^F5wF|aPE5nv\.ͣݸ3FZ5{Ff/ioܕ3j>t#@ouޣRsJw2u,/,|յ5+qv76.-\Z[m2̲3kgف1=dGnzeV~Ze,9ZTZS!SeΦȝiRܓ_~GZTGjIX[}nղŊE+3\2xoP3JA2^S B)xwK]:*nSKfr8#ՊPR+5Umcmacb$f:"yE^ [,i=vV [[zRE+-v_m⥥P`A(_YQ[WGlB٪p>{&^ć AFk޸]Qđ<qUաEL+؋L1BW=4r)5X(uj*m^JLvBi)X*BKst˧1kHY,L]nka55<8z5]LjI2N08sbƮǿ-Ml!ixo;7o_e´7 [?|g yS)%Zn TVe! )S? [n>P S-:FQPoQokGu |BVV4^|EouO?8~:\ww]WRe!cHe4;QREOokj/Pk-v.rSsplsWVKG-'r86 $H5`74Y4~ MYe,i%XL0ar`%1"1ߗ`%X%8mS%XxAЭ9zǿ(  E6 %X J G$X ̡|вci ֠"ʢ e7`~ 92La%0GV:2wI0ԑeCYF%rCY(PG :%ȺFl^ :I0ԑ$]*PGG%}USVr)!e)R8ڋyQ]]2 e7Sp'Ebjf3R?b3vR$KS(̉bZ"pe 2 u14hJ>0 N4@5(Ae%_Z_iAC!'˙փ`ϨG1 j !\aC4:/*vi N@kC.!!J Mh HʙVBNq!!A(O\2A*&m>f>D`r x5R'ඓ}ؑ\קj_o'+z P|րioJrH%! [yi(<߱K>2”4C`3&!MKEb ?K`rh%( ,'P/Y|$HS ,5qssz\M/0dLxӴ$ۤ2yě6 W?aRCm? ^ZW0Dq _}4_ÒmEyI\;iJQdome‚:I,brkm;S34mZ?XKReZ(04H["zL'b p-İa)svR'H(nnnEv#4l"w\ NKijh]߾DtPn=Lq"kYc4gC4DtHZ )ݴH2Gi?$HAT))wuCs5<$^PC4wcRG)cC]hl)yfT7;!௟0&h!?awHy1D0кd%5<59AyzjAl#NƮO1kY(E(XHD{,$_+zhbcz̅Z98Zh%ꗃZc-i=) `t2Y=z+HT;ar x9u5(ղH[97F5&)\6=\Ї%hk)kX=As}HaλH-^ʽKL0z\Җ\^lI$jRRƒp\pz'IӖ?:1zYwޘ_)/0U|8A ϏRHRt oHOP]tP A5u.HKxG?ŴzZA:|Lʗc~/!qMdROs}El%J}qz(Xp }WZf@OHQB0@/0܂$1p-* 9D- UaFA9u؛;F}Is )I `%,KGRDv05, ED6xȄQbVCX<4$>뒙dzwspg2#M֥v&%%ҹs$ t$Zt*ږ \7.ԡc>-tɝ!/SH'ft_BG"+5Bm!1/$2=-2`(=[hZ҉=IA>JA҃pH0ؗMՉtr8 h@^HCI!mLVH$Rwbb2N C{2#d:$l YaO"#'3ۇAX&3ڛI< ɾΤN"Cag 2Kf2Fhքt0@Ѷ'~a K 'c24Nъ'Ps3 9H NnzgÙI(d*@#*hwjh7mi&A0/ j [S$~%a\8`_tehHGpvyPD3P䘐21ھD:a!`_F'џ!1fSvR}ɡ!R!$<:2 fP&%s rq? 97ڑڙ؞cp8"HQsb(3#C1Ѳw2$e d# ={";%DFtٝCѝdtg'K1MZd8$% k;W._seZ}zֵ[Z[״Ԫjv (@ƀodiȀ-B~cQ/dIXxc㍕7V>Xxc㍕7V>XrcՏy8AׅI^."o2\&[![ z5)QmxE]44H>:sUDiy,֊45'Sab 9)`d|rR pjmP su4jܬ ~ 1FNtŠ8oS%#gw $kZCDm%IP3ueP2bB@u Awj'61 r(d}w} !gèϰRw`+M#$Iw1H`o!&( ̣lf.b: a@aRŠc.vt 0w&kCh\qPP00Μ;E?aNs' XH/C.3΃@ =C,fA?(bm~'xE6@u6eWR !L=񛤮)UMNY v4>IP *TP2o$<ͮE;991}}rYa+P$0jgO#ݪQXx_LWu)v{eɃMl;ʉXeC%BPyHsT399O(*+.(.+Vňb\qHqT"2[5#q kMLthN%>|K.3΃u p P=P=O=#Ar҃?=Ӄl`@'.\s.0e\u`K\2@/-|iK 3@yPXjwP 9_~rnq (=L|(Mq7h=o Yʓ'dvo YozBDQ :'dW_}fղթVd0VAM''͖Z}"8#^"'QPMRdqН`<>AC {)#ԍ@ĝƝ?7P޼ Xn#X9p~ Ծ];Aυamln34ͨ TPrt݈^158(6996ז9Qq1to<-~P՛^׭ҾJҖKTw5@b3"2ETWIT ]w]?si֥.vp6hZ㇨꾸ƩSѩujq TwPJt-zz@Lx1f5f0f'W138M6>|iߙ,l.WJdD v0D O6~* 9+;WR}y2 ~i24>B4Շ'C00गd2goG% ۇ j)ś !0W['C$T I`/QJr sC iG yhKMkܤE_&Gǝ|ʷ>΍qļp>+LʡyܳԄw7ꗷ@* D{ 4kW]m+ n:bR-btm:`v#9o͌7H m 7Sj r=}$|A=m*$ b7ƁJh\%xz#/,a=Lhd6 ^B^D> endobj 16 0 obj <> stream x]͎0<lc"L~,f CyRA\o9l?/Øi[қnZezZa/ߏyW?.ȚFګϥx%+#*v>ghjo2?} GbThQoMd#\4z v\|EvZ57!WX3c#낙5l_I>:K>Yӿy5+h;D⯥W#㼚}0I1> endobj 18 0 obj <> stream xܽy`T8|νwξY̒Lf'sY#A ", ( .X`ۺ-`@TVmZE}+Tqi5-bdsg}o==w;ٟ.[y"E}E/wɂ#M\qϡ|!ŗ{\[ITp^^[9B)/\`y]uQw!47k9BWWB=|ŗ]OC}, yޒQ tM% .^EODJճh_u=+d='@?BQN Jh2[6r{>‘hEeU,HV5,ӏ "7>|Cxt|T=o- !ļ P'w_C:uh^(W&wZ Ps Cqt 5z+~ƣ,ڿ+:q.r_` d;SLt#2Q|E.Fע؀K!9',٧~+n+Dgp5ͽ>qaMqEO+7xY8yPʣs勞W5T,4?VSoG/+<Ee#jk,8';&!jEDGpDf"ɼ]ff5z1,LUur$N@ wkCC,+u>e^agqq_o@sM0^TZ`~D.D'{-9Ͳ9FAmnd![G=w~FDI4Fz.x| 1ބO=\`tcl{ÜɽZ0~Y()N*+;A7= nǧ3ٸߌ//9F^jN.]YvEpGaW1]] ȉQy"tZÛHn/x,z}UX؋׀x3e0Ic3K`>`^abbgooq6n7aIމ ]EE]ۋO_.W`Ej`~ ͈8s0ka <o迋O2)xs5#Lհn6.1]>'+[Nϙ(-~={^.&[%7oo(Q}d $#w3ǣO@w=h3 \`Xf݋;t+`5R\Mv1@>v(v}>܃Ʒ#-݌-B &<-gP]O&rXv%rw2gGP;xڊsSA{t2` zd*͟1zy`iwn<o].Co f z xnz|ΤDBaO |g 1r^٤"S8(ų W\^4+΃]f|@0o[[5r,ZP6S6U6AV/U2 SsGp_q?ܭ欜fv;ͳ^cf/([~P|Yl-ͅB˅' ,W)tr/':@~(|<Ӌ,;w=;`^~c;(ȜyT@ߠAw.*ԍΒB3`kJиhPcaL0Üi_A`g=0& D@e.4}нGSwEg;Κ=̙gtΘ1%Pfjҩd"F¡`@۬:FR*2e0JL M\4tiIR-hc.o'4Z梴J WNq0=F=!4a:@O5P@y0-0IMO3Hw&Nw&Wg#,jQhi^*BC_ Zߏf^rk~P?[0yv(8ǞI&h>7 Z¢sDԙÉ &sC! $YԀ_7U a.WM^7vr},‡ c[ZpK2" , Ηx,FB1&ޱs̾P/@Ç:eR0[Dt>TΘ+t{SyL79|:+; [?o3OӋS M=¤ݥ:kLM:0|T7O˺Rq,@ÝIe?9 %"m~4) h6rY5ccc^OYg_H*Pѯifώ pJϞ;0O+ϊeiqMmtD^I*2TGoj#̷hilM9%xM~>oe[dHHmNINy|wFoQ@wK9۽`33txD 'Vj 9d-b* w JLE< 0s9_T;V0ȍ\aA0J\W#xoWSȥg| Н$}ل16Ac2'mKVL0b#&{Wc`/G _WY/~sW >ku~eq"jy | j\3ɑY=j/jޝS:|{%o"0X`?0?XoJ &Wu*bHmԕpĐ%k!gC9qL+v+0V7|_4ˡVN[rrYSGI V*Uwt{ᄌrFuV۫blOxN4>&Ɏݞٓu\{W`nғ+릶`v-[*b9T<mNe`o D#\,`8iIVU!-%ji]Ց01YE-nK߲rrԢ桑4Ydgr78'a> u Ļ)#zO: $?\pț F9","20F\i8qe% L[~fp_ A _C̋E㭁 x75+.rn)H- }U #&L"ʩyEN/N6Biǐh Z8tl46aͭM&LevHQ"o=N3jie[٣oTb+d4y4Q@@O@p0~ZV"tӕ] ¤K)QSf]% <>$3 ƄL-4$EJP = Na`a:ʹ\縅牭@>!;Wӹfojd/_^]^{̈GSW:K\ܪMq@g.#/4 ry<,Q:x1ӯj'=ätU Ng—\ <}.da8`p:Gj<|Tפ7$$O2Ej^sӳع)sh7 n{ [*B>qɼ%\U󽗻6yՇ57 YyC^7j؄;#ѭeӊRQjtxfu,N9nBC }اp *^`f"R⇐&Q\Aup;spc֊j%V(n݆&AJ`. Muzl}62=L';yJlw9Dhj)IP8w 25:$@G\T{^Pp; &wFs.SAKFӤ6JA<#ӆ߼.DDJ,B>d3az=aj=}tO<#½!r+CY7I ;Qo^hZZ.f#fז( z 1LdifSRBO|UPk?B%:ňUz248iEJ;`Pݕ߯9Bǀ7q»HoGG:fm,ECSnK`nSc9fey('SƷgi~46+`Ĩ]v3KPwȱUa`*WJ$Vˢ4r&pVRݍ7Q+UFcDvl@S8lc#ZS׻9s$Psr.Iǒ-FPDg3K\|ɔ]_u/}}翇__3ebpB,R/}{"@2wJ'8rA%Ց_7x;gB1DϺBy$,pڮͯXQ؍7T~h\7dܕr B"כOQǥu[8o* ӎuDy(CD䇆zǩ鰹8sıM Sc JIa5G@.? ]7Tӵ[cIq,Yhf.%ύ;.~#s2Z'̫jiF$t/ DqBg*QYDMDC [+aAM%l"h?0?%p0 #|`T'rG6K( q) CD4Y0swhE %tһDʜ6.d,QUgG$K״!AyŸŻzWRv43QH<JWiaes \M+"F^YxE|un,|OnpEOrTLWkUk'>xmWحBhQX2:oS5ٷNFPٛ.r.N^%zecoJT(=ӠЋ vPajj 2C|Cnr9o[s39!ޚe|6!o" ֤)cm*>XhLeR]$!l'>BdPRYRTAmm0e_-眽gqןhh֮e-Ջ5^i]ouZ] Ndh墋w5%Z->kvr`c%USiIL7=3n&20,vl*ݑ#꬀'k5w45G4C 4t:\ &0]4YVet|i7@*ȈZ~|P4J=mHGP7P'm~05O &K2пZJ<15KUPeJn /9~c|<韰MJI?MɅ-m1{7rn)y&PluW\Yzܥ\j¿Wè>@wT8‘ldxHjG11uxu@kY5dU.k"\ Z $+egWkީVZEpsd$q hҔsA* OHOHnHLSI|)ʈNuU`vDX1Q \:(:2]Tڝ-H֟Ies2p1cmVO(r4=RlI}'\Qp@AI.v>16oY*+)pǺz" ơap~+? $cR$68cI~Ham%([͔h[We@_Np=nvTƥn{܆[y|ؼjўe?dS~|tŊ埻뎿)vŶhvICݢos%v>Z~RtTa&bHZpffR`*y~NL:hN,l06ɗ>ҀhxqoAlr RR*W F}:W58c:{LjoɊ@i~`~ļ݅TY%P"vcV8Xk&,}t[ߧiԹ/7֑qL'3F#wEaB<77d`PT ֗w! `ѵ1_PTaQ'ꙑαNrƌ0n8ab ev3s( "fQZنpVb춰l.vI*P6o{pиQ csM-&n]6G1cMXS59+u1Yn9.i2~Z'(8Iٰ8LHrM$3ʀ&kd";v9aJ,TQ H g$1,΀TEjj]a|z U l̿ij#u Lu9Kx=TĀ|ԨWZhMGmL&V&V&V&6u2^YW 2RSd<VuuQ (Pd;.p)a ~ّ:fnI^Ĕ,W'|RR0:QՠتjUc͚3..Y0~C]'3ɾ7|SSޤφeJ;?׿İrL1!oFmv>WbBt:FUQU/X՞bW/oG"++XeMvݤJ6`6H)^o$CVy\.'ƭawOIKF?.~2LIc6YyhM66G]7og_-CNn;| \末q _lv^}᧙@]`y U7^rO>@G4:քF┉ȠxJّU9#2v$ctIcH`$ΈZ w*%Q5#? #Eǂz)_uQG-"! LBJ{R6 *AbDTW\u$آ(>*ԥĺκ:nwp$,bN M 69g@'|eﰡ?N:tXS]IS*@;"ʐn(Cm@I<ċ 1 ~HtXX梷t#]H:ҵt:uCxԈ,9R(R.# G/y\$t;JwЕ`@zI#I~HPPDrM0ͣϠ u~ k^ ZV8 M=sx $$B.vr} `?EiDt8ˉGع&NL01f@*6$ĨJ˜ƀ8Z*Tt:Fb!#XM4rg ID>FB I5#oLih4LM4%riRhqL,FNVĪU)^{{ ߇qqͰO@8fl8rP)Im]s2edX]Ne:c3ʦ,"Ig!E%H ; i!2ߡ؀6o%mIoٜy=~̋!QfiFpGͽ_:N{v||`F6`#s} B`*IN/cClbY [,82+L״bpdkXf<&8N;ʜeDCt8Ig8-ےiDr{MFipaJ{֖ueL \ %c$жΔN),e-4>~Bb}CcsX 8;9G1qmxCvd U2EcuN)&E)`PA8\@"E2LBI(Z8y8~R  7 YCeB|-C$ bʒcGI:ޒ?v0Mƕqix$t2'~ȲMz w>0.!A$qP_`M HM 秉;b)j)-9Iơ1A 4Ihu+Hp2%W\I6~JQB%$Q>TgGm\]}؎Mwr4<)_lcCe 1Cw3Kdd'>, 0  r( @Ab]ğ/6S 9N6bjrrndq2uxǴLGWlJ(L>0YVQ+N<F8%U`c*r/E3! Dll MIaq:rn4<)tՔsc= LU,FpЕ)I]d+l+Ⴑkj~h, [[\*տ?TRjL5#5?"u$ULSP4[ UXff1 Neٽ>Ñ"VԏNԍ;'#W[%Z֠*KQj&Q˭0&j9޻rD.ZnxzaҀH$긾.prn sny]Gp`* ɰ6o}v)/TwoܴH[ǍyaɛDoz% ؀Z>Բ!Έ"կWߢ3>I-;9>}wXV}~.ysjn^ѩc/1Hyfd<$*NiRڔN0 &,X`g'RKɥ M}%BP)T 1!.$RTM*MeS9m"]Jt"3|6Uyu^uicڔ6-ik6C5C=C3C;C'Vb6S!\=0{冁g9K.R~B%9|o}~7U1I+"1Yy{ $A%)H$cAaJHڊ~{4:X^"Xtj/5)I^/ꩱ'-'SrCt$ zjX&>7.n$xo-xQ#,1b* Pb\Jъg;>ojƦ|ǧ9[ž|y.sI%[kpnW)_iLP|0z&I W9P j~W(S>N eɲ$k[)Gp"JA5ũ9'@" l+xx<=[=JƩ2"Ė|'}t z#ϳxrI_-+ǻo&`@=`?*y^ʫ\a @R鎅q#)>.FM) TgBh>J@ GL$Voڗ^X{+[:)4_ryfp33T%n|Q仾M$|KivaRrB׾??Ə_J"JZ.˨РEݗ{{777yu¿5^ c?{fin_'՞Skʙ&;F~?C8>.AX1)e2fOh6=XOXjJ]YGA`>s$WT#yVGItmX|*S4T"ily?*}~?!b F (iA~JLcޑpFIg7>;>Jyt|!f%;IMT&״Āhu6^iJs@'J el-D}c#$qu+;h("zR+J>'b̬K$v=T!KPNym3d%e$!xxݥCA!H aH-YkݥSAA wwWAA }}>t7QPA$I$N8FL@jpmz}ݔɼ4l,&WJ-X,%cS'*#K/$-9 $%Ϙ V7 @?>e>]R"Z+J&&+>,3AߴDEĘR%r|f.{yeN3ϖ33|g;1 83 fYe5e f :SSBn&T%.SJY>gM٧n-[iÏVOthe#;߃anb0gш` G"Tʲ,V8P4*U-Pْd0#^&֙P5Gl0[@2,Q+2!}l9eYWD#s dE,~bIb+ZMP<;f |Gq'(. ]DK\v$-c.j,p] %iB-iϛ=B ~5H$ gDH5. B",ZA%1Ĥ!9eC.a*ɭ%AT E F&BfsCux8[ՁdBKKM 3977mۜ+}Wfsq| fω[{EhW!&&;ScgfҁC++XXi U_3$6 y"zf36d+*6Cl75Rb6&[jp=\#ʄ|æO\z|0O)U&Nm*WF#X#KDB6x܇Yx/ޏet::"F^o%B*]K O2V7$ijW7uv\ScVQ'M^"9ѬP#Ϗ|}g>F^_3fVY 22{>ўX1yWCu>O(2x<јH_4`bg OL,Gd}¡x22/cX[}kxS+B>?ۙd_N3kO$OIqB.)@NN&RRC"UMfZO8lj"T??^:<nz%Ćuƻ}q6Nљ?XJ^mPR ژ&z{̆i(;HneAťShcĉJ/\LmM-#se8$JMMӵOXZ.4_x*lvATT%M(M{GzzuTOLu\_n獻vB${omx鯟hhI1qw![4yUԎG61*8bhBBDB8*HFȖV6&[zXԃXi + bQQsI9~MD3:)Oh&қy b֌l8d\m&SS8S0L2`?XFyW3 (T|%! Y r4Ҏ 9,:]N8yMZtZZ|BUo((.'$R^YFt?ȥAAA,rH-(~&(xԠm(ҍQTh5e}m/tP >nN :{x] Ij8%!K>5jI,0aVte7w{ك~)o@PY4#٭թS\+USNI0N\cxނm)>ƈq8EN^Am 0sv(U7f#WZcPaއt1Nuu_ S86Ճ.YS:"-omb̌XݰnΥH.Ok_6'AΰNJ{iaͰ)de1$"An)̋}z4`y[7#1.Slj2x,âla C @#g7[${Fi Y,\mhǡyO gi N-Z@_=f, Y32e98Y|.Kǧ"V iFȍOt$kR}%*q9|Ki. o*Ќ H@vx{.̀ƻpv~Gш.BX)N<+OU5* ol8^x_Rǩ{.4>KSm; sk;.>}s̙[_Wѵ+({V`NM:vRQƮ??e! | {,`0 ~5H!<>n`$(wJ;PPrlAI҃UTYuz^W9y4Ra&h1@P2JU8P GU14be a7Yg,92Ie~F ?Ŧ [ @bW13tAHl6-;ǯp' LY9nQpz c(?{˭&^ij偬**z,QP [I>L|l *Qv<9X^G1p #٭ve03&q:hODJ[X.YI1-_@.ݶ0I%7]=&]m|Ҳkogj&LY#ї : (5@ /= Qg;?;w|\U7c4~ͽx73/3):z=zHk#Eb"2RB*\Nc7[TÕ!=|~٣dKDrrhTQT.Bb%]ȝ] iB9\ڱ)$P fMa[hM[n {n^/kko.8g?L%vtۿU`#\OC>g2Y,ejAнpD8eCjYrYd)ŒŊ} Z/KIqEW?r8FKK:KѦ( qCqyjܞvh.hNɨ]D@n|,[Ued<*TtL ,ACΌjJhfUߦIJ EHy˰^v R+_ -s K # ;L]GHL#e B)5ڦX|G9] ~|̤du&4蹷MW2#T7.-PۃR7>z7)m,ؔ\*#G)U[.5-8%}0~J=֦om[rہÁorU:?!pC`ོ<@ċ|)k `KOӲTpOpwsodAQg/OaS8i9/TFmѶjX$9[1Qkg%=d&Ǩ@K M/vK0#jTJ *ĬLw0r|t*=2j11X#ΣmxϏ~gQcL 4?_洘BA,X}m]ZHZ&-2Qo<]ZC p@U$$i I3IZ4Uz&T!i&I%É`3W@GK>.P3w;o:\i}: vmh-/f'{Nen|?.jh Tʷ$s*)ҘNkRI 0kDe .f!8F.fQcK׻rpJ:mqQ$\XY[{.*mqv[#)q&CA̤J/ ƃɐ 5m:hq^82路"$t*q'I I*IP \d&MThpzBLO -T+ǰBXxI`bTS=x KvL'm+`~h(M,vc-K2dF+^fe1[4)kJbD?}"v8$Qƨ_ YyEkQAX )tI0v˖ɛ7EVi3P0`V(ՕnUt`f/>JD3 ?ዼE=eCy7X {Fs*)GzHƠG ~T$nW4ژ2Ui!QXk0$ X6|@HCw唃NG*E3?+|+yTEh}۶_7̀~)Ľv`"$#h<;Y4yK<{.DWBtSU1` eM++WWWooR}Z]@m>P0dӥlNlny2vvq8sԷi,H@%Z\-u,!lj ii.nM1⽢Ǘb+Ujxy.Dj`,b]l$MA[uӝ&78m>3~'lb5Ya K7Jo==-FhO/1E5QrM %m-|3řhnK364om>|hMZ`|ؚ4n|oaNM/u΂䜮lsB~dQԙshͻńģt(qPKsQRCI.* +4wtpt6<:l0"IhBc㤉jdL\0Q2`RWdwx:ODq|^)N݋Ju\^LnKL%`$5$ S[ IZjjPH\p[rAB."lL\.^c#Ւde%r7l?Olkx9 z#9Z “k|&ټj"D"Bu9pT$'Hei{k^CjBUd8]euP]>ɋU2*ܭ|YxfX}U*V՚hu'dyuDͨxF'UqeU,΂ʩqm3A,/ ҄=گi!Qq[X~@@H[BX@,%,-HeXC qDƍs*9];mqij;qbvdMVM}R]c7,خz;sߝ;sgμ̾OJf9X hvXsm卿*a'ưf`8!Ü!veG `-38'7 NJ';׌%qkcu]Ʈ]WS.Zذo$2_'Mbּf_b8o-.\RmgHv\^W_4m(wJE뗝הn(tl*EYeI'm[wKohhܖ|b_‡[ަߙ|3ss_} ?I/Z>'jis?\wGOyw/(ʕzNZgt9[I-+J~پrOE~y,yHz@~`eZ/Y/bWWw2ٌoGf3r=@N4H9rylShXgr9yڝwq7eeMrc>yok{s,=+?c퇹K忒KrzYjyT,-/)m)/&5K112<{6oڰ-нu/.2|ߡ̅?VYaEcT߱`MoD%r׫y7v턯zҍ턴0|7᫞MnҲMyJ>S UR{ s-&lrzt'xƌTcSa.?8<Ӟ+mfYRT _yג[I˺DgmʖveK[ qtvBzZ_0[rOa/8 KZ2~e-h $_ۇO^)q0)qf9Ŀ4"Ohs afq;A=Ut _"󙴕\沛[0ڲ1v0l[;G??Լ"{5}kA_Jw_|QiԪמ\;/uUV6oKf2c=fcgizt:8 κ*! IYSY8[n.j.{J7>gz7-=lˇt.p7EJqA7]|2*R/%sl٧! {اY dA2ş.fUۄY Z<"u`TkzY̔k6<1_J;~"Cx2˜5fΞk/؆lr7wZwE8z%:,^lŃozcӛPS^.7׶m4td Sf9nc| YnD5J|:RV.J*>Hgʥ٣O uW!|& ^|N%)vG]17XC23YKM,,Oe6˗of=o >֤ >YS$ ){M3Ycķwo ޢ~XkX=x"xU mۉOT7bi|\l!xħAe{Y&VjG㛧v s6<7c|<7Ϳ_ c| <Ʒ1O gR x*EfZx[;mįmrDv,xnOse?#>xO$BDZp$-%A6Љ@WϚ[HڂAPg>D!؋l|Qd*;| g*j솁o f;k 9hv+?U-gFO$y߻\QB{ۏ1av2)Rmx%oxϪ*T!~= AbxA{nD4^U8Ϧ-8".E$dtHhyƭNbTRSxD“j1¤'5cO>oH+dzF~^}hDeGTk(RpZ3Qi<-KN=)~Lb8iti³ä't<&FVqzeҥ> eb$BGÞӸQQ-ZC5وi-#`&m-u \ V]HU~a"v&bMQZA")B"݋Vw@҃R'־ i/ ">q.5.tbhwib-(ϡi8&odZ2Au8c,lh1'FQ>Iz:R^g뷱i4³0EcCBMSiW/]Kcʔ_<iN^ +Ԫ=e;7Fōȁ:IsokPvEWŮ#D4}XLb4>hz6@GsUbVpO=mzNnNhh_C{{7&5s^|},[V%M]u:Hv#n+9GƬcZ7an$َf<u;y e>~quw*i(gI>W'h,ͱ-QZ+K|#Gů{8-ϯ#jڱv\+:;ø24PZζT܆+lN\ό2u8Nkþ!M}\zHBq=:U}Q߇(1GNpIDB$ jK0 F#!-'5>ha6ժq$ ܓZ8aj7zDV^x$IO Wްϯ'T}@$5CZ8>T6QG¾[)_دvihP kH}էrթpUa=k=P[2þ:8_HFZFG jCpaHEWrGT[ pDFU?WcQ=fLi|T_ȯFA21LCCxG`!DՒ'Q$j5ѧnT 3~}hbL EOkGq555U;&vHsFǂh7"CFwZ^kMiAH5rۻoᄊ}ރwz뾶=jK硎{-@FyxX8OXaxyDDD#4OC$EDȏ>vWcnħCZ꾑ΨUPm7 )˜8T-cacpX[ G4RR=?64CԠ"q;HT`'|AhڵPPD ILOkCaD -Wыh 4Bu}~$LkC5oީ``,5"xEТ$3>1 DF9l=V?j|wR-78_hZ=9EH8$Z~rdT1+&Xx |Xz6-D}Cѥ1 W6K.'* aus=-ji5u[wAXW_u+[5mkd2>p2#p!=b1NcZQ6!YpzcU%a)UeCմDY){EV]s!͇7|x!͇7|x!͇7|!`+ [dbz7jvjYF|/o@rx}c-+Ƈ!-i!n5}Z&ruZcVOZs%_=˴LvNSѴ16uVnޅ/i0JxH_MoIK\۞&Hk/'yDyqHvɞc+\X{޽\]&YJ@ /4TQΧg5zW -cؖ=8`o)A){ fA hWp%0|Pޙ?rs%{QD'GE~D="#"%׋L%"WEn{̢P`oF,́.dHy,ס:Yx}dt4z^y}>ݪxO:ϻA&zBP!A iHՁS]ىcjʛDCVup<[Q*G8*uHKQX@J+uVH;S80Вl}R.d7PDOCZe$<]]E^&r|q"(0Qz; ]Bda=YBDd!"GY,tf(ճ ?3_-iaYuHgRJϘ2g,_Lhͩzoͧ)r╽I-VK ZL)qTTt~$14kF{TUuH= 'n,qgwy:Iσ|smN$4U~(@ȯȏ4G>xZA&<&-^)OXv#tC>&zZ |- h4 JA<ȿ4ϲӠ eOG*{bwtI4n=@Qh4EqIP!I4 t@' с :0tЁCN:0t` C :aЁC'~4 tɣ $h$㠓0(B h $@w}7wþݰ&nwþd nwþa nw9en& .p\ .\pQ\}~`?1؏`?1`?Fc~ cٿWA k{!4Ir;qН$ t:FP/0  8сG'8:pt脣Gptс8:ptN8;,>Y@~~$;@Aw6QPIz@-H8H^ '$/@KH^ y@ $/!yH^Bɋy%fก!AhA h$I@GA}c$P܍̈́ .` 0\p .`" 0\pE.`0b)aĀF 1ˆ#0bF 1`#0bF 1`ĀoIH1Kl5fØg1G`1gn iLمSyQQyRRYQ,Q1[M׿dz |a' ]l1yv<[g2n6ϖgKͳvFsn5-'mMZVZFZZZj)MNciP3^9d)Mfn\&>'o)]rWO5wiu s\2>ql.*YXWokUkkǎ.ȻfڻTK}s.H |=݂)xmZ0/Q5}s>ɟޣ "W4gm;zI|f략M{WHD1ӂ%cwO{_3;-f]=~sk;i.?wydc#X3W(b/ r z೯4v33E=4v: N=abc,o.:g񢚖^ϋ@- Nt=!=&r ^le7tF'~>&G :4UUM$ YD*?5P1P=Щ 8H ]WdR% ssm0SO0>)"_B endstream endobj 19 0 obj 26376 endobj 20 0 obj <> endobj 21 0 obj <> stream x]ˎ0y /Q[P$E/*Jn+uA>9.a[cXyn=vAe mT?tKɷsQ㶄aӦNSQ~}xQO?4>WqQU4Ts;iCR|<栌5UBlK(Uը~a[)s)TЪru[ `'r`O6ZނW :: %[;Y/`ר_#^߮w8\[ɥف?Ψd`;ٗ^UbC} = = = = 1q%7o7C^rרclx|8Jv+ ;Uw1<0st0opfd7l endstream endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 7 0 obj <> endobj 25 0 obj <> endobj 26 0 obj < /Producer /CreationDate(D:20081103123809+01'00')>> endobj xref 0 27 0000000000 65535 f 0000098410 00000 n 0000000019 00000 n 0000006815 00000 n 0000006836 00000 n 0000011846 00000 n 0000013187 00000 n 0000098553 00000 n 0000013208 00000 n 0000035216 00000 n 0000035238 00000 n 0000035441 00000 n 0000035897 00000 n 0000036212 00000 n 0000069487 00000 n 0000069510 00000 n 0000069709 00000 n 0000070268 00000 n 0000070673 00000 n 0000097136 00000 n 0000097159 00000 n 0000097358 00000 n 0000097883 00000 n 0000098258 00000 n 0000098311 00000 n 0000098652 00000 n 0000098736 00000 n trailer < ] /DocChecksum /ADBAE2BB32E4FA46B78393D367E4B055 >> startxref 98923 %%EOF freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide.pdf0000644000000000000000000016006111527433212022265 0ustar rootroot%PDF-1.4 %äüöß 2 0 obj <> stream x]Ko%;n8)@À}lnf* 2ER{2syԃX9ܦ۔ZyKx>o۟pouIOyx&Rk2BU,7#0kDZP~~n+eHG5N_FF1Ms*a/##~mǮ21mی2ߺV22⇈o cv[`WUӊYFF1arȈ"c~ nٺ0bFȀYFZfW8Ig <輖DӪN)a$(SGiu8!2s3s5nf9at#(f k0L+lA(Ůq(T4hWdWS;U%FҔCaP_Ei9VeZK?t%;Rꊛ]h֒_Mi-!vZ2)kؕCh̯2\%ĮTz@Kf~5it8jA"cJjUU`>2#6V!'JԶ-k[RZVUvgb3vY~h[Urft9BUam9>TOf>bWS 3veVwR)>U@Eg8W"15mm=c{#'"hem{BqCkHk$ϩ^/em)h5J#V덛1GZRL)etޔM#VWe:RYb4E׵>JM뎏\׽}#<㎘Vi\ȥ/ư/V_U|?=Z?5hya㶗1_wȵJ) YG5PJ V˘|ZRY}c :GuPJ\ӿ*@>qRĠǤ PW!eKo 2;Bn˺"u_u'.^}h\wF> *ul+'=ۆ?ϔGSxߧ=}֗<ߧe>/Oo#$wTVg4BxyZϘ 3 C*i*y=)׍P?}0_7|_'j\u)5M6Z۰*Lpv])knKL&y|mj>bj&2UON*̾Zz o){'m8:3XZ[cH,@4 `hlF xqjRr00Hm=|:l=m5oWɸ=q6 ̿oHF, ń5,Lٔ^=41HteƖ6U72b]uMC@[a8g;~c譸fK*!X2Hwu%m?ǘ *5YpPqI ,60:Bm:S_ӓ%`mpVGc o $OJcgnXzYԣ|0R нQs tW CHX/&쮔 <64eץ;Whj.i[SQ푔` !TqNbf &6h. 4Of9i1L#JY-_.ۑq@TEol?`{FTRYjѧzMy ) >^RnkE?b[>93E .-dwh}`dzq?muKwZBw慑GDyx!3H3W3 Қ=qV6OZ\v-$,kJ+DoeeX Qpb Ѻ;tk_~ #8Ę q:8Xb!؍?NsMRڪ@&b\J p|!xݖG FW!0_7zQ-kj9MAR.Z`()ʄ'eB2 E EP,"e)(/P 7N(ʄ;'傪['eB>L(QdTLQ-3eF̔U2Sr2QR %j)3ęJfR笪adI(gT˅Z.rP%ʪ\M0eeB"Zfʌj)3e,> L(QdTLQ-3eF̔U2Sr2WQR %j)3ęJfR.R,2J2DQ-3eF̔2STLYE.]ED.PT4MD E1#|g7Ɂ oo;k$6 ^k--_y#z;r~JV]- Z/ܯ.aEW@ZZ/ǣ+D { 5HO jXd? v(|SG>~x:orAÚC0 ٘A'm6h nK\kMZOac֡PGay~C5H,p^³O2uy%NViz\愚o9b*/kw[@+y5 ~⋂K{KvWwKb!20+ύ͖1R,]wNrUhW]p,uʋ~c˛>u^W}EY<;څ@(;.V91znlit+4ݕxT tmPw@jp@+-'k0\j#-HxZT7|]/]\>~eX_KӖ?0p7$Ұ]ۖ7a~ wlDؖ5#o/0T]݇ٯ~2yp4#DZ!S_#BEn45.ɪ,ۤgtƷIӏ&9|Ĕ}jHzfhk<׍M.wg1IJZnhji|A%-.ӚffrޒV`lXaŤUjZ}6[GU^qN>D />'Mxd{ccGu e>DqEFX>K *ʘRX 'cjcw};.yZߧ;/-|3*0_}S]U+j׉ΫL\?vH_%aK.~60u$sׅD#IzDC ֐5 f WMfN=sI\7TǶ,鿢)̡S/'p:s!& vעR%*]BN'cm^ Upu0ox!'ңzU._T0p.d^aAܱD80\g>W(x.axŠY4ÏHrȿn]DuL0egQ%'%rQVB_Ra\&2eL$˘Jfj*|Unr'D1.cZf*2e;'X*ԉLt2e+.Zfkuj ӝ12e+.Zfsu*|Ơ"7Eba"I&6 EB2TLQ-3٩5͒-(LBW0- Ur+ ]U*!/*"H~/3I]$&X!"1}Qr|;FQ# 1&dLLRP%3QFdT}a()"ADbi d˨t 1L%EP$ȘHL1-3]At2ӕR.~N颤2e+.ZfR*(Y€#,(L’1%RZT? B0` "#J,PdL^" B0` "#J,PdLr޳zMvS(  VP(2BQ0 EƔ(::{S(  VP(2BQ0 EƔQ hf^>(Xq{@]AiPirsϩ@ Zc< |-P#"C3 zYdQ6 Kgg?r̹έ4mn_zL9_mνKΫ=Κ ?ys7{75GY`` ^ Wo{c%mlgĚ֚䬙eC-լ-/DfR^οkIzޛ6y(434o^շWo;!ƃ^Vk9T{~z_r^P16cG7r)J_xjwrojߧr-voN~#L-Z/۵-حT-ح͔->[ͧ{ cWu@&2|Vpwq~1P#9n}n ~ .ߔ†4unOr}tw\Dۡ%3)ݕItRN;pk$T1엔޴ gY3ݞk^F 4<xS,lr٥V}T ˖Й-vڼP}͌eTdcl;K: Ub1}M d[iYѥꮯ.}g j{% y #|&#~{T8ާ *Q-WSEoE /ܝ重b gX^ Hmlͫ )u ]<&0x}٬rp(B' (l}OGXn5Ǟ9:7ݑ *PHOKѹG!w{L-lg|x"G:LRYOpՓ!ڞ?uRu>>Q_nžn<=2c R)gvCTm7gv{]6jq S1mGq2C h ^@mʧoIOoNJcjP|&wIiOLj4ISH)=xэ a농UނkkU%,\{~Ұu8ЋuY>]Q|xl.cDǘfmn{v M p{~;0^s~s{aeY|5u,ݰ %]ǐVw=pU/㻯'N5b {^>/D:BrRM?旋+tՃWC$w>^ő8]G|k퐧wJѐZr'OR1JͿ@8+x g )siGTclJkVwZ>,lI- @o',O˯o_o^. endstream endobj 3 0 obj 7625 endobj 4 0 obj <> stream x]XT׶FSNAsӯ  H/z؍<ӌ^cwEp}k) c^)ZZ{`k'ϡgXlm*̌H3"0KghX fD VFӿxvO^%b0;jyM͏@QC7>4?]BݡaO2%Y_B6&?W buy_ӟАdcS҆XXf6/9 b> @5+ۚc.....Ɍ5K_phC5ͧJLRvHv(V($[D[d[VY0h(#> }cxr0i8œ׌fM͞aǞiǞ3=מ=mϜcϜiό?F6FvnG?FDp!5NA")6^VӚkWj;{3MJg7XKXC-?>0alh%i^j*a͛0hb'g=#Yl[}^%;^T}K+.]>]SS58k]\o20YE&tҠBGF3֦7]1mL4ϊc>/}Q&BMU·$mI6%y]wRvyه^tQ%uKJꖖ}A'ґoy׺1g8IT8k9FT>L2%h m{ 9$yQ~eN7}W$ZT6+s*g?'sۤioP vC`>bO>4}#ӚeƂ<4-363f?.௱^԰"G+0aKIM)i[۲vx[࿯Q!ea*ć"TIN>6IzFz|J쉩i?9ad9~U~/Tkk/n5ɷ5eNMH(V J$t##P7zf (zHP$TЎ O&f-+|^x+w_"rQCZoM>j{ݎ1;v:Iuڝ/mRt @\CG |-?Vx4,2DEҰM%ͥ|_ Kϋy8F`(֤l=c=kkn@1k jf׌BM8#6HhadHD:D/igqȯ[}X>fC}tTV( Nހ|虳M8kl=GgZQ~͉VUX^~lYѥ.*ܿ`ϼssv>3kt&}=)K'z/ 5ʼn-mPc},PDH'y:7;"88;9;99ܽ}A}A`(`06wHL GKǣzD̋uWN^;{eCko^R+q>/؛=S!zԮ$'Ul`~KsJ.+>SN.9 |yzxf)L5I:n{erҨK$_Fl,W^'YAe}N&Zb3j[V% #X]}>%֍Nc`{0[=   Չy'y'bީp0ޙpH8a5+LE݌ǧʎM=Z#=2)pR|<@YؾA; m٬MWi=(8C{JGY2bc,|(l)g' g;3>ݯ=< T sļcH^]$ w*, ..!!>&82c;԰aȗXk'g4_+ٽ܍Ɲn ["O)??#ܴسScNuzĈUu+) 8R2Pom<eyA7+ygI쾋$:fƨxȇ!?y}C'e{-=UH7Y+bsg Ԇpr8?8GGb#'%Q3Q3sQ碉ďQď QHޗ>oKDjSé_Ͽ;1W#l X#01~ :WpL////Ɉ1W)q j4q-YX bTF*H$VV٫/zi_v ">DžexKh`Oo-bq{hު@O M!g[NKg$8΁v=2⼌p1QN\'.%Wɫq5n7dMy#@̙'2fVkUr|W%"zOƾ@΅rԕlYc.(m/*mL1}a璆KtVW/{D ǥE8* k|!Psqwr9zo6r/j eMWtt?} FFܘE9g%:o"Q 8O .%Wɫuy=n 7 6 #'Ȼĝ8rog4Bs@}Z$b,sgM_M| /_Nxo^(x^fuN*8M碐BL$FpՆCʢ-B ʞ OrpxˍY栫¶FßV@5X;s890s)y!D"_#.W 8DH&oP7RTV m@2yG$^"D^x꾌QB]L'8Dͪj> {^ aF$q#&!F!qR # %H``'u~]* GA.4$ ֢ @Ǹw{8;'p>^ǕOYc*D,e{X⊌%^ԍdt %}ASRwT==LӨ~ }?D7$ !lērrOٴ4Ѿ__*s8d7Yn[,Dw%ĝ(ۀh⦔+Cތ!#3$ʐa^∋22| ~ \" G$jHPK<?̭  @y xK2. gI`<*@AJn%SӨ;{Y9t}6ƒ,~6}?nP tAcݘF!!jJtS"ը&P_Z9;Dc3i#d/.p?r#~Y&I{1weX -'nS7|]Q%`_E J9>4{9$ص"Pr'*{ y'v"y3Fu] jy% UE9zh %3Sb>j]xua GyfDfpS{X+tz 7 My|aa h  d#4+ZTK:݂hNZD%j 6Ю?Ihv,1xI<MQC)0lMTCv~KꓐC'SR躝JnѷfhquS(h6B$Ro("P+at :BʝE ϕKә"|YPR[F1K<0n. Z -–d>S$͑Dx$%"<#LI l1YbC أ1~p?}%Lyl&Nw4j<4 9qPay:ƃUKf@s1.Ӑ"hHҩ yK(n4 -s|[V h+\A{-WdtnO Rt[-f q? 'üEL   tsl#A%S{RQ>LGx(h(@6Ar\\㲐"fAf"꺯a!AM#|]Fi&]L]LIy`̕G([ar( |9Hg@^(P :!nU#MБB!$dI_)[CaHMLER-(EJƒqdl- %ǃC6PRZcB& n V<8*jS!_E!2P~5ۚqaoxv̘_;*(y.5Ў7g9ӭY[Zs>q?U@{ l*Ve*%H d=$%BG!G;SZ(h=nѭr5nK %S)i lJ ck$T|"AK!£"-@7rpd"˪R@AO Hy Ef]o2奻XMh2A*')hAނL9bPGVJ]`·O:VL*C%HB'o?]k ڢ] d$/oKQ;(r\mEmłتԪX\*2z<(ȲF1@.˨1zxoIIX3ȅ,t `,8p i8oe'SxZ~mu4gS4gs4gK4g[4wG4gW4ww4w'jOH;1dp:}JK4|ȊMEJGIҷg|D'N^UbWQ*(Ah+ J@"\mJTav<F}4Hb[1TAa0t #lNoZ|Z`>4OddD{hw0w?,*`X溛?οQTjH GjBZ,KC 0VW,TU-Bu\eXD)@ZͶ,T? ܀9Y*QOW{v70%0"DHCR TYdPB!rA'>:ˬTXHbcC }1'yQ=#4B4nj0w T y:@~Ug9H ,tV;+:+2Xɂ|D"ƒ既!$"^J,91K9`e32ONW7,zzxF^Ԭ թ㝓_wd:d D]^W"A=+*T(BTXuVbTX URPp6Y?R%SSu .,B{~?}FK9:ڼoܐӹ!w3TWƵ x4~Vx,?`/Ϙa!jLcc8P~ّ^| ݅(ɡ8H\_noe?*r)HG+fḡ8_6-3v/μ2\緕ouO\ܹ.^йF޹Zֹ:ssytҨ%ŝ B3|:*:^@}Q<~4Ԣ?F M}kd`G*REw/()iV ?Sb&&qĄr&OOl^^^^й"se\JY LQ#;;w. \~#H8@O`zzxլqi).UN6/A.f^ofYHt4~vy2NsvoPT}:hiW_lZ CvgGN+ L< j~jAzAzazsAX΅EAꅘ | ƫx{yzԳ\3;D[UbĺhhGܿwdڞRخEaWo, r,ySvOt'/,Z⨮S$B*1=?WB</AUlό4Ա2/81?d"xB7#;^J6Ȩx25- Bw0i.IsOhEKP5iGkj]5ɰ*J|k5O]¡d@vqICU;{N"y烱 bf$q7!⨇ 9nMC+R}B$`}dAKWC>\BO(UWں47\dZH)Ж-x-1ȩSLGv/`:Y"gx?.E7R^F6S %>hV#D)@X1g?Y[Փ e0ە[N[d^W|0[bZbZ lgun|8H@YP!U!Ǒ BK\vT{9rܣ#6(X0ы V POj9A= IPn myhMKEI7яRh7֝ֆqNu1K7p%AZ7?o6ɤ34~26(Ȼ8F4q]B@"kTĘj|a "HK CHSH>p%=%CTHժEA P+UJz ҥ_jJ4Gch5K 5QE4!K-ł"ߤ)ně{I]y'ӾK܈AWD`/Nq+s {| gֿ<, ^: C :  TB}a(LmƠ ^4Wx2u-Ve]U,ʾw6E6r4r(z@@$Dm$戀w7qȿK9 _?;ʫ p9moN\$Ы nVUo^MA h VƑdXV!`dh$fxwU 9$AǨ?] V ÁǛ"1ďRp#D|M8|,!֟{ fo$?A6F֬[ *tpKz ͩQK9L}C9/w5آ1z'h78awx\g#e8c Q9 |:?. >;̃? ;%DE._T24*Le/*|S*@ *H۱D=&$yԶhlI7b8X>O& Ш Kp)5 yĈpP-x܃8{&pvrvp 7ֹ1M*0RZGujUTo}uvC;mfޜ|@ 1oU ̼g`އM^_yZZƚ]Ȑ֡:a]=Xzl A*ܕ_[T?nh!<̽,_IB4QU89 {ucU3<`_kʅ™c]1!7BVa^@:P.qaپx͚jԷhfR3o00$0P>4qoy"ǂQ=5M0ZnӐ{[~㍘W0:3KdۑU*5T[8=T`XZ*hYrc;.qBdB0.ubk@nbAa{f 98K|aOwo/wf-rD #_T`T@ua]76Uժy} A˜PDrg|mqt xHе (Km{g a?\oW8ٳfa>{}0=TXC.XwLC_LV3ָ3q }qcm/qoEuNC_]O~*gG6?ݎUhad9Tg %6ɣY?+X]YAPFĄ%|1纚y_dw};4=1 (?aJg2Gd&Gڰ6D zx|dc1F-μbYiJEd^l;k.:ߏlF֧iKPg?:~(Sl+ۀ?1[en pwY[,z=-Զ߀:Na,3w {LŮad@tg_>uPYV4O"o_~18'۲GEӭY#~ɃzhZWx3a`m/:M~"Vl5zIPV缈Ow*s0}S2A7]{b\g!ᰯa_4 CQ;7nY=iyc\\ZB\g5/a_ {v06}V>@?A=uƳ3j*]3]eOK ӇS5ayXƳxCOָԖQm^e!nr 5n { uU> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream x|{|Tյg#̏@T@ZDrzFZzjtNt`! $hҽ3BK:OH/lȩ ͦߠl'F:lߠ"|81Js0h}~%h,ZBM{[tuCl? Q; &!F`i|Ǩ/9l4q.+IFA8*zTZL-_gl[݉%u{A}^Sos;(FwOzU8CFҍ[G$[Ζ+s9ZJ;waa:Y+eǬcՉY_%Zx3|,Do+,==^ߠe^R>HN<%tI!'mG4}[wit }^`YL*ְ-l;b=lL)yoy`jMTBlZy]waӷ6-f%XO0Mj3ʋ~#c~7 ea(}V# ,^w*<*^Ûy+'%d9nuUkcc%&%lk JZD4~A\!OA.:JDZ ~AAgfA>^{PJVjKY'ʯ|A\',dX \پc/ow|W^v/ؼ3_%v%P)4Zދ<ˈ'?fE0^fF\6\;qf{piu:c7;'i{W)\?f߲LY*땭v\]JWP )}CʰrR x ^4E[,U].͖3,[nuZOrm+m;m{mfowdO [;Wf;֙s9ξxbyY8生RrUo7'F9}sZ+3vʧ0O9D-ֿv6r? dk-(kqdܷBz]OAIr'/10mR[1Vc?i*tdYIOU!Knd#v1[YVlCVA9)Ǟ~^L۩EUboW }*b6*W>My3B#l/td9΋J>raf+TQ*-Lȿpy_e{CYԱ/p漌QC[|=F|nlq}ۀ5M ȼ$b>Qp&>Cħ۞9q'.ڑx/VkZdY &Σ!oo#-@kOҠȝՉ?YG>,ԁS?n(ۢ %x'9ږx(diԝ#>EV䞃zvW_󾪫+׮Y}ժ+*-[Zdq"W~\`~9sfϜ11-=-5nZ¨Ю,]6KADh 5L剩MgEn=2**)V]j{u.u:W{U%~0@Sc]5uַAPzZVO+)tbs\!6&eN}B)(窫u b^ƚ嵖X#׺XFdZ9MViTX RGoɤi^W%ƵV1GV歋͹񕜉&g׶:7TU27OS 00as)-Pk2V}Kusumc h@^|0<׭ΝSRIv5n+6"bG&-.i(54Y6|ZFż/Z>Y zd7wͤ 2 (4'XQQl2 Zx:^#۫JF+ Z+`g\%8Íp2W~\R=Ǹ!g33q&)Ėϙr)Q>yb&JQ^34.~S(&>:S&=O2@&(#k+dϪ3qNkMe}muϊx ȞoT]fi쐉Y ƿX1k;Y5T24aais$n@6I/]J5qh&{&8|&o4qhs&/1q(^&-xXײ ,˕4I7t.kYV+mL,)' ْ~@sCϕMҋZ3DPQ.5cukAҗxf<"&{z@I?ƗtRRٸf*Eyלo9Ug\ގ1]!"Gm0 D}(Ç{l]mA/yi/0%+ՋW.9sx|B5(U zB :1 M2Lh%7~EzMċ>ЄVu k0kDj.쯢-x"ԝPbvM̷V)*4tH KݻMiɈ:;\]/g!*!]?"*%{D^ꖣ $/\/!i=UEj1)=Nzk ?nzMJK!SrCr%BnDR4)+e+{Stc(yDL"֍3 bP/&%k2&IJOpzBҶIs>J?*YcrDYL@zʈB/ Sm:#?3KO$s,[KVPiCAفRlj^/frPs&I 3{;e'|3lV2 xM& &g٤>~tir7kJפ5TCz/CWܡ6iuڼYYj^UnK]!-=0u!%uGD! z]>O$R7i!YWT4wEuu5e/Z0k]bY±M^/VԫZPV}_ ^=ս1vv?v@zu!O?{jO wFR5ҥ Ð&Һ|_07^ K/{#:. 0>Cah  ]{þ>ԅWC*L OtFC ',t0:- [|:"Ma9ꁹa1IHTz#>g9^5k=ZHXH=񉵖vG"ʲӐH'"aYO-"\x Y*:~/"Qٲycښ[[MkWko\ّH{g|[F\!/e|X2%o #=> r4c] 0Xڊah07EqU'#y8f ֎t#Hg !PܝT dチkjʔzdRu'v$v@rX Bҕ.9Vz}bcP,!i[K.R.ľ G,"OH/-,=IWT#LM MHcc.D iixR>5_# i֝+UA~Г0 ;wP)\rRu5%+SSw6X|ʕ(WXjUkiu3V܇xXLX {q yK~5Ck4$?bʋ+/VX+/VXbʋ+/VXbʋ+/VXbʋ'_Lc$^h>{22'- --\;eIgD1Vb~Nr_Ԁ+$<;K<>)L+#Je/\Z!;W|b?ZƤߋlԟ6O#u'Q9.bGy8ЙY* nn`r!{)>ix܊0M0MMMdA$~~~X1_Xe&@p= z (ତ址aǥ|oЉ ^뮨~wn9i,2W22(IAW-u($+WՠWGv>T)7&6f|+ΚYu"6?t]*V /`g~S$a%ŋ;0g3T,gTP?/(~TBeΚ,EEhɜq$Q7NjŨ:1Z"|IN猻"KO.t.z:ː;(_)qׇ X+οT=)No}Ηvqs'3# ]O:h;GGRqxDa;`xDqQ=B/\}Yhǝ*~JA=X.t_TuP0d4g+\ qsJ9d¹ 3.vIUv>";{}}j {]/ϷLNL2-%-%%ŖbIQR(eH⼻H~n-SQZ$R?#(;QiܱŲy]luQ==1!>֊VLmQs Tn?>IrGrGk+kzCH۶'fuˡ}9dmLnEɟ{wľ5V!ĂzSJUkIvr}vAg7ֵQUJ S`|6,6I6i~}P~4(>OK.C"LYMIY `˘,l ),cIaPAX 0 ']:T )`r&x Dɣ'ٰ#~PC}9:}O5=Ky]uLGtk!7 yz]\sk.uS\.#V+z2ݍA1WQA9Wue(ֵ^gJzC{n^ٙk:/烹,c+56͵.х)2yfW&YuTD9p8Ds$-M1 ~]ZpGԶ3OWRUW:QeF[A>&_i?$DMt\Hy"9'hX|tEѢږ|஗f\+? 3B7 aA%>W'fl-I'W X3Z4{~QWT䠎WH 8S([WHQ#j[.bPЈ"\aE@0w$\TDD`-bSX8J0 LâN~^S endstream endobj 10 0 obj 8590 endobj 11 0 obj <> endobj 12 0 obj <> stream x]Mn ba!UӎEԴ H ,r:dJ]YϖWJcpI+9EWnnYHfm)8wqLm+B}NH!Np5/1P8'팲Rs;ȟ}%[dㄢU@{Fi ;pr7>a_'S;8{T9坪"o endstream endobj 13 0 obj <> endobj 14 0 obj <> stream x:y|g7ۖFҌ4:G3%e)c'ĉc'nǑ'j;g6%ЄRzBh9cхuP`( B --KK-Fc Z|IY;X@8Q]~BuЂX:@K͎Om펿"Dq?7>ytzg9FV}@0_}S G */OΌ7cyZ92{wa#SԶ|7BGggeXJGfd+PCpV5ZPVn41flvt=^'J@E0DcDMm2dsu@FAԄ6m2N4)4$(B(M}ZDǢ&2<$n//b6-($ bgcd8(S疤!4[  IE::[Vx%tlE0np .vCCF5-jg%v/"XE=[!ZWI"'b:$п:ѭE%iUg55)YՄ|Nqtz"Y)K@W:4&QdM3>6 Ι耔% g@kq:,=%R[?X|mĦwoMYs}6'60.ʪ,~*'٪ A3_T9,Hùi!7B@o(Φv>6B 5 osppkkY lkck굛Ϝ9,^^ƷRɶǩߋSHJ2<&6Ny\|'ݲktRZ(}9  -Y  ZteFYtU /%s6Y02&P8Jt jܒ7Zl+yUMƷwlaa$-^NQY.K%'MQDu^PM gs3&LYd5~Q4\U{լ;Qޟ4T$NM}1?z-,f LY1l:mRk~1;8j*'0*O%~1J2(&ǵZ+`VN8v-D8J%4j||@SDb'ɞm};.MeEXSxw~ekwmmBU붾~)o ̥lp)ZXvA&=)S1dL έFg4csT:BtCkQjON g;LwY2x} K1Ahήg̊56m$&ؤl\Y *&GzU'쫒Kͽ`_ bfr:-7K=-u}- daēN6@VkXZ/iYV^%oUj Zlc];OH:FxFt_+m|˕ l`jZqUK"_q OŲ+$e)NC DC6X%JNvlFn޴=0p(/̩j3np#Si=J[d/I]9}@ [xFOQ=noQZ> mר֑,NGjiU%-z殄-A ^%@)qU. {;$V2Q-T3kW>HUxˈTo-UfTy6Gߴ7~>خ vC6${-D\?H[Ej`Oϫ= @DpNjSBغܥ:S;"?41D?'x *kSTQr"2aJYX <|NO! e\t{SP3}̃~ Qsu@oUjϞ={z9,%Xd5Baٖa͚־Xzev?>].̊Tw:Nբr倽/x_6*aވ!dS5IdLD3X~C>0Ė^Ήbbi1$g<!?56UITFRw m?׽˶a\ţ ۲W K*V3=MMPU7Mg5 >u;wT\~?/4pf~.U%[ -xPU?vl zLuj[mS(o2ЭC+}ر9bMeضSyV9߃aRR)PByao4_w{.?Y?΄Ɇ]j?AZB7ߡh"zkQdn9nJ;6iҿˡD8N)%N 6a{H>}A e6)pڬN :G9U>ƙ :lbBT*FUƨˁ0USoOl9MJP,2ל%eQ՜g*{bbO.W(4&~ sza(Q79,9.kioz_@VʵZG\SPK^ S\MUzO&HtnGd`ɰYK*p)ͱ)VM]Xتq]sw\BruDvYLז^=fWo,ՍSWzzd&`RW^|]㫍"ռtz4ɄE-~UqA/Ap(Hm)kKK"5{6K:Z[7 liS3"&/99i٬Z&|4߱|Jl@h,. ʴZt6 Mg:eŭ)'U-5K!v5}0+_oT .T0SvUrcN SOm6{%1W5etSÇͶtX·*MsgWsU>ڼi>Ur^!+1rVٚ%BKSj)^4R+^͋D}HElT j]ſ5Vn\G+ *ŰKt$4rO&+"_)#hvr:ݶ]h'5*]Q>OQf  )דvr] '7Fc|;Eϙx! mdY 2%6.} ɷ YO6UZޱ‹6\(S/d0xLU"Cp 1fc^"qDW %m<$6c_ops;]m;S/Wkx \r(q uͤo )DPʱyLD8߭~#ՖsP̾%ə8>ur- \n7l8nYo 8CX9csFr۽.vbjx,g¹rmrPcvKz%ug|#&~NY5d)ZtV)^F;RǓH)݈gp#?~/Jnw^0Jrմqo 55 7 Ш \y7h,eh }0ux7%ЋH 3ӂm cQ t h$WC~=ǧJC92i/jNYիE5i.kE.tHA7{@z~@Z`7t 2e>^Ͳ7eKףnoGDj̃VQצ4 B4j3GXsW`xH16M6 lV`Eq`Hn+0xYiԅ*QM FYO5Jݮ:>ehѝ lB ̢A2\|M*QvU\aqfV;ffNdMM2J)ub\ ό-+3,LLɋXwa酎񂘌׈ <t,#]abK`T6Y+V+wl۷0;ߐH̏>6ٹх扭 83&.웘 QBa8p!.̈Y.̍L}LN]B0~^e5(1>; & NNGfřC9^'GΌ:8̢hZ@"ti5IBw5p@hfꇕ шL#fA@Y@MC[P`O`LhC:IUφk/EiWጺ(_֊Õ̝/@"9<ⲝ4930nÈbɖ#Pv: ފXd+G"h5#k0 cm6?#FD6/|%?{/mZ ?o,6-r[8>]D"-_#jq9:IEdD-ѐ7 ןG[6 z@t!1+H O OT,qPu5V3UPe B(+,b\EY@U#ٵm0v@mt/]+ endstream endobj 15 0 obj 6423 endobj 16 0 obj <> endobj 17 0 obj <> stream x]M0>n_ɮXX$P$ }RSn8,8uǰ01ܦ{:0ڨ~薼ErϿ5Z|n/5|ay<9(#kMnmnUUj_a{k6PBʹub#\{%`G`/HL-y6UK1WwI̞p߁PSӿK L'1w_ٿ>7sߡW&,&bo%g1艡CZE~:ߣs//-p?*c1񐁔D c;4#K~~] endstream endobj 18 0 obj <> endobj 19 0 obj <> stream x8ipy Hbq.8H".MuQ%K P#V#;b[;Եc#-f#evʿipxr  ; 0#qlK)3a~ rp!U{ Fk. w2IkBpnVyB2yF 4 :O/( У\qEY5LdBQO@^g`xs517:FHs<zXۊ 1{vǖH_sg^LX'CŸ nfUJg1u>dPj:q4braUoЩ:_vwn0CUNf4* v\OfhMkCDr _B1c:F0QWɎ7V'k;+*B)ֺ͟uX/Yj]ce^Ti2W:By{",e-_Ó2T0FDT/@x "&N{ }DzQY4p!GDŽ]} ;O:d8/t6m޵;=鲚ywkoL=jo mZcOw Ǘ'P+vwwe__lY5.O"'}GOe{S.>fo`k ~+duoЦG9RDUD`$sEFtaP%rlΉwLʚxۭUgk \c։4&^$7v?d5'dVF!ب/:8#}H 1-A4JQhFeF^X~(w3I8T;ۓ OiBRmxGpSJj=]\sh/tlٖ;?ggx3X QBʙwmfξ6Ur6s#}m=ߖr$F6jUYo~35lΎ}|KRXNn%\&[L;3շcӧIkKE`?/ͷ .tWÝtۻʍvtƳ^!#&&dD za&Z5;3O8gƇJSޛso3oXҳF?5>2B aJkM$~Z=_'.g u89)Q|q6Up?Y9)??U!e{N'NGN|@) ;ɉӧNcKn~oA cŤ5P^(z*0uNwǴ[q 늏?3UU\U|fw/3qɋZi%|IŽRʴcU`Pr.sYr AY[/Ȱy`ZճQ{$4jLw Pw{C׹Ao}ߪ,6]_V[2;@vׇ+H^RV.5YvŠjJ)m7 C.@AvB9ǾuW>kg{}{}8`Է ^}j㶻vK36ֿo5Ble֍a_Zo~Jc]"3mmgJ=LA$8FzNog%sﳎ!UDzs18ic1ìB]ތ~"-NfqQ|ChٺjFF@wg"bbXK&EX]Thѕ xLR{8c^lk_T?(؇S?.U;*gTv5X?Y ~L ufƥ_.o?7^nÙ'-*}`+ c y-2Xdb2C[09Y*޼ D:?;bSbkv^hhF4s`S{ϝ6Nw^{.qF];okᶆ MɇBlU=;npN0n NfG+x.|e,nrO.GjUm--Iv76Gtzffc|'g"5NZC \|S#WtA'KnJdQj䤈F5w[[jtBzOng|A6[q=kG =14B$"ODMa3Rʁo`)^e=V_toXꛦ#U1ZK [ý_2R:Gq[sK`Ѣ!Xo#NzՕYDH$%Lu6LYuU,=n|DW } }~ZS-OVg)ps_R+.{SڰJ{M]j_~:M_%!^3}=q9;yXdMg5>×y8t+#" xYTK? @auh넹X:P#Awok B91@]t'}~.e'edWF2L7sJGpn R ^!Џd"Ղw}_SUk$LþNJ IJ'$A*+$ x`H V#6Kq`y<%_H0 . !5 rVxd!JPߕ*zEU `5ZOKh@oGUlHakcmnt&G"~o g2P.p8Xza27$Cd77=.$s  64P±@,@$2+qk04I X'xG XXo KDp|v1:Cs|( Y$c"/g\_ q<]Ȍ#_ fi~(yr43; eURBs0?3M4ZGópqfn-e=OrA:Qe{58 [JI-Ԧ6tHY o0*+u  ̬ L(Q%]B*u///# JK jIg P9wN. xBeJ-TR%PjWS@fjQY]^ tl5׬)bcA endstream endobj 20 0 obj 4113 endobj 21 0 obj <> endobj 22 0 obj <> stream x]n0 5Q9&N;buDNw{ΡxLq,8O? r{3L9%qqqDf$Ef#zFfT!½$)?8'T :KO~cdEn5e}l }wη}vXE7 ̳ endstream endobj 23 0 obj <> endobj 24 0 obj <> stream xZ{t[řmY/$_r+o9c'3q Q|؎m)$.*4P&]Ҟn,imn=ݲ7ҲB6~3w8`ofF'D# j A!;rcg?a6?}d%OB&BzaBy^;'~aL} XSgLp, ubca6<g` ˱|\B!'뱹HGǍ0>?di.5-=#Sc5k^~Aa^,8bIlCyEeUS|@-?urQA khy27-k+taeltU/*AxɳN#<% ʾBc1\Uum$;5UyrkcV*!:~Zp! ]--T-w,aRUg@)h2.%tue** 4x49 ~^r_|IH)?i2B/鴩jɼ0 {:H遱D:X4$S%vAt>/I6l[AE_l)khP~1GQmIY)QdF_ \uZn$:N!r5Xh??gګ̩uW_Q"ǵ8?7*AOIp bQ*vӍܜzBE6aG?؜nȷ\kF[; TnN>s ;d!^k*[ `KT>uS& J%~/ks82LE+<%] NY,ڼ!M"8rM)IY*J$cn[;&C!oB Q)l/l(mp1yHc_IRokM8/\ .pYn`p7woU.`.`'n咨#`$Ig&WJ`0tu^q {K5KyJ\uBU6ШU  hu0I$X&~"jI;-\}ƒtn)ѸY[5eM[YvZyhs:l(𗯽 14Kjbl}b";07+Gg8&TݻE*Wt"b ,- V*L솦 !o!S~bTz(!0+1&5=9bƩĿ zNbsosy$9.=('F-[\IJ*O5 Z54CEtT;)9yh,QZhL뤱⮽8 hR&TO62tX{*'A6^^|56*?MܓO"z Iͅ=]쨹Z _ =:rΥ6k6r;ݯ(MOMu=ָ^$ow@)iE$r0^'ڕ \FV79Ժcd}U;Z'~:}= } IVĕnE#G?$ʓ-Sʿ z%4яC&tV e=d5[PP~RV8]J@1ZTBF mɶf_8C7XoLg:zR⢿ɏ,e kOx+*jry!'7<@ Υ̉  q:L<%ql4DC~eIKk0+-(~gN8TQ{5[nMJjuE;mFtb5JTC2` B$LёEᐏ"xY?&~Q)n'^RuJ2m2ȌJF %WE0 D1T6|g%U HMsfdP$Ub=@'W,t^ y?h-O׽q&(Xb!07TTϝ-u% sIZk\eiy>7ɭ [?tmG/+Gv 9.U4OV|m9&-u;"OnWȹ˓\'BsAp8z1/xl[c!.HpQuhzYT>VuC!ɕ>B얋>`<rݼ%8>h"㵲d-|$V}\$y4^Y#.B5 }[6~y)۟~S8 e,%̍f5"O-~vtL#ٳԔjw+YJ]3T#ߐ8z${4lAQxnܽG>?569R^ Z,žH/ȾU֍eJ,We xΝёS##3}O;t7zoj!ODCH`7?Hb."7ܶgЦWN!L$+0t6{Kr F-Q@Eb{,J\HIfbOL8MEؕ?-$;}fِ^zE-iͫqHvj\ictvNңᛂϥ^-f|9d0r`-Sv e֦枂%{]Jvfi$J!DZdR-͂,ϊ#Uu\6S\ޫPpX'_IY8UE>Ec#򐨞Ā[81n%iuDH|s_7m!46pb@QDgNJmEo/4oky`PYzE` I~[kB͡fyO"Aޓc,ey^oW\g1>[hp9YE78&CIƷG)rLFW$3:&əp+랃;l5'۫Z?kʵ+[%{&HS}O&غU75Ҁ+hWn]>a.4:# ]#[__P{$,BoQe3X+ޓWOfXsMLܖaon|#{ϓo=׏ woX՟x` P!Ov:f*}rW,lm۾]V=9J}S\UloOm}!8dӠthZnٿc}`A ey(oJ[\:}>xOxw ok_VGs^Yh'ϡ]gn>Rp$XF0OH_)U]veTNv88V؏+02]ۅoۖO|w?JOsJ K|?A Jِ2r>ﴼ֭k/iɺFFXꃩ ii'ҞNCzmPҟס U.Ө#_V|D0kcXyatHIѐtC aOQL~ե1 >2 4633 02Y@{a0 4YYw0LhHW ~aI3Pl"v 3 vgШzƔCifh[AOÄ$O _2 4i QH9C]stf@#fи;+o$3Mhr G+5<2F ڋ~o 9XSfaS kS'g5R3 $wb6ŁU%3/yxXx_H4V(6&g?LgT{}+2ț$Uwh#iSi5nM(lEcҦp>Ct/M{ gG݋TOv4r3 2g1;Nkv$~֔^Io~Mɵ˔*vƼfg9g-N^wRkTWKfzi[[ލ%9xdMkѭO{#:|=.a-kҭg^C]P5iM0 C| %lШ7Du|3uv;ֽxߘXX"'{ήd]_]/y1 bEf)ZCô= VE1X@+43( Q7L-ݰauZY[]&ߧ/??0{-]kvu-]?I/ w-}ضB˼iYSپ"lwqd0oR endstream endobj 25 0 obj 6256 endobj 26 0 obj <> endobj 27 0 obj <> stream x]ˎ0<|eFBHd"eыpR!}R>; un>Q2mT׷:LYrM5*V]<:Ksd=//1EedҎ]MMfĬ*ZU}šo;fN: ub#l5rނplA8lyĿ+xy}#{12NǼ. 55m C_Vro%>f/wWK/w`{G  =| = = ߣCs6ԡyqۀЋs6w}Q߮zȵ7?KH\Y?OAyN@~4NȒoz endstream endobj 28 0 obj <> endobj 29 0 obj <> stream xWkp>wW/,˒XI~[[6M0/e#KBepx P&$qL !ʄ4d:-d2eh&0M'94=j퐴ӿQ9wνw1 0 ؟LSw8L>p7(:,x+o(?Jbj4Wp13|ep411 P(?|Ө8 V<gzoעxOhL:K"O7TR9JZ_PH[+ˏ+^nB!)0qiA!]ӛN`i[V1ٔO&:b[X#u.qDMe&䳥9놭ɖËt{O)ݎ# +ui.{WzeY:7ݕ1χar};miuLNaR©4uDjkVhv(L0ak 8U`!hR~Q2! 3<Perw &mKk1͇׮qfM\/Mi-Z^w9L6Ғݜz~@>b\KF}ŬZRzz@+3ќ sqhs)/Q.UH,jhGBE,.`\f);m<x {;k{wmɂ[sEu[+[<-Fu]PKUϫ5jƼlnVa09f(Q":I#bJ9'GV;_?כ7ܮ7B5siZ줊Еm'Ǵ[=5k{vNV98oj[ٰj }KlZ׷~@vѹƘaO,h`ˈA_R!KуIŤS|IQMUDq2cVZ6lEJ> uPk@7QMOO={$ϞEpRA.TY8U泆_ !E">՜0`.BOfSٖ4e[o^{ ֦kSsנ ?NB*_Dy\dkf<#cvUN[Yn/8{h`IiJu"Flis8q\1+5T:K.k3ϼGR)}Lӕ3Wf$utZ坳mO/)6Ts]ʮ'a֓Ϳp#b㞥S^=ĶX3=[z6 M&Ci/dZupsL+a1LAR`L@t!렗J[tPiW%:؞_NଯwZŞlb$l &Ř$tE11 61]p+^hpP(hp6#;X} [0P*{`0[a1h 1#HD1c{P@bb8! 뤰CB@h/lKd1B(\)P4!iذ01҄026 O Ȑ^$@AHN unB ^lCO8LF"0a$ȅ` a1L;z!nQ`h7=فJy P [QD~^i/ˡ~: BO`5h+ZIg= !5,BƐA~dP0(Wђ"qUp$24B"H2qXA-#fLJ&|/?rX%{a8Gsʁ(rYQ1C;a/Gp|UN<ةusޏqvԤjw2;*a8D5[(XTd˼pT@߂\ j׍a `sU!^P!+2D47g5UqؐVr7E\{V$*v_/Bg[V )1*dQ"*eP$ȼL.I:OvO ߕDI{Y w endstream endobj 30 0 obj 2967 endobj 31 0 obj <> endobj 32 0 obj <> stream x]Mo0 CEJ_Hi(mǎ_b'=>}uj74ޝv[o!_VCk4hy0Ԧ"IV=^!I_כ[}7wk`OʒiB>Qu81dE&*pARp^w&3\;ٺP*B)۬ ,#y9!o挼9# [Ȓ#K.6sD>ҷbiQ{|\Qys@^V,# E=? 9?8A%v ꘺;/Jn7{hQo] endstream endobj 33 0 obj <> endobj 34 0 obj <> endobj 35 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 8 0 obj <> endobj 36 0 obj <> endobj 37 0 obj < /Producer /CreationDate(D:20090505195945+02'00')>> endobj xref 0 38 0000000000 65535 f 0000055903 00000 n 0000000019 00000 n 0000007715 00000 n 0000007736 00000 n 0000020789 00000 n 0000020811 00000 n 0000022152 00000 n 0000056046 00000 n 0000022173 00000 n 0000030849 00000 n 0000030871 00000 n 0000031070 00000 n 0000031367 00000 n 0000031539 00000 n 0000038048 00000 n 0000038070 00000 n 0000038262 00000 n 0000038800 00000 n 0000039181 00000 n 0000043380 00000 n 0000043402 00000 n 0000043598 00000 n 0000044028 00000 n 0000044313 00000 n 0000050656 00000 n 0000050678 00000 n 0000050872 00000 n 0000051408 00000 n 0000051784 00000 n 0000054837 00000 n 0000054859 00000 n 0000055054 00000 n 0000055467 00000 n 0000055731 00000 n 0000055804 00000 n 0000056145 00000 n 0000056242 00000 n trailer < <1473D836DB883EB7C27918BD628F4C50> ] /DocChecksum /6BFEA809DB331504FDE3A74D5A5BBDDC >> startxref 56429 %%EOF freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_ru.odt0000644000000000000000000011017511527433212023011 0ustar rootrootPK;^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK;Configurations2/statusbar/PK;'Configurations2/accelerator/current.xmlPKPK;Configurations2/floater/PK;Configurations2/popupmenu/PK;Configurations2/progressbar/PK;Configurations2/menubar/PK;Configurations2/toolbar/PK;Configurations2/images/Bitmaps/PK;t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKaPصZWKS[VrR T3|/e{҇Im`DF@w"sȻ7p;ѻW$kwF4WM/mcPɆҏPLPT仯^h=C+.%U{@2,Qz0gTW|o^)4*/\T4Ӓ2ꄙoZ+L7„%xt ,i"n22i P]twPPEIE=W-ao5_mf=RA7SHfj3A_2PI:%?]}m[?1A_{Gu@S,}CRu~)k'J{ egt /[z?Bmݲ;0rwPz!82’;_(svu<5y Z4h-,42ŏmT>Gϭ. s)ӕ`ޒoVjýV3y',[K qlƶKRj1 Z-%T;Ac{!ʸ_F*m;^XYhe/[ϫq/{ʂ2 :_ɭ"+_M @Jd%o>گ xxRUkBO$y|+Աob/MRLmKV#mr'I^t=iBHA"EDQ&I^dU %"b Wъ YhF~XWZ>1 n,./n㺬rlֈdS xA\RQ!람%ẠCZ͏LPQU]@^0Zs ՗3jI%ǠXz q&Fu H5B8v3գcGYGiF}<\@2 G Q;t<P:,GI_6=rRl f1 I{s|8/b@ۺ,:ȹ],CK$=%r:%O'D.2}D65:SO> 36'ݗ]UQ9K2?Fk)<~Wv<!|PQ3Ro;Q${<`咐JUXd2V0Kh$n OԭbܿOJlzJno{(.Wku[g::W-R`zaAV>) [?Ƚw??-p5uS4twk(`fHdw:ߑz=ɍ9OclQѼLc9E/Ɋ?:@wg/@T .ߑF1E~_/v =6'^?@xK~QX8ڨۨ3@ۄ>TU]Ba4S}9l_o4a袠.a,*(:? 28s{g -l^w7Ç7χTǰЁ>?_¿G} @+oQѓ^J%?\LC@SHkL1GǰOvyw1ȝv3K.bcTz q+\[asM<jhn s^hxaը˓M/l=b/컡ms8^ (ѵI.'$ %^!f!,⭥Q9t|H#ktLNY`sFa_t.I+n:vG(s^=aijNgZnAb&_?-X3{n.r)snfnKg9oŏ,IQY-",}Q+k wէh-IIǙM(?s=%&wM*pU}3h?H!w x90և?n[z_c(β'bNW$c_ḽCDZsM9>1uJHZF*QRD~-),Ǝ?+YAo%wy/odK3_DL3Ogy:yZ, |v'L(sz1D2OXvf$W$ ֤|} /BoدFK2N޲ȇd<6w /yl>0r/q~wI9\#43^Ctu\_ _1޼DDBDBDBDBDBp1Q,*]ց; 0a.2gȬ{;/w)K^7Xe/|v@krWw#jnz#ɇM_3> ! 3+lu6C,3%G%Q~m8vUn]$cR y|]xĎ5C6C>ZC?vgVqv>@{DX>w'yV97YdYhbM֌37Y3zd[rO֌7dětN[7^J3S#2MrU.ك1| lNH ܣFY9bꛊ\m35_קNGF50 Թ3uN8.>Aq]9&}.fs41=Bpʝ}w9B+RC_AjG6L`^KG8jxw;HqiGdE_oH{ȃ8Ụ̆pbE~Џo9}0;[g<¡쀅khz<=_~2r%)"x"i˿#5z}Fޖ.k,fݵodaڔn4 8D~ /14^3h/xDҌ{!nFߘYa5.NZs?'4^ڶeEi`/Yϥʹ=v'iSMhLz\'e 2DRI6F6;x9YlC3,E",ihl\)w̥:V0 DԉI ipƒ(Zl"Fh6u~іVk2I]GLI%(QA1,3;:$͞[yU09w6-"*D,ژ&LJa),,o/F=v?'1|/jyGT5P_$>s>t",aDCV(sXGdfIaS{t I-ǐ'ŔV{bh[H qX,^ĆUK0`yLq]i1B 8ݰ#jJI 9zU+xʡ'T^"di.KI+h"^J@8c|?*Q{4=w)XxZ<]fJpOhCд֬l۟=͡)湟Y_A 5+wEG4+ CWK\LP~ =sTMfX0u ATiC|0Պ`0^4POЌ# (Dѧu !sryA(%Ĉ~b_FzW|GO˘ M\|Baݗ)RYCyL0hq 9&Woy|ueD@^ێoRx~8\$maz/&iENRaqF*ju1t|'~T#eQs!Z|5H%?'󮝽܏V=5;`V ȥm7e;㥉G)KN>"XA f g}-鳣ѬNMpzC{hiϤ(rFw; fEGVжLNUP}]n.syA6~f w¥МvҼF%_p:w/䰯 a讄l>IGu W]f[y^ ՟{~$vzc< T<=iC}"WQCiIC4EnI3͝ >fU™|}*hcXcd?ki >֦DZAc&chR4V7${H^ ljon8􁥵Yx=1ǘMkv>8ӱxB %Ծc27[W'mXSgZR\W+uJq}^)puI.ڜ+*qCKخVsI8W} xX7 @QՃvĝ)hg}&%#y<"-15}y7{wwm1fZHk&<LXgN-}ĻV %r&'ngPd75b1g.W>ak¾n wo'WX*X ]4Ly|8~ <[7 q.#nlͱZܴ\6QnO-8> $@o:ˤ}qYcȱ}߯$-mM`]-?@#O GxHOc,$C|f&"oھm=P?~ ܕ:CA3k\g$ןx &xMȈld4At _gd1PKq-PK;Smeta.xml OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399Translated by Sergey Kotkin http://www.explicore.ru2008-07-11T17:07:02Сергей Коткин2009-12-12T23:15:45.31Sergey Kotkin2008-07-17T17:18:3561PT88H22M28Shttp://www.explicore.ruPK;Thumbnails/thumbnail.pngUT\A-  K w$Xƭq Ch 4w|wƽr{Z2לV:P%K|rzTl f`%9im/7|0I(M^*FˀzĿ N7uQSdACqov|^)cZqZWJ+p0(*b/a|CkGݭ-7VpRv%y]fS^z<+ B/6F3B){,f8fF]Ȩ1xXNRZ}.I6OsiJFr2w4UmTs21qqG!"Z111_R"8Bȵwz;+OWqcNDu|j)~{r2^NBtxjfe5r˯jDQO^+ \Jn2Z.)C>^dj*TbaPǚhޏGzu18ڰhV:ɼHhe?ǣ1JyDF-JƟ'y#)l54lzaU'HUHbc \D_5菉}c-pɴL)b̄åH{c?f\-I 4vx>#~\[шcdRՑ[ i&ݢ~ CW<4uˠwːTu H#~T EG$LYk~1'-dJx%Kw vGO+V{;?Y«dZ:JawvE} Hæ3~9y@×j¾J}qpux딽̿"kVy`[J{3^/r_~a!q_nv;@dT̄<3kg_: Ō" -+wg ^F &o ;l`33~~xT~>q )nsJ17LCaf0}wCw&6'X7!$G;+5w?(֙2yD@21sVP9 " w g?8}WС5w6mhC\;H$R'k+A邲q`h翡Jwopwr^~im<@ 5:вe!f{OPgԴ_պc}}4eL4 ܢڞVfjUԢ%h$90 o -E[BmJqc hMMͦ=n}@,MHҠ {T ސ RZ-4 Ka0 H'g@k)y3Mq]¦xw\9fX<))TNM.=ӑVU_vWޡm~ԫ/7=ܖE3R^P +oؑ4+wWE;-o7ILQL!<|xeeeXD:=&$f[y93"ybzB?棜pdE3,&(\w6kڹN# ǹRj>f\\\|_2,C_zDg!r<c!|qӻӟ|1%6[Љy ,骳79-}́A68`3\tQB1Q}A8Ly%O)ջ[$Ee9`LNIƩm wؒpkm6)lBb@4$!"H:gݡl;-qivDe#14"\ ?1^ ͵vo/e IT3Cfz~57fhk 8B%iY@u4ζǒq\Eܻ.7:wLn bq2z ޣ?l 49{pne7niTUEՎ$>ǧm1F n+f~8n4%lRsc^1D3dL#QIc˴=u$nj}h`?GEj{uLj޾cۛT)ͬLS$($f0z+ ZjҴ8-  g;=s杜w>It?s`Jι-N냷 ?,bi,S-ݒwNX]cFCARq57c BNPR]' o* `x`ꂅ xB a|)GJmЮ oB#m&tkYgR]wFF\%Fc1u3l"XqH-3򙂍i\뽀K}1|Ki{Mlk'EAjD |َhIkV#p$UvxR %9Li[3v,cis4 /2fy5j7yb[4դ:199_lfga뿱|s:ťh$^ʽ&j 7Mk%sNv7NHYlM*1IGm-eo@jQĎ4̩*]R+6% 8A:B꽫ųE7H Z*Sq>w d:Dg_?i<*w0ti}åh7t_nYnZ޾]LMIID9Pɴ(4eZrQ1)1x!^e*UO%U`fq, ZGVTLE@}I󿓝4I 1wz5Myy~tOɞ{e:BdqC4SӨtt8.ۖ<ΨT~u%^|V]w\иanqwc)ҁe0)Z !t="eW _}H/ <^ۏsF.z=ߜǞ?/o߮<+t $65gs/^m&=ĐG{TH|Ҳ7u`H,u!e1_ k?#2qNw 7\ss0ܠRTB1n;t-@ `D4^s/>WxK1p9 R_nMiY 2{NMJO\,\4`JW[`6sV_gwLZ~ u|>|HM F=W}ʧ%H{ܝ*<:Σl"Zž몢Eg8cK3je'vI8\N qՌ̹Zh?_V&9H\.O]K\89% 13+YuG 9'"B̗wO*ZwϙOF{@^) [c" M].[\?$靄-JQԏX.]l`Wm^51;6߮ 콲L%o U;Tܶq16^VypT)+BCeW=0ꁳE ?6ڣz&~n' ʦ)"[tMG&$I:_.=zujDz~toY/TI rvOU,vu,:#)d},?y&D|`a̖Pܥµ䮭ԩ48?\qu>W~xh3Wk,N/Dݫڟqy 6.{xN#q߫N䢅S$ge}S(Si" `#p!4%BGՇ^iTcCxҿmjzW雝KDV/_ qF\XeK&n|?{_08q1_up>>3Xu H:>֫_GHKZ)]'*Eu FHvtrr ? H[i<ۚn@Ԅl\S1FƮmrmPܘ= aB(? 2nx}>9ҡn1)%ZuH^M77N|?qEt-ur N⣡`Dc>s$ު4n}s.Gÿ/eHL,R8|LD*M@i/DΙ^V?wGu ~yVxSuʗdA`ML0(]Q]t;6^}O @nC<3g8rb(N]U#uߓ^ʨ$lիo0x$qcŪoKےb\5ysAi_' B)blhf)zjh@G.l\ X༵WN8jf禤k_PhN$_~?t1_(ʵsRN@8̖Sm N*贰2~ʆg:% !ӓ>\G"_%3x8} OڲBY?=iSMbc̞vN8]Y÷ی(%ADQmDZ\$ߖY~(Kt;}5kw2}^ µեr?g_sN, tf~h`jy!yWSԀZ]XimDvձB֘^tvJг#*4Z6SҤ^,R%e4Qh . -o҃Ny'k&-+H.6-%isr;B6YcT.c0À%-|l-Fatؓ+OB-Ȓ13 mqHӬ Y4ݎtA0Љ8}'f A): ŕ 7bq.q- ֝6Fu~[nEH4&_ȉ!j10?J+Q:^/uBeN%$ { *e?/v(l)ix|J<\hKy }FZE RX;=l]TLcl0.dV2ei)LN&'BMϰ!Hf R, #R5q 9-pU+ ުA U` C|hi 5+14nWMff׊F5Shapho/8W0MEw\'u ?VzwqQڍ8],<>$=7bm\ٝD=2{I68#6)qv,jnr\ڽ/_ءLSAKK: Z-h&@<(?y J6.`0{׈wt[gpο~<_/Ju]XM'KD+v 1} E 4; (•rFQd<ػ*eȐ.jIy_Gאzxzz:5߸kCroUsľ0bP03hᅣO|\(4~ژ*d115]JtVWjrCwo;a鱢6VUyӥ p _Zt K哸@^ZEsC CA-=رOhJk\ȵS̩hl(sأX8?If#`]v%2n$pjix&t.&m:,ub$EdnZ%;/hp:):éI1c\ȅpr :nTm6#ʠ3^IU:I<<5h쇹z&릜-XA2l.>nV* Ti^%=So;ǝkw@vfɡKK"/ā BٿvfG\7 vej B ! "'oIP>k$x/w>zwjϏ놟t`a5p=ÍkY[fi̧?cDbzyYown'LfrUξvCyv*"g geY4 5#ʛ*6'xo'(B'P+48V E.DRIm:X nds^f|gji!.x'/;sbS4$rdziu;ҟ?peV"Z^qʗtٌ\ fѩPA)[0q\~>L^ߗSZ$)hN[Ʈ䱨_zqRwOz5DsF~A}椉xQ9S7ٻvS\eO؛:ytӠذӏ[Q/0`UYPPۚ| ˅a| Jՠ2C !.OM0ϽHfU-`@YћPn t)Nn(F99'ÚUk׀TT)ʦ[ՊeR/yrgyS ϟµauX 9*x<9- u[#hh|C"H(ĭƾcp^wli'k*1l'fVh#0XwhYt4yIT|zOj7xYW}v*g省7Iqbk$v1H蹓$!OД7>3, 34rϾV)y]=~Q+mn}s~PJSDCZ8|jλ#VU53ęA2X @!vv{LyeV@ :,t_(WV·Eskkd[bGH,YXAs{s,8S;?LāϨ.zcv2@Y0e\" P:^7?_^\$)ف\S릋Q1U6Sa*8Vk|JDv~lJ K#l8T~>ŜzR-Ґ8&X ];iS_H+I;_a7AI'M qNa:GPj\yslz@jPW*;ؠ7 .NϖE&l27BWr26:$1PK=V..PK; settings.xmlr8}"N%I[%@&i&F<~Ȧ>Tؖsӹ/@Bĺ&XM!foҤr3HkJ؃ ˶+yݣr"Tcl~OX%ק)j(gG}tz&u=fbmU10OO9[ȣzSZj^s!H hr6Ņ9DYa$Aq{! bUpD aޒi!ɧ~7!%XUvڗBF}E U 8\~GS/hM!± LXZR˚X& x.V |a6h53tVt>?Qߏ7~wLKik2X?;Fxmx-{IԈ"MBZq-2udN~@E`px %YbIE68߉ys[ٸ+ A%E]ο̫m~j=~,fOg<w|o>`!㖗u 8,ޑ{WWؘJ(=Q0lFDt΅N1lML;zCMut,\FƁsL98eJK-:̵3/{=^cBh$LL()Lqm$io1wul |;"  ScADKiM ރĥigCXJ&&97ב,[;T^(+fJ|IjNcQBhc uI/\,ueCبW|k%۠O}Oη#aTr s{(z=此$ѵHlTNCڑM@ |xk&zB{aihRG2ڰF&ۻæU*k|b-dE$.0 UaH|ȩeX`0f=RSHOv) a,ҢcF[0vg /*&LS JtH\yPɗ"[O{f vX O1Z |z#H/ w榇7voXPK/H&PK;META-INF/manifest.xmln }֋5VMv HO+ o?L6̥pß8a>u29uBYNP\By߽ ^͖S契u]V9J:p%RPe%7p#$a='71Kl")8U ZX"C8!j>nax%!)[z;xssꐡw{f !t[<7VFj n&  ouk;z48j-EZpt#cEx=8דy<<(>XFo7y(||Y?/M\,GLӫ⃴>>ܥ@\g nrl&ˠ (^>m`1|.~PK|r*PK;^2 ''mimetypePK;MConfigurations2/statusbar/PK;'Configurations2/accelerator/current.xmlPK;Configurations2/floater/PK;Configurations2/popupmenu/PK;JConfigurations2/progressbar/PK;Configurations2/menubar/PK;Configurations2/toolbar/PK;Configurations2/images/Bitmaps/PK;t2`.`.--Pictures/1000020100000081000000609CB17181.pngPK;y gY" 0content.xmlPK;q- xGstyles.xmlPK;S!Pmeta.xmlPK;=V..dUThumbnails/thumbnail.pngPK;/H& settings.xmlPK;|r*iMETA-INF/manifest.xmlPKIfreemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_hr.odt0000644000000000000000000011145111527433212022772 0ustar rootrootPK\c9^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK\c9Configurations2/statusbar/PK\c9'Configurations2/accelerator/current.xmlPKPK\c9Configurations2/floater/PK\c9Configurations2/popupmenu/PK\c9Configurations2/progressbar/PK\c9Configurations2/menubar/PK\c9Configurations2/toolbar/PK\c9Configurations2/images/Bitmaps/PK\c9t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKaV߳Pw ОAsk;i=֊+3Rn} G׿ZE_7eDKN㠛-{;uђ8жx̽^f^Ai;tr`*>\bQH;9SU%s9HιWߜ{zsw֯չWߜ{SUY_EF2(ՆtQzu4ApRxOO]I7gc.~fxea< ס= zͫ;\Lys度?X/aV'_dN6t;%/qJV]UNecs^&lEz AxڊV.*,zJBIJ˱jc&Ik`Z5 aU FM䄱_%VKNW_aɍ#IQ) \OY@ZݮII\Xy8Z"!K1WTmR+) G\Iyc+;_88n9ޞHUfB ▍`YɱTSlF2/vD5_;^MtHMS/ȀfPc_hVf)[jz>?*b'}Q/~&G{Э_/󄄰4Gm>ՂnBP9B{% WPUsxAǦ|\eYӚe(WZ߮Lj5]&FWli0jgʑZOVRSgi婒4m80ޓ# [Ѩ#eL\MtK%H+Gv3Ki@lCe_&Ø FzioF<Js$ܯc'Nx'[ݗ6YA3RK;+zBXO ZPa5YŻuC @zs9u[8ͺC\.0ZL мPZ5 V:[Rn͢fN;Ak_hN-l۰;^"#ik>iZ{etv6~.u8PӚnPim b47qV`رdVS7J1r9迦~=uwEv>=u$'_04[N0^?B+;ůAыߗZI':CbfQ4Wx9/Ͽ <$ݏ582<_љoltm^V oEzcûI oj8|hB@{SܦB/mOO4Q5sC9/si݊1/c-}E`#`AMGR/`z΄l? gysةi@{wb>MC,d#@Y 1(Wɓ d \ʦ6Ħҙ@ eǕywiTJ("!PżimS6SIv=IulN1dU׃#"ylzn^T@7ѰS;zO3uX"ƍX?)4 ɭ`E]A:B5\,Sc'P.zd(O1PW Nk&Q zjoćZV>)Zc{o(fΠ0CKxWn H˧tS@J^ g< fP[uHɉ;ѬxI0z= @?p4 G/` :1= AGݸAGʹAGͺAGͺAGͺAG]ݠɬ6F'K!FUAPGa nU!YD2 ]"PE=DMcqFrO¢T٬>z3B1T>}O52߅Y|Wj9YQNj]>S$K&P̶.:T)KCӊ! n%p{a!h^gExW(g +>#NJPلpp:Xnl[R=Öl^0\h%˙yAEy@,>]~^lV:/gL$},yƞF|U ZE;[_F ?^j1ad"Yx%'&NN8RR b_YrvVmL,'^uCg9SuȌy$'*ʰQRT0z,&{~= 52\|Ic5HۘzeJ=ҲiYSGZ#X `(L1i)LQ$|R ;}G˟{X](ɦ,a)&^.\k7g#P'Yȭ8?$]N1H=@yccd滐{~wz|(!B;$fѱ0,F8PY^b=dw?UoNE>S!ÿT6D2}"+X攀^tu9b)t fscI% RqfԒ(jf'KA~KAtUrk@$͓olgd$ւr> <9+tjyJj~AW'?$C3~9 Rd iI%?%0_:k'[nςe $nRDƫnO+0 .k3/] 1h"s"1ҥcX99ub.`2.i( ?a}w6*E8ē @qJEkJы赋<ޖlvm { (|ƶ#np19Dn* 鶂_&-骲\Ȅp3`1V_L2Tz*`~"oYqȯB6a? zؐy5 2<=&rFo?5Yv 7 }Nh9t ģhE4GO{߆pOb<~bw3ub{PKU_"O*PK\c9 styles.xmlZo6_ah؞F[r-@n-WIHʲ%JuI@kw?_p̳ŁIEqD0X" /_^_&qBOS \%,6*6͙x#JVI{cT#ltNF\0I빓lO߉*#;AbTcƋAuY^WK!ne-++$^2LӹׇTT٦yU#Ⱏ0MR9;6 s߽W|^%ܜt'7@4yłBޞb˴|!D '5pax="{-fc/4[|hihJW५Q;iGcFg [~G$co(X@9g'BBe'Dvԇ7/d @ &Edc)!*wȒ9/")r:@%Rwx6@P৅#e#jUs'拿JSauR ]]|L^]LǣXMfNmvʚIn`%-SNJ Tja}F45irU 8GQæGG`D4BfȺ|@9+l;sl̒:jSb{͔Jj,ǒJ &,+ʔ:)HkGM aU2IHq F!ӢT'Ӱ[v}J10C^5c 趴` H4ZڌeWtC4 -!~]>ӰsoVJIà˛GGj9J!ؿe-˫9!P`TvS$ ĠA +weUĺk `I8gJ&f,tW0u ATB|05`04Pc OT:`yDs_2懐=&oļBRaD?V1(Ag$ZNb_뷐O I0Y(2\2\o&^NOC)0m}w0:g+JZN%0YVhg3ؐuC266qavc*-^hAr,{߉ 2y ^|U'?&{/vr_Æq!T39#~z~^s4i?z "GfajSYh3e:UK]\8и@N&i#4o;Fl/ }̍>~"}Tx;, ޾V6d[ y>O|QpŕŐ ]uϠ#(fOCC o+DC54}'>]ߧЮlE\.Ml2 W{ss3nx*d 8Ja96{:~>F=K&'ƔH+YBZa<C[T%KR lBDyFWwdgYژET޶ea#Jz B!Z` L x;k˫ۨ隦ĵ~)g})($m!4SwlHӶ} x@ Q5nMk]=ͱ-^< +@>ЉGtLT\uĘu!2 4?,轋is^΁Lhzu{6=w{TGϠ3'3u è9KB4w lT4BO .hAi=po^&%Oq8__Tu77MVS6cg #Ng2T3|HrzAރJg[2nŸ0! ?Da4CwP1B<`ǡm#/4>w<ݢR8̡~W <BNU+ W>.[H_PKh (PK\c9meta.xmlA0+16&XJTjWjV=V^{ 62 { oylou* DV @ #>y9ޡCn%I#kp˝w{\һJ4,l]Rgw;U8.WaKwq ٓ-K}\.EPϓi1Խc| tO(KlC0 vb薑) ] ?x_²Yʧ=6] 6pPd4(N> | Fo۰V|)`_*+Pj~E2_IMFylі7ݏrRD|p c>:XuޟDPK5?bPK\c9Thumbnails/thumbnail.pnge{UP.w =C!.$ .CתջU0```05m000(HOt00B Ғ>y_)هΫ)l-F"T/a)R5# ̽QsUQIgO>lN!ih g@9ÝkŹ|l5L2c9s~7#cp`mOMOΛWYx}wG} B\^CLOXU !,@%ЉҮҦߋ5г3W;{{B7Sy.PS^^.pOt>~Lq1Wg2M ){\;MEFE_ni)4ßn͖OOO vGFFb{ =.jA z鬒ƽOW @϶ wpZMAUNw2v^/!?VV]~G:Iwz<~}[{w=,g'f7ĪS7ջ*mMfZVWM.e1ܕ̊Ul)V?g?m@P~/ݝst7ה`4Ud.#LuwshIetM<>; YX;z~uPb3Tcq1$:RoczjhR . ] zLkw(A4PyJF{Axfm1optHHGg vQ>tR_m#2푕LKNxȵ{LǑrڞ{HӐQ'xW%O"\)~fy.d>c >e +`o`LA7ޣHLaNe\uZֳz/F| JP2_a[ubcPey)eADuӥaQ'f,NM=K@;xO7+]nME˶羵ؾL;_=ih7t}ܴml:{ )":ö] !;,A)HBh*|[ζOpUUo#?fH' 3'|.GI8[!^o@VзǩܼĞԛF1?Emz0+Fܬ ̰^@Ϋffi7|LT4suUeZJXݬ8kul"٠O X.).9)|rI۷"Y^y+WSkS&%jcDlc\G$yB8򻬕bJ %.WtF\ZOb)Rԁ<;_L^o `1NAcuFW9룶u@oe8O>HԵ]/34{O>o{SF+BnR@4D;Y)Ūba>q]~߈ᶃʶqd(k|-1-39#/"kOn"1mUb,u0LqOEJ#wrр7 4t+ߑ>*@K+TV\3;W$"vAF'vq(pkdߡ`0T2N[bL0?d?D|kp˾'kdd$\qC__m lϦvO7wep X>3.)kRn,p ϱZC<3GA W9#^+t P bf2x 7+2c;?nz~T<'B*0likW j-9T0|nD&EkAwfy꽽{)kg; yWND ޠ]^־K<3.<~M|^HQ]c[7ő5.AV8~BqDf;6̏75OT_JT"rRn0S* 6[bT~|DťzyiFN~2rƺ!TWkagז6kɡ_5͗藺,8יO@3*w=6sC5~Tx"\Ok)E͓^cX)Vu e=^h+PcaWd}l8y;q wdolYϠPMl%R =é -x#әo5LG~ڃC'~$:g6fy"sւ|h^ȷl :ZUMߜX&t Cٓ{Tuֽ"!ik8-C:p0Q8$G~_TbsU뿗$/:ul/br@HRatMgrGNY6YOBvnr;'|eĘ_,(4U󃁨JK?8Zio JL bQ쎪.‚2cn_x0P]%n C䳉;S /v-_,8(ĥI)LhPY|.;h-Ӎ$pw.iUYV~7~㏐2sEGSTp(K; KUڢaM,a#X[cjmspK'KB$@?o $LfA{)큨ysbN: ږ VQc-o]ꬦeq䦮+VSk\ 6 ɦV?=>\`8{RI Ce6^K5,HX ~?%lEt3G춈Q3^& xJq Gp H/F+oz[$|LO>DtQFz01.)f*&Z{Ke@.2f+Yl*5}ZVgϢͼD8AU0,oRSN#AcsESp뢅8s]q]1$.p56; }߃%coAqiTo$Jlb9olםLv1v,_g{gdH{'<~HYX34dZ&nLqֶ pʘh7~(R;{##ь]%W Bf˴jo˟ȕaP&_E!wxl08H~ŧLpwWψC&xAu7)Q9_&NW uun3r if=BՇ`B߹ujup`\$-|EM.2}/Z{0OV7[gݢ@9ʹ#GK>,{+^vVST3 ZFZJ E#o^y 2Jۚ.!*H>Ut' } ry̔Kzhrܔ(^IEF싎-:ݨB[ "ʔ|ڶrO TYĻeHnڬ:Sw.M߄]ߝy5PǹX:F41,O%mFYN0J{ka3joΰݩ<4hC+u9;ҒYʿw=ۮ _HϹeIy4HFNVAmtݭ3ƩsyBZ>떫*yW Fzr/'>F{(j-LT+Wn~]PfwQSK.NY&a^ g\ GeKX !̲1;;{Ip<"\bWHF=R,SldxYx7%a~+ץHCECa9Z؟]O{$(;.wg<(foOteܢWg6h)u5_PEo(wh{dy@9j(pVDx0ScvgTs(?(uW{6E1ph"%c{N^?9 q/zCRˋ&2|LXkVN- EywXܵQOIɖ'`!N{R3T8ӬjU8I^G 3SAxr3L‘Mb)f̨V'=j@̫аQ5N}&FֹYc je5lٍf7'7s A7Qҁz8rFv_9r/ko%hNfY;rlʀNY1"v|UD63܇Ufh+Aix#^~8;\zzJV8H-b&>l*Vy0M/ad+-ڀ0 #e:ژ?Ɂȳ9ZSJ) A͍6[Rz_' >(AڻGFӘoC`㈕@֩L=el8XUPZ荻0.GƼ$w׎4:%#75OfGK78bSC# چ)m^vѨ΋mKlD~-twÙTq27v3H,A>1Lu=dC<p]7 Z}xB Z&ETwG&,AL1֏=DX_>E<6Y%DM o-dZ 簰p%_b  FӦ>XEb<|9RXToXRLZ#LNJYЎjjÎsQsf =chuS{NTEgmiQtL2>|kHv;3~D0NhwN#ݙe~ds NڙT y#Rgj*#< L'ߢR)Jſi.i.KȩFVWJajyy~nfISa$M2ռ eOi+їhZq{S &lj:SDTs4V,X(^zާ**9֕#G~!Pb'Y90mǑ g Z;DQ\^ 䋘ETR" `+显Jh" HYlWb&; ئ$Atu%(،ɬ%)Z{ $ہG:84!pv]n¼.[&iHfoAVc_ݲ*V&~ճyp†;p^mq. ,PC|2 !bv4lwqvRQ;O@?!7S=RdHኡR ʾ! SbYu߈v^ JODz1==#r4鱋8zJe5 |=)W]<(K9T~5]W!i(b6B= I3ҩ)| ^+=(,TcivInr Y}5ⷩydȯQ^_# j'쮂~aJ ˜E0LlIr{חq@^N"ri7WvRtwDӿpq'8ԕL{53S֢5cbGUju'bLh8'CԶ=z< ?69=RZ kX.K3L1]B kfl.1Y+=l kj0f7\H눧a90rAB] )3p)k(x:5tn7*Y\A^̢J;!uGgYSDvEMuES_H%2xsܒJJwc2M?VFyP "9 Qr9^HN[ZM -JXL5vj/b12FLH9Ӟ^9_AvsTJ:)I ?)6\(s\m㣹c>V626SêDG˓Fڻ-O2`[f8X+Fhu:9J"-M]Y !' ߺ7>9VBu9!}y/j,u~,-7iR0PM6SiuͨSq#rr g\z>Kƥ;xmqFX*"Vb+t mP7J ӧA.<͈Ǐ(mi¸L/w %maOh'DoXQ Y>Lӿ~4!:|/4$R+N%Yc3V g*]oܲa$|Dr 1K*lWԖ|;m7[n4;TBWx_C0>hS:M{w|fP\J$1g;zJsW=Loe5Viۙ@8V&uZ6TguW7Ѭe bCXWttŨm&\AIV@{!ᜀn$5Bn0reΒMSOXN&9m>HQ)U *R&`(|Z8ލJRHU 5B'a7h?ИR,W;3ܘG4=i9x,a¶V8YLGDres\#!Lav~s {]wCkMԒK X']b.QYmuBy,T7: ) +E2%ncAtʄl@fC7x>sV}2xe+籥״PZ(bb"'EBio,,,kIٍ^0e#Vi,WU!q@5)h"Gh-s2^gL0E 4Acġ ݕo, N lfV(,)01;Rb>"^7| 6g/5da/ (Xg^dll96 sMc?+3vl8-$%\! jޝ(hCT^$l\כJZ?¸XF(:^+C 4lqgm0.4UQgC>NM*O}9n]ƿF "(%kE 91Aʂf'zSk%~zYG\L}c q>CA ^1NΣz ȈB:| .q>#lwIw!;nE1U,{ʠ̸*΋kḫgK * T2 ? _M'%o+} /F \]*3i>XE0X+ FIY)\֡ˍQ=6#׻ƶxAi?1+pX +I7<7@Hޯ-U*+&oA+3G&q: b,Wd/5L¬Ep%Sa;@Ke_U5 Flԉ~{evS ^5h ৲=Ci.[^${4B*_~ Ųid >,L$Xap.w|^bfAxa֥l 6 {Az %$]|@XߒiVR̺7 \兯Wfc]fiKt5: %CQ=[m*v@_\AnYa8s5We,E׾ 'aWRe&mpX>1),]Rmquv_c]s(Q-rA I+U|TME=#jd8`#a8AY\wA_~fL M$}\oqhRc?ߺT{Dt!#sq00,H 1bVc.tDB99:ђ}iV)z Umτ5S^_~-FdJoѡA#iLTtn%q<_, /;U UJWLj=0#[*N(10ueqHɰn>$|o7K~) Y}䜲)jI)epٚcaâiwj^9lgdx(\TGPM$Y!觠pRUz'[ۆ*k#",b#N"@Z?ep=fLo׵aSIlCOW2ӛ}`o^BS}I$#i 5ڼ3*x; d!3} +shkCj FI|9t'DHLh$<2ּґo0p(!F#hZ|ga8•zU9 ˼B3:ꈱpcH8_m׳!ĭ4SH4 ҹ. ֑\pQ*2'LmʼgeMF9Xj)@+ddZ 1r}V% kd_{z@ 22Zyu܇V u~vUm,3hK_$R,20Rn[mAJ.;Yn*&{fMf&pWGJbj'~[wӳmWkij(bPhC_mظ)Ax\wث뜯bx#mύQWI8nRΊ-f)?W^n~v{dm &N sve\gܪnG˞idr-U\bǞT.Oӝ6mi)~c8e1%;  EtӐ2vS1\fRqCM!n,nWl|h)2TLB-t4lx/ ^b6- ى=- /pɢxDE|? -3Ȣ &e-}h#]=5A-;816ɊEkVCuO9֭eR'S'"j:gf; \$3Tgi>w=#SScLU,ϸTHS R\jvAʭD"e[gY_ 3_T1RUoqIiLݯ2&w"CGhj ġf WD$5[a46 l, (uņPBd1sAx@pybo^qx?gB,C9/c,x}:־ZzdDڼH`͵$oA%BEc8VfC]#S>6(b\z;dؘTF>4źAS`~VA6B^q`jNXړ>á壧=jwLh:tb}:# ?,"!&CL g<׆S0a\Tq/Bfڽzcwa%μ)8EV7I+h"E-x@ՋBeID}O逑LnBT\M^},3\RĈeʖJ3h'gGO|@H0A^2Kc63<l%&IOsҸ5 +AA^Z~u(UKm$_)HxY[UP#nJ-bJ:b|f =͠Ϊoi 9tV 09U+*d" A/0ui0 ʫ=]KwSAp c1HgMLjbbb8|\ζC18O>Nl>DP~i!\@/ƅӠr|s:{izd :O*bthkH=ooքœ@>;<@td.=ka{bgF^34˥-5i+;9²@Y-zq=srRު5 u@RHΧayr&E 2DS 5~<1Bh~raBus{}wO0џ({AGzL;3gjR){R8<`.CXǞN @ `'wq/| nw|PeiiiY8 qZ65/L6T{YHOc)_eqy74˳[L` q&WܩV ĶvllBܱE@żzU6+nAFAosOQP93h0[h.E'r4Ǿ"mʾQX?eFxDt+pSspGLv|ł̋_á + 0>ue؈ ~"~5L.߃l 0rz <¤QJUV(CJ':h FR%_| "LrydTPKHа:9V9PK\c9 settings.xmlZKs8HB&d3$܄/~[ Qmi_|tJp_/Ak 1E>T1p}@kp:WK'"TTE_M]ɘ-X'XR(LO'!B=] Eᮬ_B02dN9Z J5%jՋ%8-o.dYy`5gӼsq<@"qVO<'N瓋{"DT,zi9㍒ϊbڃqޘ (wZ&w*l>LL8qA^WAA4 DUZ"snC_촴?-R*!;ƒ`63)K'gHBkoyO|" uD6LTܓpS!hH=o8=^_vHτ&*" ?8젛=0}~-vF14`19]csTo+,PT=NCĭ H*ˀ&&.'D2}C>.AK *.2;ސ Nd'4|prg~=l&ZB2Hm#`΅*8;u#N)(r-kL@T,m FF@s1^(v(M>or={>R'յKȸz?7^~$q%ЭMu{ <ݮS2#S%-׷d<1rզ# Q]s1gԺXxo!Ǔ9&զ]nKx-7Cfx~"&a}ۖ\xa_uI61*Q>Q !MQ,+Vls3۳=kA@p.8L~fJe56YVّW}Sv+R$a;F5=<)l&W} q{Lt3ĐڲmLyS]~QIS[fHXro_#T5^L}m$ 6JzR)q Ml}JY4YwAjVh&:PtPϼJOLl˒}?mtAgYrTL?H9*j͂^nEYV I]!);<Xɷ~[»/K ۾PK #PK\c9META-INF/manifest.xmlKn @9΢M8.ւw}ਵkэ1^8'"0R>LjGn-gl7s(1ENƑҾ> stream x]Kod;n0 \AY4Jf M~D"qu'J'JǑWsouY{{\|[^Y^m {"ov__{= _͘LmckА]|@V8w0bQ&Aж(DX9]ػ%df3 IVXCyל#[C"bmFmDҘ1>A-kF%lm*>Ϗ_zkkz/a |o]__ɀ_Z~|#vqsLj YZf|R*n k>pl1ea /[j)?_[7n)M~ ku~gN3532!8 Hbf hSN bBtc>PM<xJL(^ąR.ӎ 5cod GISǟ 7JI`>tXw2T@#}&蚫t׹XYk@!gzܾJ)]V^7gZQ8vv2uv^FWnF+gvZwJ}T3wd(vk $?cyć&Yn#jL,$ws6wuOy GiB?68tqP3!xR1aK'?5LdcCy;8PG)`>χzđٷS&|7]'49>~𜾻П폧x8FH*0ǡ8reܤWڅ-+("KZnW N̵΅N?\ODj:ZnZn#z-A۸5-eΕ+[Bf,/ VZ%4ka]=R݀_nZiwl,Ƙe5`=y!bo CDZIX_ߌn׫B~!,=׷XҰlf/[*}dݖǨ +ϖ^N7ࢉ҆>n*Maۂ=Yx1r6E-VǍk wnL@bF0vNj4T nU9HNʡ%TGQٰ'mJjZ#M:UiKIWM*;nažbdz 6\#TT UJ"r>+1@ިtm&>}F 5UUano$002*oj WQHbig]'ÍTTa`ƛ]Qk7YTթZK0DϘ=HA[-~m.}\+֣&fg팶mEۃ#1Rגl=Km7zb9MvV-=]a^߭]c}GNNF-vi [nݎ\M"h <RHVfg>F5M³nZ۠GC`a)J~UJ6z38dP G'YǗ@EG4DCдp)YE+(jPx8<ؖCNY,TOCңk;%9nxO6۳:MzжcJ=N'1T뒿{odf]e m&P9֮m~oxrh8T%TfW}}Ǧm0(`/|/U[s!ckUBz|V~N~lU[Ə¾5Si _ iu<-40hrؤT^*n^ W.{@jA-ݲBRm6Sչi\}xiU=ݧZ _;I喏pLr/,Zc-xfȻl_>˽8VM.:Bƣ/<}}?$ "=|Sx;Tbǿw6e]'no~~z%ܝW ɨ^MLF4:%Z_ e()PRBJ)TRR|S_9UJ *RI JӛYiDiFFF TDR*+EI)%0eVʨID>++EI)%0eVʨIDA3 (aP E-ᛳ%PʜQ-:FL*%%*ŗnY)JJ)Q-RFLJ%%*uY)JJ)Q-RFLJ%%*WvY)JJ)_PRJ(*4&IfT+J3_*%*W{Y)JJ)Q-RFLJ%%*]Q?+PĪk$k.Y/zFQWǬ%PR¨Y)Z&Rf% e@AU/8UN$+^ {*(^;>Lj+'&~*+u#zWH=Rcx,!`NunjQNJ(:<;dFG<G|d!c?wе'0_"Q<><nj0oCy3FQ|xdJVϔD3"sꉁHu.RpuL,RTG"!Hu&RLT?sT_=uK|TY>7T5 y9B6s$S9~_s!aɚ5qcÕU.5 ؎\ܾ\ʄY7v2Ji/\Rw(ltn5| "S>sl>{e\0-A9s5IMLaL-KC]FM@'6<0>6@ox#'&MV7ئJs7hJ0Iӟ1oiAkpf 'ղ"{4@j:I3;J?;<ۃǗʿyKV(iRY7'[mAI8p=zdԉ-xya4xsD(tm Um|I/Xe+AH m[s솇H^LJ=QںaN6Jp(1)aYOnuԱ탓$M%*چ4a{JoJ|ncj #cGp\'SstGǚv+GxLP`) N[1991?q~{Y{ݰ-W%d lKW8ZΪmq܅[ZMZ$4])y}Q-_RBEY%| ;OEYBSQP)P _e5()EKM2BJ!RRRJJ2+eTˤTRRJJ2+eTˤTRR1JJ2+eTˤTRRlJJ2+eTˤTRR#"eU)dק_reWY^~(܋/*WVRJ()aTˬQ-RIJXVRJ()aTˬQ-RIJYVRJ()aTˬQ-RIJvIRJvjҡg¡kkY)JJ)Q-RFLJ%%(=?J~h~о(]!(;ޓ K3Ĭ1%&e*]VM{t[7r`, GOheC!x,BAv/C {ru`竭!OPЮ‹BAh/gtPK(|(+-$79n-e̦Nx5<ƘQ{>G5eo|TApty;Fa<biy0C|̜nh6nTn^fV*Lc>zy9A!LASmpY˄旭k\oX7޺m7&}۪piꉡb mX6Rmnx_Ԅz480,|@٫ñhkH,q(ZOkԃ0α1FCӔOt ^Xfr~[Z<@8su'7gi ݇ׄzꗍJE<筙*p82@&־IQ8cll1R_3ojXq!θ~8(?'>3 `YKP#W-m.sY0Jq\Kչ5Fmӥ;𸫃b G܉+i0.tRm7?O_^9 endstream endobj 3 0 obj 6236 endobj 4 0 obj <> stream JFIFC     C   `" {p_^P,=$aic*X]`YӚ:#2HUdo ~8!5]YbB#{K@_6IT6vj=й豦Ȁo\*邹fŇKiπ[h+In|<%iFo+a`O-SҴe@-D1ݰ#[bu.3ү,9/EZ3$) 0!146 KŸ4<qN۸e inXlUJÔErVkܗ KEudL <&Xߙ=n[T0}ݪ3sMWxg{!Sdq#` JC+g/vQ񦹘!ݨݮ\dfFc:F/UxX&aƝ'-=jmq&zn; CBz8Y Ƃ0c!nǙ1SmtVS@ 9*9r+9e:|@xf9c2/6#(u}v?կ 2([VY~HQ( YCfV{0 WWkB8~H\u<9 09?5 1ޕKM#eX=aXJidџ*aR=+FrNVf欻T;W+`cV&>'1!Aa "2BQ?BLmͺ{t#w HJ2ځF]P,YV(s5a$x%%(] R+OR*4 3)2ɝFyA)]C8Macv/P2 1+3hD-ҌUʱ Nڸ WB !1 "AQaq2R#4Bb0$%35Trt?SV+qU&?CqZ@:BftG|M}}7RmtEo%>ɻu#*?X@+jl&YnP lWϗߞ:KE-7j"ZeZzqbM,!]]pSzWC2r]JP6U9%e)E}IE1\Sz] llvXvY:*h@dTW"x%PVPVFMm[}LпTwŝyi}Ht󕤻7S/<=| rz̀IM{p*;"1S_*3GbrVF?>T-iKJxz<`<ˈPWX$+C+]@ Q7q>p!!HJE^u=DlumWոF+;`F'yBKA:uhNݤQe+qA)ID]$v J0Pj(e qA8 ÓSN]pR1r=C#jk"Te{S\H7GY*JfvUt}F 2:Fqw\s9SW CaH7ڒj M L!<ӤJ_R(QIP"|Qƕd7f)>0Qw&G(J9G+0[X |eX߇vUP;Fz^`x{9ImƇa?9yì(*Ltl^ƾ횣\fZIg2]E/^ya6e&}+T i7l4bB~rHڰ#|/mOJ2Mur!T=uEQ|"VU[N$⣴(!1AQaq 0?!NF OU)LGRB @'`m4~2P(pBY2i([i(3ed/"SWfKZx~gK‹ej& uf'фy% GsfrGD#ZRmw4X2l*ަ(G'v!ϗ&%&s>JzU3durRkIѺ u5[YJ3+Py ӎ.wuŃAMeT ! w1gNX(!\ƱT(UHM.##8={ h8XDyOrKˍW`5G(+% +kAK}f\]rNzp~Vl&Q4k9cA4  |$dX v3bU8/&ZmauiM X$Wpz ?@I=cÐ @R<,l֦&"12q/4*D}HtH #(B}DL!w@O8ҙSG:^J~/$K NHsHV$rxKPE=sLEBy!)=襻POS$!s{&ȦQ륕!T#÷ɕQ{ W<ݽQxc IR:_<'e<o"1!AQaq?|B0az\Dt x"GB_ңX!6_5Zf}Ϧ)r1qoͺ o1?M 4[}OqMv?-^wLюo7`OF;m0n[StŔ}f[%!1QAaqс?hn(XAD0ժ8X9Cb2 ]CV9A+zt}̘an=%Ƌb3Yp/ikC ZîG."{>"4Hv^ CqIYP׍3 xxk] =y&!1AQaq 0?%@PtXoY( Lr9A F. =/ʞ,VрHp@p_~QZ.w Ll`YA2a&J d׀Krx-DDW$8RLo7 ܼ@B wRWƝL\p!ȂClgp!rP"@ ffM$,GXG`I*/^2n%hGb:\/ SJKyoD@*e C輿D /jj<+0!w 6g{E$fNvpU,Ϩ2' <QڸnL}}18or\ ' k`2s4M@3SǶΰًw2N>  _xa$+$DL h6rQ׃i{۩||4L`]^zĕIF ?N`?tPPzᲝ 1! Sept?HW~@(Lf'q&Wp:eVQ y dDTU? ,]j~VрܚDŽ>0+0kȘm"5HfG @\)ADtjP c\4FG1p˿/8: x0ܻS6bLqՏW 1-Ղi  *H(ވ9Ae]!U0(0b0F|SO'>AɘŮGw> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream x9{x[}\ɒ-[eJ~I,)~֕*q~&WvcˉmBB2hhiIxچBn4ɀklvkK70J ۷6~#|ߜO9{$gcH"'Sw}S"s%yC| =W`]?EG=.dL4,ݬ¸Dbܥ$ByE0F2M=a2:k|Ja\yx*>#KU|c s*uFs&3oł*q{J+*}U~1 ֡7nq Or)jd5Q8+[L$a8Ymx#̅p-?ܓg~ɆNJ~ߜg2ۏ:UM]1۴x%6ޮ?#ņ:yYM4ą|ةvj!"x0;2 |ׇ=/Ml>]0 I}ō=[急ȜViwuŞOpL"Y9&]!8ݙy$0[4 ^gl+o9LV6ANXGrB$BD{]eDSGwT#ISrUk")I[6o۾.)-(} <deJS7]!`9 4vsI.sddn~'>a2?+Yr.;@{'$9.$;[l[Mΰmi*#؆AME&戈?ڳ_Bd0o}ބ_1rB4I.bIr&&ΘZ<ַVI:=,6JwJ] ZC A-l2.]B4{Iͅ39=,a se.֮- DCqYKHPZV\tdieyNu_4rF"im$rP jݿr>e $eIɣB?ee&,8A#2l|rP_%2V9RHN޺'$821j]^#k,@c`r#<-FnENc鎓R0,=O(3q2.+Ӓpe4N rO(Ȋ1YpȔ;Ih㕍{KdEHl[Qܿ:U!816w [][ ѢVO!c` \+vĝB..]m:`./l-rML6ss~Qe;ڹ(,\yif yɐZxsw\ +cibs` c2hGo+I=.A(kc4W)!>Q uwܩ7&ug}p<|ћ74WO;3 vi-_Kjxa+&HRd;".᥉3wm2.nrż=zj4ŒڃJ)}[];RꑲJ)lI4AFJtL 4ӊ%*EB΀ɾ5Vw-@+ {Sap N>N1#bt7a Wm%&kib#ݦi6Ɔ b*i‘N9, vպH#/_S,~Z/l{JjtrwLlӥ1$s?A N|x2q'ebhyuȜʱRƴjWΞܸ~'.utLuPuxۍ-)޷ مjnwҜ㢵].DN}mơTŤ[vNޓ~3{otKr F L6YK hȓu~W%*d]W-$|unQξRbv~8Wr](dk-$M}M+b,H},G@?pQgG%=` tBSfnrD$qϙ&8E1JudžO9l_-˽+Ю"Q nzM᠇" r$}\Ց^I^W_$H9uazgok- "s+_+u]#VC/H!jFprJ݆5UtLvvu--)+uzn#6]ZJ;KWྎ_JŠlϟZ'|NDܔkLfJ@ގMMq#䞟}q ǁ2FߍaJXCW\>zC5p7/{u@%43z-MQX <5YW#~}2~!,CoptI@{Q7woCW~d)7U?S稷oW?ϥk5 KVi>LJ\O2 Cwd<^xK}FwWt( RЂ|0RO}6#v 0Cj*)lgpAYaQ+2 &TM@ U@߀3X)8: ȃc0ypU V.`(t^Q _S8pT*f0p?FC (GO + V}FԽ NCAkP<2xM/a 눭c0Jb0k&s5 [ina0yYDN41pF 'G{#ըD;`s9 3p6sIe0Kz? ,Do1J[EN!=32p2RBd|@' &8oP8 tt 8:ntO1Xo3(gm#ze ze3p2ńNi{Lp%ĆWGge3p0؄vf)| 3+ _ LpGtK=VB!LajO 2P:W 8ٙ J S˞e0Ȝ}H|j~<6j<Zc1'>8 I9OBG|2.d5>=D_Рl"3S,U*jjb3@W(;4B B1av&&ćāa8 N&`BHą͝dl::.tGc31߁DbþYH^5,P5<5ّ1at$pFg'f4p хyAP'a4 B%P $`gMhZahqA<]C_S0%,î7>ax_Z+C"SYY+>^U9ֈo6<ϯ/ PޫY V!wJMv303 R0f[ޑE8=?2N78F Xa^䌅e: աJZ޿ Ӱ+@f85Qd]Hvm YKBB$&tFiv3R&Nk!z;1g{h ¨ [3/Itcq7t(O!*;=2/kYkZ#kCI(ϮXk3=U.1>Z=]zΰL_Z+(x*+kg CzMh%Oͯ}5ae~c_uYݨkuuXݦ_xkXsͻ֏56VumuM9FyM;6AfGi=)J9 Lfњ9F UDs㯟x8B;T&{S ,:NN(xhnja#zUUNhymed}m"))}l)|?~U endstream endobj 9 0 obj 5923 endobj 10 0 obj <> endobj 11 0 obj <> stream x]M0>nv,"qİ$2yVx23~lyaw9fu.xmPpL俽6S6a8uLns|M7—,ᢞ~mi}OgaVEVת k3}k!C>9KxLAYkcnSӆ VyGSNEQ:lR*l^oyg0.d2G;e7/`{%ΥoVj_G?Ψ_J^zҿZWI/L-/OC7CWi$5w1wC5_^w7IJҿ܀6,=}Z{IJR1kFDx@\`"!iP%M4 endstream endobj 12 0 obj <> endobj 13 0 obj <> stream x8YtՕU[UuZ]ݥVKM]-%KdZl˖ԒekCl˄a !!mB`xrrdÇqL Ʉ8Ld91d [s_Uɖ=9}[w_-.,Q9H)O #^) ঙ^yk/qeq4@"Oʍ4BgV==0鹱™v/xzpt;V&fW`|B_ZO $# 'JudLN_f(2+r6p+Ձ`m]}($QˈB$2bǁPϮXPuY-B|Aףn6_ؽ!党|0hien ny`mǗko`xԽRP+#ҥ3Q, ŶfIAzw*4 .EL$2"sו ݵ6VVvLGfrD$mZ7wlߟ*.alHiF9MePa՛촎ŲZw&hD6rٰZv5?޿P)Y`M-l@&jt8?^3?SCPOEEKx#~SlW'tzY"ʯOebN'5?%] 8Ԙ2t鑴D>sa d\4fړs;8;] EլL'VVy* 53mѵonyr7NR3+u㑘 [-gl-“C;Dx>"$x)e#*NUTBʌcXvcSdt$8sl+7Uk5d=!G+HY+.x)zFySNR<˃)~=naî=>-~ I}7ZDuփ=zZrהBwM1d6t-AŐayB 9:9}mbMPY)&lvLkZ/D )bҔ^p.Uw >r @]Kbv> *PBC..VQ:by}t7F"LC~=⺸OMbـd2Y}F@[}s[j~w/NmbѿqT53~M􍓻hHa)kʖ [\C*xK\,.l翴 頓׌׆H :R1WHk$2B7C TfNqro7U.cbkbڳu+H=EB %ŎVu"f#UJd& EYȦ}xg&GX ^&< 31OnݮthpK.`KE=<-/(2>!|ERz[ծ:i{ڟ/pFFkW葘{'ՇROԀlq*]պiGW(_m,7k򾡃?lx>i`IũYy {iQ6;,~em'ki北a@5dUi4s+C֘~s`/7ҜE–+I%ZQϹ] K:w>/ 85|KoR5}<~2%721Zόh\ o`:ȩq%'б­z+e6:_E -fJ]rS"=?_> 9ӮVp#Dk@.7 CV;!^J@V[w|g>=skoK5=?gNܱuNWcdW(5} J-Ps ^_v x>,z>d|îz(mL9Bl%K18I=/1gNĊnC̑z.]?b21bJ]!&O5t`scK?? "ULp&{ [DRRX-:`YKqQoH鿅r iaS ٫5r)E7kbFzAPj$ГV6s[b|}dގuvGhVPz>ґnk鼾pk CJGdb i{p3mڇ_m#;'|ŶmĶ:նmkf5LX 3y^m7:pʔ@[Mɿ.t_CU~cmMv7Rr?8UUWk([/ӞXܵudK#G@v-9hXK"kK-ue{?%{_KIEw>Jz!3CRI)ig_cAoZ ;G#G76>@ٮ>}uÃd?hV'}g{l/OA ^kN6ʩJL0!;1]?Zq6}%yx8>YYa6vfzᦾܖNMpv: h_SFd#p{ {ȥW3Q~z=`C=ĖGJS$^ f} ߊ}ﱏr?1!m9A̖#'~<<*wimϝY'Vߪzu5{|9迅*VRg_o~kvgE_E>oA/4rz8[%tk'X8ZཌXG=@Gt:)} 588RC2@苜ZG%nA^Oh1L0Jka_ym8^X/4V`mk5|"`Y>/t] 7o6r8j,JlvM3c4jYV0a-l0Sԙ6'98gq&\z%"ہ7R]w|]l1^m۾?*^zL FF?)AMF~u=m9>}(B~.*T;] hq%v\K do!3>}re6\iD U\<0 ø@L!q%g`|}O!eax9'y pm寀W=4=7=0Y1#aИ"@.s;\\8dSYTZ/޶(.*sC9P],F9g`S-.KScbXqP1qq>9r$:9ccix?3M8ݰ45vP];2 fs (N-sQ M> endobj 16 0 obj <> stream x]ˮ0<#1!GBH9HY8)RcCym.}37fo[[eCpz:L5Vߺ9cy_/Sdw_Sl>e00z=1ϿEY۪]b\^CkL2TwW5EѪph3r?Cu -j#\5 \y ^ ג[xM7,u%xKsw=YȱFN Lp{ux[`[oŁL+5__`כȆ1ыI/10p3/%%| MǷ3$& - -пQA_%k߯eӴaq_!K%{iF~ endstream endobj 17 0 obj <> endobj 18 0 obj <> stream xkl[{H:c_ھ_wiCK4Mni8$N6v2Rx?Z" M mց"`@$h}&M܏8Dž4*GP.5B=S u(F#h_ T/N szc0/ܝuU=E׏|*JV$iü%7yHҩ{z~ Bt!GHTx豊VT˖W,TVUkktz`4-Vs0A$<<QT#e-' Ye, zh%EP#Z֡u8pom\Q<27`"j5q1ĢT 8h]"rzspLxc T5NGǼ˻zo(Mw,ƀ^Дڷ_b^oay^e˟EL>'yo$ZQ GNFw[7@^s׺D kA5TF;xiSw ` ?28*%nSD*c%Ģ+*@:4VU>DmPۦo}v̔iZ;swmď?Jn[{ | bU,8UbNh˕֋Mg|7+ {T\*YB*b p61yu dy$Bgζr߯~bqr_c,+|muz/%\u΁/m<>qm%V#ňm,48::3L;x`/;Jc_ȷ C5B\4G#vlo ݦ ,~ٝ9*\[[{SC{mE(ڟ!Ok&.{"^Ws+'"Wl+pJz^~* rErz˩v",h{W%ڲ~1g}( SXk;݂v@~^AFPsi YzЭ5WAJhsmhEk$«-;#rJn5Po^עXmco4r[7FS+w0IEqfk ^u3 uvCPe4A7s|fl2)ب0-tl2J_SIR(KcY7a0@ml2z;}mk9sA[͜U˂I!w?;@ ޅzcL^ZϖL\}Th Dڥ5m޶55Ӽkm}Nݠ28BLxب^&5WP&4iI}e6 BCauCFTڬhk`C=rC D6V naN:twlkAZHEa; uR=*szeQ"4)+ 40`/:+W9OG}ʻnWshMmcoZ\o/@]rޔ{RQ5G$o$BGgeޑY~Ǽ+AcxJ~.u@jׁN'>d,s΃7O߾-||@ H=cp#g.y"YcVOHc<~.yo!җw3I}Hl)vf† /KlA`[_I2}ÜEI:W>I_g WS~]|n mF *LjƵlCws&F(p2eX8uKFØ4·:Ap˖Bv+W i38- K%8UREcj0rMuյݡS;pv=LmnmX])bUv6|Z}ZCZWzost~>͝iOja/01`^Pp :Kc:'жk~VlP5>xyE ~ˣo1dLJEzX}l.WRҾӐ"B> ^\wXf? 3- gWX7}}[(݊[₲E@@mNx_|_ ,YC.Gd-2"Ж`eX w2B kP=!ÕpDuȏ+V;2Q 3 (,ڂOɰ +Qɰ 2A?\Y VW}R50{JaUuhЪl6=R ᆆ~#7FS4ˏ$N"]KOtD!M@d*J2`B@,-mIOM;ޔ3F!*FM9&3i!4ѩD!=LgvNH!OO֤'S,8+;6D֏ 'bPl +N̈ppH<8:\JmflhI4IO4ɦϒV> endobj 21 0 obj <> stream x]n0 sXo}v2* a y SԦ6ḟM/b+h`rM Wr) WU5t!l| r5qic9=r|BΘwZ"kOHz\92Ly*֗dF?gS?֥J gd)??jϵcgsQnb=Q7pjwFQ}` endstream endobj 22 0 obj <> endobj 23 0 obj <> stream xcte]5vvRm;UTc۶m۶mUl[{y=;ߟvk{9}g_"'L/llkqgf`ț[:;*Zr+Mp*NV-\ hnk_@1*fagS `abD[!߷*U%ujZZ0sss Mmohekg q [YL@8 s+s;;[(d(3?v8r$w#)_0q̜xMB&@ & 6@'ƿ6ƢtO66bbnccg;FUs{g w`gbafe@7#36Vq W`b`67y:N@o7?Wpcs#'!&3pr0wh31Uw mgغ<9,\fq'ۿu/ a`=27-?F`t_55m26;_O0mϩp?:pT!(௢6djeX[tu<7:i'ۘZFsG s7s'#6@+s[G zf&/bfnditt{€6s[Fq#[csS_8;lWZt9 Yi~hdT{2^{hG؂}Wi=,, 4p A//XM}O^+|1Kn@emEIJ bJt?cjxcECCALo ƂAaۇSz3TheeU:-Sȝ~*$bE0X}Y<3gWt?/} 񛷷̜p^E 6:GR¾jJ>sIs7>~m0}R'Hw֜v)<+'[e&8#sYhb7A<}wh$=W4cU\-v/e.e {殴?n_օr' GmJxI74Zҍ0rCڕ}́}EbnzRTi3)M:/9媝_TݲbD di#?A4tPUٯ%]7_In-rb)~ɲEYb`*Ko[J0Amo"-LG*uU>-C6ޣSKj0֡svi .lI AS ltQ#'PSfQ9!!_ RML#ޭMNz"j 4)~E5ֽ>$Q/<ҫҺKH4, }Kq'%F_5ѷa#8+rK 3[>A ]P!tQ>QGrǴqX1Ey[A»T,iR%^̱PerĿ]Iwhnw*cțG'T̓rEӳ 5-v39Sgב{0,4^C`^/h5+B ^~],@8Æ=HoX_m.GpDͬi~ nje}!1v. Fkd v׺( WD/\ݘ$:ǹTa:vYuk46mý,oUv0O+hǙ<+ÀK%¥Yzд.}=;q~ů0:G3ાS\qOxk ;'n&dW<~g]:$8Ⱥb_ S8` \=ON܀aD~,$AkLiȣ^,nQcN]V;I]WmڼhoUJ %HfR&h +A-CE-zxPA0E[Dl<-ܓ49 ё"fkoTo9, 0g{cVLY TziRʟZ\)ׂ=l /U9!ʇ s!;?Qdƃ#H}Mt"N@t釩'hAOPSyAg*[ے3"DHCmЫYv$f_ώ+(gpk[\[W>(Ϸu68_.cQ]iaohn"_Aw8!ybj@& MLwF>HXhe46"iXdٵ O\?%0Ml\ۓ!1ZUmZW Y!41Ъ/BXos&-lt}(W8ch; ~ m10PUy (E+`;5 .+iU{J8 bOK#A_lpk&s!"3p$i|H\B'O7+g/.[|G9 @PG?5 %~I,7\)"ވB_CV,";Rhjv g]H} oMGiT8$~bP7<}>Sf,!M(9I^4L"#h+]菍-S^4#CTa1+IW[haV$QjYsq? 003,Oi4ET&7$[F mw=(LȜ>y1tm4)LJXr@]HK^\B9hGܣjhdpjVӖw `G>XEu4["Y#CE$V2$!?5NkTwP ià b:]ĵچ }*Mٽ]!(7'HHI\#"5ᩥԒ,x˥֕qO,2u>AZRvFifq%k8QCޮG\I2AsD:WxT!SI-X|o=?S,T#ڄO ȷE2 жݴ_9Y@*xnks) jt6}ﳴCgD9%Ϫ^J*sr/a_DZ3i ²W{XݳVLNggE92 &JS n ѿv[0<)N|. lK{m7F" (_I묜YW> ~AE-ɶke&z>}N)lϣ~mlǍ( ii+8\rB3 _,J(s;K9<25/q 9g=³/vM4ZHfL؊:l s$Λ֛pXG~w~/d,S}d+uj 2\p']l07AmqYs0qD~*MjtK'&S~#' Vc ( aS!x$"}  DvQ&n 1 櫹 :!ң'q޵z8 U*6fd2~T)sy~)3HŅ\_@A)^Q ,Oge R(;;AKfL+"G_BoR/3nyXv8!!W:ˣ~J*1x v:>]&ɬPߴ W[7`#\2Sx7ke6wq/ a־#cpnלu[ޣ~\ώK\-EHcFJ_Ƚn0>9f_L5U;dH3뾀 TqͺlѸֲ q68R!W^v [U^G{ ,8P]\A^JbaCy{Kot׍i4MNT!v_{L1 *iǼR-yQ,0ٲI}U u^uZab}MF/W)laQ!&]1EAB醯KO3R-eȳ`g"d+踔Qhd;b=! &sC#bA|C{fӻm+8܉S ,(o]bDۀNvRjVo`5reޯ')m fp$%㠡-0C飹X+a3=9|G]CO11|CE#y t0{hRQE'6z3ʉ͡t-\6 Xc '^(ҫ`83`ÔRVz_b:qVIgCRRt{̬4 -) -<3-&]:>k7E ߙzznW"^|K"T*k$%q)¸%RƥMu 0ebȺj*V,'iW7+܂ވȮV- ~Aq^Η,0.Aq4օBVJY},Rq$0C-gd2&pGvhΝ*oe&6(ن K)e/V .v|eX>⩳=*-/Mc VpV +=-h/r)Ns~7W0'U&QJ7CNVk(NȬwTbx+q!%`RAVW~l֯V^JXx{ E0[L(o̽"FYfs\>R9{9~k9mdMoa.).m]ӨЪ-VV{s`[/M-=-5NB4V)O m=lE]MȽta(M2ae|$9vB#:w4Ӥ->V-(eB&eyCϼUĻ.ZZsE,52 E`=Rq!Hqhڸ÷/]]yk;frg8%oG ӵd ohſ9R*kYutVu&qg7dRl\ v; kv| 73zZ>= F}^.LDÇ_b瓞/ |)9Oe׸:!Od혅*:\g.p7y**,?#zK ⒃j Yf8\^;cptH<~a]CmLs&Ü? {9.":2ae&>A#?l!=BgճŠxԑ &Q0;F쀭 έnj2m㨻&_@eoKHLhA^4մ3F`lv4tUd\#GR7xyL"_~'gx=4\GGS@`ҼDd#YzDJq3 ;.2x#? {YܔTUKǭ*O`Rހt]AK%4znҝt1c@ikOױî"IWljk;Qa#[Ǣ7Tw#A^]ݣ/gͩ]ȎjpX7v/em. <[e:Dޚ h0 b5oneM̦5j= E$]R!5]}gGhZݮBN NG ph Hjo4yϋ|b3bu;q7=wh5]KYm>KюPekN1.Fw܉~" aZov*u F-]UF*h SS:cE }=nԱNc|mҦl!NƊ7jo >G*.C]5Q\^ S31LF_H ̢\ ֘K ,F06"WoSg D^\nR[It)Qzի L2-2k3*y[J_[L^iu-3Iz.CKB|uqhK #}VН{ FLUlM%UOBW>KKE%w'V>ב|ݗT9/TUyXMbB-\qBvMsB ZNK51 kF1_o *ZPА\n>xu0%'ɰʮ!ʕt?ZdQv/ g٩/Czf{,yS">"Ƣ!)/oJT=^Upߪ4!0۸[ѯBE˙{Ȫh **S&GU ~SCӛ.AfnЅף }Ή_ wc-xF~CO;y  r'Y83 qfx!ݞkQTe)J~%% Gu, :0n-HbguI[=꽘; $jB(NyKDz1y횦.GeU! )/֢i? ˷b+G}%\ gkϿ1fSjur,N9Z Z~`0 Z,,'9܌$z_#i*xL!tCm:&Bžȅс> 蔶#6Љ5QHru3DP>#"?#<JA(QH sF*ecQk-`Z! H~hst@sAPC%c_ Ly^'EfJ ~^EhC&z%>7M~7 1kÿyKa3JuPuhv}n*f[]A0MWl̈J},Awv(ogY$xW!ٗ}unTbxu6QC1'Ih:[apRNE1)jb,(y% _( -L@Xp# -ZaۑˉA\}0#M$E(&ћC%ـ?B- V_JpB*!YEcYx:~5ɿY}m2p⚿ qȍOc"7Wc&xi-ז-ŭSMm_(%gWlyewOr1?~0jf $ܚ  X5ZK}kG.1ci&̻ʟbB{nWlDB:Ҳ3]S/(|N+JG`~4C %,0~5A\mt>Y3Y-iuN!TRa3Ц@̑xt’zPXo/ HPm+" M1.u"w,_C2Б!NimKrfiIZSQ з[؊o[2'Jdv[RtwFg;iMh`4VԂpbyA[_E /% _qѩKEB>+"s$aG-hϠ܏Nw}ר0OR+m6W Rs{6o#9#OYʅnZ\4GȾSx-XvG[ws,HPo^o +Iw5)8т3 5 npmnSg-2ÛiVWClNe';lSqМGo;:\C\*+gؓ8.91ם32`EL)q·+|~E(ʷ2y4q;v0`㼽Klbm)0 QJ2~'7|rx"ӡ˹bC88D Ok]%4#Sku#xT?A% Hgŋm\`fGk=$4+yPڵ֮h!_#"$u*bv[[w9@S;Ր|5?IbYWr\'k'[?]bMS ' èreܓn ؘǶ#\cH(ʶX"J}M^p"Хxlesht[}ι7qީ"'c{K@y>d](||#Rzƈ 7GCg{c_gvhf>FO >jCmo@VJ/8Xiw" !cZbRϖ]ta`fjg:xNb4T\XyV2cmiس1`1͠З:~3+F{Fb|i8B[5ؤ{ 1|h1C3KM(0nN2<Yq*=d% DQ03<bFYSItɣ05, zbBEAq|魎 {&!Ch{e m-мrBld.5B eb`þ}/m12rz'Y) 9A1_@e轲P1z`-W,L1";[1s$A~|YyQ6t"gLTyt-R-~3Usj 9&W~eo+ ܆)wLhp^ۊa&|}v}`͹2@DPDŽWdky,e>\H͂@Nne/n=";%tPzKԓfJҎJGcc:MODzkzo4OJ\/ _L, ܶ֏ }ej nFyR}8`ynLc%^cN~;2t6 ]}᠁7hg5RU8h>SΧEƙE* dWE㢰Q"qa$^]QZlD$Ǚv#}ăd$4%,_A%Z<,=cѵw^[P0Əo"TbuH9%67uTuTOKw =jh]VB^AB!uiU.ܒ{bq|?bNdؕm`㙊 L3}G*O\E.48]}1[8ssTb!r/`iK \s0%wPD$<$7ȚUv]ep6-e+ RjOdh0+RP´5eKA[WC9&QH8h-:2UDI9sۭL1Rs/#VM.3^X鯲siG: Rq6HC[EM3@ݮ FwP+뽩R/oFQnYDY6tFLDƹAehG1XӞ䟰L}.3Q5 :p*}e_e(FX8D.N0 W.Jl7Rқʈca ,KKDpd-HІb3=V..on|Ӥ&:SSGBͻ'J է1s6ik'?zkiU ֐ ^9E>/\}qݿ+W}}L\H[KmxNŵ!V,6[sCvf I0 yg,Ŧn!'AaNe ,jxmLDR./4‰k>޵f,< Lÿ`sgYot꘳ެe BZT& \ku"3Jϭs m1< E5iu"Cut^UQR 2y2#$S nM')Ky8LcϚB #b|'i'm`4p6zgp]kWg,]Ow'Xy͈ AG/@5 ( 5wVrf 8qȄJ $''0cP&U L:M<?p2$ΐR'fV͵Dr" 0*xQ$噌AmU[ ЃY}ɱ]iEjP- ٞyMTS%%wKre~|Kِ{-'x).s!ng\_l4Zv{rEn2'w#IcHOw#c0"17| WD S͡HynZWKu2o +'1&88i{f>)4ǽ)y%GV7DTN )s҃!=3u͛)|:x;N'ߌF G RQf[&sM$*Ie?TY:MUZ.DI%,oе'4LF`w `&O@'Io:8In]k'J ]յ@Ԛ{,-8봍ՓW9!o3--&m]A4nt?޾Ut t[#X|g}pyiwƆ&fFM: 5|OӅ.PpF)=f,[d(߸ .=vk1W;=N&р%y{c;*ݡݺՓm_~zR(KV荔c\)~>uFm1}6(@\^ؓ?4/:ݨ?L Q^z8o#Y&#X$a5[[j !>t:819ކ7wӺ0J uMjTSORMW'Q=iDNe)XpgMVl(S@:=tܴ L"\rϕBtI}۴?dPWEY$YFީ2\M8k896Ez~J)=e<nY7')9Q5;T߳Âm +KT^!U𠘞S.i:pd< -Oh{VFQ?@h!&=)n"zb 1a`0:d%ȤG%cU!S{˶=1;:,r4+S0h!yO9~Z vD*gSc \$"BBa%F3S>zҹOvh0;:xz Fi4h15f^*KIg;/M}hIqy tB;xk&ț44|E"OLAL7w>Pۚo40 G7GyĄ%B J_ vA0Sf0ܺi%ML(@Ǽ@ewR7l!  s+~hMOamx N|Jtb:IBю $3B0`CX w8,x p*Z~&$;g9tQ0f*oBCCa^,>j254H1\c6>eЕQPQro*ǰRڏ *P+2mmg$=9ZvX~9;; I  -Z GYDWH^۷H.K(A"NL瞘ِ̈́#؏t;nLv{Wj{=g EH!Y.?zţ-m zm)8k ǒP10C0ZE0u{s19<\,Ve"Źk鍂Viq  8qiϢCmD.4=Ia%HCo'-6e̢W[bP4;6VESQ(oIZ}m0YGʗ Q8:0oz=[R])WHA i#a$@/!h|>̧XԜ1Vrtjisɠg F(b+0'0F'X_7Ko{t @JBb!sm/?/hމ5~3, ycN5}oo2_儛eP7`zZD-b8 UBw2jUkFǎyR3\ȨuSЅiT_<)$B^uÖ>li!c.q5A, &zb8u 簹6ia3lN=AbdrH2v-[7|Eu{u3F&[No0uVc|ߌpCbHq,ڄYd??eQv%0" 6NtdAbf0!QB;;gyF+h˷d/W3Np`!i)9ptp!ۖ=W\;X[miNӸ]2 x qg B{3UG(%D,sdw| 9/#AC+-_ j!VyMpnVȻ,м(–zSi*A@{%R:fht֯hd^heI`UqssޚċCj-] rh.O."2@zxͼ~~{P`Mn 0Yě.Δ|bFv5hL~"R qk~cWa]k|r =>z}_ACYЫÙ_ ؍p Y"n dU hZi"sZ2#TKPtIY0.2 5`veDJRg `BEwc[ 78&5U$0QRTU g;_]*\_5|l_ȣ;BS~~TJVTLI+p@ )9U4{ng@! 9y |KL?ij'4Ib7o":2mccR,͓'blLٍNXZ7zoi._&ҧK$1|Hw7q2JS2EҮ SwٔACE3Py5ľxXxNE UcB&_u׳{χ=mM*;=sj=40L/1/`-ܯ!ѳ`+ 1]Ceb^ٯbQ^=}uwZwвFrĈ"Ͳqv:PZ- =0]N_cs0:TZnGWie7i93F9zl9O}6$2_xǖ"3hM-uw=9$T} X ;&WR.8dPܨΔ&n_!mFۼGYy@!-d 0rCRf^T1% Yl~ZdeDR> 6b*όjo&ga$]$}3 2UcocBU7&.4:H<ŮvcKp-6ڹ2lzS4=u&)rk5nyԩM q`l5(Mtz[FMWn [U R 6t ])$hB/UU&@ٿwqr"ܹ/ٷ#JSy-EUG ";{YŘ &ffFA+[F*/81bj.uuLFQ%HU' Y褛Ru )AQv|\Dp'td)P]5_ ڮ0W8=%D0OiL,k̖ڪ>)wXD&$6OLm׼OMHӌPv+(K K=ŠՕ bһ=S265֙sbPq1&h @gn5b{P`Wop)/JY Ӛ4g=;SOO=B̂z A o!D9`<٦fR)reK?6\/3^ )zB*5=Wܻe?wƻfCArP*U-ɢ=!SA@A&pEg` YK(5zuxo)LZ[=Cx0<\?j+?C"h6/^Y[Rgz߾Ž[*h_9]Œ?hc@v7 5TLT>0ӜEro>$0Z~ireەYvN 0;_ vhIt:P) Ee:_oGŸBjQQ B֟@xnZjzcvMdh4j|Mw ;Uc2f̖\DwgX hؚ4ΓM:ɷ!syAN9D r7ݱXnr NӶQmtzD-Gs\A֮{h4Gvoñ9➲ݘ֔0DAsl a_Hq*FWv@_e;5*/Le[r>gc:[.CŰE[A)G#,yw-Y.#%R¦[}c;W"tԎHgt,fKПA|<1ȗ?AiDz)cX`-<{/+ζ\ͮP}q3MDWz巹q.$ݲ%fU>@fm[4լ##)dr*'+yv2 ¿tYs͌Yhes_0ɹɀμA\ܶ2A+~aQB'zN˖5fc1yA rU/Dk&0\ɛ> 7#P0H%]Cu'k֋SK+6BRR}:w)7ޜ (ӯ v[0}>rvdE  H \`9W_<1Kco@=lCpSK߰iSAĆv4,nyo%LXMIjh$CI/9˲;{YNPSU/{= r9TKdw ;̢-ߟ=S|{::Nn>*S .۽ZM'O)yAAgU /ˊAsMR6F(F8=F͜BkzBb6ah>,U_]7ǟӅg#gK"Pmf+z|yk d:{<?D|5=NdE,Ojvc<eе#R!13>+Ad:I&'ΦPX{cY iL\{.|pV8K AD9rgUw&IW{I\%Is(9& V}iA.ZN45X ڣZ @W}`ABS@ )9 >KěAap |Ssqy2>d}pP~^(RVK<nbHTGw`uuEʹcU*74[C\h1"sR)=h@Hϋ ZWѯk^$ ~}4L֧;D$cz4U' $6>PCz`R)"rx]Km6j M\/b}<;fnOi?:BSp&Ų/7IVՁ@(S9q=.5FF;&YJOKWnVbh4¢|3EWNq-y\v/u|7 P2&ED6X9аBcNΝ ; G9'1 ptĉ>ev/"9AJ#/&F@! N٤ s/`E04*vR> I5uͲ!}͸W\e˪ВI۽ @ AS^S>1J$2\-P/WJ.Q5H \ 83>\Qd-zu :"mM 0%mx:.eC5gu.=Gv)i­Q;A J$ U(S8 ϼqh 3߉J;4>RS6ݬBR(coԥ-夐F [5 %‹RG ~ozrEE*#uHt%{6 4HL\WHҔ`ڷzSq|~:N$ m"=^`Ԑah_耫-}JtQD|/ɞ9 x2kGԣB+ *e^1ReDGKmyp<ꛫ~d4]XK &V@⯞#,PNm+(@jM1x Q֕+E21M |\fVZ%`/>t;V#,WE|k˰D zƌ|I}OIS-'p=|!CuÔGr2گ/_^Q\ 6,"n kwFB%&t[c(Wggdo&ߦlBX @UYE-4[:}A*%B2,!*8 ~Rō9QNHO#asP_D̊_*0g>ȭbo:/. #:LeTp{rv&9Ikx ,"ÀBv+OYZtqX5&M][!_֘($fMu|{t>T.)qQ# w+EK M{&>N\0d[2}üV?L:f4< OL =j&VarX8=XH* Ɍ-4T9%Ռ(^Q2CX,pFKPˋ)aEm.~).?c|նZŀSd*ѩ-ex)ls?H ߔC9hUh텍'CP06 cCꨀA>yypNrήpp],:IzK,s+iD7'+ qWBز.r}1eGAa E'd^ T{s't2kDR)_@EW,o^K~aela J-^%\X3϶\2?  ([* wV@g(U.mP8M;eCF:aJNbd`"6='иsڶJ=k 0S+.Yb|}m\&bCi}֭R)[ il2v*~b֙i^\,\,TNFsyn|dcxL#]/񋑠{9SNL%F6&dl6>㋟*N !e%Dc,Xƅbtfr[I0a0Kw/,׫}ڧh9PrwZn0>i_"@lV=4fP8aIa;4 : F+ 86Ɓ[ 6&e5Ѵ}<cr6FU4y BӫkMxڳfwNE0ڄԮ% NR:)*x4}`8)7anѼ_.#CaE. )4"y%®Clm!{=/7I@|胆Dxț9bLvG(D;dY.zMqegv{8`f``,1œ2~D^d!جnsMɳukf V8/GÊgիpbHcy9ln=QW(/'s&_X5."|CBNV ^ӿ_T-&LaRD? [\>Caq)es݉~GnU[Hl 43/GE:Jmh^.ңgp}-L|qlM InC{.@#PLN ; YG:[U@GQ=FSi/sܡThcœ:`@E(Z~`bqhU(FPΌFIBXף3`QVXv/XDgCU^0,e_3ǒT=Et'ׯz|smnju$ |sN;C3sY\좲t /RD1x$P3OMUhG8%V9d,J I# F[x474 F*0?loЙ椄О(s'iVkz*ku$bߍD6Qh[e®SJ+Y 0 öFM]><ՙ= hFY ~FUeQ>҇2ݛ.v0 lpj{dr䩅`pRu).$k؟eϭIU6o47l7:jL=0.,]."B[|w60khnb&v!TyTueS_0֎G EIACc9`r%O /6@AMfZ`_O+=}7.q2檑*l_\waWdI\ 7 _'^QeGaUYIpo%gS10?}.Uo_HJB)IفMQgNXPjcV(SG{Rlے2nkKmvwnFtF6W $]K4$G#+EѦTwر믰bpbA CFޛ'}3$6~q^gSs8ifC3:0 4 ]e{q@ߢGXZn͗ħ#ҋ#D8e.ZOxҷ,L恌"Q RDe`3se>Kxf K`zJ0+M=xժ_^_IP7E uW%r^X$sw) R@#'Kl?pc.÷o@ӌH+9B7$? ߁}\.5:7F~Wb}1}w3*Q`t'ymXe\GɟQ+d^Q?wbw|Qf xϐnih%;vX]eO#h$ ?T9rB孑wYj˫;[[RVQw{zAVIdscZ#3Q Q] 3ty/|P}+uD9pj5|ڮb EEП.^@p R6@\{ rclܲ_Lve3ߴH$x/e uIIYcNܫ{0Or&%F 7Gg@ݡ[/@{q|כbjU|xޝ{WMsNtKĞMN֑JSWnTN e/G%x&8v|ÉńάvM>M }y 9Z9#"`ǂjw&Fv32'GLf=EpxA^c=Ԓy#F`OdDPJ{YrHud>,j*2Fn?|Jd%KM?#LYF鲵8y̝]Ӱt_Ms=-"2d PΨ4 $[CsE0z GyZZԨOME zyF6 N!| o(y RNMg(MQ_ <:A)U4-u[$AHE6~i%Ō1}\JT-.ߓ#zr_a wFLTip,CVUҦ_ RiA%kȟos8(\tPÉ{ IZQ( !,E>\{UI+k^wLr#eVp%?̽NI^ }cRk'.;$5۞tNY}T.E'ZAĽP9$ <iWeKRث&dwwD囍U.=5OBFb@YM9{q:"qW}p% ޒΛ9yŗZ5[ۥ`vĻkmpI22GC9yw8c2y3V*[aD^YNQr~* 'k֌ GץEtj 8qn +Y5'3+b.[fl7QRoaw{#%SNi 5nRj߸`=bDtѢ`qrD c*TCcpxot0(w&SgGAsQh3/'o x=vg?)ըCu_Oq/::7O:Z9h*tNxO#bt<8#[#Aِdɉ̝/dM3OR9".*b*ţolҼJ]&,.K]Es.mPHԺ?{~s3~iq8ϑ?{( p+qwV[G#ʊ$.w2U8H!M$ EД_W3O|Se#%L%ôIx+΃٫57ιS( iUEE,JmyN` (Ku#r*dֶ аɦ'i+bu =IpO[O%}j;<FkdFޅ.kП3rts򡴃ƴ9uk.HᏀ- ߱^0N@[''"ti!(x&٥)Nr=ZjBK9o6yzO#z qQ gO&dbݗn\kuQH?0цVtsv4k E\h ٥6:_yKb,LƊ&?\4h gU1 t5_:,qv)/'Fu$孝(k _ztdv>7s{~br"͔ln6R άC T&hU/1ٱ֫_ 4798诋x5:/NR/x_ R^lC}Ҫ:>kcrR~LUW˛^z@rey1l<ÏM$b ,]]6ƨsl3bx&&-I5 ϱ~YWT=|(֗7V4}p\Se%U,J?J$]ӳYnhº~Nw:kW,kkWY#{:Y~LkV^ίo.uI|pm<<35oHx;#ni$aAhC.\=Fѻ@" +[^99j1?KE E4pEͣl2y?,h u_ZFӎsoU#N0A;٣-ցeh]`#d#duok{{tCEm9ꉺoص9+dI(4tOfE 9{흅SR+/v&"9"SxvqTDDTN Hl,lԐ)L4& i'>uQ# z={^TtaQr;y&:&ZYKal1C|/3O~2,38RiutL5PS҃U{)"uEsTeP?ٰCC2wԑ"TgvKPC^㠶~ nYt&|޳`5W8pyFaIjTzb -N؝B*,diVim>LVati5 ~OE7n]@o4 $޵eFWY)$}tn-l<_q%+ aI?R( U=z,6߅+pWomjLly{t(j̗h&FV(ow0Ӧ]5 a'jIK[^!Ue&V)/ԑO]!WpGK~h9dԏ %CC3|EqZz5f6J_xXYEقa&G\2ֈ7lD\<\GHr}wNd0iwٱ뜮b9&wB"L˫X@\(}^ʼF%e!M?đTGI;c[a9~ 9#k&COu`&؉ta E<|I;7͞Sk@a^"9Q&0ۿ-u)rCAnk4y $| ~W4j:w hR-+Gًb2G<8zr%1yyhC` s J|ѕ ^AxѪRP5(_=Us%*0}zM-.M G_tܷGc9ᩜ.b$}]^SDnڲF/4#x[n(,<ZqUkc4>l L M Ɏ34CJF <\=8c]|1PX㛴8d }$I_(@rZ:aӠbV;_C.kW'$4ۀB=V0@G$i TM*lC [XؚIa W?ˤh 7.)ѽ߫wU]ReEv8 ''O/&P\Pq$q,bR/Zٗ>̽%G;$ }O-#g*.&C>b<^lm KLfGX;>π-6fmQq3Mk4Yit/}~pVtBY4E djc]PpO.^+}ɣvUv/O3m | ;Yhn*b)ZspN``g^P? -9J&tܞP`mq)N_]].تyr{q4WL%(MHsl@2& YQ';blpj4\?2_φ?<6义Ӡ,`͘\Ҋݴ뀣(Z\K3GY?W,S[ 9w-A+Ưl-PVl@!GXdnt&c bu]cBsjsYi ?8îGѾ_g k =7׵*!oDe&T@ZDu"XJu?lO .!'-$(/4.柗[p]iBٹk;ӪV齺LA-krgL^m0' gXNﴥ͸`0ǯ**|?@t-\\žc/reCz˳(߲;*,X 9λoec۟[Äo2ܾWQI]mhw9k\k<~Zk$ga͋P3$Lpy!ASmsq͆H2DŠG~+k\$xS{bkzxR*O#׹ovسTBʀ53Xm]Q,Ok$PV?sp 2AVk̒Q~H eK<ﳭY^n#JkN;H/rm /T'|'f8! '%]U O|8H#A;ލ(3KiT#Q&@B`j[(}W:LF#;1DK9(L}Y*f8}v1ExK,5.` PTgL4 mB׮T~pzVOY1|b} .F 0sB(ҏ7sRZ2>ˁk\}Kkc?R80I8<i83*MP[ L FC7}E] ^~ (պX{xS#6^^ʫUgDwH7xdQK΀&od _Ì03D@i+DU8q²ﯵgSV5f05h='ytzPĈVvg$Yw. bXLkM3YGj3=edsu>tiXzcwez`O5p:㴥尃ٹ6Mz0 ';/(4c_b8?,6v7lW<<bj=Md$_5-W@.D ^_E>q,G4'^=fXVRnpfunӝvZtP+oPRj|$mG{B=i`z.ӡ,+z=F#7U3,Jh,-Dc݇}O1fҠQ}D@xDҰC.j˜g-ҎmD̏΅ԉ$0!1r&`y?R=Qca[rz$m]tt||{ $\\ (Zw@n:a`.X opQ`Ї#uwb^$3A&uni7aOoGim bQO9:^: '.WNsݥXFOxֈ5gQH {Q U(E_&jhZǣ/BᄼN@~͏8(tڇHْ,~Js|Qs]uֲOEY@ؚ&qΨA,p.J._z֢7?Qr580G2wt> aVuF4M{H (0F:[\hy:m: #W9D% Ӛ5ʳ#uUɵ=u ?ŚXSCLajak)i@MeMkoy%Qc7N!ʣ"{J:Z1T0WװG_4! 8uHc5w[>*y3u' OuߘऱUz]CG[3av͔4GGlXɢEB2\=|a ZT]dj]?e  BG3uQ3Fm0$nj6F8i]iA?Dvg.)Fd{ : EȬu @s:9(埈eSuP}&ugǯ?ȣŚEwG2F2Bf>gHzhbȭTeF --c%\\!"YX ʠb<஗aZ F8XVPgB0{KИ}F_}u6/y_{@:rƯS'~M6I THr3~vj1g`} @񤚭u鷨Vtes 'PבIQY=p w FK4I?N5|n5 #sDoeH{y5t,ЂO6z\!@lznOW{:3ŁH萛onXՇy볲Jo_u_2r8 gu;}U}d2~Vbngw͆pw|3yMy]xxIV4G/\PEH DKZ)dYy.a^pl1扮YI8\?[?]ȶ6ixiA[m*!j38DdD=>7<]祻_Cx,h$pķxLHw6ȣS.ґ.=pځ5mX*GacT2I㼼xT\0jo▻Tu/YU rWhwfa[ 8i0 ϭv>v&@K&xoT}3;{H2cRϤ=Vg53e6N$S9<={9 v>d$k ,DBb99w@_:²R7wYai%sD$_Fv)5>AtZCc^WTiu@ׯwdRKRDT|O'efR7C'j > ^x逌t)Ĉ3PM0"$C2 €s B@>$nt4LJ!5v_;R9׹A1wbPBL(?hлjN4☆FunO BM+2^\^S,h|vgݙ[QF1d R5نFdPMAw; (m b͖θPAcDA6TܾSI7*'cɒ&@Ib]ҭ[Z"mPGSIEk\ȹCt';Ԁ %'Rw'R5e@yΔ[~Izwe]j^qz%]DCQ$ 4Z}lRP!Աlm#PAQ+PM+NS$t4+ p]4ߺ:sB!ݦJO{-nRh%&ݐ 3N#o\,"sj! Z58~2${H=ߖ.K*a3,5Hr2_8 934>#KM{NL8\9fkfpSݱKD1!_ 4˛a_e+}~ؔ 6&uw: )C d"8*n DԎ4YoCaN6A&r?\~gz,P,Kot(?$N?0,n !}pd-_E>jl/ӀL+%*&0[ߖeMcZ*1dȥjûcIV8D|I֙bO9jZ}w|y=ڢy3ʎ:dTU|1%4Y YQghx4B)rt5# vCI8v֙VȁUw) :kOIfN{8ע n#4U82Z %o зp:2R0n6| r-m㥣 jޱCX@YK9AO$$@$#ֺ'.i^ OڟSv*\x1a{̓Q! h3y|e~զ_x_-пl5- DRij6f>%D eM|NeI (H)7b"mjRk4c |[cNXAz[DCΟ W2[Xhl<.&]쐁 tEj!7!yY<0o ~B5&Qmy}Z}O`vn^ ǯ$7<0YtQ"GJɅݙX}b iFHnj ;3;녻q?! O7=|+:?eӼR앷S k:w!}'lbӝH*fWo]04J]\g$ tRz2ʻ)ɑ:;y`F(+m1 8ʻ9!QЮV3B-x~YA){5 ĥ )En[ay+{z'?a(x,\Oh0$ $c0Oj].? ƿ=cwx z)0Dv,HN/Wɪy8j54^p>c)"Co8sf"]xn j}A0Me t+ oKͮ\zh]2%#"`Ӌ\|*(g[\c#'¦l0j3EC+ۜ&^~ip,V 4Q&=&[Yy[]]Ra}BLC(\''8k ~?&Hgx7=AD<^Z5Cv82QGl%KoSYIqv@X X4&V .^l,giG B0^ѬĺȊF7S#0wiEyc\^_t圄-SS?'1~t+A}cL*ӖK?M$P fhVu(bU)]=qLRuʘ6' f5 RC=cm CX9p{Ŷ83c1V,6εOR,3:R{4e "Zb`KpI | rYAR  ȎYTm^G:!6ÞV3|<\:^) .~dt=~z=s%RyXuwj iE*<Ȇl==g , .(jvrޑ3Z Р_ԚR8u W qzawtmW+xw~v B}hqڕ &R!ȤH+{M@͹~G(^`| 8U Cq ) xW &1['h Vb%h7#"4~Ľ@Z:.aчby5dΠ@#J%X?>v,*]c>I p۾<kٝе.bXR(Y ' Ug8o渘{q$d΋tX;G,cp̵? KKG+Qeo€sx"Gg4 1R-ٗotgT>^:kl\!@Q =W_&`UXmL̷q˪.vxzg7^YYgl\iTRFק3h/Hp h~Lᒪ^yyW(?M" |cT-5OWȝUP[ 尉Ip/FUs=ﲅCYL`](߾PS!ca"͒1<߃.% dIFH]98|oKz=IjH ;7 * %Ec->Ց^d]Bu 1iCIfgcM60YODG}mNrOwHUE_$&s=]S?nf"἗zQ%F\W P; Džo=Nؚ##JgmiYefdQN/.Gܳ-Ti&YCjEooz"5]zj̛á܌#§>cPB {:nJPyIfMVOz!_RVqf;`IN|@B}G|ndVp,ϐN 1-<٢j<*($ޒ =c}%;?!ve%k{<(O$3% iâJ?,i75?{/~&?&9~GKRïi #!ķ//Q95<ªL';И% QQ< O\Sn8g}sۮ-J~b/ N icO5º>B\C){$O8x Ɯ;ȎG 7 ,̾rs =_Jƒ|. & { Lm#/ZiRT @$ cʚSNiMh >I}[_0LVLeL>N\4.izT%l[mؼ gﯹ"V+e6T p"9Ucle,:A޺?!rZ+/xt@rQww [=_vtу|j/.y,f.FlEYl]__fKh aen6|h;g #ske09v m_@2`/ 仵UI6Z/9\TZU}ik _μTx ,%sE9,#4<qaJ+QL;:)Ԟ26N kroc4=/#pR͑j0ɑ$d*Lg|4-[>C_uՠ1ƭ XXTmGQ3G:uEHDeLPc=d#5oK9dD6 cDOןK:+h ROvlUZ[+3`{vr,c+QߙΚ ,)OE[$30nVw.Z".z+ĿU:SDivB)V(/"JaQTSK%"Zuw8uu=ߨi([u$ ا@7- {a^0Q1?OU8qY(DO'BPK]Wch#?vnEП4e":1؇P85 oQ}vWff Ք` b'AVVRINFCj\X$!l=67YxTikzĿBBsGI:4_* ߸SB !$4gX2p`Jru)NZ1,iS{*Ok%iIC2L@̟y(nV,hm"kB[^)GjI}=bW }-?̊~Gc/i1w ):V+R 2Ve³ߠ Fw(!UEn ?2~mO߫}j*IR|?۳yӭ9tCF=>PQ:uTU}ɔU9hY/_ʂG@qyy"E,T {n,/ :,s䙖K=.αEe^[(]a@DͣB[PE?G^6cץmUx1@3&-ervt?o_ ;1U2wqH 8+B> #{r s#-]q ~W0ipW|2G3WKF' ͉^4ZuTlfˁ qee=ۂnX/S´ ag[]?84V{Jޚj +yUW 9 ;x޹zaMܸVO kŹt/v-YO`AH)ڿ|p5H,8*L%$$i[R.#:V.`ZV :/%lk}R{B;(On MY|D͖q$ lH$!_qXJW E 6C9u -=Gr_ -?E' 0.lz=f}[]LEwnv"2z)WMPlνɏmh+KϨP*g,jBȍ_MZO˳;Pel@I@H@=7֞&/Ik,_7Ip9#sю@Wia1Ț]?sؾ Fz1L_>?C?\sFG_TΪ-ฝ!_8U=)$/=a@y|XiaB/\R^)Ȣ~i'GMrLⶶS ?-|+I*/l[`װwceWgĔ+4JۢNSʫW牲Htqq|MC.P0M??#zE&2O tBL[@DEy!v5M`ly5Eƀ*[Q$~.C$:y8M5eјҒHw '|Өⷋ9+Hsqn e&|k6U^ܾsSj|kU pN OI8p/-Ю`]/FM2SU[X#)c}2@b)p }̄ܛ4CW*cS)7u$扤|ShNQ,Zɰ?lkNQy7) W$Ej [=qOpsu(`WUב%L6.n)0cA]Ҧ+g[au0‰:GYm<0Sq%92}HbAG+7\m;H73ێkٍj#F#uIFprVeZ d&^ m87 u_H,o48"dWW?Ñ|o/[ ʞP5i?^z`M 9KZDgV.pӒBH:,vvXn>/qY}nqGb@ʅ/:+"XֿrkR ۜWy{mcsjvw |QRWtKy3's)fx@z,lBU/A[o T %YcOc(ؘ}茉FW2+nd4ٮR'd@[W M5IbvT{ O^}QTH&gYv@޾HHhL0`5RFнp1vğ[^o\_\6b}D[zG'lLo5^2T'kNS"Klhqޘ01S"p߅<(ZUFC?nF!,0 N! SJ:r-%ƣD\hB=)$:Y\35_YQscCT]B4 bq4oYp|3>-l\,4hR$밐Eo1M|;8pedQ.:[0d$ujp9w{pSD¸ w7|wx&5XadBJRk 3T􄶭qJPsaO/S] \+Q v[dAܮP]ۦZnjxZ+C Y2|) JޖT~\:Jᐛh\շ 9K2 ?nOQDKJuX5,|9WZ !p $MHΠFGy9t5)+ U|ŏsd}<͆aA\T i] ~t,$NL}&GyZ13W8W@@m' oCq "80x߻P( Rq|#88g-go]8'A뷤ϣ"D^vx:rSnPLHޯV dѠӫ&|CLM֕%= LUe5j.uVqs*r3]c~kiVǍh|'!F8;SXQTI D\ x +6^ӵ~F{mjOy9-"f=5NT)é~+Ђ,U Jh5j<ǯ- .e_\*`ǢH]OhK||aKPW y0s/U FW4<| Ufi0RD[>y'FEW`(n>"Ӌ)Hﺋ+ t̋!")bMC%$TtznUC,GD`in=/eyU4Jd*ܪ|#\+JXYx"@Bˣ]|#xݽ7# u( ?[ =ƑxMGv~OGJ!"CVԴIe3NWAs= EA(]_s?Q' $E_G3` VYڧuW~AB_앧?gD{l'|=HF=p3l.v?MbI$B9bÍ*J:ԙŽϣ__HhͷG?~kYmMl`j}[ingX|?| 6#?N/ +Qk|O SBm(J'v6ݫbiWEf҉-'w(kNV`e#vf9+c &Zv' %18z=ܽ&I!3SY#ɐhhh~`$m܀SyhT[8>Q\\2gv`o/oOPu5lD D F؟(i5Bf"5("A롈hCWMFZ܁"9EB~ۋϺW:{7/Zg}LzY_{XķjYM'_&Cm+&}pnXGpEA*90 lQYz!`٢%2kX$@lvΛEYP3 t I08\{1TL1; Sܿ& \?H c_9\53Tv}s“{eDT)E.g;k]qYŚ;d?ҷUNC~'D$r &Vۆ I4E;'B: ʋmH|E.T9$=r%+Ϳ;aycB \gQ񟡘e=cpZenGBaE[V V}OQQ;nyarX6r @1G;="hVqiM P/c)J^@X\6%s1=$^i!-<_?fcb4-ɿHozü.}}H`;eց\Kꖋ;.UIƺֺIgWq>|xΪܤXY+:xYe å~@4з|^%nADrԩ|a'0kkm`8z 0@F"?4Vy?`u 릐54}@7k4X"\cjǦU=-K"q!AIU1{idSeC j>YL$%`L> U)X-@\@SN JÈk|[gl 7lSjvR\U5E \~$z23m{rfX3m吕FY?dVgK/~t;6TgꬸʼXK~oVg# 6rZAnpJD΁ ԐM[Lfs9 2@<)ւM,UkH.e2IgX i)a+`IS |[^*zu&F*/D9-\ZE~t%A^j Tlr6_),U) cTXi g ;\h 1(OOo%b,jt k|1\Z6X<7m;|t H#ۀJ N}cTAM凎+ZVypg$[掁LY <hМPJ'u E>Q꟟*:[4RLP;J$5FeƖ8*6eDCrHMI{ %K ʾ/K_D`le}5_*}8GӨZsp .\/,Y[F pYZy\'Urpx.@6ҋ%^.i"$'Y3kCȐ{5;aE>iSmKjͿ9G\-?o~̍u`-+jxPn ۔~0`$# @)8dۿ*\D!5Jۃse4[Xszq T.ZKcAAg^A^:Z~ PÒ n3Jr<2.N+{ }]E.R*9b/W]1l,}!#ae>aki/S\OhT_u[Pi]9E(,`YS!_4HC["C V#lwCt:pBd G9~W7Ð Kg6(]HQ J313i Īq*z' 6] `Vxt|[J+qлvӺtgZ.?7B. &&~W䰼܉(r­mHUnSH ]ՖT Z~N~%)ENұw9="CN\ٵ/i'`6m#e! MZ Z)1{&}u; Pj&-T\Yb"ӘR8f-9tzlv=[)~b#U dӦ4.:D3zT xi}`;|,6`QB+\)* "X`G^Ԃ^UG7QTH|4ق!1f@(9opVMNjtr=} C)б@rA_AXH,eamK.a|^tѺpKkNi+QO/|2n^3?V] #Kp\x;+Bۙ84ٍ&(_/XQ| )Wz*G[ټ +PBoha#_h}nRԅ cم S u}`mFHxsk@||+(B@ k-JK %j8%^M$.I[N`}VoL$ʜ 8Mn)?/Ĵ{G]+Y ݶ ئb#UoɲuEȶvlWbɕ@E κ}B02zzsFMF BŮ'̱qʩs8R>W"fܗ ۰G.u$2644\3GAWxz#&x3D/j+ 5>{̄n=T0 mTKwuoDGɾBlIC+7~yx"J7$/v'Ò3dZ$쮗#dk9e e s'^a+yK2ĸ\7o:G&mb?E濅*Ш@rBev|OKfko|i`HOm7IrnuB$| p3*[_jh.R.в%8tP{gVKpw%btL jdP :mgT ӿm xU9QT(?n?δē`cE6ɉ$\mPkߵwb43hqЎTsZ0._m.)D[%=w1!(s=gR[w ݗߺ8l{I4f;_)Xxc"O0,k=YYg$T^g'<׬w8YѶV1᥈uԍifO!Rt]G`44(GrZ`Z[*߯Jp:)MN!abLcoNCt0\|E #ЙN2khֆOb IOb[\b0\rk\AuN?n$uz|t?V~4TA1\, mәl@Nr 6Ҡ3; foߒy R2JPߪ'$pn 9N@&,(RPƤoz.>_nPĦq7(|IqeȔEl'-^|]MKj6 }MR?Ιπ#D8S3!CgB $06G@6˨QMy X( >M=nb=ik1s^{O=U+p =>,f t\_D |SfdmqrG:m~ߦC4h" \g~ŽP +"HupuT PQ-'kYxRaKA:cXX]_1zN:txTa&M}m&A(K3GԿꥧd-5@r!J-ePm"!^|XX`M>v]|Ґ I-lZ^dѐ(#G8 u8-:ZNf$̨QbLR\ޣ)c_u2=DlBWʋ8HN-9*SL؃ZN$P}6U^Z[D_: zpHn~a4J)4Pj[`O!<踽, ΥLE7ls"x·P!ܯ02v;#i:(OpA<>qdPfcmU4 !T*HDU2 Rӆ19`}B} D&R3 QF6h_=RiD4!I^qV{T|$)4%]B̐8:pK:sce*K%D#\?{GF-7ɀ:y6EJ6]ۊUs*nba:~㕇pg~:e.Gfr\g{7 4 ts3WSVG̫Dm3²jk6efڹ8f%Ol|. .y!r|@{ %º 8٢Ǟҫx(o+;>h.,mdCtNvGae}Z2k ѹ3/!zLp}D]ȇjYn>S9`vFn|Ӣr$tAsedF>SDSa1Rxtt8ш(8ڰ#n& ̪σeB^_,>DSHq܇ !9edJi'=0 o%(r^ٽf1]')~΋7b.72kyn4R`yY1nI <]Y5ة;tCP-D䧰ژOvm17?[!G,k&6o^NxbA6i{Ƹq~>ssåT h{8Ɠ!(D7 iV`iKL =Jy73S}N0_Kz-u1cϵ˅kx;BQF:`y^C(w {5]| I%K[~:u瑣d$F{A ypwH =F;=E?~ 򭉽M?AIߣǿڦ_#-Bg'X~9jh|] J.K'Bj=iv׮! -GP;N'C>|Rt6Su򴹀 ,=ȥ+JF%P*r'zÁP'<~`#XH/Gpކ%C$kn9hsf,w,=$ZnF=麙 @mL,sDcaa³~$>IA"{x_}C䶥,<*VdL У,ӵe.Hwv=^thp=}gZ'$l:02O,XQQO'u蠭w1HEumZ|DJh{ A\$~D3PI' dXOZid#厉2~ &BVmh㓂:sW͚ q.k|e҃[ )€V0Nwe$ݳcm5T]ݰr£:8tD ,&'pl2Y-g+ ]H[/3&`ԈR8'&8V=gkc&|2J?F,6ӬeK⍺!O Z7E~ b1ȡB_a73Vk")UaXL^\ṆL87D.7т(slL\LPМ %8û}xBo4x$za8å1”|OUDX&!zmO,r ۍu3BjXY<ɼ2uaKzTX:qkp/Fr](j ϗ\ChtJtM>_9y]2>e Wg@!P цa0`Ua $Ay]1 8 60=1U0ºI鱕$qlY֫K md@2m:jZZ`KL?yVvC*e7i~K'>n$| SvݚzzA 7iCqgaULQysC7z߸[PeT3Y^1(jXָ۬l\ϐ":t`ܲnKњ$cuT0B?ZĿ3j-eVM@e|܅M>o;8˙s$o*@*X*XBΫ7&תegPѴ~|XLr81ĉвỶG,ЁF8o13,3l3=G|*@ֈUN*R !j*2y?̀CH xsckm%GvG?虌3s *#P3B(;v1m"o7",M]hM# 0P|CSV>T6SXUX aqk> e48ֳI}TK2v 3H5-CWz9ٺJ)O$;[,d{xU$eJP[a U7 n=Ceb~~ZE[։1 Y!.w<\h"Km +c0,Z >ƩeƯJHM뵈h=GCe4x7uYtB=;)9P6({p=[) >8!c i=X+3q< fv,{+7غ~?#fOZɣO5sMgh3~bzfR( $ͤ =O>D,OJ{QVX_8 m(` !cn_6BؾL&4&%ưUPikO>gRc ۪94B%?> Y;_,}g8m0Lȷ1HT.ڌswqBS  (C_%`&ٙ*dBlc9#Vo1I8߭>`u1t$ymDZժK΍_؂ LgWo>M7 h~FE"y,SYÌ[鬝kAg}=e JRTBLܽ}Jjyr~h7cѶ4$ڽTVnJN^?NbN">7;YnR"6dݻ- s;Z-ͬ:q=_\8ZF9q_&zV6cɶYS%3e"$[I[q# 4YydfzlNB8'k_s5].Ir]Dv@D74t/f{: Z<Ȯ&h*؈%qѰZFfی3^9כAfOY۶aQo&,?r݈4SQ7DiV֙2L&vaJ-i 2(0P¡JDid5#ދ;Ž$4~pk(C֏)X|^6ӪʎPGfF]=hӭ\mY;D7v>ѥ3•xA=a⸠ ?_u> i(R(%7dA93m&&iܕ:'n- ɗLL71<>U 8sQoi}kjGB0{5G+ne(qP&K&㯖Zs3/]zx(WzkD昕>e IpoHdEMh >p4Yiaysd*L8}3Ӭ)@GLȳAJ<9VBJhVOpt uB(_[->tzIF\B}4&79XA”"Ast:5(k 3Jnr ԨmK+=&f pb9A ^ȥsPvwΌf6"]BEWH@jATMHaRt]`bq"p 2A'ʵVW܀@*tStQrzxw֌&[ܻӶ[e-=wWՒۯy o` kͶ\u#AԽn׵"ni* n'ic/~֪ S1)&Hֽa Wе4/웣OHwoj-|ZQ|A6h<79M](dXR KJ=8ͺy{̾.*A_c*uFjT{GomHN[-n$\D@RhOxG c/MaxmGHZ{%QKziN "yI|^I@܀IV`Tq: \et60_ ;kgڇbB54B:⓪(yYtet dwm]*VW6J~Q.IJu3hz5j&+3jaZ0x"_5b%/4dIeFSPFU(:.z8tv-s'$ ~LNi7JO71ojqhtc~Gu;`OTaU?I +cV '`5?ڬ) )lZ8 -yaqU[Ȥs"%Gz7YuE*w~Sd!xŦNx4}<$m9D} 2Q Ҩo%-ӰK/n.M ЅG_ħ_Iλ"v9v'\ց+àMSm*TI yʲAtQN CԛfTɎɷ5qY%v f!t6rloC~`fIj8դv|0Vƨ?Hg10riŢ%wк5NO C Nu7um}k7 Rup6XK 싆GKsYh6JъŃA3=a55X{h]闠s *_)v4% koY0ͼ +*IS(ؗܠAcd?1 BxI ̷4zDGv-ε|CYHg W@-_"Bzi>~avj+RѢYY ٵ4X.:8Y7O2v#3>|H)}ldxAG4'竆q|!> "O2C`z Bul)cCǸ\ 3`U4z?- tO# yDGӡV7gH+L #AũZLKWg`19@dBozX`xsP [8Y;CLRrV]Gdp rXNd'%zx#X`Kh=U$܀A("x b~v#ڪ_ݲJ:;Gq~(o$~qE)ӛ܉җԔG^FyK3XҎvP6@ip~G;˲*AAq3~](Vg)+9;KE]_Yplge|諺c=\& oop/JOnIQ-dB"CŚE+_Ոp>=7fĎLp~mÃp\[5 T'V G>seZ6 AM`0Z"Z!Ix >^]ɫnQ[@(i&d 6wߴZPh|^L/vB l*$Px ?N{m~4rEn- qi)qtmJ3v^G&#-^p&vLa<zy2%_3w-!J1}A gF$=J8OXպV6Z{*pC1`7",9pE[kU XM Ctt؊@EiRLƅ1ӤOޏk;DS{i\`z]/y: y@?qNJ-7Ys@끻̟σ:)qp/L`,'4pQ>~(Vč.vB ,lhaØom#T~$65ia/q $.LJ);,`HjAJTD4p']2QXA.RZdwBߐѕ 'A4Gy+9’.( kfR g"jΩ )r-]B_iU?`):ߡˆbkۮK =zᅖ4O_ޯVh{ZB+oU6#¦Y :E6{gOew͸uݮ,K8!++./u?])4? Ι>@q),㺂;K,Q&ExЍez aSdrqĀʨ/ bҞ_-& Bv9G%tmJUFYD_Z7׌{7캐G^ K0(:}F!Rp +ϗNi(wF׳5嵸 g\Hb ?޻0BL3GLA>XiI9N:wX1@7y\l3kxxdـ܌ 9BGddt|:i(#‘T빢B JWJrѺ{ 1Ր)u]:z5scun lߜ"/I| BeK[*5d@}j*}2wW]hj7b5M JUJzb{!ݍmqWe Oi!NkK"i rԲuɐ${cH3'|_Akۼ':@ gT9LNhX-EEtf8T$89AA~g߾}BkPElIK[S?+{ȇƻ Jv4v"R9&|N}k'8) 54FBYRI 簾̷OPM{|Z߯Pd +S Jt>(#G\*ug}I0x^6"2_#K$ qFXSpOtċCNZK@j@16^6]>'C}p†|QkxH X dO[*|i B9Lbd4mRUoD}6[FjC8F\ qJN:zaDr^3 CaBYX/2)m W73Y36 5HK^ī=ױdt&м4dZr7Vtw(*4Zk xtyJ$h<`)5pԉ5EI~ԞH*RvH"=D.%;Ft?T?(0@HMAPƟ xe`u e݃S U%~4{ku[a34u5> |C> 8.Qe.GFr_?v\Gt< Ds}1NEřJjE䧷`1$~w4.̀ɕѱ ҾԚs׮et|tN?U*:/8!2-G&:p(g793R?vԸYzRloLN7h,Y~~ .MЌU@#와s͆dAtBtVW;Ʃ;=czS7(vTNMEK%3/e (p꾙oVNYLUJG{!a+=BgGw/+ ^zb5jj?:ɁRKغ׻Fɦ]!а6ٱ>[ѱƠk/N ;-#"J YkH&cʆ8Ty &Dh׼!#HVlr赉 34ɳQ!Jmہ3+(Lj~FK~3,)ǻ8Lp[0/zOR#?(wraxWz20Sm )YQ]w[Ǝ]`OS13QqUwpKIs\u;JTX{L}z @Ɵ"CZPjo= 9"iLu$x$"X8cpGk9Ei!7ӀB${zM$шrd3r{0{,_:yK]:RPD3ShY@I~MHdxeM|q| <7v'qɬR2sN\pޟ"z4|j^Y$ٰѣ>%QW*[ۛdR}@@iOvle{4?X Ztt+zz_@G^`9v 'sA6i]3$A5vu]JaCu?{vRmˆrq,B6Q\OSgPWKP[Dt`jC 8?zi2sfJf+`"=•v靟Z Ũ6(YKqVpi]o}g7Rg"6 (5F6~ '6f[Cq>l2|52hHևBefÓN&L"_f=8-OJZϫ$ ڶB ;k?xfu?}3+>WfiذgY4[BF&14hxLooIík/(^|Q$x`~^ x0v2W)1N w+gK٣U :9FEmmـyrZ,otFxa[d#>nDAi`%d7WiRֵBTd]J/6 NSWÉN#<t+׼ Ff͙0Jߓ~j,Rbm][`0Ϥ^ bsb3Pb$xC .%Л1qU~NT޵ײZ0vFvkTA[:]O ~*t/z %^;>-<!zTC"1k|xzV/E%:&AzvCp8wrϖyę /RQ #y:56&pI \e6?RxА\Y#p-,n}?_j2nnhyM$U?v]58 kB? fb͕gddRṜjfcFި0YD7kVICNJQpҩ-X74Z$p)\rěkʙ'N$E]5anS/~EI[?ͪ_aZ ƒb]*ؠmv)>oqw D>xȦMmhkӦMt]̽f4͘[h\9Iy_^Ǡ{zM*d%6 :UTϾoX?%(d?ɯk/ij^2 IɱCYشh *B4 PoQ,,^J$ݻ)75لB.KFK~ ~(; ?Q_+ijGyhV[sp!FP )Qנ$>͵W^Yt.C6qՐV ah 0Ns`cDWd} ("Rv@]Kt1dY]qn .0< oFb* \Y FZtZYEAvmvΝ LJ[ p`(p.Q+->/Kg!8x-*2󵄼bb];u; (F!<¼(7Li4Hʯ!i J3ډ5?e A=ű:B2xu^DtiYނt2%aFn>܊ϳ%D|ehh)t)d%ȿ#Ƅr&q$`k.#QD ;A#%km~`׶б*aK5$ `LpԼ_N^grB5rk%D Q+p&т(:@(_>zʈ%"ԨmB7}+6۫ W$a w+ g)EY Pm'k0w:P<!Fz0ݠFK~gh1pUNk%Zcw`ߦנ"'/` & ;A `[ f}`5BY^ȝwqhϟdD_l`Qgi痜o rWUC" @IT|&d@Ce%$qNAՃPttyӞnj9Kk@80=1,Dzy-ʡ!q3։\ewuC$Ƀ(> TF"Opلp] V\?@\>?VH{XO/J~uy sxΤv4ͥai3芬5D7V\pQ9 [[3q5ʂ.<_ rc6Tlo5XX 7Y[_QghiA(l\ITHFQO\VY).w;3&ow% r{Rս+HSNʽ3 \N9& I1C5'+U,пc Y :Sy@s9ʴI|\I|PoCy!idO36E9.Rjo;^"/ '7yxm=wن6- O on eޠ]GVlOO gkgiڴИ7yym[, 37V ɑ_,>9uNI4f"!x);l-vr#Q꣑]SFu<ԁ7Qv8ł4 R̆7I%{jƭU[ǽuY=uStO\kͭHćr3hHy4I$ic7Aަ-\)*/a cA <="|gVB(ƞE-U ] ݹqMU\ޏZo(݅Q>$D GxQ6>y4y3)o[z,W^+-AU~00'g2,_܇(y+[swͤ "^t{)sַNRe5K]7 TtPo;*^)e ` Q /8.>{HK#D\MA"MuUcFVgOQTjH3P@ m;2fՋLzOaY(9w܄{2r.K|~pKGBKQHެlC/.wCSűG@RFf}Q?Y eebgR'Uw7UG4q p&:|ͬN_IȠnF^3^:C 2&(..!G8PiʹlUUL:Ո蓰81K7,않?ۙʷo6^g3F6E e8JY^0) "HṵZ߅: fw!JZoShmOwdrn-zr?F r{z7 =gNZt԰_,"#5 |ދt 22@"t<҅65pEOi S+[:Ւvul/gkX>Mle0jMgppѥ]1w#hP(ͯTx:4gDT, t TLuDoP"c}B/O]^Ҍ W؃D~dr 'Fݹ:lݏk d'3TwwV!n(ؚgƉGX] qf1t4%'2Epg~ߣx!1(oL7D74 Np| 5*ÃPE Kyt+JyN>^ch=ۈּ&2FSnTezsɠB9sctqM0_;'mБ5\Rxwm[3?Q ܬS-_4%7逆 VxA &od^T[OY+=~将0Av[Â% bP.BYTJL2=8@k+J(Ҍ,a >JQ-v~E -hl nUMy, \Q6s[QVa/{"!^tkdܣa&f~o)*r0Io _<@agK;TGdG&DțQŒFr;{Ś]xL/_RQ ]ƛPc;q5? w,GNMh/VG?kY,tRWU>Mr[K݉`Z]3$4j \Krg!Į\MPN[@a/T>{yghip4+ʴCPmR _3QglFAU]% uK"XMtɥi˲ܒScG#<5* KDQ`&&CG9:86@.IO\jDwX ]01t&ϸuj@`ȴi .+Qؓ@љ#Pj'Fnܽlϗ>zd3E[#p4@%yΨ6nXh,lڈƨ`F}fbZ[ /,f G ?$t fṫwۇKs?Za{4)BUp2da q @ 4\;^I-{ bCyoUbHFbkS$#"2iRuJX=y _H0N4 tEݣ$ՃJ^9`$I ]l/$ȢC !ϬlI֐`:+ M; t_X b 7/OWYWwĀdnw}nSh~iWGұ|ɮKq}}j $&^As˻6s CCuy9, 0T5)iz7[X2n=֢&1K4 k.B_P;:._J"4-z|vG*:̩x4ZcLV~nAS{-DA(UYV{e9 G2Y2[v1|X80Obd4H>Sse:Q?+ZSD. lVYl3u@xLq}$9K-ӂDx&C? "WEo {v*QymNQ==ҌP D韼.DTXxs^SRE>ң362%ED:g %h?M(]e+|il#nLl崿0;t^zVq@ &vt2k[<d<k׆󖆺Z $ZRTЄfC5l+}_gHllBݺ/-1C:h G✚-]5ހw;E؈N6S침{\pz:׏Ւ yIU&c2+1_ ra&S{89/:jg$S\5e\h' C26hOOo u zi͗alï 4/;I;@[FDtq fOk 1?,T֋Bwގ[g Q<8b!- hscI{x4eȋ%OʎJDs6vo?R[§&ٽm4^^[00 Ѭj=Dr E+vT]5xv<-_1?_{}]H^Y1EUJyE'#P]$"g߲9*dUt݆̍RMر fiJj؊=.c ovm|-43̌$!m^R"hMBb|w$byE Es89ٝeKV(t}{$=a_>h͟w uVw2Q<+sa-`vs=Rp.> ΎZ$Izm%4P%Ȟ%3ЗFP䨖A4%Tg6Α(W{i$ܓZ vgSv$ g346+bAwrR?Xǁri Vq4Z|~@E7VCį0?u ~hFcTo\:&HTwG QK|$;{Ťޗ3p4?V w'Ϯp "E q4{9-vm[:n'*A=Ž;<{#Q[^wI4!lU>V){] ͊ܒ!h7)xб3Xc24+# ;>{bNPhG;MM};3'x W.̄Aci4BzG\ 9y1'1;ȈقdgP51OM$NI,5hMs6B`{ʶWQKa;9@lFabB=2> ꖕʭڪv|̮-b. Q#s'c?S$-kV˵ GE+=r^Jllx1}c [E߀|WI&2﵏r86v R`xluؔ|X yFLua̘*O@_c(s:ԥ~T7<^ Ut4=YIQ4D1TΥ}PwWVT2Н"΀D@0p), P~5%lfj߆ +/̕IAâESG2bvM!=S; 5eaˏe-@t3 <-43 IJ ۡ4tR}'yOM\s,U(D܋;fhL޽݋OpYYZaSהs0mCYM7E7j$K!#Ok*"iV=;e'[32כl+CkhuEᎅeRg#>M`.zmصJ"b}?_0X{(.&ۿ;6GZ&$>ݷ_Qt԰wBU}g mv( ɶlz"9&xhcp?np$ď7*,)]?"4J}tdߦ̼7I ^G?;Q ~+ qEvb5b$"3uK~8xJ](_\(|OL4J$FXȢ~u)8kjް`# 'vD2د^)(~Y81$eevc2y>4%J ęiyNjC0ج6zX㡻km({D5O(Q(u ~BHDVZ @6,b8%&RH^K?7Ⓞ|er{᷸7^Em)? s'П,a*} @ ]H >Ҥ<92"mqils=6u~_ 4yh*Y钀 T"XO&9:\ӳ3DxܼRi&;{q5K{&|j2hqџhwy!Sa5=CG?F(=䷽ɒpqODd.5@G(z-C3?Ig{\cpsRĖhc{h<0}W s!}Mp\?, 5L`{؋?F&PL $ho"rKl}iΊ+(E0~=i©W;76/*ml\#?q%|bA$0=OS8/}9N.ӑsARs5%H]VKof{n޹^뚔?m^T:nZqt*` iq.Jh7̼vu/rvHuyeq/+SoX\^w⓷b$Z7]}*҈Z}y/Lsk)7aG`bch(ǔT_呓o.zdƼx48u_;B6X]D\/Y%tiP8t]i(q6;jZQ:j%[4WɕX&s4kҲ p\;q.zWi"2쑢J0./K(=a:ljx:2rB Qk#HCW=`hAlex{elfr 6.1]%f qg7xٰvTL&U݉\k.u\hXZt\P̓}EYKx6'kHw[)?BZjmYl|nC[F0ORA֝J i P#uSlb̾r4uC{>w[],frr.px?HAWzc O+ <u ^bvHAT/8 b3P-2~EH>1,2GBkMEv11~5܄crcIY5Gyhv,2ױAl=! U6|딿1U"s ( PSsۣ{: P=`Rt ]=2r٧wN1 "WOd{pTy/-ˇhJM TBPmtQ OWEGfGRiܐO.` ` -}=S̄KJFAL}w^Չ-NJЗz5Vz`. %evګ1 @azF@XGC2a9'E=׿aM']D3KSG̕"qRXh5cpzspCaR.4}C~mrUS L;΃HT9'Ζ3bU4sG?)?h]~fy&PTp>:iuxVsk5} J u2d4t­RҰC3,t*V`SH'E,K.eTwZNT ζETEvFVVD\'akf#L#Q7Շ~tkZ[},?0$W->Sh]rEcb[q^< wcyY c,逝\ h7yu]^A^4ր!@*u? d†%A+vŞ=xՎ&Q%[0hF3UF+WᔛCKJr^.M^d}N6&ʇ,D#rM]]V/,RƑ{? *G/R?:'"`Q'߉ yg.hs .cR8 }ĺ}IqnJ!Hx6JE%e8k'4ZH/7hrgFAa1.#2PsdE 5Ӈ`=B3!gTٴ\\iZSm\O\Huw]k4w ^ cBP< &Lڥ㽛)D)PԍQמ-2JsVmHbL@ D$Q_CʎK(# 7,MU[5wKE۹U$-&x퐎{4k+ \eq-P*N:2;Tb4DK:f[Κzޞit;xKn%; nMMqiɴLDG)y:b}-#ߌIM丶8T (id aq1J <I= !qn} |Vʬ{R-v'Q6BG# 1reh[eL:5YdTR-eH" Z曦1aXo|CI'Y >ya՞ّdW1bEA+aQ0nHo=zT4(_%סoueydo#5U:+{/t qG'֫EOeݏΘI7[P@P⯦欯<fDkcq}̈́2swwqb1@/alN i7G"6; OHO%tÎ?-Ė ѽf3 HB)5+ܵJcP ʼn=5ywkRKoFQ(g`Wi'KBvU.6Zɹ-KEtK 2@=Q&>٬GAO^NٲHgn\^*cIcNbMd\ZdzH4l=>{XtYK4Gń̵21sp۹(sv|F!D'\ڢj':Nre,6f\RM6^K0:%UDX{^֠6NS3{0Xbg;0I{?^*ҿ v+ʨ[T}K޲wM2p*d~C_Zd##er8 V  U gSR! 0| @lr'%,P1w/ ?!xxkx2KV0TlC']K&E\EmjtD7~ ~eO*yCd$ IgFm+zOcDJ>a(F1#fmڒ2~5%ʭ6J?P;qD({uZ% Z9xQ<e邏4p4 2OA ӏ-͟H=\vUE$4E9AXx 5q;.\Sʼn^gFxmxI\Ɇ3~Ig_ r>ٱ~|t$O'Wl)>e}b+u<k7(α}0Tm,g ̌p+n%OxD=cTI-fc 8eĵgzK5"S_(VA%y~ 7k2.=3`fgqG"NZ@~qpyTssOa4-1hI^YVX3b;U Z}J?UӼ@eʛ`1mS$!yYd@L'"o'h9YiɉzP]0j)jƄmLlja5lV,b;;T(n'JK_ иQ:4zjQ_o5%k9$Ƙ 88WOOD@A 2rLI`?xՏ&鰋Ts0}-h4ة, L44jIv A"hD2r񵏘jGh%dMJW]'O!R>hocFuYx@S-)3&Kbˑn 9~E u5 qmyq ,e"O,yjvx.[-6W\wJ!A,Gms`X+\YsK UOn/DE7/AFDZo8G4kWZG tJLn[_z/sdTӅ[`ޯ6'G|oy~ <VQ_1=Ud^cU7V7riv\80x53 .D;ñCI)xTlyG("@JO31 i_&_#~"P;b8&›ś_5l9BTB U4 N]}E Hވ6#sgg.] C|hR/3BgY5.[}m?G/`̨?J1/H&~>c8Ri|LJXDzi%O6P0o0#!06{44מȣ3Eey%)_Ș.̊hʵ"u(<{!\+0CiRط0JstS0Y@ɟ>z‹U$~uW{@r/9 vS|cZA%tAzPmC=)7gק8@,;sc5By)rP./驙oZ[A-ʗ:2eUM]k&ܿߡtk8%#(Z,%$ z0jl.-Dӧ!a?m%(]|ae0&՝ Q/+E⨐aY[.\/?>& Xܥ]mMqT&tr`!)E pѼJI3y5' t]7DJ eh$U\0O8(2"{J3":t]µ oǽs9.ecr6}Y @}܏2y+MūWq/8pMZPkh{a1y&tMoN^J-۝[b3'[fcBlH(y;=9Idk'R6"dqt,ߢ]MV>@wM0^F`FղL((Sypӭ˒5y1p{uxO'7+ֺ! c ~EOab]3LQ`Bh xdce 7#,C!AF&U ́ ="+7zս }D6 ?bCfV䝬oJ˙-E4ulYORvTN~g/ǿ-;g,WMܶ|J̀ؼKF)$N\&^ C1s T2,U'\鬘;?^-|$L\|ݿz%a=x9ڮZ7("/t^ aK;"7n.E%gi@@:)[Ѕ .3u?C)tOsJy>Vq/Ǔۅ9[$qQIf<>@2>[ e,݊ih'|I$+cIEtit6E3;ݴ6qIk#Z<: J`d*(a+Z mf'h߮g[֗kx`1×7`< c$(c.=AfX.~q۳A8zi5뵝kRv%ޯ s4_ ;<$!wu&ʼfDfK>PVoN"ᑧ6{ ,"W&Ƨ&RTac\}taj)HyW,Z{EOpk.]3?5k]Al!Bd+y׬ND42мy㙘XLI90ƈŒC薤;v?v[_"<86<\fjq; PC}BUҵN5m]Pu|݂h Ptxq_ENUK FTk. Ki TO-Ez@$cxЫ/6p@VbcRMgeaFb1V&C͡_>/y1c؄=K2=R"o!3'CxHe f(u0C4aysSxU ) $<: FDQ+B$sh ,G5 ʿ`}tWc^N0 *k)}#mnKJNE vS5 /^b7it(>HM$W[s#8#!8z2թLkڸ@K,E M\n./eI aN|]%ʧ/Y2(jߨ>*=;u~ymAuz[#ǟl@xc-l.,[kC nkp5R=\>^bH4秉3'K2A:6Q?}Sτ1r>kfd'}#]>Ɗ~ϏenxfZoXOsmrTSV={A7*spqAiьG4n$uRNv č*h]^t*OTR6@9L>a6jf;% ) McnPCWzQi$ܼA ס<5i$0>; ]/G#+VRPkIYHpUqv9ךnOVQ%ˍMsUUKmLqҬ+ U_z,lkIaM>9DH+_qM :+; iBۃb_eʲGTu:iNVp[Mn(Bm8aIEH ֑^}IlGěrDZtRG)9hF2u: x'2jUXL}mMrd.ٰ[d܀q$.M,0(С=M}(CȵS |bDK6AD{u&pXgi}!q[IFbO9͸pZά~ަ?a'![ajPfqp%wŠrU,5S{/T |BCɌ^(M;CkseD dr^(FsV3֐(NpôlELPE/*!p"F<ɈY#ߧ:wnDQ-Uv ws c!_)"[Zw:pWV_ ;tOTq5W_%+;n6Y虼:D' FP>B_?G)J&d}܌~0$N됃cpVq+CppGe6G,f8z7S[S50cq/_9j%tQSLbkxe3SXGTJ@H+Wup`I] >W*$FZlEfg s*|z7>!I©; ao e5MB+ MFB6|fb }̭^A}Vn؆.j*-;&)AZ7*851{o:g7.L7.EcЋ}tI*I OWŏ'as\l\L6F)pm,PEW0dq]&dV6.c~LC(Mb#EnѻPV!ȑѵ jFJ$cu?4[&:1&O(yD~EžSF=RdYfGͧ;\uJ,J?N"{% vN1DLݶw7:+$)Dx U"q 4S+a:K Q*y5!< |ƒ6\U+ᬮ[eVv{L+])xec溰o?,ěX:O9T:1G4q.tтEHԟ׋ nPU7/cXnc]XPayGx.w}Ǟ\rf`@zJna'sNAGPL6IQk + KTD.yտ}Ĝi1J$d= vt5!(:+Ovl<ih^ j,QY?a塺7bּG PMoTowdy㷜6s\ԅR;Xڻ\s~=TDCCij`Ԭ\_$9jۢ_]L8hBJnXjY86؋YZttnUPGzA+TM1ex4A\ڇ2;WR}!0ehyXbKlw l_%L;88jQg- XAJd~Pl+470hذQ@s<ڶ}ZP񠵘c?ׇXN{Ҿo;@[v)3uEz>B?t_ 9GH|ֲjOHg,[$BC栰JOP_GUV'u/{#Kq~|H8pz28H8*Mw޺ Ep !}1{_Zl;u+,fo-A[HMt*9^щa`B>/C0iN˭ʠCH/9fV.6!v@ !wy;m$iH+]YA|D!j{EZQ5'vguxy#^Q 1AP'4RU]x'>t3Yy.4O߀hap(AX|α[Pkv}W(t?B'qMEQ.EgV _ h:DBO^kU| u xTtWw!BQENZ9PvsA$vɮ?-~:L340= PCV9I{=BK yѲTp~p vD52IaEf9-vImĻR vDo8t7}U@pܸEHՎ[ﴒx#7 > &2V6nNۅ6[TotV![ ]w?r$T]n9?OQOUY34Wox2J@_OeKն~~Y*}+rlz :έ>2yGm ),R~ 9e( t3WZID$hDpYG*qn7TQATFZ+u\7`p$SdSKBKe$<fpag#au.6 ?cQ!;di !SIAi7]K1|bie9:2)\)146?gZgr' 6'BT̰?_D[2-8?%_/1%2;`Q I #ǀFB P UwYd>-e@u^TN &\l6\PPfzg>B!/P>8#PV׫KD#_BQZlJh mO'5ↇ{1W( =&ZNt#2Da=B(xing:ā5ջͯ=a:+j9Q=\]VHYe+3L^_]cvR ґl{!}5e8rN&:|r>Uap/S$ o>rP$UoicYe}i124O.>9%I9ZXϏY}WZ (9|Z*zKiho۲HH6-/>N=`0-hx-#BWNڑޱ/ĉz~I{n]4uSظ~xѡ5:I ⚏RS CKXi!cz2v#+X̏ᰧl+b*#@8(E$I88= _|( 6,vzT2yab3ޯ8 6]H]_P赼=a7$[b呝VD f&ǜ+xb :h /X慸%p Wi 6|4JYƶY*1@mݧ(mN#(?ւ9Cm͑FȟB~£]Nm_RCO\?FIMYY>Klr3Ni٠;ř@7TN qL 0?)L 1n0VҬykKHf{UˌNf`w \>vF3@J}Ǩ?GϏ$g#_}}Qm\ävK37 \ΰ< _Gy,g/tBu6Tkq;5՞?gEpZ^vf( '3JkɖbX#G 8?l8K?Ǧ=w4rTͦB֬$,ɮXy|)3%g[׳h N kGd6:O@Ƈy//+*뤕E)_OT?WKY/@@ews"m׉Ǹʲ:$Vr ;{TS($O wnwFY[SrKun]g'L\ND65SiJ+[f4:, '{h|Ng YgVB+FRTxlHq Gr)?UA.FRiSmӘ'%`]4k@DWt7H+F qʊ{~,M$|F>Ǚwœ DZn#0o0  3~ 8,~IgۈB:̓E$gb/r )%7J-m c/F[C҂tjdü!mq,_Ѣc2?jjEj2Hpo9|}gW1jQ>}Yd:_@ F)ĠbPJX0_ endstream endobj 24 0 obj 100460 endobj 25 0 obj <> endobj 26 0 obj <> stream x]n8ཟBvQXO HYi@#WGt>R4uwϷ?oytnW/^}cZNy:Շo|v/yUjNi%]O| _sՖ㆔_cs^mzWmasM]ǧôڶcsS1疹EYY٘ w#rbNsmܳGn@?@?@?@?~_~_~_~_~_~_~_~_W~_W~_W~_W~_W~_W~_W~_W~_ᷚs~7~7~7~R~7~7~7~9w~w~w~w~w~w~w~tF8#Hg3ٶ l+ڲr Y,h6;сDt8. Pi|Fv +KdDTguNm-^F ̸>-AāNą,ua`ʼnALt&8eM<#art˄F{ǁN tޮLvqpvvΙK2=n=azf1OOg$@;<) bwW<}ynS~y.XG) 3,ud@ژ4͛rPvc1Kzp endstream endobj 27 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 7 0 obj <> endobj 30 0 obj <> endobj 31 0 obj < /Producer /CreationDate(D:20081106205629+01'00')>> endobj xref 0 32 0000000000 65535 f 0000133345 00000 n 0000000019 00000 n 0000006326 00000 n 0000006347 00000 n 0000011357 00000 n 0000012698 00000 n 0000133488 00000 n 0000012719 00000 n 0000018727 00000 n 0000018748 00000 n 0000018941 00000 n 0000019480 00000 n 0000019864 00000 n 0000025210 00000 n 0000025232 00000 n 0000025424 00000 n 0000025942 00000 n 0000026303 00000 n 0000029578 00000 n 0000029600 00000 n 0000029796 00000 n 0000030215 00000 n 0000030484 00000 n 0000131058 00000 n 0000131082 00000 n 0000131273 00000 n 0000132218 00000 n 0000133183 00000 n 0000133246 00000 n 0000133587 00000 n 0000133684 00000 n trailer < <5F99CE3964EE1873BD44588452647E39> ] /DocChecksum /216D965236B21B963204AEB2A9370793 >> startxref 133871 %%EOF freemind-0.9.0/freemind/doc/freemind_et.mm0000644000000000000000000034304711527433212017174 0ustar rootroot

FreeMind
- vabade mõtete kaardistamise tarkvara - 

Failikäsud:

***********

Uus kaart CTRL+N

Ava kaart CTRL+O

Salvesta kaart CTRL+S

Salvesta kaart kui CTRL+SHIFT+S

Trüki CTRL+P

Sulge CTRL+W

Välju CTRL+Q

Eelmine kaart ALT+SHIFT+nool vasakule

Järgmine kaart ALT+SHIFT+nool paremale

Ekspordi HTML-ina CTRL+E

Ekspordi haru HTML-ina CTRL+H

Ekspordi haru uude .mm faili ALT+SHIFT+A

Ava esimene fail ajaloost CTRL+SHIFT+W

Muutmise käsud:

***************

Otsi CTRL+F

Otsi järgmine CTRL+G

Lõika CTRL+X

Vali kõik CTRL+A

Vali haru CTRL+SHIFT+A

Kopeeri CTRL+C

Kopeeri üksik CTRL+Y

Aseta CTRL+V

Võta tagasi CTRL+Z

Tee uuesti CTRL+Y

Suurenda ALT+nool alla

Vähenda ALT + nool üles

Sõlmede vormindamise käsud:

***************************

Kaldkiri CTRL+I

Rasvane kiri CTRL+B

Allajoonitud kiri CTRL+U

Pilv ümber sõlme CTRL+SHIFT+B

Sõlme värvi muutmine ALT+C

Sõlme värvi segamine ALT+B

Sõlme serva värvi muutmine ALT+E

Suurenda sõlme kirjakuju suurust CTRL+L

Vähenda sõlme kirjakuju suurust CTRL+M

Suurenda sõlmede haru kirjakuju suurust CTRL+SHIFT+L

Vähenda sõlmede haru kirjakuju suurust CTRL+SHIFT+M

Sõlmede navigeerimise käsud:

****************************

Mine juursõlme juurde ESCAPE

Liigu üles nooleklahv üles

Liigu alla nooleklahv alla

Liigu vasakule nooleklahv vasakule

Liigu paremale nooleklahv paremale

Ava hüperlink CTRL+ENTER

Vähenda ALT+NOOL ÜLES

Suurenda ALT+NOOL ALLA

Uue sõlme käsud:

****************

Uus sõlm peasõlme külge ENTER

Uus sõlm olemasoleva alla INSERT

Uus naabersõlm SHIFT+ENTER

Sõlme muutmise käsud:

*********************

Muuda valitud sõlme F2

Muuda hüpikaknas koos lisavõimalustega ALT+ENTER

Ühenda sõlmed CTRL+J

Lülita sõlmede voltimist TÜHIK

Lülita alamsõlmede voltimist CTRL+TÜHIK

Lisa viide lehitsemisakna kaudu CTRL+SHIFT+K

Lisa viide käsitsi aadressi sisestades CTRL+K

Lisa pilt lehitsemisakna kaudu  ALT+K

Liiguta sõlme ülespoole CTRL+nooleklahv üles

Liiguta sõlme allapoole CTRL+nooleklahv alla

Liiguta sõlme vasakule CTRL+nooleklahv vasakule

Liiguta sõlme paremale CTRL+nooleklahv paremale

Kustuta sõlm DELETE

FreeMind-i paigaldamiseks MS Windows-is paigalda esmalt Sun-i Java Runtime Environment (JRE) ning seejärel FreeMind kasutades "installer" versiooni.

FreeMind-i paigaldamiseks Linuxis, paigalda esmalt Sun-i Java Runtime Environment (JRE) ning siis peale lahtipakkimist käivita FreeMind failist freemind.sh. Näiteks kui pakkisid selle lahti kausta /home/kasutaja/freemind/  siis sh /home/kasutaja/freemind/freemind.sh

MS Windows-is ning Mac OS X-s võib FreeMind-i käivitamiseks teha ka topeltklõps failil freemind.jar, mis asub kataloogis lib.

Failide lehitsemiseks oma arvutist lülitu ümber failirežiimile, valides rippmenüüst

Mõttekaardid > Failirežiim

Faili režiim ei ole hetkel eriti kasutusel. See on demonstratsioon, et andmete importimine puukujuliseks struktuuriks mujalt allikast kui mõttekaart, on lihtne. Ei ole ühtki tõendit, et inimesed reaalselt ka seda režiimi kasutaksid.

Mõttekaartide lehitsemiseks (mitte muutmiseks) lülitu lehitsemise režiimi, valides rippmenüüst Mõttekaardid > Failirežiim. Kuniks ei kasutata FreeMind-i appletit, on see funktsioon kasutu.

Eraldi lehitsemiste režiimide omamine on tehniline küsimus. Lehitsemine on ainus asi, mida FreeMind-i appletis kodulehel teha saab. Üldiselt ei kasutata lehitsemise režiimi FreeMind-is.

Kuigi FreeMind on algselt mõeldud mõttekaartide redigeerimiseks, on see siiski loodud ka arvestades teisi võimalikke andmeallikaid. Spetsiifilise andmeallika kättesaadavaks tegemisel peab programmeerija tekitama niinimetatud režiimi selle konkreetse andmeallika jaoks. Faili režiim on üheks selliseks näiteks. Me ei tea, et ühtki teist režiimi oleks välja arendatud. Ei ole päris selge, kas keegi seda üldse kasutab kuid ta on siin olemas uurimiseks kui keegi seda soovib.

On veel olemas skeemide kood, mis on peaaegu valmis ja võimaldab muuta programmide skeeme. Jällegi - kasutuse vajalikkus on selgusetu. Vastupidiselt mõttekaardi režiimile on teised režiimid rohkem demonstratsiooniks, mida kõike on võimalik FreeMind-i abil teha.

Allalaaditud arhiiv sisaldab faile freemindbrowser.jar ja freemindbrowser.html. Oma kodulehel loo viide failile freemindbrowser.html ja selle faili sees muuda vastav viide selliselt, et see viitaks Sinu mõttekaardi failile.

Appleti *.jar fail peab asuma samas serveris kus ka mõttekaart ise ja seda java turvalisuse pärast. Sa pead laadima nii FreeMind-i appleti *.jar faili kui ka oma mõttekaardi oma kodulehele.

FreeMind-i appletis saad Sa kasutada vaid lehitsemise režiimi; Sa ei saa muuta serveris asuvaid mõttekaarte. Klõpsa sõlmel, et lülitada ümber voltimisrežiimi või järgneda veebiviitele. Haara ja lohista tausta, et liigutada mõttekaarti. Otsimiseks kasuta mõttekaardi kiirmenüüd.

Mõned klaviatuuriseaded on uuesti määratud, et oleks kasutusel ka mujal programmides levinud intuitiivsed klahvikombinatsioonid. Mõned uued kiirklahvid pärinevad Microsofti toodetest. Uued kiirklahvid sisaldavad ka näiteks ENTER-i abil uue mõtte lisamine peasõlmele, INSERT-klahvi abil mõtte lisamine olemasoleva mõtte alla, F2 sõlme sisu muutmiseks - siin ongi Microsofti mõju kuna tegelikult ei ole mingit põhjust omada F2 kiirklahvi sõlme sisu muutmiseks. Kuid kui oled neid kiirklahve teistes programmides kasutanud, soovid neid ka FreeMind-i.

Tõlkijate nimekiri ei pruugi olla lõplik. Kui me oleme Sind unustanud - palun anna sellest meile teada! Kõik inimesed, kes on isegi poolikuid tõlkeid edastanud, on siin nimekirjas toodud.

Otsimiseks vajuta CTRL + F. Järgmise otsimiseks vajuta CTRL + G. Et muuta otsing globaalseks, vajuta ESC enne otsimise alustamist.

FreeMind võimaldab luua niinimetatud mõttekaarte. Samas kasutavad paljud inimesed seda kui märkmikku või lihtsalt isikliku info haldamiseks.

Infot hoitakse tekstikastides, mida nimetatakse sõlmedeks. Sõlmed on omavahel ühenduses, kasutades jooni.

See on FreeMind 0.9.0 dokumentatsioon. Kiirklahvid ja funktsioonide asukohad menüüdes võivad tulevikus muutuda.

Sa võid näha mitmerealisi sõlmi eraldi tekstilõiguna või mitme tekstilõiguna. Kui oled ehitamas teadmista baasi FreeMind-i abil, siis ilmselt ei saa lõikude kasutamist vältida. Selle asemel, et omada lihtsalt tavalist tekstifaili märkmetega, võid Sa hoopis omada sõlmedest koosnevat jada, mis on omavahel ühendatud ja saab järk-järgult lahti harutada.

"Teadus on fakt; just nagu majad tehakse kividest, nii ka teadus koosneb faktidest; kuid kivihunnik ei ole veel maja ja faktikogum ei pruugi veel teadus olla." --Henri Poincaré

Rida,

ja teinegi,

ja veel üks rida,

mida arvad sellest?

Et luua uut alamsõlme samal ajal kui muudetakse teist sõlme, vajuta muutmise ajal INSERT.

1. taseme alamsõlme loomiseks peasõlme alla vajuta ENTER.

1. taseme alamsõlme loomiseks peasõlme alla aktiivse sõlme kohale, vajuta SHIFT + ENTER.

Aktiivse sõlme lõikamiseks vajuta CTRL + X

Kõiki tegevusi saab teha ka hiire paremklahvi alt avanevat menüüd kasutades.

Sõlme muutmiseks vajuta F2, HOME või END klahvi, või sõlme kiirmenüüs vali Redigeeri sõlme. Sõlme redigeerimise lõpetamiseks, vajuta ENTER nupule.

Sõlmes oleva teksti asendamiseks uuega lihtsalt alusta tippimist.

Et sundida lühikese sisuga sõlme muutmist avanema eraldi hüpikaknas, vajuta ALT + ENTER.

Pika sisuga sõlme poolitamiseks kasuta nuppu Poolita sõlme redaktori akna allosas või vajuta ALT + S.

Uue rea lisamiseks sõlme redigeerimise aknas, vajuta CTRL + ENTER. Kui sõlme redigeeritakse kohapeal ilma redaktori aknata siis uue rea lisamine ei ole võimalik.

Et kopeerida valikut lõikepuhvrisse samal ajal kui toimub sõlme teksti muutmine eraldi aknas, vajuta hiire paremklahvi ning vali sealt Kopeeri.

Et lisada erisümboleid nagu näiteks ©, lisa see kõigepealt oma lemmiktekstiredaktoris nagu näiteks OpenOffice.org Writer või MS Word, ja siis kopeeri see FreeMind-i.

Vaikimisi ENTER lõpetab sõlme redigeerimise ja CTRL+ENTER lisab uue rea. Märkeruudu "Enter kinnitab" märkimise eemaldamisega saad Sa muuta eeltoodud klahvikombinatsioonide mõju vastupidiseks, näiteks ENTER lisab uue rea ja CTRL+ENTER lõpetab redigeerimise. Sa võid muuta vaikimisi väärtust sellel märkeruudul eelistustest. Veelgi enam - selle märkeruudu väärtus salvestatakse ja hakkab kehtima ka siis kui FreeMind-i vahepeal ei sulge.

FreeMind toetab täielikult unicode-i. Seetõttu võid kasutada skripte oma suva järgi.

Sõlme taustavärvi muutmiseks vali sõlme kiirmenüüst Vormindus -> Sõlme taustavärv

Sõlme kirja suuruse suurendamiseks vajuta CTRL + + (mitte see + numbriklahvide juurest).

Sõlme kirja vähendamiseks vajuta CTRL + - (mitte see - numbriklahvide juurest).

Kirjakuju muutmiseks vali vastav väli peamisel tööriistaribal.

Sõlme vorminduse kopeerimiseks vajuta Alt + C

Füüsilise stiili lisamiseks vali sõlme kiirmenüüst Füüsiline stiil ->Stiil Sinu valikul. Füüsiliste stiilide lisamise kiirendamiseks kasuta klaviatuuri kiirklahve nagu on sealsamas kiirmenüüs hiire parema klahvi all näidatud.

Oma füüsilise stiili lisamine eeldab, et oled tehnilise pädevusega kasutaja. Muuda neid faile "patterns.xml" failis, mis asub kataloogis ".freemind" Sinu kodukataloogis.

[See tekst on aegunud.] Märkused failist patterns.xml järgnevad. Füüsiline stiil kehtestub sõlmedele kui seal on <edge> märgend. <node> märgend võib omada alammärgeneid. Uuri faili "patterns.xml", mis on FreeMind-iga kaasa pandud.

Pilvi kasutatakse mingi ala esiletõstmiseks. Esile tõstetakse nii sõlm kui ka kõik selle all olevad sõlmed.

Pilve lisamiseks vajuta CTRL + SHIFT + B või vali sõlme kiirmenüüst Lisamine -> Pilv.

Sõlme värvi muutmiseks vali sõlme kiirmenüüst Vormindus -> Pilve värv.

Pilvedel võib olla erinevaid taustavärve, nt roheline ...

Hüperviite lisamiseks sõlmele vajuta CTRL + K või vali sõlme kiirmenüüst Lisamine -> Hüperviide.

Hüperviite eemaldamiseks kustuta hüperviide pärast CTRL + K vajutamist avanevast hüpikaknast.

Viite tegemiseks e-postiaadressile määra hüperviite tekstiks näiteks mailto:eesnimi.perenimi@mail.ee

Koos kirjateemaga e-postiaadressile viite tegemiseks määra hüperviite sisuks mailto:eesnimi.perenimi@mail.ee?subject=Viimane telefonikõne

Hüperviiteid saab panna viitama veebilehtedele, kohalikele failidele või e-postiaadressidele.

Ikooni lisamiseks sõlme, vali sõlm ja klõpsa ühel ikoonidest vasakul tööriistaribal. Hiirekursori liigutamisel vasakul asuvale tööriistaribale, hoia all ALT- või CTRL-klahvi, et Sa ei kaotaks fookust.

Ühe ikooni eemaldamiseks vajuta punast risti vasakpoolse tööriistariba ülaosas. 

Kõikide ikoonide korraga eemaldamiseks vajuta prügikasti kujutavat ikooni vasakpoolse tööriistariba ülaosas.

Uue ikooni sõlme lisamiseks klaviatuuri abil vajuta ALT + I.

Oma ikoonide kasutamise võimalus puudub; Sa saad valida ikoone üksnes FreeMind-iga kaasatulevate ikoonide hulgast.

Ikoonide tööriistariba peitmiseks või näitamiseks vasakul tööriistaribal, vali taustal hiire kiirmenüüst Lülita vasakut tööriistariba. Ikoonide tööriistariba kutsutakse seal: Teine tööriistariba.

Kui ikoonid on lisatud nagu siin sõlmel siis need pannakse kaasa ja enamgi veel.

Graafiliste viidete tegemiseks kahe sõlme vahel haara ühest sõlmest ja kukuta see teisele sõlmele, samal ajal SHIFT + CTRL klahve korraga all hoides. Vabasta hiireklahv ennem klaviatuuri klahve.

Teine võimalus - märgi CTRL-klahvi all hoides kaks sõlme ja vajuta CTRL + L

Graafilise viite värvi muutmiseks kasuta hiire kiirmenüüd, mis avaneb hiire paremklahvi alt kui sellel graafilisel viitel klõpsata.

Joone nooleotse muutmiseks kasuta taas kiirmenüüd (hiire paremklahviga klõps graafilisel viitel).

Graafilise viite kustutamiseks kasuta graafilise viite kiirmenüüd (hiire paremklahvi alt vali: Kustuta graafiline viide).

Et kiiresti liikuda (fokusseerida vaade) graafilise viite algus- või lõpp-punkti, kasuta selle viite kiirmenüüd.

Graafilise viite liigutamiseks ja asendi muutmiseks, haara hiire vasaku klahviga sellest kinni ja muuda noole asendit.

Sõlm koos kokkuvolditud alamsõlmega

Teksti otsimiseks sõlmest ja selle all olevatest sõlmedest, vajuta CTRL + F või rippmenüüst vali Redigeerimine -> Otsi.

Järgmise vastavuse otsimiseks sama otsingusõnaga, vajuta CTRL + G või rippmenüüst vali Redigeerimine -> Otsi järgmine.

Kogu kaardi ulatuses globaalse otsingu sooritamiseks tuleb eelnevalt ESC-klahvi abil peasõlm aktiveerida ehk siis kaart algasendisse viia..

Otsingu laius sõltub sisestatud otsingusõnast(-dest). See vastab ideele, et mida sügavam on sõlm, seda parem on detail, mis on sõlmes kirjeldatud.

Pea meeles, et mitte kogu kaarti ei otsita läbi vaid ainult konkreetne sõlm ja selle all olevad sõlmed.

Mitme sõlme korraga valimiseks hoia hiire vasaku klahviga klõpsamise ajal all kas CTRL- või SHIFT-klahvi.

Juba valitud sõlmele alamsõlme lisamiseks, hoia hiire vasaku klahviga klõpsamise ajal all CTRL-klahvi.

Järjestikku mitme sõlme valimiseks hoia hiire vasaku klahviga klõpsimise ajal või siis nooleklahvide abil liikudes all SHIFT klahvi.

Kogu sõlmepuu valimiseks vajuta CTRL + SHIFT + A või hoia all SHIFT-klahvi kui nooleklahviga sõlmepuus allapoole liigud.

Mitme sõlme märkimise eemaldamiseks klõpsa kaardi taustal või valimata sõlmel.

Kõikide nähtavate (ehk siis kogu kaardil olevate) sõlmede märkimiseks vali CTRL + A või rippmenüüst Redigeerimine -> Vali kõik nähtav.

Sa saad sõlmi liigutada kui hiire vasaku klahviga neist kinni haarad ja uues kohas lahti lased.

Sõlme liigutamiseks tuleb hiire vasaku klahviga haarata kinni selle ees olevast sõõrist, mis ilmub sinna hiirekursori liigutamisel.

Sõlme viimiseks otse peasõlme alla, haara lihtsalt hiire vasaku klahviga sõlmest kinni ja lohista peasõlme kohale.

Sõlme kopeerimiseks (mitte liigutamiseks), hoia all CTRL-klahvi kui lohistad või lohista hiire keskmist klahvi all hoides.

Olemasoleva kaardi muutmiseks, lohista ja kukuta see FreeMind-i taustale. See töötab vähemalt MS Windowsi operatsioonisüsteemis.

Graafilise viite loomiseks hoia all CTRL + SHIFT klahve ja siis haara ja kukuta üks sõlm teise peale.

Kui mitu sõlme on valitud siis neid kõiki liigutatakse või kopeeritakse.

Sa võid kukutada infot välistest rakendustest, näiteks faile MS Windowsi operatsioonisüsteemis, või märgitud tekstijuppe MS Internet Explorerist.

Sa saad kopeerida ja asetada (mitut) sõlme erinevate mõttekaartide vahel. Lisaks saad asetada tavalist teksti või HTML-i teistest programmidest.

Kui asetad tavalist teksti siis eraldi ridadel olev tekst asetatakse eraldi sõlmedena koos nende sügavustega, mis määratakse kindlaks teksti märkide arvuga. Allpool ka mõned näited.

Puu
     Tamm
     Pöök
     

Kui asetad HTML-i siis asetatakse see kui paljas tekst. Lisaks asetatakse HTML-is olnud viited alamsõlmedena. Allpool ka mõned näited.

Kui asetad failide nimekirja MS Explorerist MS Windowsis siis see asetatakse viidetena neile failidele.

Kui Sa kopeerid FreeMind-is sõlmede haru ja asetad selle lihtsasse tekstiredaktorisse siis sõlmede puu struktuuri näidatakse taanetega. Hüperviited paigutatakse <> sulgude vahele vahele. Allpool ka mõned näited.

Puu
     Tamm
     Pöök
     Google <http://www.google.ee/>

Kui FreeMind-is kopeerida sõlmede haru ja asetada see redaktorisse, mis mõistab rikkalikku teksti vormindust siis see vormindus koos teksti värvi ja kirjakujuga asetatakse samuti. Hüperviited asetatakse <> sulgudesse kui tavaline tekst. Redaktorid, mis mõistavad rikkalikku teksti vormindamist: MS Word, MS Wordpad or MS Outlook, või mõned kaartidega tekstiredaktorid Linuxis.

Sõlme kopeerimiseks ilma alamsõlmedeta, vajuta CTRL + Y või sõlme kiirmenüüst kasuta valikut Kopeeri üksik.

Tekstikursori liigutamiseks üles, alla, vasakule või paremale; kasuta nooleklahve.

Hetkel eesoleva sõlmede haru algusesse liikumiseks vajuta PageUp klahvile.

Hetkel eesoleva sõlmede haru lõppu liikumiseks vajuta PageDown klahvile.

Keskele peasõlme juurde liikumiseks vajuta ESC-klahvile.

Sõlme vabaks paigutamiseks kaardil lohista seda tema nähtamatust sõõrist (asub sõlme ees ja ilmub nähtavale kui hiir selle kohale viia) kinni haarates.

Sõlme kokkuvoltimiseks vajuta tühikuklahvi või sõlme kiirmenüüst vali: Lülita voltimist ümber.

Sõlme lahtivoltimiseks vajuta tühikuklahvi või sõlme kiirmenüüst vali: Lülita voltimist ümber.

Tasemete kokku/lahti voltimiseks hoia alla ALT-klahvi ja samal ajal keri hiireratast, või vajuta ALT+PageUp või ka ALT + PageDown. Suurte ja mahukate kaartide puhul on soovitav seda omadust ettevaatlikult kasutada kuna siin võib tekkida probleeme (nt mälu jääb väheks).

Kõikide sõlmede korraga lahtivoltimiseks vajuta halli plussmärgiga nuppu tööriistaribal või kasuta rippmenüüd Liikumine -> Voldi kõik lahti.

Kõikide sõlmede korraga kokkuvoltimiseks vajuta halli miinusmärgiga nuppu tööriistaribal või kasuta rippmenüüd Liikumine -> Voldi kõik kokku.

Kokkuvolditud sõlm on tähistatud väikese ringiga selle alumise parema nurga juures.

Kaardi kerimiseks lohista seda hiire vasaku klahviga taustast kinni võttes või lihtsalt hiire ratast kerides. Horisontaalselt hiire rattaga kerimiseks hoia samaegselt all SHIFT-klahvi või mõnda hiire klahvi.

Suurenduse muutmiseks hoia samaaegselt all CTRL-klahvi ning keri hiireratast, või hoia samaaegselt all ALT-klahvi ning kasuta üles (vähendab) / alla (suurendab) nooleklahve. Ühe võimalusena võib kasutada ka suurenduse tööriista peamisel tööriistaribal.

Tegevuse tagasivõtmiseks vajuta CTRL + Z või kasuta rippmenüüd Redigeerimine -> Võta tagasi.

Tegevuse uuestitegemiseks vajuta CTRL + Y või vali rippmenüüst Redigeerimine -> Tee uuesti.

Tagasivõtmise sammude arvu seadistamiseks kasuta rippmenüüd Tööriistad -> Eelistused.

Sõlmede haru HTML-i eksportimiseks vajuta CTRL + H. Eksporditud HTML-leht võib toetada ka voltimise funktsionaalsust sõltuvalt sellest, mis oli määratud programmi eelistustes.

Et kasutada teist eksportimise funktsiooni, kasuta rippmenüü valikut Ekspordi -> Kui XHTML (Javascript-i versioon).

Et eksportida koos ülevaatliku pildiga HTML-i, kasuta rippmenüüst valikut Ekspordi -> Kui HTML (klõpsatav kaart, pildiversioon).

Kaardi eksportimiseks PNG-pildiks, kasuta rippmenüü valikut Fail -> Ekspordi -> Kui PNG

Kaardi eksportimiseks SVG-pildiks, kasuta rippmenüü valikut Fail -> Ekspordi -> Kui SVG

See funktsioon on saadaval vaid siis kui oled paigaldanud SVG-pistikprogrammi.

Kaardi eksportimiseks teise XML-põhisesse vormingusse, mille jaoks on eraldi XSLT vorm olemas, kasuta rippmenüü valikut Fail -> Ekspordi -> Kasutades XSLT-d

Kaardi eksportimiseks OpenOffice.org Writer-i dokumendiks kasuta rippmenüüst valikut Fail -> Ekspordi -> OpenOffice.org Writer-i dokument.

Kataloogide struktuuri importimiseks vali rippmenüüst Fail -> Impordi -> Kataloogide struktuur

Siis küsitakse kataloogi, mille struktuuri soovitakse importida. Kataloogistruktuuri all mõeldakse kataloogidest ja nende sees olevatest alamkataloogidest ning failidest koosnevat puud. Allpool on toodud ka näidis.

MS Internet Explorer-i järjehoidjate importimiseks FreeMind-i valida rippmenüüst Fail -> Impordi -> MS Internet Explorer-i järjehoidjad. Siis küsitakse otsiteekonda, kuhu järjehoidjad on salvestatud. Kataloog nimega "Järjehoidjad" (ingl.k. 'Favorites') asub inglisekeelse MS Windows 2000/XP puhul C:\Documents and Settings\<kasutajanimi>\Favorites

MindManager X5 mõttekaardi importimiseks valida rippmenüüst Fail -> Impordi -> MindManager X5 kaart

Sa saad asetada kaarte või selle osi MS Word-i, MS Wordpad-i või MS Outlook-i kirjadesse. Üldiselt saab neid asetada suvalisse programmi, mis saab aru rikkast teksti vormindamisest. Teksti vormindus ja viited võetakse samuti asetamisel kaasa.

Klõpsates e-posti viitel (näiteks mailto:eesnimi.perenimi@mail.ee) avatakse vaikimisi e-postiprogramm uue kirjaga MS Windows-is.

Teine võimalus on mõttekaart asetada MS Word-i, seda eelnevalt HTML-i välja eksportides ja siis omakorda HTML-versiooni kopeerides-asetades MS Word-i.

Eelistuste redigeerimiseks ava Tööriistad -> Eelistused. Enamus eelistuste muudatused jõustuvad FreeMind-i uuestikäivitamisel.

Eelistuste abil saab seadistada: kiirklahvid, HTML-i eksportimise seaded, viis kuidas sõlmede valimine hiirega käitub, kirjakujude ja servade ning joonte pehmendamine (ingl.k. 'antialiasing'), jne.

Printida saab nii, et kogu kaart mahutatakse ühele lehele või ka mitmele lehele. Seda saab seadistada Fail -> Lehekülje seaded

Ruumi paremaks ärakasutamiseks valida Rõhtasetus (ingl.k. 'landscape') lehekülje seadistustes.

Eelvaade enne printimist ei ole tingimata vajalik. Kui Sul on PostScript printer siis saab kaardi printida *.ps faili ja vaadata seda sealt. Kui prindid printeriga, mis ei saa PostScript-ist aru siis printerile saab saata ehk faili, mis on PCL-is, mida aga ei saa ise arvutis kasutada.

Samuti saab printida veebilehitsejast peale kaardi HTML-i eksportimist või ka pärast MS Word-i, MS Wordpad-i kopeerimist-asetamist. Nii saab ka stiile muuta vastavalt vajadusele.

Sõlmed, mis algavad märgendiga <html>, visualiseeritakse kasutades HTML-koodi. See omadus on abiks tehniliselt pädevatele inimestele. Allpool mõned näited.

HTML-i näidis

Loetelu:

  • esimene
  • teine

Veel võib teha rasvast või kaldkirja. Samuti allajoonitud või läbikriipsutatud kirja. Ka tabelit saame teha:

lahter1

lahter2

lahter3

lahter4

Ka erinevaid teksti värve saab kasutada.

HTML-i eksport tekstiks või rikkalikuks tekstiks (MS Word, MS Wordpad, jne) ei toeta vorminduse või piltide kaasapanemist. Samas on HTML-i eksport mugav veebis kasutamiseks kui on olemas FreeMind-i rakend veebilehitsejale.

Pildi lisamiseks FreeMind-i vajuta ALT + K või vali sõlme kiirmenüüst Lisamine -> Pilt

Pildi lisamisel kaob kogu sõlmes olnud tekst. Selliselt lisatud pildid on viited kuna FreeMind-i *.mm fail on XML-ile sarnase struktuuriga ja peavad asuma ka hiljem samas kohas kus nad olid FreeMind-i lisamise hetkel. Mõeldud on siin suhtelist aadressi *.mm või *.html faili suhtes, sõltuvalt sellest, milleks kaarti salvestatakse või eksporditakse. Piltide suuruse muutmiseks on võimalik kasutada HTML-i. Piltide lisamine FreeMind-i on arendusjärgus olev võimalus ja ei ole veel lõpuni välja arendatud.

Toetatud pildifailide vormingud on PNG, JPEG ja GIF.

Viidatud piltide nähtavaks muutmiseks vajuta ALT + K. Sa võid haarata ja kukutada mitmeid pilte FreeMind-i, märkida neid kui mitut erinevat sõlme. See omadus peaks vähemalt MS Windowsis töötama.

Rohkem tehniline ja mitte nii algaja kasutaja sõbralik on pilte võimalik lisada HTML-i abil. Sa pead alustama sõlme teksti märgendiga <html> - nii saad lisada pilte sõlme.

Näiteks
  <html><img src="pildid/oun.png"> - see on suhteline aadress
  <html><img src="file://C:/Users/Dokumendid/m6ttekaardid/pildid/oun.png"> - see on absoluutne aadress (ei ole soovitav kasutada)

Sa võid kasutada suhtelisi viiteid piltidele (väga soovitatav).

Mõned piltide lisamise näited, mis töötavad vastavates operatsioonisüsteemides

Linuxis Abiword

MS Windowsis MS Office

Linuxis VLC

Linuxis Thunderbird

MS Windowsis MS Office

Linuxis Skype

Linuxis aMSN

GLOBE.WMF

MS Windowsis MS Office

autopackage-installer.png

Linuxis Synaptic

Käesolev FreeMind-i versioon sisaldab katselist faililukustamise tuge, mis on vaikimisi välja lülitatud. Hetke seisuga ei ole kõik asjad täiuslikult veel lahendatud ent see peaks juba enamus olukordades töötama.

Faili lukustamine tagab selle, et sama faili ei muuda samal ajal rohkem kui üks inimene vältimaks üksteise poolt info ülekirjutamist.

Faililukustamise lubamiseks vali rippmenüüst Tööriistad -> Eelistused ja seal on esimese peatüki "Keskkond" all jaotis "Failid" kus saab siis panna linnukese "Katseline faili lukustamine" ette.

Teise, juba avatud mõttekaardi peale liikumiseks saab teha eesoleval mõttekaardi taustal hiire parema klahviga klõpsu ja sealt valida teine lahtiolev mõttekaart. Samuti saab hiire vasaku klahviga klõpsata ülaservas olevatel sakkidel. Klahvikombinatsioon on ALT + SHIFT + nooleklahv vasakule/paremale

freemind-0.9.0/freemind/doc/freemind_fr.mm0000644000000000000000000034627611527433212017202 0ustar rootroot

FreeMind
- free mind mapping software -

Commandes Fichier:
Nouvelle carte          - Ctrl+N
Ouvrir la carte         - Ctrl+O
Sauver la carte         - Ctrl+S
Sauver sous...          - Ctrl+A
Imprimer                - Ctrl+P
Fermer                  - Ctrl+W
Quitter                 - Ctrl+Q
Carte précédente        - Ctrl+GAUCHE
Carte suivante          - Ctrl+DROITE
Exporter le fichier en HTML - Ctrl+E
Exporter la branche en HTML - Ctrl+H
Exporter la branche dans un nouveau fichier MM  - Alt+A
Ouvrir le premier fichier de l'historique       - Ctrl+Shift+W

Commandes Éditer:
Chercher         - Ctrl+F
Chercher Suivant - Ctrl+G
Couper           - Ctrl+X
Copier           - Ctrl+C
Copier un seul   - Ctrl+Y
Coller           - Ctrl+V

Commandes Mode:
Mode MindMap      - Alt+1
Mode Navigation   - Alt+2 
Mode Fichier      - Alt+3

Commandes de mise en forme d'un nœud:
Italique                             - Ctrl+I
Gras                                 - Ctrl+B
Nuage                                - Ctrl+Shift+B
Changer la couleur du nœud               - Alt+C
Mélanger la couleur du nœud              - Alt+B
Changer la couleur de bordure du nœud    - Alt+E
Augmenter la taille de caractères du nœud       - Ctrl+L
Diminuer la taille de caractères du nœud        - Ctrl+M
Augmenter la taille de caractères de la branche - Ctrl+Shift+L
Diminuer la taille de caractères de la branche  - Ctrl+Shift+M

Commandes de navigation dans le nœuds:
Aller à la racine  - ECHAP
Vers le haut       - HAUT
Vers le bas        - BAS
À gauche           - GAUCHE
À droite           - DROITE
Suivre le lien     - Ctrl+ENTRÉE
Zoomer             - Alt+HAUT
Dézoomer           - Alt+BAS
 
Commande nouveau nœud:
Ajouter un nouveau nœud frère   - ENTRÉE
Ajouter un nouveau nœud enfant  - INSER
Insérer un nouveau nœud frère - Shift+ENTRÉE

Commandes d'édition d'un nœud:
Éditer le nœud sélectionné        - F2
Éditer le nœud long               - Alt+ENTRÉE
Grouper les nœuds                 - Ctrl+J
Basculer le pliage                - ESPACE
Basculer le pliage des enfants    - Ctrl+ESPACE
Créer un lien par le choix d'un fichier    - Ctrl+Shift+K
Créer un lien en entrant du texte          - Ctrl+K
Créer une image par le choix d'un fichier  - Alt+K
Déplacer le nœud vers le haut              - Ctrl+HAUT
Déplacer le nœud vers le bas               - Ctrl+BAS

Pour installer FreeMind sur Microsoft Windows, installez Java de Sun puis installez FreeMind en utilisant l'installateur FreeMind.

Pour installer FreeMind sur Linux, télécharger le Java Runtime Environment et l'application FreeMind. Installez Java en premier lieu, puis décompressez FreeMind. Pour démarrer Freemind, exécutez freemind.sh

Sous Microsoft Windows et Mac OS X, vous pouvez également lancer FreeMind en double-cliquant sur le fichier freemind.jar situé dans le répertoire lib

Pour naviguer dans les fichiers de votre ordinateur, basculez en mode fichier, menu Cartes > Fichier (Alt + 3)

Pour promouvoir un répertoire comme nœud central de la carte, dans le menu contextuel du nœud cliquer sur Centrer.

Pour voir, éditer ou exécuter un fichier, suivre le lien de son nœud.

Actuellement, le mode ficher n'est pas très pratique. Cela démontre juste qu'il n'est pas très difficile d'alimenter un artbre avec des données issues de sources différentes des cartes mentales. Il n'est pas évident que quelqu'un utilisera ce mode.

Pour parcourir les cartes plutôt que de les éditer, basculez en mode parcours, menu Cartes > Parcours. Cette fonction ne sert que dans le cadre de l'utilsation de l'applet FreeMind.

Les raisons de l'existence de ce mode de parcours sont techniques. La navigation est la seule fonctionnalité que l'applet FreeMind peut apporter à votre site. Normalement, vous n'utiliserez pas le mode parcours dans FreeMind.

Bien qu'initialement Freemind soit un outil d'édition de cartes mentales, il a été conçu pour montrer des données issues de sources diverses. Pour rendre disponible la visualisation de données spécifiques dans FreeMind, un programmeur doit écrire un mode dédié à cette source de données. Le Mode Fichier est un exemple. Nous ne connaissons pas d'autres modes implémentés. Ce n'est pas évident que quelqu'un souhaite vraiment utiliser cette architecture; en tout cas c'est ici à disposition de tout à chacun.

Il y a du code presque prêt pour un mode Scheme, qui permet d'éditer des programmes en Scheme. Encore une fois, l'utilité est loin d'être établie. A contrario du mode carte, les autres modes sont plus là à des fins de démonstration des possibilités sans être réellement utilisés.

Vous pouvez installer l'applet sur votre site web pour que les internautes naviguent sur vos cartes.

L'archive téléchargée contient les fichiers freemindbrowser.jar et freemindbrowser.html. Créez un lien de votre page vers freemindbrowser.html. Changez le chemin dans freemindbrowser.html pour qu'il pointe vers votre carte.

Pour des raisons de sécurité, le fichier jar de l'applet doit être situé dans le même serveur que la carte. Vous devez donc uploader le fichier jar de l'applet FreeMind et le fichier de la carte sur votre site web.

Dans l'applet FreeMind, vous n'avez accès qu'au mode parcours; vous ne pouvez pas éditer des cartes à distance. Cliquez un nœud pour basculer le pliage ou pour suivre un lien. Glissez l'arrière-plan pour bouger la carte. Pour chercher dans la carte, utiliser le menu contextuel des nœuds.

Quelques raccourcis claviers ont été redéfinis pour se conformer à ce que nous considérons être les standards ou l'utlisation intuitive. Certains raccourcis sont calqués sur ceux des outils Microsoft. Voici quelques nouveaux raccourcis tels que Entrée pour créer un nouveau frère sous le nœud, Inser pour créer un nouvel enfant, F2 pour éditer les nœuds—ici on peut noter l'influence de Microsoft en dépit d'une utilisation peu intuitive de la touche F2 pour éditer les nœuds. Mais comme vous y êtes habitué dans toutes les applications que vous utilisez, vous la voulez aussi dans FreeMind.

Les racourcis clavier peuvent être modifiés dans le menu Outils > Propriétés

Les crédits de traductions sont probalement imcomplets. Si nous vous avons oublié, faites le nous savoir. Toutes les personnes listées sont celles dont nous savons avoir contribué à une traduction même incomplète.

Tapez Ctrl + F pour la recherche. Tapez Ctrl + G pour chercher le suivant. Pour rendre la recherche globale, tapez ECHAP avant la recherche.

FreeMind rend possible la création de prétendues cartes mentales. De fait, nombreux sont ceux qui l'utilisent comme alternative à un répertoire ou pour gérer leurs informations personnelles.

Les informations sont conservées dans des boîtes texte appelées nœuds. Ces nœuds se connectent grâce à des lignes courbes appelées liens.

Ceci est la documentation de FreeMind 0.8.0. Les raccourcis clavier et la position des fonctions dans les menus peuvent varier selon les versions.

Vous pouvez considérer les nœuds multilignes comme un ou plusieurs paragraphes. Si vous souhaitez construire votre base de connaissance avec FreeMind, vous ne pourrez pas y échapper. Au lieu d'avoir un fichier contenant l'ensemble de vos notes, vous pouvez avoir un nœud résumé garni de nombreux noeuds enfants multilignes.

"On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison."—Henri Poincaré

Une ligne,
une seconde,

puis une autre encore,
que pensez-vous de ça?

Pour éditer un nœud, touche F2, Origine ou Fin, ou à partir du menu contextuel->Editer le nœud. Pour terminer l'édition d'un nœud, touche Entrée.

Pour diviser un nœud long, utiliser le bouton Diviser en bas de la fenêtre de l'éditeur de nœud long, ou touches Alt + S dans l'éditeur de nœud long

Pour insérer une nouvelle ligne dans l'éditeur de nœud long, touches CTRL+Entrée. Vous ne pouvez pas insérer de nouvelle ligne dans l'éditeur de nœud court.

Pour copier une sélection dans le presse-papiers pendant l'édition d'un nœud long, bouton droit de la souris et choisissez copier.

Pour insérer un caractère spécial du style ©, insérez le d'abord dans votre traitement de texte favori puis collez le dans Freemind.

Par défaut, Entrée met fin à l'édition d'un nœud long et CTRL + Entrée insère une nouvelle ligne. En décochant la case "Entrée confime" vous pouvez inverser cette fonctionnalité, c'est-à-dire que la touche Entrée insère une nouvelle ligne et CTRL + Entrée termine l'édition. Vous pouvez paramétrer ce choix dans les préférences->Aspect. En outre, le changement de ce paramètre est conservé en cours de session de FreeMind.

FreeMind est totalement compatible Unicode. En conséquence, pour pouvez utiliser les caractères de votre choix.

Changer la couleur d'arrière-plan d'un nœud, dans le menu contextuel du nœud utiliser Présentation > Couleur de fond du nœud

Augmenter la taille de police d'un nœud , touches Control + =

Pour appliquer un style, dans le menu contextuel du nœud choisissez Style > le style de votre choix. Pour accélérer l'application des styles, utilisez les raccourcis claviers qui vous sont divulgués dans le menu contextuel du nœud.

Si vous êtes un utilsateur expérimenté, vous pouvez éditer les styles dans le fichier "patterns.xml" situé dans le répertoire ".freemind" du dossier racine de l'application.

[Ce paragraphe est obsolète] A remark on the file patterns.xml follows. Physical style applies to nœud, if there is a <node> tag. It applies to edge, if there is an <edge> tag. <node> tag can have tag as a child. Study the file "patterns.xml" supplied with FreeMind.

Les nuages sont bien adaptés pour la mise en valeur d'une région. La mise en valeur s'applique à un nœud et tous ses descendants.

Pour ajouter un nuage, touches Ctrl + Shift + B ou Insérer > Nuage dans le menu contextuel du nœud.

Pour changer la couleur d'un nuage, Présentation > Couleur du nuage dans le menu contextuel du nœud.

Les nuages peuvent utiliser différentes couleurs de fond, comme le vert...

Ajouter un hyperlien à un nœud, touches Ctrl + K ou Insérer > Lien dans le menu contextuel du nœud.

Pour retirer un hyperlien, validez un champ vide après avoir tapé Ctrl + K.

Pour lier une adresse mail, validez une adresse au format mailto:paul.toto@supermail.com

Pour lier une adresse mail en précisant un sujet, validez une adresse au format mailto:paul.toto@supermail.com?subject=Dernier appel téléphonique

Des liens peuvent être créés vers des pages internet, des fichiers locaux ou des adresses emails.

Un nœud peut avoir plusieurs icônes.

Pour ajouter une icône à un nœud, sélectionnez un nœud et cliquez l'une des icônes de la barre d'outils à gauche. Pendant votre déplacement vers cette barre d'outils, maintenez la touche ALT ou CRTL pressée pour ne pas perdre le focus sur le nœud à icôniser.

Pour retirer une icône, cliquez sur la croix rouge en haut de la barre d'outils.

Pour retirer toutes les icônes, cliquez sur la poubelle en haut de la barre d'outils.

Pour ajouter une icône sans passer par la barre d'outils, touches Alt + I.

Il n'y a pas moyen d'utiliser vos propres icônes; votre choix est restreint à ceux offerts par FreeMind uniquement.

Pour afficher ou masquer la barre d'icônes, faites ce choix dans le menu contextuel de l'arrière plan.

Quelques exemples d'icônes attachées à ce nœud.

Pour créer un lien graphique entre deux nœuds, glissez déposez un nœud sur un autre en maintenant pressées les touches CTRL + SHIFT; relachez le bouton de la souris avant de relacher les touches du clavier.

Pour changer la couleur d'un lien, utilisez le menu contextuel du lien (clic droit sur le lien graphique).

Pour changer les flèches d'un lien, utilisez le menu contextuel du lien.

Pour vous déplacer jusqu'à l'un des nœuds aux extrémités d'un lien, utilisez le menu contextuel du lien.

Trouver du texte à partir d'un nœud et de tous ses descendants, touches Ctrl + F

Trouver l'occurence suivante dans une recherche, touches Ctrl + G

Pour chercher dans toute la carte, positionnez vous sur le nœud racine en pressant Echap avant la recherche.

La recherche utilise l'algorithme de parcours en largeur. Cela correpond à l'idée que plus un nœud est profond, plus le niveau de détail est important.

Rappelez vous que la recherche ne concerne qu'un nœud et ses descendants, pas toute la carte.

Ajouter des nœuds isolés à une sélection, touche CTRL + Clic

Sélectionner des nœuds contigus, touche SHIFT en cliquant, ou SHIFT + les touches flèches.

Sélectionner une branche complète, touche ALT + Clic, ou maintenir SHIFT pendant le mouvement d'un nœud vers son parent avec les touches flèches.

Annuler la sélection de multiples nœuds, cliquer sur l'arrière-plan de la carte ou sur un nœud non sélectionné

Sélectionner tous les nœuds visibles, Éditer > Sélectionner ce qui est visible

Sélectionner les nœuds visibles d'une branche, Éditer > Sélectionner la branche visible

Pour éditer une carte existante, glisser son fichier et le déposer sur l'arrière-plan de Freemind; en tout cas, cela fonctionne en environnement Microsoft Windows.

Vous pouvez déposer des données issues d'autres applications, comme des fichiers du système de fichiers de Microsoft Windows, ou des extraits de texte sélectionnés dans Microsoft Internet Explorer.

Vous pouvez bien entendu copier et coller des nœuds entre plusieurs cartes mentales . En outre, vous pouvez coller du texte normal ou HTML issu d'autres applications.

Si vous collez du texte simple, chaque ligne sera collée comme un nouveau nœud, leur profondeur étant déterminée par le nombre d'espaces qui précède le texte. Vous trouverez un exemple ci-dessous.

Arbre
     Chêne
     Hêtre
     

Si vous collez du HTML, il sera collé en texte simple. De plus, les liens contenus dans le HTML serons collés en tant qu'enfants d'un nœud additionnel libellé "Liens". Un exemple suit.

Si vous copiez une branche dans FreeMind et que vous la collez dans un éditeur de texte simple, l'arbre de la structure sera matérialisé par une indentation. Les hyperliens seront collés entre les signes <>. Un exemple suit.

Arbre
     Chêne
     Hêtre
     Google <http://www.google.com/>

Si vous copiez une branche dans FreeMind et que vous la collez dans un éditeur de texte qui interprète le Rich Text Format, les enrichissements seront également collés, y compris les couleurs et les polices. Les liens hypertextes seront collés entre les signes <>, comme pour le texte simple. Parmi les éditeurs qui interprètent le Rich Text Format on trouve Microsoft Word, Wordpad ou Microsoft Outlook et quelques outils de prise de notes sous Linux.

Pour copier un nœud sans ses descendants, touche Ctrl + Maj + C ou Copier un seul dans le menu contextuel du nœud.

Pour positionner librement un nœud, glissez sa poignée invisible située sur le coté du nœud en direction de la racine, et déplacez la.

Déplier un nœud: touche espace ou cliquer sur Plier/déplier dans le menu contextuel du nœud ou encore touche flèche dans la direction du dépliage.

Pour plier ou déplier les nœuds par niveaux, maintenir la touche Alt en utilisant la roulette de la souris, ou les touches Alt + Page Haut ou Alt + Page Bas. Attention, les cartes de gros volume peuvent provoquer des problèmes de mémoire.

Pour tout déplier, cliquer sur le signe plus gris de la barre d'outils principale, ou menu Navigation > Tout déplier.

Pour tout plier, cliquer sur le signe moins gris de la barre d'outils principale, ou menu Navigation > Tout plier.

Un nœud plié est symbolisé par un petit cercle sur son coté extérieur.

Pour modifier une autre carte déjà ouverte, clic droit sur l'arrière-plan choisissez la carte parmi celles proposées dans le menu contextuel.

Pour faire défiler la carte, glisser l'arrière-plan avec la souris, ou utiliser la roulette de la souris. Pour faire défiler horizontalement avec la roulette de la souris, maintenir la touche Shift pressée ou un des boutons de la souris.

Pour zoomer, utiliser la roulette de la souris en maintenant la touche CTRL pressée, ou touches Alt + flèche haut ou bas. Vous pouvez aussi utilliser le champ zoom de la barre d'outils principale.

Exporter une branche en HTML: touche CTRL + H. Les pages exportées en HTML peuvent embarquer des fonctionnalités de pliage, paramétrable dans le menu Outils > Propriétés > HTML

Exporter la carte avec une image d'ensemble cliquable sous HTML, menu Fichier > Export > En XHTML (image cliquable)

Exporter la carte en image PNG, menu Fichier > Exporter > En PNG

Exporter la carte en image JPEG, menu Fichier > Exporter > En JPEG

Exporter la carte en SVG, menu Fichier > Exporter > En SVG. Cette fonction n'est disponible que si vous avez installé le plug-in SVG.

Exporter la carte dans un format XML pour lequel vous avec la feuille XSLT, menu Fichier > Exporter > En utilisant une XSLT

Exporter la carte dans un document OpenOffice Writer 1.4, menu Fichier > Exporter > Comme document OpenOffice Writer

Pour importer la structure des répertoires, dans le contexte d'un nœud, menu Fichier > Importer > Importer une arborescence de répertoires. Choisissez le répertoire pour lequel vous désirez importer l'arborescence. Par arborescence, nous entendons l'arbre de tous les sous-repertoires, avec les liens vers les fichiers que contiennent ces sous-répertoires. Suit un exemple d'un arborescence importée.

Pour importer les favoris d'Internet Explorer dans FreeMind, menu Fichier > Importer > Favoris d'Explorer. Entrez le répertoire où sont stockés les favoris. Le nom du répertoire est "favoris". En Windows 2000 vous le trouverez sur votre disque dans le chemin C:\Documents and Settings\<user>\Favoris

Vous pouvez coller des cartes ou des branches dans Microsoft Word, Wordpad ou dans des messages Outlook. En général, vous le pouvez dans toute application qui interprète le format Rich Text Format. Le formatage du texte et les liens sont également copiés.

Vous pouvez également coller une carte dans Microsoft Word en l'exportant au format HTML avec en-têtes, puis en copiant le HTML dans Word.

Cliquer sur un lien mail (mailto:don.bonton@supermail.com) ouvrira votre messagerie pour créer un nouveau message.

menu Outils > Propriétés. La plupart des changements prennent effet après un redémarrage de FreeMind.

Les propriétés incluent les raccourcis claviers, les caractéristiques de l'export HTML, la façon de sélectionner un nœud avec la souris, le lissage et plus encore.

Vou pouvez imprimer soit en ajustant la carte sur une page, ou en utilisant plusieurs feuilles de papier. Vous faites ce choix dans le menu: Fichier > Mise en Page

L'aperçu de votre carte avant impression n'est pas direct. Si vous possédez une imprimante postscript ou un driver postscript générique, vous pouvez imprimer la carte dans un fichier et visionner la carte en utilisant Ghosview ou un logiciel équivalent. Si vous essayez d'imprimer la carte avec une imprimante qui ne gère pas le postscript, le fichier résultant ne sera pas en postcript mais probablement en PCL, format inutilisable pour vous.

Vous pouvez également imprimer depuis votre navigateur internet après un export HTML, ou depuis Word ou Wordpad après y avoir copié/collé la carte. Si vous exportez la carte en HTML avec en-têtes et que vous la copiez/collez dans Microsoft Word, vous pourrez modifier les styles à votre convenance.

Les nœuds commençant par <html> sont mis en forme en utilisant le HTML qu'ils contiennent. Cette fonctionnalité est utile aux personnes avec des dispositions technique. Par exemple:

Exemple HTML

Plusieurs points:

  • Point un
  • Point deux

Nous avons des caractères gras ou italiques. Soulingnés et barré également. Un petit tableau:

Cellule1

Cellule2

Cellule3

Cellulle4

 Plusieurs couleurs de caractères sont possibles.

L'export des nœuds et des images HTML n'est pas supporté en texte ou RTF (Word, Wordpad). En fait, le HTML est pratique dans le cadre d'une publication sur le Web utilisée conjointement avec l'Applet FreeMind.

Insérer une image dans FreeMind: touches Alt + K, ou dans le menu contextuel du nœud Inserér > Image. L'insertion d'une image efface le texte déjà présent dans le nœud. Les images inserées par cette méthode ne sont pas collées correctement en dehors de FreeMind et ne sont pas non plus bien exportées en HTML. La gestion des images dans FreeMind en est à ses balbutiements.

Transformer un lien vers une image en image visible: touches Alt + K. Vous pouvez glisser-déposer plusieurs fichiers d'images dans FreeMind, sélectionnez les comme nœuds multiples, et transformez les en images en pressant les touches Alt + K.

Il existe une approche plus technique et moins facile d'accès pour insérer une image. Il est possible d'inclure du HTML dans les nœuds. Démarrez le contenu du nœud avec la balise <html>. De cette manière, vous pouvez afficher des images dans les nœuds.

Par exemple
  <html><img src="linked/Apple.png">
  <html><img src="file://C:/Users/My Documents/Mind Maps/Linked/Apple.png">

La version actuelle de FreeMInd expérimente le verrouillage de fichier, désactivé par défaut. L'implémentation courante ne gère pas parfaitement les situations de compétition, mais ça devrait fonctionner pour les usages les plus pratiques.

Le verrouillage de fichier empêche l'accès simultané de plusieurs utilisateurs à une même carte, ce qui évite aux uns d'effacer accidentellement les données des autres.

freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_fr.pdf0000644000000000000000000032731711527433212022765 0ustar rootroot%PDF-1.4 %äüöß 2 0 obj <> stream x]M:nl3Hv40AVI^ G(Ȓз.D)Jܖz{{[swQ M&24.g_\5 0ؚ(9o n54 s6smehRέ3[`hRΚ-04)-04.wؙ)dd\jfJȸT줉J22ĎB22qt~KdlqD;?~oy\W'?W_>Sa%0[a7y~Jp|[ޟS#]K+B__LtO>oۗ?[6nbS!mLdPB#ʟ*|M7H!&6,eTe.kRkGxcT,VjlŸyW'GcZT۷j&k,bWy{٧ڶ\6W._w#]R?+D?-ZFB c^1$d^*O4i1jQQe5-u|Qy/HG4-TL7^ 7^k7^ 4ò?imI% -m(.n([k&qm]{ҮFѮ=i6ڵ'F]h׶ڥ)(I % +("H$n^*f+h0C[QE 5&4 X1D\qEZiLJK[$`ńqCZiWPEZ3K".Q nAJ iWPE\Aqk$./DMVL(W0E\AqEZĭ5t)4 X1D\qEZiLҪK[$`ńqCZiWPEZs7/q3U4 PE܊!]ĭ(E܊"]ąI\Zqq P"`H"- [k&qiX% -hbB!- +("n֒iZ% -hbB!- +("nH؆X_,Áx"(MYDD:c_"p@7w#i_] )@޷Dzq2bNX:0P=ӣ,=c}GH}@nu;gLd> vF#yp4CC|td1c[O(ɞ>ҧ2AXCOF![ 㑬ܮ&VN7}My끮Wa5A9&uբƠO>atL =Ci=rs\kcJ :,~Rt?E!ϰ'4Hp>:KdvQO; ez)./SiZvS^:N ?G>]/,;sr7yzKK./YٖhlO9kjw4s1{Iics#-i/GCs4?/ ۸A?/ΠJ\qi*2l]G]hbu6 eQ}5<!km ƶy)_=2>74F*S>->-[~޲?SflR*1s1QV#83{_\{-z˟.OI.}ǨJ]ͷlSb=<-586:) {Cvy7j}O6+Bqˣ]ʭ?cK_I!P☗&{6:u@8KaeYbeҦ38bF ǩNN(T7Ղ: fa.%IAA/#=ZVz*@+')X|PZJynZrCl6umֽ VEDwcpK/Z|n?vѯ;>sɷ@ӧjˠ]}j|w?fQv;l 1L"lD`[eH6hݣݞ{,>qnTͅU¢]]E%K۝b\lG?`FB! Vۇ3#{tDHr3** n颲gSV$֪ AꥦO>J琝rz!*i)ܶ8qU-r2Á [!٦3 -TWj(ŠwW VJɦs`r鬆 .<>C\\xxלcpG1)M5s.־L͊;Zz"a+;&_U7.6,]<[4MM.Q8;A䣠֭ہi  Ze?]lR^sr1k53Z?DaWĿ.^){dŔK7 %~+}o)x*w FU޸cύ ~1TrG7cmܰn/}bd^`d=_fvr oc}>&l I3_iW}i3MA=NX~{cݵuV} r$j0h<^5q{X8hOzg6(e䙕(n ?FB&LjKWr<秐!~u\3mvGi"E~jMd_wgYC2"g=zxzKFD摃>#>`53% dR}Dtx#Ha,سR}9Tz!GHH }Ciwд.6:9e1bSr&qиWk^kr4Uݓ\!+Gt"0sl\>6h[tnٽӮ_:Gܬʁ%Fv^[zN!K$e+o+*+yqqVĪlU,@lqzbUe'5>M&M[Y|,_軦k^-{ uY_;S?[JJst߻U]lN" }ܗZRdP݋7m2mrmwN03lI/L'eJ<_ե7KS";ѬSGm]E+irƲ uMPDzLf/HNx'6Xe+^vI\ܑ:mJvI? 8OMߖj6]xSz(=pѭ9 HPstc[耾)IllNY$I^och]I{;Zi>zM]׏6rtJB=Z9C+)ސ =@3Wn;MlQn|MX&0#e6o}tUCm5I;9O__*3y;fvl.ύ}_3s %)+w*,D;^rMd4gAb$G>8qxmB6.#;v7С|<;Qu{|⼠H"],/lQc>#>0[Sò6j64iיYMMy>g zpzGzLJzG[Zd1Z̡'~t?D "ِVH3 |>GΑh.> &"? 0һ&<,zWzW:LiA̯ߵ ]Ëg,ɋɔ, I_ZF][#e9)U%zW]oUT+{B!2KZSv>w6: vt<$'o oi,vzinc?mޑ/eahCtta_ )V|/"*oyK'ib l9,ӣH&22JIcp[.3M;4m r7nh.aQ,,9\xX=ܐpcy| /,csNNqV~:I mtݟ#$k(HGjVK;V'499s}*,~s=I8\޸Ykv[虊3k.jG{%H׳m`{Ŧ 8-ǹA;9(IԹŸL`q ~YGQݤx93 F1siL2jn>ծ1>o }ST2h)3nzHVX/_q10z:A^tv.QW,辪 VeI*2k9PYM+0vc'qĞ}߭wDuh5l1B.oSoYauSɿ7LnT-O!mquF2 Z"IayUxId>P=Ov;.4ۋ=l=#GDmuuSy s'?z C;;Q;x C u:EuD(#qc;^ +_wo-UvIiq鉎s^d|=98Wgs X r(]E3۹;S/^etc>ǻ8G+˄2с+Fr8}_T_rx?煼^@1kkd$~p]x7+3CvΗ8W:WJx# 7Mu%sΚ^>uFxOE u䷋Ɗkޤ^P;kK^!(xKSɩWrE_ u endstream endobj 3 0 obj 6621 endobj 4 0 obj <> stream JFIFC     C   `" {p_^P,=$aic*X]`YӚ:#2HUdo ~8!5]YbB#{K@_6IT6vj=й豦Ȁo\*邹fŇKiπ[h+In|<%iFo+a`O-SҴe@-D1ݰ#[bu.3ү,9/EZ3$) 0!146 KŸ4<qN۸e inXlUJÔErVkܗ KEudL <&Xߙ=n[T0}ݪ3sMWxg{!Sdq#` JC+g/vQ񦹘!ݨݮ\dfFc:F/UxX&aƝ'-=jmq&zn; CBz8Y Ƃ0c!nǙ1SmtVS@ 9*9r+9e:|@xf9c2/6#(u}v?կ 2([VY~HQ( YCfV{0 WWkB8~H\u<9 09?5 1ޕKM#eX=aXJidџ*aR=+FrNVf欻T;W+`cV&>'1!Aa "2BQ?BLmͺ{t#w HJ2ځF]P,YV(s5a$x%%(] R+OR*4 3)2ɝFyA)]C8Macv/P2 1+3hD-ҌUʱ Nڸ WB !1 "AQaq2R#4Bb0$%35Trt?SV+qU&?CqZ@:BftG|M}}7RmtEo%>ɻu#*?X@+jl&YnP lWϗߞ:KE-7j"ZeZzqbM,!]]pSzWC2r]JP6U9%e)E}IE1\Sz] llvXvY:*h@dTW"x%PVPVFMm[}LпTwŝyi}Ht󕤻7S/<=| rz̀IM{p*;"1S_*3GbrVF?>T-iKJxz<`<ˈPWX$+C+]@ Q7q>p!!HJE^u=DlumWոF+;`F'yBKA:uhNݤQe+qA)ID]$v J0Pj(e qA8 ÓSN]pR1r=C#jk"Te{S\H7GY*JfvUt}F 2:Fqw\s9SW CaH7ڒj M L!<ӤJ_R(QIP"|Qƕd7f)>0Qw&G(J9G+0[X |eX߇vUP;Fz^`x{9ImƇa?9yì(*Ltl^ƾ횣\fZIg2]E/^ya6e&}+T i7l4bB~rHڰ#|/mOJ2Mur!T=uEQ|"VU[N$⣴(!1AQaq 0?!NF OU)LGRB @'`m4~2P(pBY2i([i(3ed/"SWfKZx~gK‹ej& uf'фy% GsfrGD#ZRmw4X2l*ަ(G'v!ϗ&%&s>JzU3durRkIѺ u5[YJ3+Py ӎ.wuŃAMeT ! w1gNX(!\ƱT(UHM.##8={ h8XDyOrKˍW`5G(+% +kAK}f\]rNzp~Vl&Q4k9cA4  |$dX v3bU8/&ZmauiM X$Wpz ?@I=cÐ @R<,l֦&"12q/4*D}HtH #(B}DL!w@O8ҙSG:^J~/$K NHsHV$rxKPE=sLEBy!)=襻POS$!s{&ȦQ륕!T#÷ɕQ{ W<ݽQxc IR:_<'e<o"1!AQaq?|B0az\Dt x"GB_ңX!6_5Zf}Ϧ)r1qoͺ o1?M 4[}OqMv?-^wLюo7`OF;m0n[StŔ}f[%!1QAaqс?hn(XAD0ժ8X9Cb2 ]CV9A+zt}̘an=%Ƌb3Yp/ikC ZîG."{>"4Hv^ CqIYP׍3 xxk] =y&!1AQaq 0?%@PtXoY( Lr9A F. =/ʞ,VрHp@p_~QZ.w Ll`YA2a&J d׀Krx-DDW$8RLo7 ܼ@B wRWƝL\p!ȂClgp!rP"@ ffM$,GXG`I*/^2n%hGb:\/ SJKyoD@*e C輿D /jj<+0!w 6g{E$fNvpU,Ϩ2' <QڸnL}}18or\ ' k`2s4M@3SǶΰًw2N>  _xa$+$DL h6rQ׃i{۩||4L`]^zĕIF ?N`?tPPzᲝ 1! Sept?HW~@(Lf'q&Wp:eVQ y dDTU? ,]j~VрܚDŽ>0+0kȘm"5HfG @\)ADtjP c\4FG1p˿/8: x0ܻS6bLqՏW 1-Ղi  *H(ވ9Ae]!U0(0b0F|SO'>AɘŮGw> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream x|y|hڝ{Ws+iu.۲,|H6eIK>dM8eb!!6`Y'I _. yCD1I !ٕl}{̨Y mڏThлgWt-BGaC!~òo!޶r>v!$yyպ+XBY=khՐpezP].;~ s ~ͺ=W!޼粍r: To8g}g!GȺ~aSE7~pG!B HpK)HY\Tk:h2[6Ùrs<a ћ #!=;d-Wg~C\^0 +.ԂbmDT>Ŀ@3TQ hYp+ vf~9dާE]^;qJ*du@旈e̯2i4 }kpGR.F;l_ЇnGNBG mJb Z ffGJЇ,pr ޏG1WD=FL=ϐ@2L }ـz ~8{0 7u+ԯG fb~[lO6ꎃAL |COgoE_0Z? e |߇_fQkAj#iC f~̼!)ٟ2Eȍeh%#$֋ 4>(g%6c¬/Ɨ‡Q^fԷ~Gooi&#QJbpI`%.cCMO~iUڜ;פ,llܟy(XH攸Ri]wiCsХh0*QH܏_7~3{qL`L6å /x)^Wxx߁#Y| ߂cW eT1UA5S36RoPwQROPOR,`&ZYt7})pd}}?Sgk'SŬbfޒO}5pWK(}av;}c3R[`w=#%K:o/Sc]x'BdK ;a߈Z)xftk2NO3~!:+ ?m@s=z2!=Zf-:3wZ؃)XCMg$muwamTD5ځy-AwL{3$1tGͼD!{K1oG=z'>|\C-x{P?3/ku*I- RF`F]XŷQ`:AC/8CM7SBEq#]xƏ(bUH r.u^B?|NG ~WP<Ռ H?eP3('w63хL3cBY-z̟ӻ$WSuh}@Cg(𝃔*꧟R.7H:AsA@+TVaКV3s Wn7R`gV+N?1hxP`M|;-/~Xu$u- "$4t u5UʊD,VZR\TX͏CەtmVd4uZZTeTF-&5}=s^f\H3/ )\9J!K)LSb_j ?rO%~cvxb[̏|Ȍm[7CuJE_QXFJ@X}GemL q[Ff҃:72ofUX0z}+FqDIP̈ih~~ )Z<,]Q6#y"&m4;1鑯`'}0JDý@WR#}0 #ú*NʏH:?iM”\4Ǵ|A>``"ub+RxY}ޣ13> gNAFͣ7¾nzXy̯ux3@A Y&YP\B`+^B`~a6omJ29#:SQ<( W_^TjN⫑>bQ?>I?̐]cS#s2Ўo^N]<;9Ϟ9kRoH&sp --Qr!7`(J)TZ@XH]^AID*MHrXײyK\QBZQ6^^oVvEj)pTր#[8U]*,t{fo`L-+Rf_ln Tr䷖FMۢ doY,T+ʳWT&ݩu=0odޖ^ ;88NUS?ea:$ -k}HV4Ty^4Da)N>D1r.T.w@G^`2 &Áa ȵ:'1…&zRSF{Z,1yZgEHNc95fOBw8.hCiU+ԭHhTWS3  NnLDASޚDE5t &?>GTSbAoqy ^h Ĩ4=biR*x0TaR)Kk(QJ@DXE*%\w.]VXۭGsbܭ3<3+euy-95/ ;jm޻=Œ@ն.-{~w`~8|2яP9Yc*YAA&n5&e䤜|v|{>_^`ԓAR4,ȗt@ƽC}yP(~b]^kO!`Lr2[ % 0*<þRA,RqNt(ʣ\A¦tVyga4lLq? 8aǖ&)X“؏S*Tk )*"E8'& F#~+BNhԢ(1pO>}6:qvBDTT__WRM @d1 % b}4 {iN9YY@&Fbm#`FyoeFݸ{(!]@^DiN鑬|7eCkzqiӬz(P8yusێ>IliL/iiEk`V|K[n+|ߦ6oZ<JdfȌ3i\Sl:[A22t˩6dO 83mmWl# 5HUD}pnpY kNaqo3Q1%ܝمBd`gte]kL̗/7kA6^e/foφ=\"v:XKYY_?vS& U \ hFx!}Rł!Q!۷k(QpcS=j ^S@*lZ 'OR(z,"kЂ/!x!p<$x>KA#^,[cs:U%pUvNQEmBA2Y^bJK|ۍP1{#*ܝ=bZ#7/BXRu$:zR1W+ 49T&+nlZȠA3K?˔֦4kBҧq=a0#(^@%a)|L_Y.^I*y4Uonf)dUa Z06vFٮ(}7>dz`EsZ/5'nb$ Ĕ{(rg,+Dxڀdu{]+sf֥C5Pnӥ/qwhV.P/_SS~W{UEW. {k~&s^ <,XE_Y7T%,۪`HD3ޥvX#-%pI]6JS݂CņUZUD˹=&T:l{T+HRx\¾'" npZUw, 3-nmw[93{ʂ2nՋY"%hvwu9+,`M WTbǬՠďVpmzL dV-b,o :xdTk*_HsZZ$Huu$*eiFgvXWL yF hEbs&/jo~]wvOcz;wdg|1Nj]^MXmR'ByM\AJ[<W 2q¡P (TZ)75/3/,cVE{LwDqJqu4>t"/ Ћj@VUT+%L& )BY_`g*KU>mD( )9cd4 cL]U ]<>F-f$,\yn'v62dq Cߊ͹Q +b7Y,v [tTh*Ccza͓3NP,By2~_-(891N}NnSD(jE-D[[^TOtvN\J"[ Q"63Mfs88RáSAN=z7!\n3~"L#\bj4? ˳  (DCq׃3.+7[.n'c,f_jsWF9+԰ȉ [ɏ/XSG,YWYq \j`?G9Yݛ[|:WY!3] Ϣirb_CK ;YhL6-bz9kuf¬ 9H\rZSuKlG#7XsfoΫY7&ra>lgT |XuR+lI`^w9v?tE-mo}n%iGAۨ/)qRxz҇F IyՉ``Z pIIkGq%q#}hƱ  ja蘆ɣh(\օ7P=BǸqC%^;Cá=E^<4c`H ZQE<+9ҁ$_ ^w2%F{H KX]^fjNM^RȪΕ.J=#SW=]=s$:i'&N:#=rw%l"tS&: m*X]SsOt0_."bѕXqyP_헾k}{ƺom MJ4;WnoGt & sPj4o8d=y9G4!lƲY·#*5ܲuKk9Xf{4?h(.YsCǚYt[{\෇bb԰r [?Է ]5vuJv]L*‰M2I6Zk* q2ŦU՗,\8`YSCòಚ}5U~OCG*$T~PZU:>+|uŚfzj^W~}7ZU7o4⅃#ݖyBgxAIG;RWA¨-^7l 5\(:Suu:fqmֶu֬*E3\nky=u(Iț*Z`>Rp_Zpq<V~B(hc ^jM/MEK8l4@ x|L+jXH9= ʔhVݛ ӻBr8.U{~KӰQ?> :jM{ww֟իAldڤVI& P6# 5K}(Yg NRӯka!>cE.'rq%Xun?ڰ/*dc߽$+\QR/ln,:OүaN]-kλbsӸƪ5k,e+| 7 FWx[(VN]i[|Owfޖ<#Y :ދ?{awO"$nʫ6gy;5%K5ykmƝyWpךnr.;]GϺv;YH(ɭ)zW JXP 3~ORmigK c{Ia~_ N`C_,]$q ~+bʴ[IO{_6^=?"=}Ϟl[zYHn}7Ҟ^ ޷M\~~$uq >hNFh[oTݣzLuR-I ~Vǣ/94Myh.Aqh4dqXK,}-~HЄ%vA)FK># i8p8~JiQv:tÔ%X"ȑ,@0 VsY,؍})V>IWþ6z7p#%MDvVjtѴA"=[v׌&[[٭njy4 w}, "/EGRzȑ#}WoYZvy:nOZ9P7_jACk麟ݳMJ'-yLnz]fCUwO$OK}CH'__*:&sn5(-8VWWW'FӓMq|'ܨIPhNBIZ7:/>\ 'ѱe%{EҫDJr7BN_L ?S \(Q9I Q8)Z\Bٙ7NNbSɿGpkQf G 5Yg4g,5':9AOC ϧJh) ԰":wW D1_ebD3D+ $Ax1vde_mK4fO3OY zkZd.Ⲻ,=aWH:z$.Ykrj.r"FcPUvtG++,ņnA'it2h]EqaW o9^"K~vWr'{ƃVr¼gYp^ xҠBؑ2' +QM-j“˶o kWUM6:g\9*&dxiCM)j?fJwEХ!~.خS>s[J)֘T7eyV_R^pQ+]׹ zu:T7r۠,tp·f.qM+ȔJ.t`<=fJ&Myn}2X#o9As \ z2rVSLK 03~YF?+e}^Y.gnk7uͳܻ@X #󨜟J(qVAX_Š*}h#n[gTZ6 0WZgw+_L7(<59d,hڢ!+ 2s?;64؀38`J/|$ğ}K==K9) |Ryb9֓nAOΆ ~j&K&^Do0v|ڕh1אt@Z'υJe^"t!tL t7Bx ق!le~!>QVt1>W*]nbJ~UMY#i76Ctfgk8fKϡ-DZDA ךo0 bRs86pDd%9\J΢p*fp9ږԝgӳܖ1J~)$iT)y+3"p RIr٤U9E r Op9j8q;k1CpE\"ߓIa^;"Βt>C%215".'_ÁpWs8_aPVqm+Fs8_R+Ás8_Wq֚aڀ+!ݤ kWHΠm'HiVu~2C:9gyb"c]aE,? }v19zQġ}; ~m';D%? sb9g|լ1Xs8c-_L$=+Wdn.?zQd ?$]7Hods8EPbl0/QL5{9`h5؎Chl̀gEӀͣ -b`?PogPvBz1G.R BZ zW}IYUh\y0E% C݄f3lE?_w&;WGsTu~ibN!}@C6FzuXcB @is-ob^{8r?B.׀H]/:frU c])NtpJe[,rZ)D\|#$A 1%J*Jl?YkAE6ŷb)WȖ|^FQ^\l^Vq}" <Avֲm jՕ}?>?A;2+mt[_ԯ P?ϥsMfQR;-)_go5eE >>лypʡOQ'JJD u|Ɂ-|?}rX~n;z }ŃAn0yKUtZ'y4o>a?wʁ~Ta](y`~@T?gs_!4Yʯo-HV{ڲpNn#7m"ؾzwyel] }[6`hPjz /7"|Թ6LQaD>2[U)5/8WW؃2Կpp7}úNd 0=u?7"9 ї ׊h*{!jJfirOя z]@oؿ;`vr`+VB-Ƞ8[K2]AKf| }i)×|s臙E-Tw0EMxv|X/fL#0 L%жK̅<%2]@; ql's! @ؗs?nNݙ3k5蓨>#$SS--1!0Z$±p$vBpc{S #^@kO!E?EA!1S,kl!Yd<0fN3(:E.>l9h꟡EQ1~}j6Xq C l)n ~{>;o[eXPqj7=E 9c1߱o! O`+PudLH(8IPzYNjp̗w4-1Z=hUI+FU2tKcƖEeWdb O I+HKb*/##?AJg "X/3Ҋژ)e @m-$ 1i L2i(,SU <x)H٫"UU-` $}Q@H8Jɕ4ΉCnXae#R(-.#?PbP[g GSu.N )qK0bXF']Յ,m:}rF<}k^x\#u,9$j/]|E]|' jWg4wM@]d Wdv#7!-]%4 d#N$Ä ČЍZG9Na6"afc& Ҽ{Diޕ"$~B2+f?ff7.ff(Z:qۼţ2մ4 -uq>ב255(}njD i,B^]|ArBdu.d8, ,ەh\qQږ|]2 9[n2\P 6RKW02b_m 47ʹbٖ mE[M_C4ELRKKy=-e'2WqB塶l[z@{m endstream endobj 9 0 obj 15534 endobj 10 0 obj <> endobj 11 0 obj <> stream x]n0 r\!?)^p> endobj 13 0 obj <> stream xy|8>3sMϛ8s̜Μ9g<ԇh qH^wh{v"^A[Vl~ϻ?:?j~i !!_W?"dkW,v 1hb5dުC׏^~ w[O]W m#o@m^л_k9CGGߥC#}C]B2=BFK 4M8^T5Z`4 fprr"Q1w;r#4{' iz'(8f8C Q ݁CDŽC-Eאrtj(3 h&`_uBkvIw|>LH@{-z S *W&pf&jAt}X؆%\+afWKd)w9_q֙/ ?J7ꃚkuh'z A@F8j&f_{ w1w)w/w?Qߟq:muo7Gۀ<-Yx^eu~o?Bn'ϐrrQ{?VNy~F7);g&*x@P3HZЇף'W w tciʁpBx)ނw7K ' 2\J%O8-+;s[ I UX'N1wdQ g=DM ss`WaA6W@r4z} +q MiL`=X 4>XZ ??ǿ"qHfÌ:%~dߟ_G9ZUMn.~|;3yr ͊_W|_# Ō6 TZUSHKT3<}9j6| { yr?&ӄa+r2=Kz^7ɵ-xhWw+_vşH.z\/.pW_ur~3r砿K#6~D$AAw}WV'G''A]thTiPfe !p`ϰw׹@8Boª 'On3|>t/H8!AC\-Ú'^nQrI#,iT tգF$F?/E=iΎ܃dp?%%t^ Ƀz4fޚU*|9^Zf]$\:sKC?=\Cʃ_Gf4>a\ 4جثxLqP]O% ص*!wA֛`iQ [GgQ3ECAo7JnVE~zlOI,KwksW@jhg.Z =:<9+EOa#"ճw= cz 4 W!-z+^*P'>6IT {' um= aD^TxT8= pbXC#H"0BvOφ]֩xo ,aܿKS42ߣ 7-^$7Ϫ,O'ⅱhA~^$ zܹ9.nẐhJ9QakGJEzR|$`/dѓ |Ȥ)eJ9C)ĂTRkPJ%(Me `dx2V){Tջ[{Z:msO/D:@uYB5R`P`Kk*'BG­+S xa 7^B)HP3&lNX7 Y:Pxx-'_\{E0Ǡߖs $4ni^z㹥nnwk@ݻoR.=O.hp[6`܋$Z;K΄*3`+Y#4kz`irwЅ[\q*^4O5]-6­9s~I`0єEs3e c{b: )i#Y9UѨ ^QdӅVj%@Jܳ[~JH@psz9ʰ(3T,FaMa,]/B.Z{6@w={'f.JBp!8j93ONXk@Z j:7-< .ZM &=M]BPJ34%xV ifEC2Bcg,b#>ъ XЍ޼hKEWD`XtSR5e+RsH(GT"\v_Y{ָ`oڗooi?T|%-J^{ YXX8A5yވ kjªXU$o(TT_` p0禊Q4c&A>7'nH> ![M3(?"vu;``nUjh&SufKun%0c0-Lu?[[(wAXwJ+**H$42ܜ~Z e# ѵyTm6k9(0n\_?=Sɼpn (>}&X QΓZg Pb2F%I b9Kz}lgs$C7Ft9sQ|BN' < &{ΗD/EX jKM${*LBJWkFڧrOUUWq C&$h0S0^L2mGp0 6:1Mu: kxĚMb_Le`qwI1 -X +*JD bTJnwڜ.WS9~ƪƢ*[`JV͊b_~qykC^4nzZppzQt:<0肙\7I\^̵um}6UX0/F~ƽfx7v;V{r pq71ɮgXĐZPKjNݭ9&pAwĪRL`߸^qPJsrN @~Tl(u$\r> gR=>KFz1yTBVW 6O7eoT ubXɆSn^.)n*>oq"P>ۇv*bCxNlJV-/R۹Ͳ޺˫&]d[^0l&]|v<W{ JUAUOYt>]#UUg{*ų{sn#wyCUǫhM abl(š V@ WZo$I^s (xÁ`B37{6Ǎ**{}6ׇpÉT9YPe[Ź#c:˭l@5vG''h/"ʪ h?kkQ0_ĨEC v1 Z}cQLq@Cbڰ{b7agק"8fX\%C$.c9Z 2?\S':1?w}r9jr'+ 0 %ܲUeya!TC:Aߘ`2# f"xΐhaLѹB "%f"_`ŬP{ i \^o2b24:q)ddPNċ)')FRu||aq;0@]Ud;*>ç\y k[ՠ".e^)jVlEMu,C/rC!p @ðWDP ,FC?=(qΡjnyg+ eXU.gW+k|M,&#hBl90n-$&9 `@'$=c_L&6^>~c<1U"SjE DvolɳM6,َ؈Mn6 K !ˇ M `ö l8Ić$.ח9C B# B; e xb d*Ѽ3OFp"r8rP&`AY %#9w0 gY39{:R@A$5 TֱrN0RSCH,udӃFrLZtG]`MG>]A7xƔ:e*OIϻ W?W,%sʧjsy[[U*XrZ7PJɱkj򭠳}( rKqq&"*JKRǮ:DIqnGl*h QJQ\l 0I&2 kg%|3q4A$!FpDfN XN 9EUƱLj-Jnc;İS X@` aD X#y(j(l&5OԵym]ZSCjfQs.CDAvRz'N$K.%M.ѵ5ϵKurF!":uB0QP4bA(il<%$svS\SOc.3aƍ1T)TR ''X!+:= ^3j1EKvQçcn-ձSSNfg5,42W3q^V u`Pw PKzEPwҪOP+p)úHu KkJ< k}Tg*;p7N X8{ g ?CYsI5"f"yfe\Mk&pSoz"6,ye{F͐m\Zωs`olMeⲋye׵ 7E®9sg/, |F_(qH4^$/_?V IvدY%nl֎~My#a3v+⌞8즣8&<[I36ѩd̰5 }85r2yD񔪲t>KUa;U儲f ?+J-h5':3HB0ȁ:%Ԧ Iy+1S,68+_U).[/ܗ/-n!'R+Zep)"\ǖƈ#3Ҩu^?}lAقx$rxq8x4HPP) >0*&h!벼cI.zcʫAg 0arqeul`!}(mV('ד&%faC.7<>l:}ȣp!2(l8j|@تW ) C9c==XKv ,=1ØiKMpU̚ g@ɶ#WғfOomG.puEq_ r_?86=''0k9?kΖ%(tg:"[_xLxUI@~**+LgTDE0h `BitZ l6))E Ί:+J(.z,J(rDMJ,)( TDI6D+)Ba:)CYwB9ܕ!,R! H& 6fc[1f32F065rƜ3]3F@^ Ae3,2κLqF2?M+*Y{%u7\h^=Zy󫨏1Z ՝^H+k|s-0Z8so)yLTWlxP`氽~)ែ@G荺/zT`P+ ~n^)d=^"bL=-,, QVt%b.1^K7,Źx˹7E,Egȋl'%r1EdF#'~v3%3[ "(\S' ˓IeҢh#4&Mj *g@nA|ZQUB5 bp{B-㨦dNmu=# I[֗OWK!6 әC B+ BCϴ:,绀3D""#C6vL ?m2CH1lZ>RNK,φwdSB֚̅Q 9V>:0Upqp! YH8xxb/j<^zavBMэbJ:&Yc WF=DS3E*u]cAM‘.ixVM_¼n7[WW9?y;:Ryk.\nd R#J@eޫXpʂA7*J]HT5">$ 3#5AKf]^Gt3fIfrLtx##+E>K%, =Ö%'EI3B;4v}v 0^x11{`;`J >|8 ^[좼0TΩSIN PE1Zި(r1$B$gS̙>:X,̞L#kӶj#35{Dؗc6/VK8K*x5.-`&6;|q 1ʊhf&EGDˮBVU d!jc{Pr/(AjYo"#mOn0G2r / _;N `Zq|tb͙;){t{E:=ʙOFm6~JIWunDgneB>׍y(V}+MdwV:H&G5'~{|N|ÎIH2S;q<3w9X^QQ'xk| Ҭv́&~jS-LxW83Vm$^]S msC{nW2Ң5kܫv'?t*Tۆ Tw%A侚cV >aTUҞ}oɋ譢-jŌD[n-77Go0 .C؆ F?c4ʞ@!b"7Nlzg:V(sxr`O8&{N찍d@Kqy/cHqV#T `־b#gX@]d.sՖEV3f|֎*pLʺcOv|jU֡e3syKcKI~%e,Zmr+"䉯apEwֆ a)f;Iݢ5NAW !IqLTN`U  *>(0 L`PT/R|1hr7ߍݥk8nH&}wBLKp X좫SN|``oA8k N&lQ8L`詾cNAiR1^>}COU)Q E+>LZDpb03>l;ٯ%/Mwc<~[bҸ8ɋl w?Qe+5/Zk;%ա"݋tuaZۗg`ɅK];]Ѡ<fN(n}GI$EK:[;dsUVĺI4XRc #"n6|F1ɩUaO`(/vxr.F!B"XZzU!XRS3,͜COUQÉݺ}5xgh]8g"HlnMtCؗM=G&ܣ&kl9lnOG+"Y }]ؽr.p#KK8\vDS}FwϠX;]ؑDѦիoxܐ-ܶxKƾQêřkID*@_tո+78nQ5l5o2?|J4;=c{iff ֧MJ:#6PfQ5xyŒ͹C7¥u1iE-vx=&ؽylj2VW]/D܋(USK( 3֨4D0Rz ҹaUo`BKHXB͙U- P\Wx,i􅯌j~KሤNwzrWwڴeqC2}R^oRNuSbnyRFH'}R(eDɃPhBҲo;DpK\+[+6Yd=b%[pRE$Q4TD-nQ({m[- d|Dyly_^e_ey9N2NytV_lO_;SM&Mr/HFHߛI.fQ 9M:Z^]?k:Rc MySo.l^yֲ'>|huZ2'f{-d^in,.1*IJW,\pd.+ht} ؼSSӗ̷3GT*R^rmߚ|i}ʝ{ޠw $B`b|?*"w[}%1A,}tbv<ڑvK /O: ʊˆ=|-ߝQUE/wqwio?=UJV\YSh9ѵ5z8jJ@ ޘr!?Vx~[W]St[\%HwZ2HD{TUGTTJj?ecH"[[mSǮCΑ+ZeYO0fU}f8QǾ)'qer=gzOe$'(꘏pd$wpGEB$&k~?Kó>^yк#Mq~0詺z큯MՌ^6}P:8kKA'<=xۘ{NvT#g;stp; -+HgXSS(:s1Z';&|ɧnH܄3MB։MWMW9ʷqzGZֶ*A E( wfOpumq'4sƋ/_B׏iC5}k2xՁ[:RUf|J^qb[Oqf7{~ZBP4M ` 7tՁYGCA%k$7gn?30ч57W ӕ}ZFn^ L4crdLhDIc/^Ato%tk4W)L\xHZyx'%hj4je4_JloQޫy8pNn5 .q5г=>KCl#yzje+Y\iŕxn'6oz7A8l&7yds;ֈ|_%s٠JU31s=4R׈Q- 0L &ljHS_I"Lp ICS$MI1I?+[($ S`Bh!)Q; D)&AT'u‰IM CI&f&dk2yp=aa`^1 A cu6ߨ ;3e,CD=Д2ehdSU\;^bu >7G9UY/^x#]zٵk6pTuqiSzo^}eCI~E.R)k%%]#^[\o`&8AjtS:7(}M++*S:Q1try̺+ndqxŏ8E,# W9,B5Y\\5+eqP~-crɨ H}1)YGQ+!_>yQ?p?8J=p55,ΣBMGkЎWY,mj/pkweq,]Ł,W3\KnEp[L,ΣRSfz:6EYcF*i8M1\`(Az+0A녖[tsԓԬ FۘʡbTX>;V@ ~hnjlLu;E(~Μ}n_(Je#h-WR!Gm_ `-HlpmmR:F]ɧZ6U^sgEKgFx20V !g ͎~ +U@ʻL$W&&dZe!ƃkv9{y2uG)bҶzYZ̬ ?LҮnbXh!^ʇ$3̪eȶ"VftJ V3`'HL.?gkçtgyRFVϞY9>\$3Qigr3p#v(:ѣRiqqhu1aptP<8248;:0Hj\Np`э҅}F6,Z4o4ot MV\/e-Y7ZʋK#G >\ZVŬ8iѿ(J#+HQ([a`oth(ԻaebpDi #}F-QH +8mtúPud`BiQh~^ʾ RIuYi&i}Vi>Jz7JC}#F.Fںx^#M+F,X6Xi%TVlZԠ*HNw>aV)@[9u ?sH|%HF` ʔsg<ζUF?^WnٰnNaн"YMCF})sfuߺ3jئԣh6@۟[,e?S Gjc~.u{{{W<=LaS{2߲DyW 4gtٌS?i6f@3}m yoΧ?Ƭ{>[c >^RԝPB $8#BUUG͋|=_7|/|_wO-g)-eRyLw/?N9sfy?I~\o,0muN|I45 A q8c$e ؐk2`Q fqfkc54mN/+5(3g0YƊ;h+foijdgk%2!!ћQ^3xt!쁰qJZSݼ%D a)x5pE@ފ4Z'FV6Rn#cJO>iM#4d\AoԸZ*7 ?Q'Rp? Ax ?5 @>811fi1m2z 2.J;m`(7PvہMpgdV@b(7K7jpvjʦw~uWf*nk,7]8q ]Hsױ3zsvXExއ""FSn|AX&>˵,›n_w)R+ q3\Jƾ0 ҊǫjJ3^OLvښÐ&#WZ3I #FnI.:ns 5leW W KS -F`_ɕ [Cp嘸 ng!OBUÕ{ <8@ zx/-& -@,C0aNBP#\h!pjBG!IhJmvn;]]nVRy hQefH35S IC|UM}X`Q֔㝎:8K^^9ҨK| 8t  %7rGտ_8~wcow$~,~;5"N˹An;E.5,=!ݘ֩#{ut)aQ"<<<RT%T *Yɟll&SA@{&e,Kw2,q1 {!P:B\LyC@odO8$B>:"9XC^c| FkP5k.`0Wݫ@*{(Yy=1LaA)F^M+MNr/ #a,%R r/2g< >'  00[D&&FhJ@S3J{wzVԔk+Jr7ǰ hLg)3l}g-g~DA6YG߰Ֆ tz"N|x)hxo`ԟv_b 44<44j,~kdcᥐ!!3M0gScmå€a^6GB_b HKKJ%CdwALI4$mBg MG N;L'|@wP?f__;(6"q~*;>qpdLGapt4hCtTpj{h{w|](ttG`tO OЪ Q7\v"(_Y˳%mFnN73nX+r:Z dh 1U|1L 8WwpA /KpӚ0(kW g2JHG%XYZ<)NAO%i#yB<)q 8~IQ=! --l';|Xrq?kɟ j'wF&7>ѭⵑ&ю]ƨWʿL\O;r 0UPM)g#,r6lFԳ 64A-e)T-*N*?W~cF"ճkT*ʧ-jAmTZZTjFjDle>) 5gmްo$z}zR7o^J].I6l%"=XMao_js%!"3Yhi뢥}-Y`oKUL_U;>*(i_ôa|y>kMxnjDC38NtZ-=nWCg[4#HJM)Zo7"ҴHW!"5~l`ugtt7nڕ)r l%4ldQOq(@t!`cXyVvۨzL@vI}yQ0!0d>/!h{;|3;m޽n\ZBcNE׫~,$1U}*dې<1$VwsCPTgˌ6Ohj'(Tcp& G ;1ʥi}4Shgj endstream endobj 14 0 obj 18390 endobj 15 0 obj <> endobj 16 0 obj <> stream x]n0E|";< !$}@̐" YVtyuLv5,MkaV­7T譇f|W[Ce1M=͋]܎WxۂM>ڭ4}feyjfUeݻ:P`s/ Ley`{%N6EAgqqrr\ '!X'*3}#%rL s\9̘grdO_qDf}$',7ox.I2|L_ԟ bW 2ЀI.\ֺӅ{wr'|a endstream endobj 17 0 obj <> endobj 18 0 obj <> stream xܽi`T|νwΒٗ;{2Kfd#a.K B$j$(Jj ZPQ\ڪmEVj@ZV*UB֦EJf;|3{=sN._qEE⅗뻣u¦ \fG }!~aߢK^TRaW-QMBA3-7|W=j/-qȇ.Ui0B!.7WHy;] ?$\:!ȗ#dyoeCĠ}\ g>syB:݌~LB$Kе3l¥CH#<݂oNƒpYRt'ڎ+^7XmgXarzC?IobGNS@Gx2~P|?A 4qOO06u[$Cv WEhZqgdf2ͼ]fz,5cXY ~F*:@9}'t]32!41`!^>7Ev7p"k(j;̂} mC1ss%a;sk #[|&ͅ {  ~F@I4 FzB݁~wz}x"oĿO=3: aN^?/ '.@7[~6mƭ <{ᎫQ'11; sWs]ߕUH.RՀCOG2ЕhZCo ~|= r}UX؃᭺6|f0$23E03/2o2cgO{779+7 P( Ɍfk:|E( Bk C (p9pZffOa?B ތ8#x:>#} i<=݋迍w0)yB1 Lհ.6.1]nwxsf.pwrOpqZee+FmEʱo,5-Ln-%& k2>)f ߉fXf݋BO̍6JW[7P;mC}/_03mG}oGû2eh~[dt1Sr >2òs."s72>߆硇p>|.z9r(Xg2r|O=ʼl`&އO&@h0 ~>`П'xóvߧLnt/to _~ojS7t{+qZ Lt0 gGSѻxЍlE..d7l-}:v;ͱca y@/-\Yh.| $ߟxor|b ЯWpN 7KBsm1^z˯`l‰Ṭ< ]1-:`#7qG!\`π991@i_DOfg=Pdyy _(PK?MCݎO{L(( yjɼb<&%Rz \(&DB|6r`Pg\ݘ1ɬ%tk+S-Ք&5{۩vS6xl_H NyNв8fGꊩ.S4&.?9 %"-”wvEc*^V@cStOsfڬs֮Umx@Ѕ4mogDž}oa$$gww ]P&ԱN@M2z/ ue[؎M )c:Lo2<4m ouI٦{= `#lG|$*҇, ~gWk^7<' 2Z/=}O`i f|lm㒉 M A J0w `z^ Y1R\@z#p m+YvJPwBAZYھvs L"A-3#$2k+z'vo A].(-eFJIN 94 leʵKDr/Ĉ)Ke]8He<-Ib%$D$E2r12r1e*w #r5 xp5 7_U7F"ؽ'E ^bM h !/,pĖyhjQÌUJ5:o;'tuM z^*U {E-ό Qc6HE.R3vn %jLDMį`sD HigJTEW6>t% ȇ|5ޚ5\s5AgA {i~`Ƣ >3#txOxi(a! BA b\F-atRː2Tl* 2N?Uiԃ50?fjkjA)!3B!$~cM"HF{.מО?4T&n5$*}M-RH~ld;mUl,] C;9ss-sV#CSk0߇2oz Yg,b:cė@2Rk{ `0s2vxô# O$CQ:t=B._d`&$ц$Y껟ɜv|"e pp_U}%w1ZGW,,(3 ƄL(Y-ZxaI- Z2&6:? )7t/6#'qh]Mgg|{u&|THK:07|!3";_.mvhiEFz?b/[w8U+&cLeO̾ZIx61.3~g,B&p_ YN4v;*}%!rCM {-i4R+6aYVM£RG%RttYbF6QH%aqflR_D$0=zzk!~d]|K=J@"7lh8D}Me#xSc*y`䛼tDU;!Pؒxg$! Z:Ep4 5Qj c>{")a"L[vvd*]j f\$")(Aj٩gوٻ&ωkp~61LdƤg>N>>O^ @oL):İUQ2t pA_D푕 <+(E{K ` 4!9{'b?UN="ӇԔ;ɗD 4,sSg`JY@Z]H ךJ>x}0TK5i.G' S!>????(ːX44fױj, > ,.ml[2jbkgE㭳AfNZJn7~g˝Q HT9P"1:!Ӹ,VR때ٍ7R/UVD$~|AQ8pC懛Rv|(VldT󈯡 0,f(Kwa9L/-bWbzӺf>i¯8ieb`R,T޴}G@VзJrہr%}=pn`2xc:9$9@xP]U]>Fw ˟/z}~9 #w&@]dIT t >]Jׯ۠:Q׫cun÷D{ Ca{Ʃlj:9DZU Cc 䙢 'J#eDn- #%ThHUzH@&'|ghd&CJQՍgF((gם{תIb_"ڴxC=3Kk**;.l k:o+}<_.dXcU{fL !h\bzńg;D˄ȩagHo߈9ꛭc[i~4xfT^Vj898aQT\}429me-Li1H&f/D a!hoWGU?LWu_SUOV?O T U>PuZ:ީ:\-Q )"cq< PG쾧oTV/6ߒtƖ~aHWV*ՙ*2F)Ν1;,vÆVjUЦZդA lt ų 艭Zi`J[ƚqfL\ ey4J0GfituJ)jѶ2$2bohn?j?nWX!,ME[veȞ҂dvIR""q")Ƙ($(䘴vqbK 3 Qf,y\".o&ںhEQ{cMǏ9m԰"&k{qMK7(ovxp Z GzRT|hm)9;az\ZN @$@?J% "!UyJK kL MBG2iA>DZA#=Q6mK4A6s'ma{>K/rime?Ud171K@QN_RØ ]xPn1NWbY6XDszL(6)_"%?*?Q[f4cuWWX]FkRIy T3_ͨs# XxWQ耾 5AfhR6}Χipv-DӇ1 -ʇh99k|qj℁̀ K۠zPZ$QIEo-j7UcOY/Y5 HAm٥Ygi]ֱxXiν[` 5s7dΏ]suԻ?ۖxz Y*CqΈ/s<>oٛfv ?}Jf ؍+ C5 ]a^m@ۍSK ˎ{ au$L)&t0,C%! Mzb4AxՕf"3g͑g9 E78Ks\/9g7qt.^r)O]+R.к`p;Y29πKp 5!@[.B[ۘsP&4eǷw24)jM#H'A@ f4N"/(>J\nj&m"fq2*vebǎ7'ݓɌ:*&K"LMfo$ .w@`$|=$l &b9pE$kxuS&R+p"g2\2X!"D+#ZQqGSDgL?dANicW هstv#0A1ajh:$+8hiLk)@D=0.)aP;@HQC?dN/3U9yg99e@aS,?|-'A~G>D!_/-'$Z(8OH1)4hrM@ľ!B{+&ESSJxcP3 +N6\]bWWS3J,wr<-͵W~d3nNbLhvkb'x4@aTbSUmVrqkd7>?*;:!;RvwǖV^:3j-All0Zd){@ca=0oc5!Q $cD2QSB(:U3*dԪ,5 q.sq2Giy$}&O$թ8 TI=>DQRɤC(s"myLcnzkAGG˔c{k}傅+W.\ҾnѢuf%E?=4:?3.=cҥ_μƳĹsd60>C=;gȾӞ0|SQޢǰpPvPWç2Nu);HV٠mvK3*Hc`U()zyus}2aYSU-s|i5鄢VU?!ʦEi( I涇crF̞ӏ D g*3d€fzWkC`k>9rqq7 g͹usbVxuO?+swVk 7?YypxIqX)TD.P1p{Jl@rZse6/u\z8.-&R)ga~ <)j$BNvp8RӇ(s]g &NL0я zLz(6&Ԩ$:wB//X ذo9?yMٔ;g:{W&޼ #z-|UjʷoǏTzE8"3>HV7EeWrngDڵTo3aL T[W8 E_hX*`,IG%{ 3quDQcW1L.ՑZq|FEeVZ\F8JKFBOlVNZ8ߞjhHzƮ[k=XSW^N|v#ne7dkx}K?\\b!2jp`(k=g3.F2#_r﹫o7Ď!\J%5VoR͟??~{J)y_>)Vޢ_ïIޚOWt&{ ˒rNO8!0T)uJҦtQ0 f" ,~v'D_\J_ԋCw|7 Q\bB\HҩTu&Ieh<]D.Ujr\VS9MNӥiSڜUCӡЉQ\cb|bj0* s*oRn,^\jw$'EoCI7f{RII}޹ԇ>,+x?e-t{ϮAk2%'H&+OUਫU)fգֱBQk?Wl&/ҩQ~%}z0p҂q2d yR,OʗLR͉ 0JBKA(fFĽG1ĿŃȀN͒K;Į܈x|BT#O|=~7@1tE 46H27- V|e.o$BBO͝$[$^x/vcj $@,YblYq.-+!|vss\c74?I ikm{΢K>lRgɵ ,_XƸ$LCr€h#H6B*p_ @(+E=G "Lr0I ێR&8 %DCaq$(@vNw~ȭfdA#≯w|Ow7{<+q>1%DOUrG< `N͐^gV^ጆpA+O($_54o ==+OUݱ?g_OЛ9G~s:S/LmJrFqffɷ>J*xM &V%{kfAi:9^ƃCߗ>Ҹ 2B ZYuw>F_v^v(nf.rR>/6>]YŻƬil1h[YSµI)(9z7{5&kV+Jb CK(IER!I34t]Ƃ,}:RKhE^ ?n^u^GE5; ۧ_-.LFdhA6y| kq MzJKGZ[:i@!>#b#JG(h}$HyJZϋ^/$}gQGxw3_ / x) Il ޗ&o0hBM{M n%L<|*nG$5m,(\|k" X_Ni1GJɏ_,I/긼JTȧBLu"H&7ȯnxH %odDa Hhi;H0D 80ŘBhZJ|bm7!=7%#GФIBZט T㒅@>aA]XXDך(1xĚ9f(΄!8Q1oɁ8b5ϲ uj[뉰IHI;f"H˵0H(UALL 'ܫdlrҊA( &2ˊ}L}F,=5ւ4kS, 6,zSiN~M$0ߞN]3ex7<[n6~/dvhxYwY}q2҈5z!]k \/2¯6?cz1w` ؍ 56x)f ֎:؋D-K}G8ZeҦ6j|Ua C,3NF [ JI  #22өdLF%ٌNWsu`Ι77?o\0+Rfl~A6$Tg9dA$CL۶ F w-Ï;u"#GE(qFK,):\֚?l% I#9=à_m7jlGg ./c62d\oWb/w}b%IS}_Igf΍epG!Z-ȴٺ^E. tlƌi oaɈLA`5ˀǫy*!֣4!%{n[ QnKĺHMY|J23 \u#fᏈ8:|b(O֟SE (yeeGil<)H$C[B 0dk+2!jD޴2QqGO)#a>;U1o!xLAWK%'{]RK p=+G']䍏jl EǕ}~ϿڗuqVM%PR\Y~ n3oړ?P@vqo0w{J19Z/V/N }GS|xNvH׃Gw<!͢I$>zv-zDvۥE!!WqQj ?`ceTȉ\Qo4:y-?J6 L{@,a+vX$!c鄌lo.I /.E@\US峧t'4W+ sGA\~СM[>=廠ZiQZ"ӂi-6GMY>=p:tZ$.Vǃ]ؿ=2n nUh3\;}#^ӻxI3uO`"H_814ϯO?*X7Hw^)95 T$ V`Nk4sl GMvW!r^p4bhSf;~鳃枵߼>}'(k}ݴ̕Ws&7{͟}o''eFT):\nG,inwzS50NW}oT:NR)NJHKnAb޶z$7c3f +/Yod%3h˥C&/ oUgP"\~:x+?A,~@T-ϸtd@ۛ\lmAA'O-:|%?oZy1-,/q.- ndm>U[ƣsȋF1@__SB0yEO#dx/^f{]"Dv,!p:b d-P E jߪ j+Z!bpJ"$C#qFB+1!h]>seȘᶋƉ;Q .^8(zE_L-R ao-/y8nuȊK-Q2/ApVMR/M=o=T$%٣U&-('~nogx+Wן¹fjJ0uM;/4&IU~3 X7㿉]WDسsؖHm<# hr3kX=0xSkb(dd =rUNkj='aFJ4ZBB1+ pX_7V]gQl^BMRef2>3t<3x%Lq{CK/+{Sh8X浭Mij3^<fP~@}Heu:D5\%c2-{~w7)ۗ=ڬ1b1P@T4* "#C2_1)>%%d@~E߁I^ԸUD2C FwG, Pq3gUdc1?|mº0{Ӿy?_{ϭkWw _u->³^0>ӊ;^ǝ5(D Ş=Qu fбʍ(:N8Y(  0yz-)-B*ϧ $CZ`52p?pȡCk'vx FI';'0>L$%Q;IPLccF~1>^ %qWTq֠=~7spd;ꪪwK ouCg¤ )!g:FGr@mND_XўuK= {rJ/Țf8ٱw GfkJwm3O A|H2;YŃ5G&3 > 43U\uGjYhT窝cZwM{8mF3whDzot4_A X뭐1wHuXS=ƶ;e "%cA5B@FH>ZK<#`jOUSt?ABAlrH)G1 C359W,iDTFWi#m_ ۚo?Ql^-I!SWKūB>[E*=7QϷphBY_LY\&V1T-fCNREdee{nd{UESޢVD5\ fxޠYP@SI- V9GpQ{D(8>*Cr<^V:vX=vz@\c,Ût\20]/:u%i8m 5m-s8BDo+h6h$f3#y!hY|}p[ ۧ\yUz_qf/+wcQQ}TjTJ#^gWH~7oB%'Q'$ HȽ+]~oB=M& ,p9D->܌C8ƍG^D l԰x`b8y<}<#f%V|\|$")ٯddqXJ]AV~+*.D QX$  ZNÁ"_SX0GqUu09_UזṆ}De,M0;5OzĈ\gxCLy"1oԇk>Wr'ClUa\U8ǥnJ;tŃ]N4(Ӓ|U\xXT I+IPCERC2R"1~  J敩|?}33ɷϽoS@f9Stӥ'/h;*n\khke~'fU&yafWIr{ ToT}Dʨ B-OצZ+Q8,5ple) gSSRk6U} ?AIa6mXLo֬Ky7oߤX!U#.ZGՙ4 Ŀ:.ļ1"Z[ BLjuQcZ!C![I4<3H,LcUŖt%du _-ׂ[`8"f[477m+}#~s~-xŒ8A"1^;2s@3x=3|5BMk`1c}Q=&xCE&=,9''̒Uўv*-G7㦆'‘ dt;.;t$L!A & P*B1A"-Zut5]zJ P>1 J_k ` ZƜkvBxF5ct+'t;o-T?RU ORu\MĘ^JH˄>A<GuۢCZ>H<B(1/ qEb$NJo HP‡T̏xʕ riw$K4XGAYy%O=)ْ{ntj/N:91;'GɏhVpȖ3%m7o^GYpE/o*;ur_v-hvJM6^ijr-AB} !O)S:ʟ؅'R55 f#caV[bcf=m8`.YFƭpѦ{82RϮhTɾK7^Ѳ[L}eRdi23k~!z^0z"ZwS͍nj#1uzcͣ_ ;*۫W=**ߪ # ]ޤ:@4i @ FȋhBwJ(Mb 8nwrftH4u31gճ8DOƄݯy$8sݯֽշoU-05a uzO[t/}~=/G*Sz?UN++KD_rrJygQ[OrWR1Ǫ>~GWr}SylWWK~#c#b~W!:g\dwç7)d~Rtq_@ǁ/1iݿ=E?Gd̘=NqN[7-MUeVy|z EbxG4_en1Ck5lr5_>ȟ(x;CV(k6ve%Q+EŞdWIQr \T˾zlBTrQ_PQE%VlBTr᫮*3=JSPX SVVظf2s:E@#Ѧ>3QR'c7RPD1ž?-}OQ* r$"¿i8C*GzTYoOO DAXx'Zі횖3v'[ͪr5δ499k״l@|2Ͻ*p^gr?t󋇋Ѥ<+io jTV~5qC鱅>CChfA:fL0E(S_풼CPC{1BTE '۝Ow~:!0t ۯg*QҴ]%˿gWQĿoL[;{-=[3+(u_{-_-qjmymG^>%ZPD}q1nЗvuwh^¿D_rsϓdW/jzYij7eNn+jb-?B䅇D>\4'?9-'m'C䦺]B^Js¢${QRAgE1O1+H72uj::yusAPSu ڇZ懛ANё= /Sя|nu{\XWY 2=')δr:h'n6]|<јXwr&̼X'r&\}CE]+ /DiYEn@Y҂,XZRd33;2dZ2-)1hKdŞ q~;f,ZQ,ٍ9ezz<|yibf⏱΀]οO׽:~إ1s>Uo9.7M=r=gNlV߶}Pe!yOV73ZYVZV#&&gř7y(`,{TTTfӕՓWZ+TdRls L-KHI$&Hd!'fCqa 4R+]i}gU/i<1EPx U?yY$D 5n=ʼn٠8:k__'|#b+^,~ɺYa~ZC0cw^oY:q79[3qU3xfH`X-[6˦Z,{,#Sj6O^xAemq $V&:'5˩Ӭe1/\ٽp<_=w(gIkZH^iޓ_+.Bs]wK]6|Y٪rOŒw-e1 g!g&%*+m$%߹y;&]Bg&&?e vCUszvAD8nG/_2Ü{mVxK(YlCsbU F }T^W:=T0zT۽G[e;S)v?Iuf״u}N;0-v,]Qo=9;mP!;A ޏz[\=.W$U5 _!BMrV|V$O݈=7{zrUNk^.a _kF~-9UCF_V nrڄ&p^X|>:"y鸘._Y>\5&H~Ā }@=2R%M0Aɭ!`8_<\i.#eL:ub[#RLf3Hp8K$e#;LF*`Q,p@x 8$NPX3"R.%>a?,.ǀ4+nqHˎH%˜TMtu&> ,9MSU޲^󬊕O@`HnjAg#x 0y<3`8?x/zXދ޸F=>a6{n#3F[pVar#\jn#EB]4\[[F͐c N ldw@\0r9%#o˛&}sF00D)hB\B﹋0!0r=\KN@<h,H93LDyy~Q Ȁ[b;.hХD QU4|&_4rF}|MmIҖtKOƔ+fTuIuPZ4IW=pR ZT!g'.-?tL|oeE8d>kΚCYI<$VeY-Vzj>) $-|Dn0;w8,5=؉ Nl : 8Y|DOaF #$km;'qSDW|Y%6Y| ,/%&/))A \z? 3dsX|/x;K|!Z⪹$ n =g44,6; @?0 hgQ9:n,;- k|C l9qL;gbC1.`^`'hnnGqhC# 84phġC84ph 84hHῑ7#7#oFoFK/{ɿ/¿%^¿6jL /D *T"PA@J*T P@ *U@UW?1?1?Fc c/v#= kہF17[[)fhPL+l]nOx4h <x4GF<x4hшG <񴃧]<¶`@N@ l[ [(X_*ډ))` SL0 ` )@L0S` F/8Dh]@):ms3p b66` Ŵ Fwݬ8TpP *8TPCJ*8TpPC *q[∁#8bG 1pĈ#8bG 1p#8b#9 ?+,(!Fͷ06F0Fa1f6ad4`aTax0.J1>J0N1^bT1:%[bkrPQo#(!9oB P: %|(g ʛr/E(ba]r`0.,"04Un@6>NRmbysI$U{H@׿qfhov5;6;͎'l,/>=s4sssfC. `m|KvIJVU$eBUƅ Q>Uމ**3g.QV~' *+l*F:5?R<qOqApFitEUo%%bWH)rMzPǃ'\ʣR=Dِ0<.[n{"pu8:/flN[nKl&ژ-/s2,|4G`Y#8&VcP=*^IĦZ)r5m# 7msjHZkZ_[<Yiiq:r`MOda m\#u\` k7:"7['Z"+" 7oa+"/7 I,Y<=Y߳f? p &a ٠,7;;J:ElqVz8!&_T^_6烂"1Ƥ}p& `1pO> endobj 21 0 obj <> stream x]n0E .E 08~^:Y$_޹l taᐜҜ|sa;E6C_1FC|k;gy=>nZeϸv[C=d0ks}?Տ*Q?:_[{d=<,/1{edMmC;^|*F&cߚsL96PCFju vd 6o֑Wy9/od0F淜}wdq3fYkp0-|4K8/_\:/`5EWﰯC  kWo_I/1/q< +7K.+'1ӿ 1% 3OeBmzx?m{% <ȒoU endstream endobj 22 0 obj <> endobj 23 0 obj <> stream xy|չ?|ΙhFh%[%ّcIgsL }m CK)hI IpᦴR[J[JzͥKKl9p}^g:3gyņukE=+^[*AYj(-w"dyo׬G) >z, 06ð?dZ&`4Y6ʡp$'t.oM3J3[Κ? (3``rI(2yQZ{.Eq=zE4u{|z& QE"!V-t@(џӆ>c;} ҡV34/EY/ ;C.:<&ѩ=hG@[7]~=uFEGCBM]frhM~tcSN=ct!\ft;x/#u\j7QFkzNJL͙ OIĩaiA@߃xCa=.[W՛0vt- ]G E\0[.Bˡmz$:q7/pr)c/SSuw'p0w Q5L|p=:~ g \۟ȖSMcѠ A]oEthk/TUǧ90%{)\xK{(loSZ O1^ĉ\+re\7w;w+7mBZOk'TԭJ ƕ@T@M@?5]m݈]@/w'ϣ;x`̗ݯۊm'~_ƟӍaKFR&dlrA>|:n 7C- ۏ@vSL (^ 2ցρm9l+* %mf| mó=~w#)"&Ps$HI[| dl}dl7(y$op6.rk~n'3Eu<3|oWTUmKT^BAX.\&/TGt>*=>A2ߙ\nC`n1>w2xKAG-2t> ܩ[@k7u-z ƩmSu4_2> AŰ>g0Yg;~0a @CW¼-P~lgj]tԣSACL]a d ڽ`)Y=O !eeJyY-3K3|C}.[WIפx, `zܒiY-d4uZZP(+{GxdZZgTP5}F^MjOz^_z*ʩX[PKmFn#FQ.cn[gfy#C!8An.+^mdKzu uGr#H욅Yښ1 F&.ŭ]lrCmҥ2- mGvufk#$6whN2܋l[2}L0Fkz/G9K.An xSGMZ s}{hMOՖR=&s5c0T˱4~ytD@#:FgA@Cf@7pzxh[{f#>C#|fmF!TrР}:?NPQ1bbmf(2$0}vmws&?Q]s*e]݋l{Җr28r>f8F4Sfiky;//Knm*3NUs>`F]E+_iwqyIw%GyL ]z->&0_?,{TݺPISY,9}ZF_-J+3 q0`>Nڗ}myyPѩ ":uq]C}mӯt;#솇7i4gO~߾tUALۗu%2gVKh-@W%{Pۗ򬂕׍b4u%:q@_SXuYי4j{}^|`Ts; y<Q>4#FP=q8r|>--g'Z:&ZPI8B%I;З`=`[ؓ5BnR9ReWH baEbHC-Җx8N%J ҙF/BIP8Cᚠ"W EܒDUĒFmMjt?"YՌH3eEj5QEY bGLkГ56ҹ墘}ݹ ,h@.-6mz ΞK==-d`>{ӟi<^nas6iҴnR⡤EBD0IE%nHb.$jQRté욯PŐ#V ]"x"^746Bm"~;ӎs_9#OE;.D*'~{ψcbt`bϒW]M"g @x=w{SUTV<&M32:RGK4Щ5QzCu9E ?*q݉d?]Ÿ%R&z2P_i4|^*:zF H47Wt G"ac%j6=o/?D|'=nJ8f>V]<$b{65g(׳<@}MX!E#ptZdUN r:g=Ai-*|J 0Hy:Rcs>M}Wi.*5EMӘ+v{}ᢪ Bi(HBXky3+p*. kRӢ?r&.R HC=q41M:3 6k44ix(yVhM0ՙMpj$š")ʹZ-<ʰtO]U2Tl$tnV |͹|X%H*3J3b|nܘop?.3ogV*ZqnBvs&gڔqF}r}^9%؞&/hqrʠ&%o8htzsdY> P7wry_|g#jdcƥu¹w|i MVwnq*(ͺmGmKs(PϵOzr#>yho V=YX"'ZEӖfk51lQlQo7ic\l?+=!i_C\zKUExZ̼ӎX6h d,TuW Ew,W}Z@NPd28PS 7vv帜dI'sR7 /f_,'S9Tb$N҇v<I$ٗKII활_I*T%WV+wÜVS}zCaiǽ<4^vbibar`#3l;˸\:9aĉTU9z{* i)ܥV?G!۳]JWSˌY!=0NczE@'{hHhڵл!ӝ81j/MkbƠf2*Q9;)9W6E>Kªx>__%XM|Elf|!9,TesdU8AM%F|Al*ƶ$ %"%X"If5MP,v1:>$،.1%1ث6l#pq&dȌَ[o- R HXP-TV!QU2>gzE1%vbRE 2WC@-En9 &Lxc[G״.l/>K9w❳86`gb>i3I Q,PAgedg IB%M@R !M5JR2zI;7J2E% -oz,(l([~*V⡗R(S$lBH=QMMrEH-zSnCa>犏F#F!<} )0Jh ɲa.a0 S h_t8;z&"Zxȷ"ة1R(8mcU N̜YS2kٓu^:%Mخ6̜ M+J=-ogd7E|͝:ƫjWek<0F( F@wˤ.d*qP*6-tGũjhS&i =LCqjAV)IRY;Z,$9c'.w2r2 #TfU&љK>zl]URZR%@HDY Y UC`XVde5rrͲj5MGkvgci"OO E^"/_B,B_5a5`'} 36k d>!VGs :qɺEuKՇ1>1C+/[\U2DWOW~|0pS(Osw MeI0w]B b [V0ǝ%8m*}tAj337hdN)+"ENr&8 $6$$DR-85*<3.N7?RU4Gp-$F”?{ 21GTE"qAߌr+RᐥaAAS!S>RT][*OT.ܭͫF{?Ot8¹lxO eG#6R|+|Gq7ͪ;QheXZ 5TոWJ dej,@R.)(  1q|x\*S@2Kt 2s?%DJTea`;ƛiVeLihQ& qJw:vƹ\VnA[B°zf!!HV@ǮY&>i_@sw G9v hIY-FA8sQkG{qMz1VElQ*h-˕4ZR M5>ӘI03Os0z+ f@~ϱ ݷL ',8;1Go`7iGG<wl ]~Z ©qn;f&mEt V\D)$倓 ٧o?H^R9-2e^u]Lד1F1dSgRbI;(=Y|IRum%LY QOer-dJWoj%CcuKg+E>jaUK CԎMĺ[`i7;w,4ZbbMn /nVI-Bܮ[_Xlojm^xJ[u˜8ILz5yThK^d@j I}Ei z ̒"QOKK5J[$"}-"8עxZR[yeuc ~{c(o4 ̫_(Fh*X06Jx pFĞ!H@oTVL%Y F'q5TcuSc$8A +iOL9NTfp8[᩽x:-3}iF "h5: Ba9L$#CV9hpdC34 zOaSBZ sWWkjjcy ; }@G_irTjMu?kQE/I0}Gݣ/U6%iTRm+(qxΘMMB]~%kosoDZsC '+cqDz#6=gչ̢wQ}3/doׯn(45jW s['_e]mlqow` Ky~aOuDEr [1e(C^Qv@W-ol|\ȓܩȁnrdj&,_6rxSAk3(4땮o7kt/Zhyff3c63:f/fO/ i:zivznbV4&*&Davm"k4}T]U}t/V!TWMVL`0ӝmh[@}ve'/Yaz)у TlC=`ѿizp{uidH%}>*+R| CKr!4K7f٬4{L-ۯ|ZS/<\<펆u3Sؑ.g>\.ӵKcf}`ž`GrK4U|9A@t%mX`M@=d}xq*0F9ӾH:k ̃2+<1{Y`\MC)_XƠӫ^?>]7X1%ɸ9"bnJե3rMi4:gŋdct8`w:zGɪ'ClFӧ4Vcc`V_D S'S.jQ9\:f/mSmrE( tPUeL &JXyS#Uwf_ͤFI\([2xf<=:s՚MM[5?Ckw(Lpɔ,-l~J$h._'6b:crKnXGzu'tc(r'5CCm~RYᤠU שU $R^a gj&VXQ ymugX1mFVĞw65*,B(S߱d~1*O!FR +uyJW.JolZ{ŭ?a| N}zd2 殳/:gKVSAZOLAϼ!z 38lXecYs٦mT2dU k2fgđCU g6}LvU"]qFLgTդ>=֛q/cv;ŇދUUl^\e lL@Ll~r_83&LDFlCi ^CHٿӲyzoYĸư$8Cr{8Lvn9rr9B`(A;_ss\h%#.?˜UQ{ 0], l& 9CCxNP=qqh:V@,t-:|~zu>Rl*xo䓡YDdpn]W7u&7ogݳR ׬#._ڎk;v|" |B .s h1{|*3y&- 8"v$ >2f՚9[*IPaU,1Q uUʇzz{zBC ?aWUCȜ5΀NEjՕ˸*|Qjsx} ĬzLG⡺l7x4&$7T1ӡJz]u}6c'p )M}=K8QދR#zf6uư9Uek-QYewfĒW[ih1gW}fk39(nT .̮Qu NN$4QO lwTx;!K]N75tLLRkF"Qn4귙ҦC?913EoFda_&–i5Q!䝕x41-*)!áu[!ʳ."pC!C\;oh[D{bWߺlQdnߴ3wuN]fȧ Aaf' C$[10b2xxi#(6Zɳn CoNe)MNhi;'{Y*ogpn)ąg؊fy>`0TO~,Ί-YQ/C/:@\؊n7U"ςNvK=D ⅚XyV}y N^?1ЀŰ@ -(sV1 ],E>=85F6]?G5|(~=P@Zo$bBbȏ=2vj!'!g32rpp]2rP?1P,גkͺͦJ4fPZh)yaw@q}%P276JZ &.ږ6_|ӫKuگ]:{mOpr;~\7Ѝ9qg/ݾ9u o@/"=J+>zN*ER.]'DpfjpGD$vF#FYev]/c]V=vj1rnWM{QQh&oxuQ#YvS;6A/ A1qd$Ӊ4%VU權UeE.dE%p}bbls(zLx(vy-˻ARyff qo ^{ŴO@O*H1$VB !""*a+N_#O8z&-+> 9XSj-r&64&{ |xva73`rȁhBI.1'J]70WK{H˛4s+4}(9d5Τȡ ]Cj4F.n ڲ6Rʶ})夒$IOhl qabzx؟fi)=Y)ER,Etk_E.3(Zx*mro0*]0 ZQ9.G~LQQ0axŀ-sr]4~KhxmxKXN~<;jϯ޶y g=yLt&G&ڻ}qD9*/z{KeCy@Bj )ɢ;ֲݪZCa7nUZBLyf^7uTwXۧpS4@Sӫh4G4\{HFQaNM*~Z/4:rl+DՏM[M1V2M|Pj(%.H[ҸۨӹX,V/o殸8J,3t̐YuroNGֻ>Dփj {2V=~#A@?2Lh&Ӎ 3zw]lj+ZzqTdNҜZ_:#+acv$i14 2pweyL#ܟv8 [W\Y.:]>װk7tTR0NDĞ0ζsaHjAph^bg Ӏ{ }anqʰyFz;rH"YXW}[7 ':)(ylQ3,SO#x;G]`^.8q&x6QO:7y*PM1|^It*/HLRVT!W>9Jǘ@W㭡[\fO`ZT#KZ0yrr͌Q(%5 ]NOw3fMzxІ~ϖ@hKz|'poҏ9As0ӟLȵWǮNg>V^ja k^9"%Z0y(4Q?H0&x?FEGRjYuDYRAOpfخO%SDm bЫ CA7^m(bz= fLH[(bN)gamzIjpGv`ab!XYF9>_t5a}}hKu]j7fV S Z(vODօ,5*nӬ-隭%n,,յImK5~wWG1yfi3ޱuK_zjwiq}?[`iRtJHTHZ,,U`߈S(]ղ#mt}I Q߮.mssMI y, ۔%;ٵZj5c?EkH۬VqQWktXEuttT^* EEMZؖkՏiH ESf?@ pe6Mm]p-?p~LHJ'<4QȶfNbA;H+X& -~ H탧 F{m%ul%l+ya(|0=a1/NYHP je/r F.tM>~s}~׽sE{ʢMfl^Nu\{{qrr(/Į\;ҕRS  ȋ(YSH#oRo÷V18GRJ-A.#2N-O[~OQ+kY[5qO7,ȋZlWCΩ3b7UӐw~շu`2,SCzbS딱g`c er3vLU* O2y W,'=y;y?,aToh%# L k M͍6jDʷՁH ٮ ʓ}OU9!8mmF@! kP ge[ӂYwsHrЍ9c|;n(9B!WXw{6|Pp)t{%AҤގ_uN?-^$^rt( zp쳼- *3`ЛEf31Ban2g#DѲ\6frhvo6bB$D67S\ͫNqed2qVss*i[/&O{+.K4kmW`qu2p< f er改ϩgᳲ|tevt~ X2%s y9Qj͗8g.!s r.F)(D. rÒKfQ&7K[s;}GrF^u,5tah蟮yU۵"{zK/roHoޓ˙1~!A&P凰InݒDeV.kI\V,q]D %j0ٺ,̓zDifQ4f0Y3wl$?ɠ!g~샑5fBѢ>r82쵿~?mS՘f h!aI~~7Vdp*4]ҽJT{j`rh+zxɼI:}.SC^ 9YˎE[, L(ޯ4s8VTf88>` fd\]8Y,j$uIJ)qd\d >Y]'[TC5> |ķOgdꙷhUgu1SB-7V†,pƼ71_s*֢'n)_|z}5[Y]^/0缭\k pW|-Iѧ{f|su9K^ƫ(^due6:dl^?0?ek0z|wz7!w{=spZgͩe~fQ*(yw%="bqqGkq-Q-RP"#iaj%óA/Ox?s])\ vx:Θ"LH'Lۍ.h%*$`pMכMfCpoz=>l|OO|/{fjK8hH9х@- da$$2 $q'Hcp8d׹`ǎ5IA^U8ddWzU++d|P'7Gz*č1i&Npڝ9EF5k̾m!&[~i8 vOd48|ZQsE PhcdPS"{V /Ŧ_@YjBH$i*Ѓ QУ!:٩]'+=(~~Oɱ=8+j7]RB*j*11l WF+NW`c TVK ,^j3^-XzEA7"$j3l }K L&A㰇{5xT^͈5 JJMxo3qBtLj6[j6n^"nJSZV0MbFN#&rEU e%.A&XR KܶR9jv0n9-ItyWKLBS}\dqM%=̚lY M?ǎ *EMKNa~2[U S)-*bԢzT"uzXOͩ*: ˊo(D xج-TVʣSd^$&$Z4)(FLjbj-lzL4O;BbJeeۺ̚욲5&lCmAQըb޽/&fwkiҭ@mv'FV62wjش: 5j2-(VRt Pz$ͥ+P Ps/P"5FjRsm>F*N+&^&Z[Sbj_LMU6fpOf('f.`4&4mw$]SمM{J%2y ^`' r scڶ#2[@X(s:.ܘI,_˲YFQDE,E*Ĭe*oV, 1a{^"/&(+xfEm!Y"Jn5*Df&G3($9A"NN1!h\&˪(1| I2Y[ ̻鎐?4}wpH4Ϯy`jP+nέ̓ bGl~?w0}5n7q[ut`˟KOM"m ;2 #(ou8зgK jG Jw0~q[S]` E!ލ~MSq}b'*QZNj`pԅT>\nPbáPP¡C( SQ6R\lR)YQ"!wf/Ku{< \)/4Q Keegزҷ*Z*JV -Bttk(" i$qއ/#;dXMJ=%$e'Uoi\#(N`(%1o`΍؅(#˧G^8*Tc%P}2[_lCPRRJå9Vm|x2^Y|2OP9ձ|gD 9# \u-۠ޠvsv6JCñ9TnnǣQ#·c'љ̛ZŊ4:ȡbqiP1NgHc1z+(EN5QШU``j$cfs:h >@Dz5hXNުf;U ybElGDFZ5L#9@f(~_2ȝ/47\3\3L5T*YVrrkPq19AK&ʰB_{fbJ>_#/x.MnUnC6YU ߖ+e}T59i^$XH8$#ae:]G*Wkb?#.Vޫ^5$'vM1Qo}!bdb J5ͦe"gJRL?Y]!{HM^^=7 ƨEzV^'Y}[1#=-y>+uQjةîչU"vh]@5(\Tꔊ)lӓʾ:{Y+M+Ϻ_8ش("6ӛ+o}l6|xw?pU{kTN~Ǖ#/9 ɑP1&#Z(*cQ&|LYEuqVGե6cכMVݫݥe۸+4tZӧ}֓dY]CiW L*Ȫl}?[J)шXFH`(SH+Eil4iJ*Ȭu<?bЮӯ:b䴌SA+%nRtʘӲn `VD։AStBN"#({0rh_hY2v6k=mxڳ/a8 r&:UsWRbv.PiU/ SB3Ebfl"ӳN3MYnɛ "+jbꏒj+O^ln+v|}H'Qū稆ɮ[)Փ'6kp4E ֖OxjJ?9UW`߭+KNoOX{CbՓu ++gHL$XG|fg?g]3н1Ԛq7>@,Uê2nX{ɀ̫U:E' B)`0Jl8dkg &"'yAf*+ 9hUs9L\ՓL[U ;s]}^&f<%3?H\ xы7HUڵ6{v. k*  I[նʾQ5`qWL ?h'ωq,:lRmڵccm;CCg S fN?Pɭ#Dt#qMC7w'WVsyA/WJfr8,3$%)a=)5,bK@U~jÖ>QLj.o;{55CvbswhP.FtfC5]Wf7cYCd4N?tc[/X|bKH$xZGsM+;1?qŏS[o{ׯ BI^}rhR8U֪5 55.,(2m22(Qת' H0q6x6ou UѨ&gR85f@mQKf<x޸/P>R3M^В:{3qp?ڪ"*7%23LM9KSfH^LyeEb.VeY_-d,7%&ވ)-^!)!шkq^#`~mZQ'ا3bn*g9C7Ϩ _{,s;ۆ#w?bý_|wwGp>e {$^"6𙶯n~U>Qr<]W)V5 *ð,N Xcϱ $~'n9K6߿"3]);MI*q3s&-M]K^?Cr\ F~Y6v*4 1nmx/އ`h[pH$d)_=BR#đH49RyLͩ5I؉+?ýX{C!0?أܣR)5"ftЩ"^RzT@gRȻz"`8Q8ap+8 FPT2 R XmX 0U([ *>%nTSJ$ d;9岲~CwR)Ր,oT[RMk[PqOBMCKruM,Em76@MCB1D-Dq^H,)Ŗ?$,UәAxI!7"i>f̵cٺ~zBVGf)>> 2p`Ȼׅh[RsjJD3,Yti `b`2F'kW䜝'X3hx76YQ䂹7샨}>E4L#8 DsqT0d ܹw̙0MoI5x~aiWdWu붟46&"6 j*UUe\jLhe&UP(4{FG2RrpSՠrH;$ C#ˆ[7 F'LBM-YnQ*kr!( \A^dH]áyoL$*ɚXDwd7"vFL&ti;atD2L:cM) ɪt4y7  :‰De:‚t,2P*Cp~6Y Ri]~:9îa"kX]F5-LfvB`Æ@߷&'vPfky[M&=ۧ.m*o+=sM=.L/(<1!UyQ;CG\dJp:H ]AZr @:YO<&ҭQ($G_o%?-hi m]opO&@6mdOSo.!j\& oykwPRM%' dxm9JiBjiqԫΩ;{L؄K]KWQ) F9@RIU*fgw#llQS.%=^%jrjTڃF9-8$=\:8XE%JM 5Hjڽ3yow`:G6w.>.vr煡@% i@cϑd?I,[z$͆'+˽DdVm #ZoSHcw "eDO,TUin^Ng0oZZ-Z}jUD0"HR`|^x@<.p`IJ:naV{SLRA7͜I`AUCx3$%S(VkWZ'-WkyEX>}(i@O6琖H3S꫌{?[Ӈ̺M+DAWzW>oWN WF"-YP+7AR=7I.aػLk/ft`Lh}Cjl :MYrٱz3;_MEwFia Ld(eY20zGL ?2ySM;ƨ1x{=n|Ui`Rm2ŦتVbzm٠Y 8Im.1CǾ ~s?8|?8ῥ8|-+U^޼Ǭ{|6 U&[ߪlVݪYch -cWKph+ QU/S64Gչ/jNk*]T3ɚXL˄Ԡ;2.)؅e4 u&vI&R!ʀZXx0Rg63 (mU^rַSd\kp ca?ឆϹdi$+)͈f$V\Ej(@Q *P&o3WjELG3@s3Erw=̈́cyC pp <s5 ܌dU=?ݿ*au"Tzۥ7Y@ܓb&Ltug"(#ErI,)goAǙCWXD܄$E ]mٙ0Vu"nj;%@ ,trkmOkK9l>hOvJ37 Bɳ+W@U * FJ%)h&";J,81ΤhfͦRQ—T<Ɩ5--o-շq^ U‚a"Oe81f? Տ])ޝK&ljO["n~NJރɯדͷnUy*΍p#nSذ6/)kB+M ffYQYY#cu )V#601d 9R1#Z&=N%};[0 2qXm_,DE*DG8O 3Ę.cch];_V9.4P_ ta:#aMz@y Y+S??f}X~%כGнӴ[1 F^MN8uej7k6EKl;&bEK,+"N1q>PM&Cnџ~iH(He`V4XU]ЛNh_A.t73tc'~RFݐ-=QWϥ>D 6š7Ea(eTJUr ΔSr:yDNJ`)1`Fgl ө :vd%Oxl]#Er#!"2T$+5ORnPmG#6rTQaW0}nvH7gq8 &#!a2v'roϯtGnP&|arݱfolx䆻;&eoj3ׇW>`H̞ oh5VQP!Ư=/܏*~U?YVL(*>rp{6Tjb4>`!xަD&M}qsY~0$:Som"9(=(/{9ZzxxGLT<_(X iRsFE"y>oE7s5rB !,|MhaQܯ|O}^עۮ{R1ߘ1Vk)loov%zUACHJdYgYMlO~$RzC[ٕeRy|CC+z썳?SQA|nF Z\"IDˡŽxΌ@n&K[K@΢>pr88(@|+ѿB)&^fM31gMtȏp)s8*pLNa dRxrW$r p5x6 2H-T)NjHP-7S\Iݻ( դUpC9PPjW:Tߗás8ԡ{9Pf:ԌpCͯs8ԡRNKq-)HquQ@ SPNq3yz0+(ntPJ)q(aw0SGG)^DqUrR\]d?Q 2KaBe-CP7`@e<Nvp!S6nӧ. 60;!2L]E4TCJ$z4)CO_7b__(ɻ?WNDXXRF=hR7k]%ǹ -|rwSvZf3}FJox'"k\45NK`u4vZﺎ ϔt iĒs5FR-4@i$}*Qzw3}+IgL~_GSA{il6]oki:Z] }_wO/YKMQn40Lvҷa{wi59\ '_oCks ׋zikJ3Gܫ:fzJ?\& I_~NpN߼~aSۯծWo1Ii\9roXJ6t7l%kْk7mo^a_o[WgbY~qIv[nZ?o:~'Ŝ~HS&R%buu0>ԣi>vw.wvmn("vo-]ҁH}KgO>gp@_wW%2㶌u}ۻ׭$-v@Ծ-H~q{_gז2]3(nn!wAyz_=@ʶv-i-k>tv ؾcUqұi x5 : d{l!F ŮkI+im}":H\=\Zh ݐ@fR}ݐkg-zگ .a5zzήmr!̆Mx#zN?-mйߡ@)c;) ߉!'BNA\3_Su~yM8]\=˽in0;~\ -fYyM[ ݿ0Z xEmk!T_nhoRݠ)?$yq}o-Z}oE)~4RiXcc.K* 3gǬ.cs搲 /հ>``Bgƣ zp집cC_QIOCґS???W#~87BgGyc|Lat3.ppCF0}IFdB9}'0={8g}#1٧P~jl'w/_gb䞿 6,xh~]`? ~(r>j/XAIwhNG.{lCui9JA 5jn'zs:̝r8{' aZI_?ٍSY3t }g`GPPmcQtRiIvTĮwxJ\yRkHGې$lWk׸#jc@w0(@c;BI v ڬB7 Cϥp)5t<6!@{j(.H%ua=,K4lְl+˓oeՀ@Qޫݧ՞֞ӊ3s ^>lR)zÊ} ^^%ӦkYA+jSZIۤ}Jv-٧S A "Zb `ps`dpFgW#I|zs8$Pp%;@0E'=s: *:̭o P+@/^cW䰂 0Ǯ Y;b%}ŇVgL*V`tij>JԬfH2,H.Da间jZ=fC~g,TK%,?$]=OM-1\D͈_W>}?!w4^jΈ'3x7 jᩱZ&Ǫuy iƊwM` 6V]5RŹo7@\?VLbՑ &` X/ jƂ%=(Hp - mFZx= P[5 x.|q ߯_[ ~tTט >Iˡ |wxB'|w*y2pz߳A?#qW|_ 3/bxoqAo24`+&񃾒)J 8xW9F(`Hbrr&,eZWJҭWASiT*BũR^W!KOSb5 Lҹx45,;ZkPN^<мk=׼$6DGz: )Wɫͫ湸iK>87ϵ s1o`ƚGuz/:9/g]'9/M(u3c` ک| oZrz~Tjk"߼pjzzOHj~pN^ 0P`O`$p8 WGAMx~u4A<  by+k%,f @`)~ O6u$fmΖ`d~lWזIkj@xct)o l)M|P?D`L0X Z^tmGAU@k?6HP/ endstream endobj 24 0 obj 31079 endobj 25 0 obj <> endobj 26 0 obj <> stream x]ˎ0<|&REʢ5 H ,~>|o8,0u'0ߧG:0fڨ~$ݭ<==˴^gzaOyo~\T5%_ڛe뱏 |> endobj 28 0 obj <> endobj 29 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 7 0 obj <> endobj 30 0 obj <> /Lang(fr-FR) >> endobj 31 0 obj < /Keywords /Creator /Producer /CreationDate(D:20080731201221+02'00')>> endobj xref 0 32 0000000000 65535 f 0000108490 00000 n 0000000019 00000 n 0000006711 00000 n 0000006732 00000 n 0000011742 00000 n 0000013083 00000 n 0000108633 00000 n 0000013104 00000 n 0000028723 00000 n 0000028745 00000 n 0000028953 00000 n 0000029383 00000 n 0000029679 00000 n 0000048156 00000 n 0000048179 00000 n 0000048383 00000 n 0000048817 00000 n 0000049115 00000 n 0000074840 00000 n 0000074863 00000 n 0000075063 00000 n 0000075600 00000 n 0000075987 00000 n 0000107153 00000 n 0000107176 00000 n 0000107375 00000 n 0000107927 00000 n 0000108328 00000 n 0000108391 00000 n 0000108732 00000 n 0000108874 00000 n trailer < <121F8399A5E17AB10C96168C4BE33A6F> ] /DocChecksum /55E0FBDE803FFD77976E6F6791F4F80F >> startxref 109434 %%EOF freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide.odt0000644000000000000000000013416711527433212022312 0ustar rootrootPKr:^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKr:Configurations2/statusbar/PKr:'Configurations2/accelerator/current.xmlPKPKr:Configurations2/floater/PKr:Configurations2/popupmenu/PKr:Configurations2/progressbar/PKr:Configurations2/menubar/PKr:Configurations2/toolbar/PKr:Configurations2/images/Bitmaps/PKr:t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKa hetOW$8 By|S0:O>m)zмyޥe9]%`0@M༅_": u?Hʈ^L&]dX7n]< c\SEufgy}HA^x޴HC@ZF<3$nkve}@G[Sc_w ] ~޶x%ܯNEb qFYrO2O;9sı 4ϬUthK?gܭUA,2ݙ(( [ߴU'0Ą΁0YoYV7rF5QCmksfy暆7S빐I%c=!(P*XLj"U\ ɪ\fXsv! :li^{.샍?K'!q'ƗUA8ϕ|q~Edټ ҷ7MP4-_G{%Ưc,q/lț{iD/#5:Ζ- 29.KQ6&`L(r)^ Ҝ+Y) rb؂a2 e!}@(wIR( [yc?X)N\,IOk3ǔ@v㯅%\Rlu$4;%R.hh[6Y\=@jeJzֱ[ك:LH-).io5;Yv}y:VdIi)oCǁ˅icWkQk\v^zp@Ń#rO:A)scJ9R|0 7vQE8%xΗwv!lЩD-T@peܙO[x/mxk)WߠYq^-Q$A֒kY3fYtygZkegJj6VqI՛Kv\1V[B}Kiv^V'Ӯc7#d#g(Fȫx֛` o~Z-fbV<읂|2ho6$8YOG<`ڌ&0YʺGx036ϸ/zct cyf&{y9qf ᜵Z%$݇˳Y}DXaLyvV\PY;$m9ϙ>pPjدeyjҡ|4CܼځdZ CKŏj j\yc>Y&h&iW=m qeJ<ПA7KGexjD[|枀5aƲ۱F!kC0v'Sm4qͯ7OplFm:FoM;Sc`n)h?:¸3n9Wap VE;P[fd2qD`^-V'̾{_/Eޭu@nWVޜ2fi>ܭI=Ko.;WmDP0QN,$g[%'lhnfJ(o]ĺ!E ħ(ge5(eNhXv!Yt:+g̾)g"}q?D DY,G w_3|^KC^v6V $.TV/Yܝɾ?MRw[yALF\mpJt]m.Rt:y鬴_P*MC@0 !ʭ4rDītQ5465בF-=gۃA|y[ jzb =~'BER] 'Cs6*Q;EXSnWlhhmpyFC2mo2<"nF"=VO; ysBqĪ9w65;G=m0@~s,쎤Ⱥlj#y Le)g +jRŹQ!|D禦}@K{ׁ{c!fB%I*D4D5d}o.?f~R#c9>T'CaJUqDe(vHuw}E4*u{DTvQ0ЛV]12gSE1 w_'"EQi ygx'c*a`s *|-\ω܎ZIs.~*1aTvsjwBR~+i8#PNCL9Zv8j~N6wc q\4p9OmG &_Y 3 ;ɿFyfvZȰJƂGhoA~$-1W`]!3Y/@Aѓ,sv9r!Flpj1^1΍K1r !HJ!A5J7C#Z-wfsY-@hAx# F~I$>0"N>6b9ɒ񓥢 ] ^(h)ZZJ 2@36{%#u\W`U %S탷}|UzSRSRǒL0F_aꌩ_Pz{E-V.=j,PZ[Ia1^ j%G-{?Q!EXZn˧`cY|fک^:1l>00Vة![džjO` m*ճM;fpb.Ӥ+]m8Bz$due`-FGV|<;:|# p @yф.5lW.>bj8v>o0p)L-y:?zGoeRPOjޜ5w"{7vڨnCrc@;_+ѱn!D yhct n>~6'"G;-`ޝ?-X| fݧ1ioBbz\~}w⟪MlБ SV<=$BPlC`fMtkBW6Oor3NߡC?)?4>zXB7$JtghχSgc?V޸bx*s~P I-9ˊ܋tJFzȃw7hrg.Ru  >$IJ`'6UʝSW(99%|E\ÒƠ|㰁Rh}ƒ;'$ePo:sIY`0VūS:WcɭAA9*ɀcư*UIr#c+\H۾4"qC'n}օ[Fʕ`?@0 di,HR3Ԋ`BJzL@_B_OZ ҇Y"R~p t ا D`A9z? 7H-#6 /Ge0Ñ^ t`>^_ 2TӇaYErIo0m)=a2t"y q8sv{1DWF:` e;em'a66^~<駏m'IS$!G칳am pUtT3' "1J5<ȣ `l C}x~2tw3{@ n48&T:?CFjnԽO:h>BVҫ9BAdpbݥr|5+yu>;]\9hbEU6uNW|ٵ's0;Lw8v3W]SGKSrⱷ ⱋⱋⱋⱋ^c,ǖˬ'≪6ןSsW=yxD[ca]^ۖ'-hT'G&9K!}9qhĕ !Cp{EY ~ry{T\Tě:##j*g+#-'(pO~`dr4ys0BU(p.Sso־R++? h*zj}U淼;%$p(T78M9Ea](ׇB' 3Ԇ|Vi;c}s yp@bWn#{O]Į%&f7{ tW/؇:8ߋPK/PKr: styles.xmlZmo6_ah>$[5n غ}hJ@R_;R(Yr%-{x^lq`RqQr,X௷m^41$"rVh)cj FPզ9SoD 7i7Ɣ1N7`fG=w2b{sveg's'#|OOGTX%|}׺܄a]j).B#m -dfPI1F(t؜i:b}JEoYTa7;# {*g{UͩO6|Bϛ].|-\K^^E-U` ]VסZrͤ/cŭE>4E! ;`:EOj %+-tYVfFƖ!Jqut;i*`MiHL|a+^>x%IFݡrmZ\ǘ6}D?pd4_$]LpQ:)pK.s0WdzvfܶmRZeM47v{|'YjuFi"jxW1B VU94C"4s(sAGt6n`5{b[fʋ{I%5cE'm@2 Y΀ IGn$zK^$ K|H:jCE0Oip}J1pCQ5c hJIe{`Km2Z*!VXT?.ihp;8 u[%$$P"M4 3ѤK1nmx\Sd\@e# \;Z [!.0`#h0kHQȠB1V-vLq+!þAB=%T&F—QRWY~a4jzR 7QdJe??[h=T~.+Խ^S h݈i\Әf5=ohnqY? uty@v2'/J _} YDžTPy=3HK70JI? RBsk$MשSHL,Wӕ9q^1 4 2;%tdtVޘ_]?>aw1OOX orKѝ a!;u_IW_\-'/mxXtLfmoi(;eo4OO;D0ZCmr5=+[%bWKS⶚ `v2lonc Y%<F}LNWd iWLmQV.iH) @b\=O:~iQi{r߭$3v`Yuz!BQ: L` |VjL^g~n))o)gVX_-f *i4L*cģoB4U3&*<ٸ6Kc9X^3dE2Et#13}}dnc; Ku#E,͏rpO^m;2 9k-wmz7e#Ah$5O7,ή Mk[~}ap&ЯZhl! :{F/o/͚w'xMDŽ[:77&c,QBL9a _< _r$9=(vbMrvqЄ40xDhCS|1 >ܷaǡmsvC/Ro\QWrZf5]:9{@}8̗PKɇ,)PKr:Z5==meta.xml OpenOffice.org/3.0$Linux OpenOffice.org_project/300m15$Build-93792008-07-11T17:07:022009-05-05T19:59:352009-04-13T08:41:3034PT04H33M40SPKr:Thumbnails/thumbnail.pngTctdMc{bvlLN:v2mLl۶'&ضsOYjڵ_u*\Q^ UJl@uOɵY-p:ׅ^X,Ah@zD-Cb`޿2v`{! !u=bY{5Sggg]NS<0.PExaj>m4vo~Ei,Cm)nq 4 rF{m, &(XL4- |f2>ڮB~/CoϷ-3ȬyB=ndz_/,Zln&Z.["q %b3 9-}_'HR7#n>B/G.4k|-nV4$db?f@|{ϰ^k|ZK6$y>_trZg-v5=t㷩Liǜ56nWJЅN(O_>3%RK'>bBGӔ)V'+?vg@\NYNn2IڞK0:p1 M~/)]uE+\3k7_59BǀjtڞR >މ>ϦkwkoGh/\vz/k|n,,zdg9zm$>x-2~$ϯ==x4$+]NkN"]HmEl_U+St)/QG1p) mr:PD~_6)31%m 8Kdv"͖l|*:2XE3j~Vi>d g9{>޷r"N 6(1+ޮ5_u*fh.z5DC}>eJw~c=1r~*Ӓ~wН^gmf1֞r Xr1yC_n܎֒$p g8nIJjV{Χ'mW̤39mV/c+_.+qC|z~ c?1 rjP>?jUE,k+ Niwk{opЀߘƸrߺ\:I#nPƍN'4?> uMq| ?hNN atre/OEwn qK/ lxN-GKu]N e%S7W 摙GX9WxjY >;䛳}'#&z>]Rj YpJN$|+$>ljUR +t%lt7Nl^yjM!c"T]IܯCXڢZ!}U7m=?y%H6ZNq9QR%DKvJ1lD ZiSH@j^5 v BT\9.Z7L%M1$t_pyЩ,܇sKzts}+ E߈HqtJx"(Wg15Ồ3s|CͭTpmym)yD^/_iU _hk[8v/en>.S}Ӭè>ֈo{W Rc22A^31eaX_u'lu-߸~ajfF@w>#ڪz}ܶ$:(3f3DxoZ? 5.BxVW=i U5z(gvM0Nu9fŒsV~FSvVnlRkil."5Y|QZr6,SN*C2ڪDYF?Hƥ>R-#FW8O?"+xq2(8Dw䢑 Bfgm=3$ގʜӍ >G4і˪xI|w8(4ϥS;Wzu p2D_#,{<_~LpoI# R1zNf! wЮAŽG43IAZ$bpUrЋR+7Gh luEP ǚV{W@Li}2x*;{FɇW2mChhҏm[s}E:P:$ /+K X=vjsDKBWvD#"s`W@%?A{t|jƃ4_%7ogYi'pIeaN! ^Y>r:t7z{8ooτ œ, ,"k_ip-ߨb'- ?]T nIdb]eimKrI2 8li~#wI< zDd\AKvޡN*x0֑?_L W7xa{m HP]K*,{7{N-*!)Q/,ݡ! H`?<)RՖ%df|4@z)":][7J{Bvc9~XT˭[^ɝ!۾ᇮ Xt%c%Zɒߡߝܑ7 EÕ9Q`(7eFLCע,Rr,4TT=<,{Hq <<¸6' D"R _sx~yey$ nɵ>Մu!VeBi,;vVej^_VAi<ي|Յ-Sk+Eu]7_f111Cyƌy"-cp"PPxUοt&IGDBrmY2ܷ?/ʝ0'U1י>Tc]\>UCkQS{xڃUptr>>i[_QDMe6r!vD@\&۹1ro |pm*A#0ɕ=RzIATƋE>ejSHА`aJUé\s |Xs5˞\B t7iБÙnLȩt:7?3 ͌#ܮ*rRpq+ÌBѢdF{F0Y^n -b{1aNO- #req*w0k?qԫVeR,z'k᭑`mBc_W^hj<3ƶ.&J@*z AbJv= fw -3Mg w>SL:QXzcDGȟ?كA8g#R!.f^ j~kTٞx8 9A0픒&TzW|7^AGL J8{w t7([!Tջ U'2>A"n̯IKnmQ\8 y8;#Lv/bO'+fLPKyş6\5rH"gKw_h)j\ TmD^?u(TR*C·Z8M`)EYF(0nRiBpH|[!#F4 gmO / R1QC_ϙb#.<\^를.q #d6 >@|^6P @5SRjB d~Z`wgg%06t3KiQW %# .o15ae~_|}ID7u&I K X}=UJ{UǤFԄB^:l5b?0vJ:Z"#((t?R%J,NʔVl):rۆmY 4]>7g絷'ʬˠd즸PU:r(2&񴫙rHu9шijPFIfHw+0^G'V]Gܓ}[?| u}Ġλq5^ ʽbsy,P^ 7tۊ06&v*c46&|+=/STbKє)0lloB]:gnv{w_<tBۼir؆@|L o1"3:~P8pa|iiȮ4a6x-M#!oW)Saqg\xL[%j eI)xw5Ȃ#<6f)+oaw2tǑצ[FHבvI@)lT˂<mK0Lb_,[Z$!;SG'yBVlTնS Cc e4fc8轫9G0Rٰ,?|oB2ػjX{F+tSYVBO،6ھ dDFE 'n"ŕ2t ]Zi`g4'n:/5O jWƐT{1p7fGᠷ)[*7 h.ſJz'vi\j q$@÷kAFߘh,T6;r|grg4E8lT[(qFS\\2@c9qpGRECvUc@wFX3nW:W1|X Uflyʛn"XK=X6>6j.$ [s!P0;' -@~Ϧ-W;kEǐY<*BGDyTlWRD^2BgZSor$G !`)T*4U%g}-i-d V#(ЪL)cI5WMhUYb"p Jc$W r4Fq iUY\(6g&>K1x+~F\"?2#SoupmIoqKd*"_CRzT'Y~7'+m$+-3؟MF#:XZr}.LRb>m EU-G.@"mW)v-K%WF<}k8;{*X&xlyeyDvRtaqʣ^P_QyNgQrHw-# -ⴟ&3PF.2^Xqu`jYWdIIdv󡒏7]}9gU^)kSU2EY2W)IB<8߸;p@hWp x94[89SPkLݬ"csGx{uEHpskܴz{.·m7I;Ft퀍V?S5l (Twى=6#_}<#JY0@`fFR(;PoF…B@tD#]S)@XҴ^# ދ U:b!ES,8X)̜}Rn6cVne.-eoWZ#O㔔hS|:%DzAh$C#g,q*l!K`)PUG)Q?s!]4}D\=xHeVO@(9dV-/]q Cr\;>j61 DReht.YP̊} -@&^hx2r1l,:B@ԕgH \GmVq7!a eTj˞3("6*v<ݶ)jZ6c׈= ffDtLh)qzͤYkT%L`!CLu}=MsV_ &VĄy-/O_{8Ή,87ԜzrVj`h7sQ YZ+T%a&ݝiJ[RT_PQa6"9}xr4}O2sEEP%Ģ۞s #"" a[/*Q;QA*k R Oo{S qqY>(˜ma72V|j3]Q7u2r818ie8v&K 9?RR#"BH [`D BKww4T0HĦULc i(jfȻWdP^m,|!I5 MgZ"6?:Z..6 u8flIm5Cb2.͈ʤfq&؄xyVVCa#prj-P!= kwh>܊~*u3.z3D|ɘM&ڮ?_†PxmyEscC'%aƏɆh"v [N!׼Pi{:>22pB`4KtA^h߳e[raSgeXC"Nk*,Lè_l"ךGHV ˃Y IEЯPAo!\u|?d"`KI9H֯gx1+*o7a|~1#\ ' ϭfoUc;GжP>ndIA/;2ocJizj0!D10 hcٽ5ORm\\^1IJ6Z6}> >{?! P~wa&h+0_ቻF7p+~u|lF$8(y ާH1&O:Y!۪#1"p+:Lm꿃='8_hj4I~sMe\MFR}1dͺs7|ej_M-j6)jt_guK򭁼n/_c fGA[Ly9tl/$|z(ޖy&8 /CO#wLWbHxB1ѝ~3 ?q+AQgRpZ)ibO :D 2%*W/zЄ]B j G!=k(K6CZd[7;=îlv}(k238ts;v {Crx>^?M$.fiZ/jY?[]\iG큾`l![ghp0jVbDhܝ&^X 뤮47tf5SJ|J&FQG0xj# ΰˊ.+rHDN9#G2|Q zS5 T2Rm׻?E0Q+͹푧vOGc?X w}1Źl׋3J sKKX62^SM~_jτq8aYjԟ9Z­*++{سGj9*2˂Է>?[GِEX q{Gbvf4<| sU.`898y ToOlQf/HmO!@gD=nh_54c_|>I$kVB?WZmC1$:Oah}H8HDe?{ W~(.f AX3X֣C-9q.o,3vO'#*[(l $+p)qzk7¢E$\Z`[ԎK  l ԧ7V](kV0JJ!ro^뮟?@:42:\*Bd  SAnsx[R}gBD/n/ wC%bSW25G=mi,/p 0> gZ5r9qTQ5NEn0Y_.H̫*;r7O5-'g?!E-D G k,[,'MՏ\>e|Vez*')#w3~SfJqsm?z(`vH x }7fK5݄N_Dc Sxb"JTYX(#9Aiݸm19k "R)#xt,2fq!f5)0_ZFz3i]⓲kR" f{[lw|uD]??d[@nv_nR[̷Ob?[A"99FUY{fI x$0 GPkUl7ж0?vJ&r}wp⸃_h'o*E#(۪d]e1[)&HHa)a@NQCi8Uib}#Gg8~ SK'u"PEX ay$Q\TVh|,*[<-IGYkBG<],5  `rBZ_g7V^Ihg^mymOG.d {!t(:S*ԛ_rw\88 AKm`BdGX6B,֬r<R~-gC-8ڡXEH'$ Ň8ʡZ3#W`b< t ;  2ZY 1$:1Ѵ-B= %X__skt({W6neV@)beQ~O_t RGz9,er. iݗoQ'}b~\>/,2M0ټekG*B5FpcF,@%%6g.$w_/u}٣pGzl^'*꒻_>|ZW+sgdc9}W}zM ›6:eLmzh"#/,$At/mePM^ۘFa;ӒwK!~aRDa%v]V>9]Ɯ(mӗ'o{_Oۘ)*zj{aa@c.V1i+'T 322:*SKa >N4a/l؆;lۂ*md5 `?p] 0#(Z>W0w' wnoW?un~pl/HwJ9TL%DvqSy]Pc@K]:W_yF8n$!R[1M% ~;L7T:}Pne1Hn1\+#/5xZ.e]6ڢTwj 28m0]g7pP$bQsxub;mK䳸Cy],afB1my>[dЯFV?-цuGxK֍ܤ\a8)W->X TKR=L we*<@cmfU NZkFtD6r-TLaG0\#(J-rݚ~dA<ϭ<;v"p Xt3H-b߂0XHUW/6:Y3> UCm#@ٿDER7k-V[DuC9&]^oc$m{(*,{tn> t"eCQy SwvnO1 u u) [0}^(lUd:Wdq|?O:z0+DVpX-5fHʱ쳩j m >ZC3ήXECz*6* .sGZQ˨4z=I Z  ]_)Ӧ!>Vu>F}!7]~ &wq'E]/V λcoݽF6o:,v$GDFj(,Qc-: I ycz!G*lQhM J!sh.?[߿@v#5]]={e^S}-G. 6Rdž.(öJN }E< $}~LLx>x:,[zޛSZj$pS\ٽQ 1˽94߻a\"`Y%!~2_BNKl( :)fW ʔnF߅!v3͡KT? &ЇX}$z3etSA:6UubN>D1؛{C;ysCb?tnuyY8p,}뛒s "'x}JxG.Nj7Oa{VCBΙP?.*j(cep"si X*1^"AYTOWK L?`Z F@%֮OW`~'m*u @v-(ť8"Zw""i %,ZRˢ!miߛÔ LA[_7gl~+QU^ug6BCw<9\Sd/nܗ:1[,RP>!Jw@il`9Ɨ|hZ ٱ1V+@C/! I4k̢ʦ1"`26:&ok^oޞ ^v7$eh&NjIO={H$)"W8IeߩlqkјˤQo0(_UVbTޓģuvK}qd{mbPi؛'IiLqLdF2~bsƕD8d3t9/)WeX0sn"`¯EPݯ,=F77\7:/M=nOhyld뮷r6mY;q'IG)t.)YkMjs%N3+jX]Do&fZΥSA¢_\X浱dYDƀV~mZR+s%y}5T ~S\Bƿ3iCEG[@:yЕrGΆ ;e(6)6VM ~Aݑ%r7)vk:.J=YEE} j^|[鋤/I\%'.2+-nѸ y8!{:tՋ$*~K ?_Z*]J粎ϯJn]|[jH$B4D#ft. t,Á1kb.^z/&ʌzG P @m'ʋ;7?uxje`;{ b9=4e3r^EGxꆾs\44[v* knpIP\`Qi'fO6@jd*>NA`0Lsk6{oD&j8{.XI_y!3¡9ffwLqQA_ؔI!تv)xu9ZkF<} C^CŽw󭸛X8C~a:pg^ksGNFΗj"D+/4z`Ņw/\vH}U=B!62æJ}n8ZwJ?%68>Uۈ K]^Tfb2O_)8@mOP "D}kȯs[-p5~_v@ !l}1TDGj""!W, NFo_VFMɢ!K4Y, J 0{~7CN`"EӺmb |{^&۳mBrC*0Ə@' 5!L58|~{  TZ )rϗ4T K> Vc\jvk;$oq><+9էg䡖?MoY Aƫ7B#dO5ǫ&u q7%+s}_…E<_[ΐlZ>ܹHVv)u 5lRǚNDcD 2[0wbwt>41&8\\~+Nb q>g疿g"3g2@dޯ@?"r@stkOtyM KqLeJCi6<"裨Һu]߾UH7 eSLarm2 1p=P!uZR֩D2hnDkT 2tMP@BD 8IvSH"3QDzU?r3H2=:V*ImLm]t_)4}tfK#H 8[{5j֓|㉠gXaڴ-YZo,ױD$T HP%wQ|뭷ȉNM: e_Ho|A$~b,_xc&Pկ]mO&G`<!IId0(*:_əN%KPΝy* ǹWQ.ڎ5Trj5b]ѣGs6mÏ;ƪMp U#+hp2e>tA~Ctd`ߍ398o0>$x4n\j 28,*w:5tP9~:}Q ,6jTIoj9> #Wֲ_X~ox5H_O_?cxRDyU{52ȸөw#G#⧐ eIRWȢ3 ˛1RGu̅nWU(OUUX5=Gg+s(J=i ʑ\wQ dqZE;ݻM @=<;38B_E˖-@tJ\wE~;{Ѱ|g5?7Tk7I+BB;ؿILL̐ IOzNKҩ2ZFp+etrqh|xDXӾŸpFeff?^z.ԩǎZ4dqǿQ&x7:=R""sRByKTEWDϝ&*:S/=n˓'/4jVt}4A\Kqtͻajtuֱ. U,jXFݝEiYe@ ,h)Y䓗e]G3)wj/pg6$N%'sD.AKz~ R!yQ4JBBGN$* ! Ώlڝ; y.THG&qW1'2D9IDLp8 "1_LY*Ɍ'g TXcI߻W3c@` ;D]Q Vjlֽ%pGy|HS#QLo5Sjg}ӓΝrd.qf'V# U#q㸏'Oڽ 5?q}M?<(#4 yZ򱃓*,%\*7pLn1tw_&T )EWo5~Ie xc [71 74!1jO!C&Lcd6&HSvcu3eH(:&$@s@%֝gnld2r<̥&իWbucҤI(b !0# 7.2weTW":ܡs;إ8@(*Pj ,I!+VE뷼,UHBU.+Dj_6p}3WfKg 1ZO͂L) 请V:'U f23kxa}IQaiTǣM+, +7ѠA%7"J,̕vm9%`@'Xqeme\Y+W Z&Q&"*e) ?0W+˟?b&9Y$\3a)uFq-`=FГEXI2I aF2v}ջrR~bڧc6O֑,^TH}%YtKA`;#ߞm'۝}"@I:59ѩ՛2uj:5R `a%MD5GW3yPӦ%֕U$ ^ןyd:} B<~_Q0խ' ѩ>B t7 S+!tgWȕ+gghwѢE>Ċ OV( =9 #SSZ֖Բ ף>b/0ұ=ڽ{ !Tjt?' ҇=2^PC*W6K/dNSXXr?NhC{,^zӢc\‘(C aĒWdd$BJ* XXAϜ93;CR%#Hb,%$474T `pgPp,+?z*G\\e˖qym|G# M _`{ 73RV  @򱎍1~,"`*C>خ}@'kc`8c?9/,zf#q^zF-\ a~>^]G" 3v @g (I!;n#VD>ךV˩?7msɾ*rz=2 ^2Β{}1d%vgmM4ɶMl/<9kS Q8'ݰ}ȧ(ׇ{_s{e(Z`#ޟ.#U2)cX TfPQrh8)/=W|x≿K/ك7bϗbQA tTa!cF&T%VnKbAm>v4!N l+ȥ = YU*1kÆ Lp@a>+#ȥL\4Jz|ܼy-APWaF@;AĶoߟ-_Ed p!_S# z䑌%668oK~//f;EQ_6AG>/8 1>gsywP5j!Q2 @(QBiDtE&M4-x*THkݺ :!w+X񂞊.(g%`?xG HqMgQp,A5ajkm>]hWQDQ.҂P(,#(c$A"auD#:!gxUcŊ&@d7DNs"—_PǒX5,9ҢO]h$ xmEtܸGEE%}҂ke{E=6!(N/Ivԉ*PBz!2 *7J";EQto8fOXIW9BD1jԨx͖>@5'c4[{kN#6sݫ 5j$vZЙ=K h߾}*Op#6sݫ 8zNtTsݖ9$Ў0KL6(O㍗pՆ0jٳgkUdIۉ' .]`pL؍[΃1bԩƅ\ Wh&^58MqtR&^o9a3f!b89s4VmӰ~$#6`aY8' YV40&|u͛I)S8qaѣ<*D-XkKѓCe^+V(N$LJG"ž`Bڌ6! H'cVVߠ$R,EPBݻg).d/ _h#f;~㏳.}(F;1={!=/0%:m&[>y\>0u.A)"8]",ljddN99[}ޝ-̨ǦwRA.Ktq2fjj3+#}`!L,J]&gK!?&_aSkۜ-k2AaĶs~Ki ZQW<˫t6Iem/.nGjUe8O'[N/.҇oMx   9@X^Qby# U.#B}{̅c1%wMT:p^ש#dGd./n*!610dnf"Jq+CpFJ6 p52*pl=OE=dqi83J_-(pm}e2em߀rx BMq\NiV@N)U44z x .X@_=o9[!X'pVVx@L3.T*1B!0jAC<ņkpPcq ~@8Sh!繗 [zh`ȋ.´T:"21""YЀKAm.ֱ©LY 5S#A ['IMLwNn>ZӿFk7֞eU-}|[֤.kYYS-kV`9]ReG>?4*/0ssyBk&^~,{|ht԰ ݇TTydE6ijb7rlGTZ9Z`F84[WX67rU\p` g~QDR<@@iBnijp|ϡThF<5@flnޠ``bF[!3Z~G`= 9 LCl yLǂl^~pae@(՛`/Lub4R ցں$##䮟_PKx C1!PKr:META-INF/manifest.xmln }֋5VMv HO+ o?L6̥pß8a>u29uBYNP\By߽ ^͖S契u]V9J:p%RPe%7p#$a='71Kl")8U ZX"C8!j>nax%!)[z;xssꐡw{f !t[<7VFj n&  ouk;z48j-EZpt#cEx=8דy<<(>XFo7y(||Y?/M\,GLӫ⃴>>ܥ@\g nrl&ˠ (^>m`1|.~PK|r*PKr:^2 ''mimetypePKr:MConfigurations2/statusbar/PKr:'Configurations2/accelerator/current.xmlPKr:Configurations2/floater/PKr:Configurations2/popupmenu/PKr:JConfigurations2/progressbar/PKr:Configurations2/menubar/PKr:Configurations2/toolbar/PKr:Configurations2/images/Bitmaps/PKr:t2`.`.--Pictures/1000020100000081000000609CB17181.pngPKr:/ 0content.xmlPKr:ɇ,) Estyles.xmlPKr:Z5==sMmeta.xmlPKr:)xZYYQThumbnails/thumbnail.pngPKr:x C1! settings.xmlPKr:|r*cMETA-INF/manifest.xmlPKIfreemind-0.9.0/freemind/doc/freemind_ru.mm0000644000000000000000000064044211527433212017211 0ustar rootroot

FreeMind
- free mind mapping software -

, mailto:don.bonton@supermail.com. , mailto:don.bonton@supermail.com?subject=Last phone call.

HTML

:

. .
:

1

2

3

4.

.

freemind-0.9.0/freemind/doc/freemind_ja.mm0000644000000000000000000061124011527433212017147 0ustar rootroot

FreeMind
- フリーのマインドマップ作成ソフト  -

FreeMind

ホームページ

ファイル操作

新規マップ

Ctrl+N

マップを開く

Ctrl+O

保存

Ctrl+S

名前を付けて保存

Ctrl+Shift+S

印刷

Ctrl+P

閉じる

Ctrl+W

終了

Ctrl+Q

前のマップへ

Alt+Shift+LEFT

次のマップへ

Alt+Shift+RIGHT

HTMLにエクスポート

Ctrl+E

枝をHTMLにエクスポート

Ctrl+H

枝を新規ファイルにエクスポート

Alt+Shift+A

履歴の最新ファイルを開く

Ctrl+Shift+W

編集

Find        - Ctrl+F

Find next   - Ctrl+G

Cut         - Ctrl+X

Copy        - Ctrl+C

Copy single - Ctrl+Shift+C

Paste       - Ctrl+V

MindMap mode - Alt+1

Browse mode  - Alt+2

File mode    - Alt+3

ノード書式

Italicize                 - Ctrl+I

Bold                      - Ctrl+B

Cloud                     - Ctrl+Shift+B

Change node color         - Alt+Shift+F

Blend node color          - Alt+Shift+B

Change node edge color    - Alt+Shift+E

Increase node font size   - Ctrl+'+'

decrease node font size   - Ctrl+'-'

ナビゲーション

Go to root  - ESCAPEMove up     - UPMove down   - DOWNMove left   - LEFTMove right  - RIGHTFollow link - Ctrl+ENTERZoom out    - Alt+UPZoom in     - Alt+DOWN

ノードの移動

Move node up              - Ctrl+UPMove node down            - Ctrl+DOWNMove node left            - Ctrl+LEFTMove node right           - Ctrl+RIGHT

ノードの追加

Add sibling node   - ENTERAdd child node     - INSERTAdd sibling before - Shift+ENTERAdd new parent     - Shift+INSERT

ノードの編集

Edit selected node        - F2Edit long node            - Alt+ENTERJoin nodes                - Ctrl+JToggle folded             - SPACEToggle children folded    - Ctrl+SPACESet link by filechooser   - Ctrl+Shift+KSet link by text entry    - Ctrl+KSet image by filechooser  - Alt+K

訳注)訳出していません。

訳注)訳出していません。

ウェブサイトへのFreeMind

アプレットのインストール

訳注)FreeMind 0.9.0ではインストール済みのため、訳出しません。

FreeMindアプレットの使い方

訳注)訳出していません。

バージョン0.6.5における

インターフェイスの変更点

訳注)FreeMind 0.9.0より古いバージョンの情報のため訳出しません。

訳注)FreeMind 0.9.0より古いバージョンの情報のため訳出しません。

訳注)FreeMind 0.8.0以前の情報のため、訳出しません。最新の日本語翻訳者は、Googleコード「FreeMind日本語化 <http://code.google.com/p/freemind-ja-localization/>」を参照。

Ctrl + Fで検索。

Ctrl + G で次を検索。

マップ全体を検索するには、Escを押してから検索。

→でノードを展開。

ノードにはそれぞれ色をつけられます。

ノードにはそれぞれ背景色をつけられます。

ノードにはそれぞれ書式を設定できます。

ノードのフォントサイズも変えられます

フォントを変えることもできます

ノードスタイルを変えることもできます

ウェブページ

Freemind は、.comを実行ファイルと認識します  :)

ローカル上のフォルダ

実行ファイル

このアイコンは実行ファイルにつきます。

訳注)このノードは、複数行ノードの例です。訳出しません。

改行つきの短い複数行ノード

Line,

and second,

and yet another will do,

so what do you think of that?

訳注)このノードは、改行したノードの例です。訳出しません。

矢印をここから

ここに伸ばして

こんな色でも

こんな向きでも

ここや

ここにも

リッチテキストノード

アプリケーション

楽しさ

FreeMind

L*tus

このノードにはノートが付いています。「表示」メニューで画面下部に表示して使います。ノートは完全に隠れているので、マインドマップに使えるスペースを減らすことができます。長文の入力にはマインドマップをきれいにしたままテキストを入力する最も良い方法です。

訳注)日本語環境では動作しません。

訳注)日本語環境では動作しません。

... または茶色に。

メールアドレスにリンクするには、次のように設定します。

mailto:info@freemind.asia

メールアドレスに件名をつけてリンクするには、次のように設定します。

mailto:info@freemind.asia?subject=FreeMindのヘルプドキュメントについて

訳注)FreeMind 0.9.0日本語環境では動作しません。2つのノードを選んでCtrl+Lをお薦めします。

A new search and replace dialog enables to quickly search for text   fragments and to replace them.

Its functionality includes

  • Find as you type: when you start to specify your search text, it   starts to reduce the amount of displayed nodes. It searches for the   text inside the nodes text only (attached notes are currently not   searched).
  • Sortable node list: the main table is sortable by each criterion. Even   by Icon. Thus, it is easy to find all nodes with attached note for   example. Or to sort them by creation date to get the latest changes to   the map!
  • Cursor support: moving down moves from the search field to the replace   field and then into the list.
  • Node Path display: if you select a line, its path from the root of the   map is displayed below.
  • Direct access: if you press enter inside the table, the mind map   displays the selected node (menu item "select" and "select and close").
  • Replace: it is possible to replace all occurences or only the nodes   belonging to the selected lines.
  • Export: new striking possibility. Select some nodes and export them to   a new mindmap. This makes it easy to generate a todo list from a   hierachical mind map. For example, if you mark every todo item with   the bell sign, then simply sort this list by icon and mark those   containing the bell. Then press "export" and you get all these nodes   as single nodes in a new map.

マインドマップ全体を検索します。

正規表現に対応しています。

タイピングと同時に検索結果を表示します。

訳注)Mac OS X 10.6 Leopardでも動作します。

訳注)この機能を使うには、メモ帳(ノートパッド)のようなHTML機能のないテキストエディタからペーストする必要があります。

訳注)「HTMLをペーストするとプレーンテキストとしてペーストされます。さらに、HTML中のリンクは、リンクつきの新しい子ノードとしてペーストされます。」

という意味ですが、FreeMind 0.9.0でHTMLをペーストするとHTMLテキストでペーストされるため、この説明は古いFreeMindのものかもしれません。

訳注)FreeMind 0.9.0では、このようにペーストされないため、訳出しません。

カーソルを上下左右に移動するには、矢印キー。

最初の兄ノードに移動するには、PageUp。

訳注)最初の兄ノードを選んでいる場合は、親の階層の最初の兄ノードに移動します。

最後の弟ノードに移動するには、PageDown。

訳注)最後の弟ノードを選んでいる場合は、親の階層の最後の弟ノードに移動します。

ルートノードに移動するには、Escape。

Internet Explorerのお気に入りをFreeMindにインポートするには、「ファイル」メニューの「インポート」の「エクスプローラのお気に入り」。「お気に入り」を保存したフォルダへのパスを入力する画面が表示されたら、ディスク上の「お気に入り」という名前のフォルダを選択します。Windows 2000ではパスは「C:\Documents and Settings\<ユーザー名>\お気に入り」です。

WordやOutlookとの連携

メールリンクに件名を含めることもできます。

HTMLによるノード内の

リッチテキスト利用

ノードは"SimplyHTML"というリッチテキストエディタでリッチテキストにすることができます。「ノードの長文編集」画面にツールバーが表れない場合は、「ノードの長文編集」画面を閉じてから、ノードを選択して、「書式」メニューの「リッチテキストを使用」を選択します。

HTML 記述例

アイテムを箇条書きにすることができます:

  • 項目1
  • 項目2

太字斜体にすることもできます。  下線取り消し線にすることもできます。また、表も作れます:

セル1

セル2

セル3

セル4.

様々な文字の色をつけることもできます。

FreeMindの画像機能は、まだ準備段階の機能です。

画像には相対リンクを使うこともできます。

訳注)画像が正常に表示されません。古いバージョンのOfficeに含まれている画像へのパスが指定されているようです。

他者との同時編集時の

ファイルロック機能

訳注)自分が編集しているときでもファイルがロックされてしまうバグがあります。

バージョン0.9.0の新機能

訳注)Scripiting Support(スクリプト対応)は、Groovyというスクリプト言語への対応に関する解説です。訳者はGroovyに関する理解がないため、日本語訳を省きました。

主な新機能

訳注)一部のノートは訳出していません。

新しいエディタ

新しいエディタはノードやノート(枠の下にある小さなウィンドウ)の書式設定に対応しました。

(X)HTMLでノードの中に記述されているため、非常に効果的にHTMLにエクスポートすることができます。

ノートの改良

ノートがメインウィンドウに直接連動するようになりました。ノートウィンドウを表示しない場合でも、ツールチップで内容を表示します。

フィルタ

Using Filters the current mindmap can be reduced to nodes satisfying certain criteria. For example, if you only want to see every node containing "TODO", then you have to press on the filter symbol (the funnel beside the zoom box), the filter toolbar appears, choose "edit" and add the condition that the node content contains "TODO". Then select the filter in the filter toolbar. Now, only the filtered nodes and its ancestors are displayed unless you choose "No filtering" in the toolbar.

Using the settings "Show ancestors" and "Show descendants" you can influence the apperance of the parent and child nodes that are connected with the nodes being filtered.

There are many different criteria filters can be based on such as a set of selected nodes, a specific icon and some attributes.

属性

Attributes are additional meta information in the form of text pairs attached to nodes.

Thus, criteria like Context->Home or Context->Job can be expressed. Later a filter limits the display only to certain contexts.

Moreover, Groovy scripts are currently stored within attributes.

表示上の変更点

タブ表示対応

開いているマップが一目でわかるようになりました。

アイコンツールバーのスクロール対応

ユーザビリティの向上

訳注)一部のノートは訳出していません。

上下左右への移動

上下の矢印キー

この方向の矢印キーによる移動は、すでにFreeMind  0.8.0で対応していましたが、このバージョンから全方向に対応しました。

左右の矢印キー

左右の矢印キーによるノードの移動に対応しました。ルートに近づけたり、あるノードの子ノードに移動したりすることができます。また、ルートをまたいで左右に移動することもできます。この機能には、[Ctrl]+[←]および[Ctrl]+[→]を使います。

ツリー内の上下階層の移動に対応

ルートノードをまたぐ移動に対応

メニュー項目に覚えやすいアイコンを表示

書式変更が1回のダイアログで可能に

新しいパターンエディタ

Patterns are very useful helpers to get a consistent layout of your map. You can perform various format changes with one keystroke.

The pattern editor is opened using F11 and presents all currently defined patterns.

The following basic actions are available:

  • You can move the pattern(s) up&down using drag and drop.
  • You can add a new pattern via the action menu.
  • You can create a pattern from the selected nodes. If only one node is selected, its format changes in comparison to an unformatted node build a new pattern. If you have selected several nodes, the format changes that are common to all selected nodes are gathered in a new pattern. For example, if you have a bold node with yellow background and an italic node with the same background color, the newly created pattern would consist of the yellow background change.
  • You can apply patterns to the currently selected nodes and finally,
  • you can remove patterns.

The patterns are stored in the patterns.xml file in your <user directory>/.freemind/ directory and are reloaded the next time you use freemind. The patterns are not part of the maps.

Inside the patterns, there is a left and right hand side. On the right hand side, the format changes are displayed. On the left side there is a plus or minus or empty box. They mean the following:

  • Plus: indicates that the format on the left is applied.
  • Minus: forces the corresponding format to be reverted to the standard value.
  • Empty: No change.

A novelity is the possibility to associate a script to a pattern. Thus, patterns can now change much more than the pure format changes. For example, you can put macros inside the patterns that change the selected or more nodes at once. This functionality can't be overestimated as it opens complete new automatism capabilities to FreeMind.

自動レイアウトがカスタマイズ可能に

Inside the preferences there is the possibility to change the layout of the automatic layout functionality.

Thus, you can change the color and appearance of each level. For example, the used color green is difficult to be read with a beamer. Now, you can change the color to dark green.

Observe, that changes to the specification doesn't change the layout of the map directly. You have to close and reopen the map, first.

Currently, these format specifications are stored in the preferences of the current user and not inside the map. Thus, on a different system, the automatic layout of a map may look different. This will be changed in the next release of FreeMind.

For advanced users it is even possible to change the number of levels. Change something in the preferences of the automatic layout. Now, the format specification is stored in the user preferences. Open the file <user_directory>/.freemind/auto.properties and search for the line automaticLayout_level, and duplicate the last <pattern name=...>...</pattern> entry. Now, you have one level more.

検索と置換にダイアログ表示

A new search and replace dialog enables to quickly search for text fragments and to replace them.

Its functionality includes

  • Find as you type: when you start to specify your search text, it starts to reduce the amount of displayed nodes. It searches for the text inside the nodes text only (attached notes are currently not searched).
  • Sortable node list: the main table is sortable by each criterion. Even by Icon. Thus, it is easy to find all nodes with attached note for example. Or to sort them by creation date to get the latest changes to the map!
  • Cursor support: moving down moves from the search field to the replace field and then into the list.
  • Node Path display: if you select a line, its path from the root of the map is displayed below.
  • Direct access: if you press enter inside the table, the mind map displays the selected node (menu item "select" and "select and close").
  • Replace: it is possible to replace all occurences or only the nodes belonging to the selected lines.
  • Export: new striking possibility. Select some nodes and export them to a new mindmap. This makes it easy to generate a todo list from a hierachical mind map. For example, if you mark every todo item with the bell sign, then simply sort this list by icon and mark those containing the bell. Then press "export" and you get all these nodes as single nodes in a new map.

アイコン

Some key strokes makes the handling of icons even more easier. If you hold the SHIFT key while pressing on an icon on the left toolbar, all other icons are removed and this icon is the only one after the action. This is for example useful for changing the priority of a node.

Another feature comes with pressing CTRL while choosing an icon. It causes this type of icon to be removed one by one. Suppose you have a node with the icons (1)(2)(1)(3) and you press CTRL-1 you get (1)(2)(3). This is useful as with the normal remove methods, only the last icon can be removed.

新たなエクスポート形式

FlashとJavaスクリプトに対応

Flash and Java applet export can be used to bring mindmaps into the internet.

The difference between the two is, that the Java applet looks exactly like the map on the screen, but needs longer to be loaded.

The flash application is very fast and has some different features built in. But it has a different look and feel.

FreeMind can now be scripted by using Groovy scripts. Groovy is a very easy to use scripting language best integrating into FreeMind.

There are two possibilities to use scripts:

  1. Choose the script editor to easily add, change and test your scripts. Technically, scripts are attached to a node via an attribute starting with "script" (like "script1") that contains the script. Every time you choose "Evaluate" from the tools menu, all scripts attached to nodes are executed.
  2. Create or change a pattern and press the script button. The script editor appears and your script will be associated to a pattern. Every time you apply the pattern to some nodes, the script is executed for that nodes automatically. Thus, you can have the scripts with keyboard shortcuts as the patterns are accessible via shortcuts.

Every script is at evaluation time started with two predefined java objects coming from the map:

  • node is the current node. It is a freemind.modes.MindMapNode. This node can be used to retrieve information about the contents, its children or its formatting. Don't use the setter to change the node. Use the following instead:
  • c is the current controller. It is a freemind.modes.mindmapmode.MindMapController. This controller should     be used to change information. For example, if you want to change the nodes text or if you want to add children. The methods that can be used are sumarized in freemind.modes.mindmapmode.actions.MindMapActions.

There are two automatisms regarding the effect of a script:

  1. If a script starts with "=", the result of the script is taken to be the new nodes text. Example script1: =17+4. If executed, the node the script is associated to will be changed to 21.
  2. If a script starts with letters (digits and '_') only and then a "=" sign, like "sum=17+4", the result is taken to be a (possibly new) attribute named "sum" in this case with the content 21.

For more examples consult our little scripting guide below or our web pages.

A last word on security: before scripts is evaluated for the first time in FreeMind, the user is asked whether or not he allows it. The answer can be stored for every script but observe that a malicious script is able to perform every action on your computer that your users rights allow up to delete all files or send them to pirates.ru. This said, be careful and don't allow scripts when you don't know that the author is trusted. Finally, scripts are never evaluated automatically in FreeMind for these reasons. Thus, you can open a map without problems and have a look at the scripts it contains.

If your scripts want to change some map data (which they commonly want to) they should rely on the methods provided by the MindMapController c.

These methods are summarized and partially documented in the class "MindMapActions":

http://freemind.cvs.sourceforge.net/freemind/freemind/freemind/modes/mindmapmode/actions/MindMapActions.java?view=log&pathrev=fm_060405_integration

The listeners mentioned below (ie. NodeSelectionListener and NodeLifetimeListener) can be registered and found in the class "ModeController" (also c):

http://freemind.cvs.sourceforge.net/freemind/freemind/freemind/modes/ModeController.java?view=log&pathrev=fm_060405_integration

Here we present some snippets of useful Groovy code that can be used as parts of your scripts. More scripts can be found on our web sites.

  • Change the node text:
    =17+4
    (Explanation: if a script starts with "=", the result of the script is taken as the new nodes text.)
  • Change an attributes value:
    attribute_name=17+4
    (Explanation: if a script starts with a name and then directly a "=" sign, its result is associated to this attribute which is created if not already present.)
  • Read and change the nodes text:
    c.setNodeText(node, node.getText() + "_CHANGED");
  • Read an attribute
    def value = node.getAttribute("key"); // value is of type String.

  • Create or change attributes: the following method checks whether or not an attribute with the same key exists and replaces it. Otherwise a new attribute is created and added.
    c.editAttribute(node, "key", "new value");
  • Remove an attribute by name:
    c.editAttribute(node, "key", null);
    This method returns the former index of the attribute, or -1 if the key wasn't found.
  • Traverse all children
    def it = node.childrenUnfolded();
    while(it.hasNext()) {
    def child = it.next();
    }
  • Traverse all children and its children recursively. The following examples prints the content of every node including its childs
    def stack = new java.util.Stack();
    stack.push(node);
    while(stack.size()>0) {
    def current =stack.pop();
    print current.getShortText(c) + ", ";
    stack.addAll(current.getChildren());
    }


  • Real world example: nodes may have an attribute "work" that specifies the work needed for the specific work package (e.g. in days). This script computes the sum of all work packages such that each node gets an attribute "sum" containing the amount of work needed for all descendants. This script, if executed via Alt+F8, automatically applies to the root of the map. But, every time, you change the values, you have to reexecute this script.

    def calcWork(child) {
    	def sum = 0;
    	def it = child.childrenUnfolded(); 
    	while(it.hasNext()) { 
    		def child2 = it.next(); 
    		sum += calcWork(child2);
    		def w = child2.getAttribute("work");
    		if(w != null)
    			sum += Integer.parseInt( w);
    	}
    	if(sum>0)
    		c.editAttribute(child, "sum", (String) sum);
    	return sum;
    }
    
    calcWork(c.getRootNode());
  • A very advanced example: the last script is integrated into a listener that detects node changes, so the sums are always recreated when a node is changed. This script introduces a new element in scripting: the "cookies". It is a usual HashMap where scripts can store values that they need the next time, they are executed. For every map, there is a new cookie map, such that cookies are map local. Moreover, they are not stored persistently and are lost after termination of FreeMind or after closing a map. In this example, they serve as a static variable in which it is stored whether or not the script was already executed and which listener was used in order to deregister the old one first.
    class MyNodeListener implements freemind.modes.ModeController.NodeSelectionListener {
    	freemind.modes.mindmapmode.MindMapController c;
            MyNodeListener(freemind.modes.mindmapmode.MindMapController con) {
    		this.c = con;
    		}
    
    		/** 
             * Sent, if a node is changed
             * */
            void onUpdateNodeHook(freemind.modes.MindMapNode node){		
    			calcWork(c.getRootNode());
    		};
    
            /** Is sent when a node is selected.
             */
            void onSelectHook(freemind.view.mindmapview.NodeView node){};
            /**
             * Is sent when a node is deselected.
             */
            void onDeselectHook(freemind.view.mindmapview.NodeView node){};
    
    		/**
    		 * Is issued before a node is saved (eg. to save its notes, too, even if the notes is currently edited).
    		 */
    		void onSaveNode(freemind.modes.MindMapNode node){};
    
    def calcWork(child) {
    	def sum = 0;
    	def it = child.childrenUnfolded(); 
    	while(it.hasNext()) { 
    		def child2 = it.next(); 
    		sum += calcWork(child2);
    		def w = child2.getAttribute("work");
    		if(w != null)
    			sum += Integer.parseInt( w);
    	}
    	if(sum>0)
    		c.editAttribute(child, "sum", (String) sum);
    	return sum;
    }
    
    }
    
    def cookieKey = "work_update_listener";
    if(cookies.get(cookieKey) != null) {
    	c.deregisterNodeSelectionListener(cookies.get(cookieKey));
    }
    def newListener = new MyNodeListener(c);
    cookies.put(cookieKey, newListener);
    c.registerNodeSelectionListener(newListener);
          
  • A sorting example: Currently we provide a function that sorts all children by name, but if you want to sort them by their icons for example, you can use the following script (or change it, if you have different sorting criteria):
    import java.awt.datatransfer.Transferable;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.TreeSet;
    import java.util.Vector;
    import freemind.modes.MindMapNode;
    
    	class IconComparator implements java.util.Comparator {
    			int compare(java.lang.Object pArg0, java.lang.Object pArg1) {
    				if (pArg0 instanceof MindMapNode) {
    					MindMapNode node1 = (MindMapNode) pArg0;
    					if (pArg1 instanceof MindMapNode) {
    						MindMapNode node2 = (MindMapNode) pArg1;
    						String iconText1 = getIconText(node1);
    						String iconText2 = getIconText(node2);
    						//print "comparing" + iconText1 + " with " + iconText2 + "\n";
    						return iconText1.compareToIgnoreCase(iconText2);
    					}
    				}
    				return 0;
    			}
    		def getIconText(MindMapNode n) {
    			if(n.getIcons() == null || n.getIcons().size()==0) 
    				return "";
    			def retString = "";
    			def it = n.getIcons().iterator();
    			while(it.hasNext()) {
    				retString +=it.next().getName()+", ";
    			}
    			return retString;
    		}
    	}
    
    
    		// we want to sort the children of the node:
    	 	Vector children = new Vector();
    		// put in all children of the node
    		children.addAll(node.getChildren());
    		// sort them
    		java.util.Collections.sort(children, new IconComparator());
    		//print "The set has " + children.size() + " entries\n";
    		// now, as it is sorted. we cut the children
    		def it2 = children.iterator();
    		while (it2.hasNext()) {
    			MindMapNode child = (MindMapNode) it2.next();
    			Vector childList = new Vector();
    			childList.add(child);
    			Transferable cut = c.cut(childList);
    			// paste directly again causes that the node is added as the last one.
    			c.paste(cut, node);
    		}
    		c.select(c.getNodeView(node));
  • A presentation script. Everytime you select a node, all other nodes are closed and this node is expanded by one. Just give it a try..
    class MyNodeListener implements freemind.modes.ModeController.NodeSelectionListener {
    	freemind.modes.mindmapmode.MindMapController c;
            MyNodeListener(freemind.modes.mindmapmode.MindMapController con) {
    		this.c = con;
    		}
    
    		/** 
             * Sent, if a node is changed
             * */
            void onUpdateNodeHook(freemind.modes.MindMapNode node){		
    		};
    
            /** Is sent when a node is selected.
             */
            void onSelectHook(freemind.view.mindmapview.NodeView node){
    			if(c.getSelecteds().size()>1)
    				return;
    			// unfold node:
    			c.setFolded(node.getModel(), false);
    			// fold every child:
                    def it2 = node.getModel().childrenUnfolded().iterator();
                    while (it2.hasNext()) {
                            def child = it2.next();
    				  c.setFolded(child, true);
    			}
    			// close everything else:
    			foldEverybody(node.getModel().getParent(),node.getModel());
    		};
            /**
             * Is sent when a node is deselected.
             */
            void onDeselectHook(freemind.view.mindmapview.NodeView node){};
    
    		/**
    		 * Is issued before a node is saved (eg. to save its notes, too, even if the notes is currently edited).
    		 */
    		void onSaveNode(freemind.modes.MindMapNode node){};
    def foldEverybody(child, exception) {
    		if(child == null || child.isRoot())
    			return;
            def it = child.childrenUnfolded();
            while(it.hasNext()) {
                    def child2 = it.next();
    			if(child2 != exception) {
    				c.setFolded(child2, true);
    			}
            }
    	if(!child.getParent().isRoot())
    		foldEverybody(child.getParent(), exception.getParent());
    }
    
    
    }
    
    def cookieKey = "presentation_listener";
    if(cookies.get(cookieKey) != null) {
    	c.deregisterNodeSelectionListener(cookies.get(cookieKey));
    }
    def newListener = new MyNodeListener(c);
    cookies.put(cookieKey, newListener);
    c.registerNodeSelectionListener(newListener);

Once, you've created or found some interesting scripts, you probably want to get a FreeMind menu item with an own shortcut to execute the script.

To do this, save the script to a file and edit "ScriptingEngine.xml" inside the FreeMind script directory inside your installation.

You'll find a template for a script action that is commented out (ie. surrounded by <!-- ... -->). Uncomment the template and fill out the following bold places:

      <plugin_action
      name="GroovyGroovy"
      documentation="this is my first installed groovy script."
      label="plugins/GroovyScript1"
      base="freemind.extensions.ModeControllerHookAdapter"
      class_name="plugins.script.ScriptingEngine">
      <plugin_mode class_name="freemind.modes.mindmapmode"/>
      <plugin_menu location="menu_bar/extras/first/scripting/groovy1"/>
      <plugin_property name="ScriptLocation" value="/home/foltin/test.groovy"/>
      </plugin_action>
    

The most important change is the location of the script. Moreover, if you have several scripts you want to install, the labels and the menu_location must be unique.

If you now restart FreeMind you get a new menu item (in this example in the "Extras" menu) that carries out your script. Observe, that the "node" variable points to the root node.

If you want to have a keyboard short cut for the new script, you have to add the bold line into the entry in ScriptingEngine.xml like:

      <plugin_action
      name="GroovyGroovy"
      documentation="this is my first installed groovy script."
      label="plugins/GroovyScript1"
      key_stroke="control shift M" 
      base="freemind.extensions.ModeControllerHookAdapter"
      class_name="plugins.script.ScriptingEngine">
      <plugin_mode class_name="freemind.modes.mindmapmode"/>
      <plugin_menu location="menu_bar/extras/first/scripting/groovy1"/>
      <plugin_property name="ScriptLocation" value="/home/foltin/test.groovy"/>
      </plugin_action>
    
freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_et.odt0000644000000000000000000007572611527433212023007 0ustar rootrootPKB-:^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKB-:Configurations2/statusbar/PKB-:'Configurations2/accelerator/current.xmlPKPKB-:Configurations2/floater/PKB-:Configurations2/popupmenu/PKB-:Configurations2/progressbar/PKB-:Configurations2/menubar/PKB-:Configurations2/toolbar/PKB-:Configurations2/images/Bitmaps/PKB-:t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKa*؉'N=>0 IH]y2P̋̓ $J! qO1$Uh 8EUa/ \D> X ^;GqZD# (G!=ba:ʗ>m)=z+W|`Ve[]W,rPxԫ1GCϤxP0zU2}n`20[^ϔNV.'K =(f2Ӳ>d`UDټHAB24Jǃ1,27dk^.x'ϔ.'\ mSP9+w3.1DbZfی?J'A+wdch\%p,h_AT8;+L݅3>F Q@&cb2`LfxIڐOLCH o[ԴǴf&/fFYvA [5cZGc.g֩f?2r Dy.{h x\IV">3.$T1+w=@weߋp)`m #2>!N-=7>&z.?}V.Nܬh'7G4}qQZ׈QF /FPi2sʮ} UdM)b]/F`8d*bƄ>`ڹ\pn%–N>XBؽmoSЖVAsi9m=K{R>Y}8߭n RQ]JBN[/[e;k8Z:kRNg LGKv.-Uڹ^Zw[/νb 8e[/νbE}q7 ixm |x .O}Ȍ!LhXov{ۛۅH-W~]PLl/m;{%}7im_b 8yߨ~k^ǚzފVp^x%! `@@8L3x8E$?ԓ??nIU|v8%Zfu=:rc6m(Ao<}"(6VUӷoy UFc.} 17 >.0פ<)'G";$LUMN-,8lӲV8/[y=z^hUTVآ>8;o&|y*¼2O(1@4f*iFjU06^i̗j I9$j^WFcBz,\[t"5# xr9* "xr,[*UԙjeIVd X#Ԭkp}t \h];N];P nu#VJu j Ḷy0A4pxMFXv W(r9O1'KZ'KbN Q@- |"aLhĊvsHf0q Êk)`>}@4eWn9މ 0a<ȯPv:w(w@18ȸ"Hc$F= &Ԉ24Q7x ti%{NxUH*"u+^G޾ %&F7Btun.Z{_Et^f`!kޅ5k˸x%n_8|ȽbEy/]'%\꠭6S%Cc-&]bzyG.p'g r'vn~~hT>VsE HO+W& ްްJްްްްfo2eV@jrTӍLTgk gU<$EEi#j'ݰ9SͶfj*-{UԪ`A]=ahɨ0ʸ{J*G'ܺR'dhf b}߈5TY|b; w]^ y!WF]k%ۈ6=M t` L˞ꋸFL7 Tul},j[CON/kf&;//>)T|5S:+Ȥ;_ߨ؈XlS겎U~C$Ė'!zX!ņDĤ647DŽl[Dі%bRr)TJ:ڰ>2c@(.[A0(?QM.-(%zPjRK8X%,[+S.u&θ=up|:701ߟmMe:L,t썫>X*کĦ޲ ]?~df۫/U^]>}㖝ؓ_Ȍo/uLm< GA5T0-zPU\d:#<E&**}bdKH A7'Іy'}h'XC䱩>DS 7m9'm.%Nҫˆ‘4sͥV' (]/=?V2/7O\V'7՝PA L|NÀ ?ʍbյ ⹪w{]ʡ!kǐe_w bw=XK҆_ՆG YP# d`Og؉[X"Sv.!,OA8/ ߧY⑔ܞ_,Bu@J(6tc\Uȹr6og( ɧ[>N> u=PKxPKB-: styles.xmlZݏ6P{:ڒweS=w.Dl$Q ) )J,&؇K g~/Ig>a0cE,^l}xKnHSU"*g&J3f0P+K*YU\ 3JpV>ʨ#FٟAOt=]ag'NF^?=S'TFRAbTCƋOVrXj.f- 7|e%3Õ 1Ta[*Q&=o>N~>V((bP64#5k'$[l@r hEA2>K yqWVE++pd`ˁ$ҳ@% Dm nd!*](uFql#ƳƲj~IS^3D3=E^s1'QfOC@ ?+yz$!=4]'>_3BYIKp4Fn0KCګ܆9lG.|cUP%sӓ +Ym0jz¬m|ƿƓ6ZҤ&-⭐DK-3P7>i$9ii%KH#L޹ z,*ٔ Kr79 zRK;[>_l2:۟6 ζ60yݶq`B~h6B<ȷ`ǡm"ўBe8ݢSW j4jBNU#V=>f/]_ _PKWҀ ,PKB-:,<<meta.xml OpenOffice.org/3.0$Linux OpenOffice.org_project/300m9$Build-93582008-07-11T17:07:022009-01-14T01:10:042008-07-11T18:27:1238PT04H01M51SPKB-:Thumbnails/thumbnail.pngy<^YPe(Z!>!2ۄGŒ eHDdS:2*ΗȾƞeil{_u?s|<1ƏJs N{O00h"!~[q+ꆆ}LFQf+G_yJ]ZWaC9+8ZxEMLm<(|&CԸy8 H(EGBi&̈́ɳETmNP(;$+~ ekC.~xG{Sh1omR 3B4GU^.8'ӣ(o;8ݔMitFv ղve?b̯h%&zo7~n~Mk.3Xi lq[I볋Qe6P%;E7fFJ3Jߟy!,(?g3ҧ⹣$qћuc'b'GӨj1@w <1sp%8UP/`Cky:

R jte Kcu dF9Bξ!O ^fLPnzާ_9fœ?&a MGvOI+,6{1aHJbfJk-(l?O(2HI!3}iOxHϿ*vzhH9Ujc?q#~~ k8CbJn4`\-dZT>^x_ yO)$Yާ'z95?, ΋ s=Y “'\_^*S00'/`+";POv6S)6gee:C}%T|gzg^!(3=UpV=RS`O b#d BOd?tĩyl]֯頼>XP~Mf}flW-F4 ƞҞN ~.ON;{;uL:;ovFDԿtp 6({OJ,M9zc#Q\e鰬KgZU[7FL{Ba7Hc v|P?gNMNDNFB}K/\F|6?TБFY>!dd݉K 6f|WI;v54_Ú,A~zRal+37\S1q_pZ({nU]ۘ質v!9} o?1j#IE:0M+E7pezP9%F,ȫ \HpAAN.:VjV` ,j u?+B9Gf 6F{MC!`} fFم׌2V\X3p>:Ut,aeOjEi($$̟E%_P Kc$!қ +e|D&tXI9ʥep*\EP]ԟV $D|K3//h+q8KM?w/0%@w]${ӚfXRl.z4Z@ d"8Wƌ.b7S׆?* LwC1u`uQ[Ml^#iU5_cXӽYކ}~os9Q9Q*N 0wZ} 5@pӾ70W)0\fc쓁6VaP/?yx`rB)v|]fqP=lk& 9MBVK;>'+ۓ3qH=+o7kWV"?U7h8}~kghrÌW 0vZ., j:p=<]SJjz&P4z{ t:z1_xF`D>7ҋQL-^cwDv_q=BLۋ}̮%T(]WUmFni:eCܜ+HM+--;vRc!f9~o\#5 /#:"&9`L"dsߋc6oeܠQc䋗!%+GUϲXukF,o.|rא%99/oEqvc"~iթwd^sr E '&FwBoR揾s ~"gp$7B`V3wa?C4}c !2N@5 U,cl"[$fPڃ1W6msNV|̔*:~T }_=:JhۀHJR MB]36?-ܙHV "2Q $R"yԴ~ó~ggmoe +:05a~+(D-|\"rBJ`L.C{%Q|Iwc`UCq(luolW\~bggpk~xvEjR#,9 le;hmfI9S'yOTQwYo J\([yk}2 M#ı0u![q~ʎIFCO˖*&081N<Cys#BLS`l6T2d]CE,3CuV5w"iQ(2JrK+S20k.1KyCrILp˒S:Bl::3v[51s}n U׺S^bxqe.>D1*AIӮPk ٝBbm6"Z @Ќ3Õ"7t ZuI:*]u^-WB\]Wd ʩ1ڻΎ3ވe rwfG.ţ8_x1 =ːGٱ #h NJYkߓc/f1J( +V_ƅF!/7Zyy%r3ͥǺa!A !AudYs\J{6ݷ+B 7d}N7j(4u,qA >o C+p;]ןߨl)-ƲF:8IA;0Ii0+[oUm'hļѢBh,Hnd@"Kcr=:V^R}ͿY̮U)Ũsb{tVRADax蜤MhQM>8)mN!{:+<:o+1 ow(gIcxFt]V94o5,Rwx$_Xڒ"rtD :۵+>P'nռEb.2'"K}7K.@QFףw5i]':*m@`_2vj :.[t#O2Eڭ_?hVȇ0Q5=] c"p+2bQɄx7`TrNi7D !)ڏpP˥qdAe?jfͳ(⶝[A@$rIn]N+bퟍf32(l(q32aq+>uK5Ko -\z9P/SOB,k K&ZR!u;c=ԚoEX2v.غd'݋Z*+v^k'<TWìL<龒;7y*kK< jpz*M03qR?."EiX)J*Y(sK[4dliݥxƾiY%.qR?qًTGZfcCba > cVB:?W)={ }=3.S%EyO#X1-0 -Ewz% <%o'Ҵ%H.9IlC.f  G#Ȋ[eFp`G'o:{׹|+\/<^m PIQȯ {H]6!Q\O[XJ~˲d+UhJDO-ήwЋQMAMoUl] $d%<̠ \쨴t!kD^XOq8{19HG FUT Gf:܄b}LiQQѻx ש[w~>{-F@?d,ꖛChgZ^ŭ'% ѓL Xa:Rڇ .Gp_IG/D]kLPGo Bļ!!0|G2CKyC&ȓwod-dZR$˥ԎM9Ƚ5"G}^xAz%c4~Dc!)RmjԽ-< 2hyL椧>Khi#~?L%O5Nd5O:r3?")|+R~YFٹLt&b!6 }[VJ[XuˤWP> nsI-{3~ff?ύj7na\6qx,j0cĻ]|oZmۼ4@Ysv֭&\ֿ،7jr<5Mk!FݿCZ58'|.43%V\X6](wQ]2d BRc׿ڳzVԶh ~u`G4Tz4؈ \ J+h'd/KjקuB7ab4 %KnSp`MwH>h.]Љ.%4>h sQF|S0mYP^뽑yuFq!x`ۙh]/'W3+ms>[Jy%)'ދ$i.WߕA9nVW ;P 4[Lِk\Sq,_zJceg1>c D!^PKz;HPKB-: settings.xmlZ[s:~?"3)M`:5x9#ȒGן@K͜<b{ֹ:+rvke?0!Z]Z놏ǡ{ILKP 3|VDH+_]H-iȦVT\df٧'.&l>ϤwK=d_UUqƤr}Ym|U\a~f`q*tlVi,0{zGZQLYU&Qk0VD_箎*&9dpl5;{quqyNgm1ˠ6`9¬ J$Թ {?H|2K"^7LJ`ZEG߮^PU+WW_*U# J%kS]U援ĕVyd9(i3.P}DOT$bU}*%Χ'+qqn{p$;@S/`ebm_q?Iku|INL=bS 2"VfOS4`.$/P9vN ؟5!ǹk};c=\oщzvGkV8˟VzW|}4{m/Sw'睏:Q>l߻ˬ /a︥q1?<ʭ;Q:b"7|A%zm5Dͮ#٬Vqg~&{3/7~ԓa<=Qw]}ݠʴ s.Ǵ1ѝc t_M˅3eB8qjݕl.5N63fNǚW(TjQKZC='YEN/$v++S.Mf{GVVC:M+M4|vdHX3aJLC (7 ^Jؑoa6/ .Rjc"D&ԺOkc=8IiҒ#VjjܜZ Lb2kD̀|`ɮxCz6O 7K<Ҷ9]d[L>. qaNLU$4NDOkNFFf"eAR~38ſ8TpN،O)5G)SV-ǂ|kE(T h?2"-ӖtF} HlK:a %dj6+t]f̱51S>+t־7,@= 9MMþk%M''lY~pcNmT(i؛j`4փ!5F"Uf?APKzQyF!PKB-:META-INF/manifest.xmln }֋5VMv HO+ o?L6̥pß8a>u29uBYNP\By߽ ^͖S契u]V9J:p%RPe%7p#$a='71Kl")8U ZX"C8!j>nax%!)[z;xssꐡw{f !t[<7VFj n&  ouk;z48j-EZpt#cEx=8דy<<(>XFo7y(||Y?/M\,GLӫ⃴>>ܥ@\g nrl&ˠ (^>m`1|.~PK|r*PKB-:^2 ''mimetypePKB-:MConfigurations2/statusbar/PKB-:'Configurations2/accelerator/current.xmlPKB-:Configurations2/floater/PKB-:Configurations2/popupmenu/PKB-:JConfigurations2/progressbar/PKB-:Configurations2/menubar/PKB-:Configurations2/toolbar/PKB-:Configurations2/images/Bitmaps/PKB-:t2`.`.--Pictures/1000020100000081000000609CB17181.pngPKB-:x 0content.xmlPKB-:WҀ , -Cstyles.xmlPKB-:,<<Kmeta.xmlPKB-:z;HGPThumbnails/thumbnail.pngPKB-:zQyF! oosettings.xmlPKB-:|r*uMETA-INF/manifest.xmlPKIow freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_ja.pdf0000644000000000000000000050766211527433212022753 0ustar rootroot%PDF-1.3 % 913 0 obj << /Linearized 1 /O 916 /H [ 5926 480 ] /L 167850 /E 76149 /N 1 /T 149471 >> endobj xref 913 255 0000000016 00000 n 0000005453 00000 n 0000005790 00000 n 0000006406 00000 n 0000009627 00000 n 0000009679 00000 n 0000009731 00000 n 0000009783 00000 n 0000009835 00000 n 0000009887 00000 n 0000009939 00000 n 0000009991 00000 n 0000010043 00000 n 0000010095 00000 n 0000010147 00000 n 0000010199 00000 n 0000010251 00000 n 0000010303 00000 n 0000010355 00000 n 0000010407 00000 n 0000010459 00000 n 0000010911 00000 n 0000011101 00000 n 0000011573 00000 n 0000011763 00000 n 0000011958 00000 n 0000012402 00000 n 0000012535 00000 n 0000012577 00000 n 0000012628 00000 n 0000012679 00000 n 0000012730 00000 n 0000012781 00000 n 0000012811 00000 n 0000012862 00000 n 0000012913 00000 n 0000012965 00000 n 0000013017 00000 n 0000013068 00000 n 0000013119 00000 n 0000013170 00000 n 0000013222 00000 n 0000013274 00000 n 0000013326 00000 n 0000013378 00000 n 0000013429 00000 n 0000013481 00000 n 0000013533 00000 n 0000013585 00000 n 0000013636 00000 n 0000013687 00000 n 0000013739 00000 n 0000013790 00000 n 0000013842 00000 n 0000013894 00000 n 0000013917 00000 n 0000016888 00000 n 0000017020 00000 n 0000017043 00000 n 0000019370 00000 n 0000019393 00000 n 0000021896 00000 n 0000021919 00000 n 0000024509 00000 n 0000024532 00000 n 0000026898 00000 n 0000026921 00000 n 0000029473 00000 n 0000029496 00000 n 0000031887 00000 n 0000031910 00000 n 0000034533 00000 n 0000034728 00000 n 0000034938 00000 n 0000035130 00000 n 0000035319 00000 n 0000035517 00000 n 0000035721 00000 n 0000035916 00000 n 0000036108 00000 n 0000036297 00000 n 0000036486 00000 n 0000037325 00000 n 0000037514 00000 n 0000037771 00000 n 0000038026 00000 n 0000038239 00000 n 0000038434 00000 n 0000038636 00000 n 0000038859 00000 n 0000041538 00000 n 0000041659 00000 n 0000041849 00000 n 0000042020 00000 n 0000042194 00000 n 0000042378 00000 n 0000042552 00000 n 0000042723 00000 n 0000042897 00000 n 0000043084 00000 n 0000043271 00000 n 0000043461 00000 n 0000043632 00000 n 0000043813 00000 n 0000044003 00000 n 0000044187 00000 n 0000044383 00000 n 0000044554 00000 n 0000044678 00000 n 0000044877 00000 n 0000045073 00000 n 0000045260 00000 n 0000045453 00000 n 0000045649 00000 n 0000045842 00000 n 0000046029 00000 n 0000046225 00000 n 0000046412 00000 n 0000046492 00000 n 0000046700 00000 n 0000046883 00000 n 0000047066 00000 n 0000047263 00000 n 0000047458 00000 n 0000047652 00000 n 0000047847 00000 n 0000048043 00000 n 0000048241 00000 n 0000048439 00000 n 0000048643 00000 n 0000048856 00000 n 0000049070 00000 n 0000049253 00000 n 0000049470 00000 n 0000049655 00000 n 0000049873 00000 n 0000050058 00000 n 0000050280 00000 n 0000050478 00000 n 0000050700 00000 n 0000050906 00000 n 0000051128 00000 n 0000051337 00000 n 0000051562 00000 n 0000051778 00000 n 0000052003 00000 n 0000052229 00000 n 0000052457 00000 n 0000052689 00000 n 0000052917 00000 n 0000053153 00000 n 0000053381 00000 n 0000053620 00000 n 0000053851 00000 n 0000054091 00000 n 0000054322 00000 n 0000054567 00000 n 0000054798 00000 n 0000055043 00000 n 0000055274 00000 n 0000055522 00000 n 0000055753 00000 n 0000056001 00000 n 0000056235 00000 n 0000056483 00000 n 0000056719 00000 n 0000056967 00000 n 0000057201 00000 n 0000057381 00000 n 0000057629 00000 n 0000057863 00000 n 0000058046 00000 n 0000058294 00000 n 0000058526 00000 n 0000058709 00000 n 0000058960 00000 n 0000059194 00000 n 0000059449 00000 n 0000059670 00000 n 0000059890 00000 n 0000060110 00000 n 0000060329 00000 n 0000060548 00000 n 0000060766 00000 n 0000060981 00000 n 0000061187 00000 n 0000061391 00000 n 0000061601 00000 n 0000061814 00000 n 0000062030 00000 n 0000062246 00000 n 0000062462 00000 n 0000062678 00000 n 0000062894 00000 n 0000063110 00000 n 0000063325 00000 n 0000063535 00000 n 0000063745 00000 n 0000063956 00000 n 0000064170 00000 n 0000064382 00000 n 0000064594 00000 n 0000064806 00000 n 0000065019 00000 n 0000065232 00000 n 0000065445 00000 n 0000065659 00000 n 0000065873 00000 n 0000066087 00000 n 0000066301 00000 n 0000066515 00000 n 0000066729 00000 n 0000066943 00000 n 0000067157 00000 n 0000067371 00000 n 0000067584 00000 n 0000067797 00000 n 0000068010 00000 n 0000068223 00000 n 0000068446 00000 n 0000068688 00000 n 0000068909 00000 n 0000069148 00000 n 0000069369 00000 n 0000069602 00000 n 0000069820 00000 n 0000070051 00000 n 0000070266 00000 n 0000070497 00000 n 0000070712 00000 n 0000070943 00000 n 0000071155 00000 n 0000071383 00000 n 0000071595 00000 n 0000071823 00000 n 0000072028 00000 n 0000072253 00000 n 0000072457 00000 n 0000072680 00000 n 0000072878 00000 n 0000073099 00000 n 0000073282 00000 n 0000073503 00000 n 0000073686 00000 n 0000073904 00000 n 0000074119 00000 n 0000074331 00000 n 0000074542 00000 n 0000074750 00000 n 0000074954 00000 n 0000075155 00000 n 0000075352 00000 n 0000075535 00000 n 0000005926 00000 n 0000006383 00000 n trailer << /Size 1168 /Info 910 0 R /Root 914 0 R /Prev 149460 /ID[<060429cdcbfa87da010f109b4d1803eb>] >> startxref 0 %%EOF 914 0 obj << /Type /Catalog /Pages 912 0 R /Metadata 911 0 R /OpenAction [ 916 0 R /XYZ null null null ] /PageMode /UseNone /PageLabels 909 0 R /StructTreeRoot 915 0 R /PieceInfo << /MarkedPDF << /LastModified (D:20100415011300)>> >> /LastModified (D:20100415011300) /MarkInfo << /Marked true /LetterspaceFlags 0 >> >> endobj 915 0 obj << /Type /StructTreeRoot /RoleMap 1 0 R /ClassMap 4 0 R /K 228 0 R /ParentTree 902 0 R /ParentTreeNextKey 1 >> endobj 1166 0 obj << /S 36 /L 467 /C 483 /Filter /FlateDecode /Length 1167 0 R >> stream HlKA*dffٛ{qsA ݋?^=xd#܋1C+Txͪ7y30<aJXJ}Xlj:ЯmyS0&>Je[az:p `)pe MX  4Ō&5 C8FL Iq/ѯ*ox*:.Q UCF.}cԏ1kĢ1IiiL]+QSӚ |pgƊ/{fnZ41kQ.Um:4y 'hKn9m4L4Y"őT=ҠIC "(-;_?#`)} endstream endobj 1167 0 obj 355 endobj 916 0 obj << /Type /Page /Parent 912 0 R /Resources << /ColorSpace << /CS43 940 0 R /CS44 945 0 R /CS45 946 0 R /CS46 948 0 R /CS47 947 0 R /CS48 944 0 R /CS49 941 0 R /CS50 942 0 R /CS51 943 0 R /CS52 932 0 R /CS53 921 0 R /CS54 922 0 R /CS55 923 0 R /CS56 920 0 R /CS57 917 0 R /CS58 918 0 R /CS59 919 0 R /CS60 924 0 R /CS61 949 0 R /CS62 930 0 R /CS63 931 0 R /CS64 928 0 R /CS65 925 0 R /CS66 926 0 R /CS67 927 0 R /CS68 929 0 R /CS69 960 0 R /CS70 965 0 R /CS71 958 0 R /CS72 956 0 R /CS73 954 0 R /CS74 953 0 R /CS75 966 0 R /CS76 955 0 R /CS77 963 0 R /CS78 959 0 R /CS79 957 0 R /CS80 962 0 R /CS81 951 0 R /CS82 950 0 R /CS83 952 0 R /CS84 964 0 R /CS85 961 0 R >> /ExtGState << /GS2 1030 0 R /GS3 1031 0 R >> /Font << /TT3 938 0 R /C2_2 939 0 R /TT4 933 0 R /TT5 935 0 R /C2_3 969 0 R >> /XObject << /Im134 1032 0 R /Im135 1033 0 R /Im136 1034 0 R /Im137 1035 0 R /Im138 1036 0 R /Im139 1037 0 R /Im140 1038 0 R /Im141 1039 0 R /Im142 1040 0 R /Im143 1041 0 R /Im144 1042 0 R /Im145 1043 0 R /Im146 1044 0 R /Im147 1045 0 R /Im148 1046 0 R /Im149 1047 0 R /Im150 1048 0 R /Im151 1049 0 R /Im152 1050 0 R /Im153 1051 0 R /Im154 1052 0 R /Im155 1053 0 R /Im156 1054 0 R /Im157 1055 0 R /Im158 1056 0 R /Im159 1057 0 R /Im160 1058 0 R /Im161 1059 0 R /Im162 1060 0 R /Im163 1061 0 R /Im164 1062 0 R /Im165 1063 0 R /Im166 1064 0 R /Im167 1065 0 R /Im168 1066 0 R /Im169 1067 0 R /Im170 1068 0 R /Im171 1069 0 R /Im172 1070 0 R /Im173 1071 0 R /Im174 1072 0 R /Im175 1073 0 R /Im176 1074 0 R /Im177 1075 0 R /Im178 1076 0 R /Im179 1077 0 R /Im180 1078 0 R /Im181 1079 0 R /Im182 1080 0 R /Im183 1081 0 R /Im184 1082 0 R /Im185 1083 0 R /Im186 1084 0 R /Im187 1085 0 R /Im188 1086 0 R /Im189 1087 0 R /Im190 1088 0 R /Im191 1089 0 R /Im192 1090 0 R /Im193 1091 0 R /Im194 1092 0 R /Im195 1093 0 R /Im196 1094 0 R /Im197 1095 0 R /Im198 1096 0 R /Im199 1097 0 R /Im200 1098 0 R /Im201 1099 0 R /Im202 1100 0 R /Im203 1101 0 R /Im204 1102 0 R /Im205 1103 0 R /Im206 1104 0 R /Im207 1105 0 R /Im208 1106 0 R /Im209 1107 0 R /Im210 1108 0 R /Im211 1109 0 R /Im212 1110 0 R /Im213 1111 0 R /Im214 1112 0 R /Im215 1113 0 R /Im216 1114 0 R /Im217 1115 0 R /Im218 1116 0 R /Im219 1117 0 R /Im220 1118 0 R /Im221 1119 0 R /Im222 1120 0 R /Im223 1121 0 R /Im224 1122 0 R /Im225 1123 0 R /Im226 1124 0 R /Im227 1125 0 R /Im228 1126 0 R /Im229 1127 0 R /Im230 1128 0 R /Im231 1129 0 R /Im232 1130 0 R /Im233 1131 0 R /Im234 1132 0 R /Im235 1133 0 R /Im236 1134 0 R /Im237 1135 0 R /Im238 1136 0 R /Im239 1137 0 R /Im240 1138 0 R /Im241 1139 0 R /Im242 1140 0 R /Im243 1141 0 R /Im244 1142 0 R /Im245 1143 0 R /Im246 1144 0 R /Im247 1145 0 R /Im248 1146 0 R /Im249 1147 0 R /Im250 1148 0 R /Im251 1149 0 R /Im252 1150 0 R /Im253 1151 0 R /Im254 1152 0 R /Im255 1153 0 R /Im256 1154 0 R /Im257 1155 0 R /Im258 1156 0 R /Im259 1157 0 R /Im260 1158 0 R /Im261 1159 0 R /Im262 1160 0 R /Im263 1161 0 R /Im264 1162 0 R /Im265 1163 0 R /Im266 1164 0 R /Im267 1165 0 R >> /ProcSet [ /PDF /Text /ImageC /ImageI ] >> /Contents [ 968 0 R 971 0 R 973 0 R 975 0 R 977 0 R 979 0 R 981 0 R 983 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 /StructParents 0 >> endobj 917 0 obj [ /Indexed 940 0 R 31 1027 0 R ] endobj 918 0 obj [ /Indexed 940 0 R 31 1029 0 R ] endobj 919 0 obj [ /Indexed 940 0 R 33 1026 0 R ] endobj 920 0 obj [ /Indexed 940 0 R 31 1023 0 R ] endobj 921 0 obj [ /Indexed 940 0 R 21 1003 0 R ] endobj 922 0 obj [ /Indexed 940 0 R 26 1019 0 R ] endobj 923 0 obj [ /Indexed 940 0 R 30 1017 0 R ] endobj 924 0 obj [ /Indexed 940 0 R 34 1025 0 R ] endobj 925 0 obj [ /Indexed 940 0 R 26 1009 0 R ] endobj 926 0 obj [ /Indexed 940 0 R 27 1014 0 R ] endobj 927 0 obj [ /Indexed 940 0 R 30 1015 0 R ] endobj 928 0 obj [ /Indexed 940 0 R 26 1005 0 R ] endobj 929 0 obj [ /Indexed 940 0 R 27 1010 0 R ] endobj 930 0 obj [ /Indexed 940 0 R 27 1008 0 R ] endobj 931 0 obj [ /Indexed 940 0 R 27 1006 0 R ] endobj 932 0 obj [ /Indexed 940 0 R 22 1020 0 R ] endobj 933 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 121 /Widths [ 250 0 0 0 0 0 0 0 0 0 500 0 0 0 250 278 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 722 667 667 722 0 556 0 722 0 0 722 611 889 722 722 556 722 667 0 611 0 0 944 0 0 0 0 0 0 0 0 0 444 500 444 500 444 333 500 0 278 278 500 278 778 500 500 500 0 333 389 278 500 0 722 0 500 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman /FontDescriptor 936 0 R >> endobj 934 0 obj << /Type /FontDescriptor /Ascent 916 /CapHeight 687 /Descent -219 /Flags 34 /FontBBox [ -190 -217 1295 912 ] /FontName /Georgia-Bold /ItalicAngle 0 /StemV 174 >> endobj 935 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 119 /Widths [ 254 0 0 0 0 0 0 0 447 447 0 703 0 0 0 472 0 490 626 625 649 599 648 554 676 648 0 0 0 0 0 0 0 758 757 715 834 721 671 807 913 446 595 817 686 1023 839 820 701 820 797 649 684 833 762 1126 809 0 0 0 0 0 0 0 0 596 0 0 663 572 393 577 680 354 0 0 344 1016 690 636 0 648 520 513 397 677 0 863 ] /Encoding /WinAnsiEncoding /BaseFont /Georgia-Bold /FontDescriptor 934 0 R >> endobj 936 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 656 /Descent -216 /Flags 34 /FontBBox [ -568 -307 2000 1007 ] /FontName /TimesNewRoman /ItalicAngle 0 /StemV 0 >> endobj 937 0 obj << /Type /FontDescriptor /Ascent 891 /CapHeight 0 /Descent -216 /Flags 34 /FontBBox [ -558 -307 2000 1026 ] /FontName /TimesNewRoman,Bold /ItalicAngle 0 /StemV 133 >> endobj 938 0 obj << /Type /Font /Subtype /TrueType /FirstChar 32 /LastChar 150 /Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 0 0 0 0 0 0 944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 444 0 0 0 278 0 0 0 0 556 0 0 0 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] /Encoding /WinAnsiEncoding /BaseFont /TimesNewRoman,Bold /FontDescriptor 937 0 R >> endobj 939 0 obj << /Type /Font /Subtype /Type0 /BaseFont /MS-PMincho /Encoding /90msp-RKSJ-H /DescendantFonts [ 994 0 R ] >> endobj 940 0 obj [ /ICCBased 1002 0 R ] endobj 941 0 obj [ /Indexed 940 0 R 34 986 0 R ] endobj 942 0 obj [ /Indexed 940 0 R 35 988 0 R ] endobj 943 0 obj [ /Indexed 940 0 R 32 987 0 R ] endobj 944 0 obj [ /Indexed 940 0 R 37 989 0 R ] endobj 945 0 obj /DeviceGray endobj 946 0 obj [ /Indexed 940 0 R 40 998 0 R ] endobj 947 0 obj [ /Indexed 940 0 R 39 985 0 R ] endobj 948 0 obj [ /Indexed 940 0 R 36 1000 0 R ] endobj 949 0 obj [ /Indexed 940 0 R 32 1016 0 R ] endobj 950 0 obj [ /Indexed 940 0 R 33 991 0 R ] endobj 951 0 obj [ /Indexed 940 0 R 34 999 0 R ] endobj 952 0 obj [ /Indexed 940 0 R 32 993 0 R ] endobj 953 0 obj [ /Indexed 940 0 R 33 1024 0 R ] endobj 954 0 obj [ /Indexed 940 0 R 30 1007 0 R ] endobj 955 0 obj [ /Indexed 940 0 R 34 1018 0 R ] endobj 956 0 obj [ /Indexed 940 0 R 32 1004 0 R ] endobj 957 0 obj [ /Indexed 940 0 R 34 990 0 R ] endobj 958 0 obj [ /Indexed 940 0 R 32 1013 0 R ] endobj 959 0 obj [ /Indexed 940 0 R 35 1021 0 R ] endobj 960 0 obj [ /Indexed 940 0 R 31 1011 0 R ] endobj 961 0 obj [ /Indexed 940 0 R 32 995 0 R ] endobj 962 0 obj [ /Indexed 940 0 R 34 984 0 R ] endobj 963 0 obj [ /Indexed 940 0 R 34 1022 0 R ] endobj 964 0 obj [ /Indexed 940 0 R 32 992 0 R ] endobj 965 0 obj [ /Indexed 940 0 R 31 1012 0 R ] endobj 966 0 obj [ /Indexed 940 0 R 34 1028 0 R ] endobj 967 0 obj 2891 endobj 968 0 obj << /Filter /FlateDecode /Length 967 0 R >> stream HWmo b?&7yt6\@ERmʈVڿ_rngP`wgH>w?WWQ7aj|J?ׇσa~鿏/}yyz~a|yvapsvǣx8IaI=7Jf0:/&ݻI[wO`~rw_ܽlKɜO/~C9/CԓA!WnyWoE"ېMMaoOHd^ pK# smEQvb=نf5h|P `+!FF`9TA#^B8憐6,CԜCkM%'p6lUrm0&q{ͻKPܾbA*to!A% [ iBODy6hس"t0 Q-ՠ؉gf$yDDj,p A܆iE8 j }ڠQKZ6 M5`DE u}8'焓Su.\0dD 4ff#@tnd\TuAtI&k5Q+0v`+s86J}yPN6"0Bn^Ga|+jκ.Bdo4 Go9"loPQ(ML܊؆A\;-V >l%'2l|tZB(>c#laH%Br,GHᗅK3^ūAyxМ[M_j:`+&`|k""dSrN8ӖmE089hafbe,܉W49aݵ!yې͢Q=W!X64 G诌2܆:$9 D&S^Wyr6&Zvʊ!wJ5+*xl!g0< +Kt.ᩍfuZ*B b ePLvHMePJ7a֫`S,O7&'YѥNy5˽Ljhلa;bs ddA8aPo"k0YGCk"LXLXD[ Y"P)jIЪoSĜ Nċ 0zц &O1! jQN5i\ i߿I9 SNXڦM2FM j|p fM{)B&(`k51h5AV /A+DEqqL%E";\0@`ꥨsIh\T1bh^KE:'׃&-5\ZKI+G _hsj}MNО|sAR1.?9LJa?܎r8Ѓ!L,LJQh#~Ezt֦,+w oIqP)Tw|t;==*T%hgNΥ:{tHI~7~O4b/#O/Px՘68ao)[>/}Ww3!Ac6BQ Ix&IuIJ 7t 8|䁫xp +w{c`- cR?G5R;K|sLJTs5iT:U~~אRэ-$[FB15>L˱އZx{oXH k83Ցq xDq:t \hqKXؼW1A\(cau,V88ż󱹐ӱhV@j\BefJ.v^_P\HV6e%ꠘ+ՏT1MSs%S7R.*Hw]dbFqP|f#%&;.(J+&ŅnuҊéՈԌz*f^_Fp;0ԇ]a " **|&ѫ1UȰGi(RDX0OR:LQQ]? 11s6L˞fBIiʼn܊/2wp/^DJjY]aK ]9 OΕeO榀\DIaoyCjnzOg? M-=&U-vgi-ӒJli PYU?bWޫ׶oUQ]EI*6>Sh1 "iWR)w(q~L,' Eq %e Y\R EM> endobj 970 0 obj 2247 endobj 971 0 obj << /Filter /FlateDecode /Length 970 0 R >> stream Hmo6 ߧmE\=[%[;`/Mni)}Q%6yEPO;zAޘNt|{U(E.ҡd$8s뾼}hTuPtp]v`V]#q6x6*PÔaSIF7UVC Će ř^ 4^8mSE `k~S *Nb@0nK*>aX({_7Ulʂ7͵%s6m~{Nz]ru==c,RuǷ?5$Iz!tw㟻~'(/oO+u9(Ow⟋A]2*"l#c(L<i{QY}4yA9>ryzç\S\@<" 'OX1"5oKeLZ;??9heeҴ.FRj1NMZ0٫jDǨ9gf~ yOХ_w {HLʹJ4,^ |~#>}~U赞rVl\rNٴ3J7l"abGDR6Mv6|=?G(CWsd\{mKmUR]:6WEis1Z4\Ӣ<HK>Mj8.'ëOTOɏ9o C2\R[vJCR,!~A@F=F·AEy4%r-3jkKpc/=t9֠Կ@%ٲ+VXlj!&?E}% cYh#CJMڈOtH9r6H_Z Lڠik:v@F9siU7aM;1)sQ3c9s)c.Y1v#i Yǭ-Mﺲ-`"eĖU'E$Um9XIĸT$H \6LL^xk;*U(UJ+E+Mc I@K<%(%(b E8b Z7jp77f1t~FUȒT$Y"$FLܬ I~:L'  'Y#o ]d#39Vju6`0#a`,b>RF= mvkfMCƘKMismiv2V`XX> stream H[k9ϧGg;!`n!س픵AZtg{>_fݧOׇ/'Ah{bp"p}{nVPmb_;:3\tcMyHl!Ə鞦II]wvta020j^283gboeq:+Tؙٗ.T`u%:juMRޑѫ+2K̾VmƧC,jƤ"Q8Nᬅ!GK>I*%E/D47\S\KZ|8za3| K(#eh8>?~{㡚GaD vcG|5zW1E&>OkO#x1~.>T )1 n.=ͥi97ngÐgCG̈,#4v808fȄ COzL]^C"Ⱛ1m@G&cA)5eÚL F֌!ҬYCe٪Mɍw '|6'":A <&~i %'mx8+$`VuZAö 2hq$TIP6(ȄfЙ,WXɱsŁ?&u 8IQzm Lz!>AX0|5zV ,E&OkO@xTa1s!T(7yAi&ͥ40R5\ppHĕDn@cACTĴl=) ݽviWxk(_AD[v6Lrt(ih@4 N^]ڬti } Xk\o Xk|`q|YE29+h--VVJ4 Alg jg2h58}m썻R++Ί#sF#0焚Ċk{X)܆Sىfo{ $"'}ۚxoo~4 㷟.s5[ T喧~T8ڏ!>/FW/i1sAi#n(a>|1:Iχo3>_>|5z/G&OkOx|G0 RPfk(aM5k=\\p{1yn{Li ? |78|V( |[B=m@a9{m=𞟙[y˲Un5Mlث\KW;ފFث_:]FvwDC]ЭcT0¥Xqy͊Ifec|,6I M."W+XD=^ \R{Xq-_1݈:`et+$rX{g4U*5ᄹ J ҚDϜnevq|Vu-|#(WP8`ĻQPQ#FH BJ6I4#h2(J,F :E#)%VcES(8G5(C?EiՈ+$QZ:[s=Qk)j- z邢Ebeab>{Qb?ݾ}|6CUO!2j21HajeVn0B㉔OH*p$&*q$5 Ic4,kH:HʌW/rDSAi~4N HpuTJ:t/V2e-v лpn*`&4 endstream endobj 974 0 obj 2510 endobj 975 0 obj << /Filter /FlateDecode /Length 974 0 R >> stream HWˎ߯ Lc@ EZ +bw]ᩪS%z2Ƴ '˙~_/bg~׋ ?'LIh4~7?O.Ly<4x?>Mi9+W?oo?_96059͌v Ǔb0™?U#P4,X^0%[~9fvC8Mv8;9'V>4(-&!#'{0X4, S(. e㪪@2 n7B!oE? ~2P`CIaaM}-}^y9Vʽ`X\tpa}Z8G яO%*IfՒQzdlW aj*(J|eуE"F=е?(;hj~i%5gbY[mz L-bIka\d=cPÄΟ?j^;XKfsWI/XA#ude#c1E U?@eSd=i7_Yr+셹y *yk*NγΎH;~ $LPmy7A0b!MԩhT>İڢWŮj誥(f(5dr\.e\.{f›=3AG>"Dr"#V3Dw`1 }(8KC"= ֽ< gMyH_gPx:xyaX2:VM*(O (CT-ѹz3DAts>G0DBk>ಜ2'ͽJڔ5ř+s; Lj|Q0ǽ^Y*0yr Q!Nb7us>kķR3D Y[`oWmy%˥u#,h Mhrx5*ߎ|nF'W~T/&W{lh rìsp^!0be2*szT^-;h\T N!]lsbY#e@ žo)sjEzBn>jk<@JXK Q덣qQ7}fG Gfa'ÖG@Q mD]/JЊP 1rTȰ =Ҧ9$EDXj L-Օ6+62ShAx_-u;z+Th -n[ ͟'&ڔo@9ՙ|U}wL)*džSgTuP)e˧gےv {Xum|s&)KC8Ƴ5VXJR;cO[q`>GIv⃯Ad>;N M.^+tQrM\١+.zP8.:nҳ;݃:M'y=OAjAmkJ7Ss, zUm;Օnd,3\}\; 7ԑ s>I_;gÐ9!QpDӅOq) M$;q _^‹cةJ !LMŇx:clf0~U 烾хf8q1#tS #Q7ZwHMnG([iށf%RG,Qy !ɣp Uǜ(ۘ#$y,IK,QV.r$q:Gc\馗+rF/  +c {RHԵ61aN|74L}Hnы,&zz\)xϟ~/d6E;YjAdYPFU/E觲U/j"ysx{P7%dyns"!xSD>^)NŚQ_t,Fv4|<&Cgv)-O$%|p9EqO# q_CcZbVrE<\y ^C1œРW}zU\-i5QUsv`=ni,mHi1qn9TN[K u/ۥWpZ*`EȩDZLi~$)-cdr)džd=e(QEUc_eS?d:,}AF_ I ˤg iu:4 \oN/W`r#Yb͞Mءk4ԗ9.)Sj{o+-lwN[`ݞ 76+^TVw`Oֶ}C|ꅲ+›aHmE)A'=1G > stream HW]6}_f/#.d m>hc)Y%=E6 ICC^FuZNZEtA[;?>J0ѵ$oWF_ٻ+zT0a?Zlp)y1y䛒|775ULŦzfu'*bB/IAv3UQ2iR|N_˛ų^8FYݺ~2pJۗyqhSzQT#(ًR(X8c?$0 ߚa"3&?u}hoě ˃Q,{蝲f/qAz ً"m^\+(2ŗhSN((!sbNssȓG3 OF8y8t`&a&;l]W> mL򃴍sFO6&O&elZ"p&|+x-aJ 1錰Dzpk *Dc6pJ,W3,\=rp\DkT<]|D052Q$<>6"5.\3"IXP%#fQ7=c-`LCtڹ=a1o#+7CGr5(\ʌ>g&d]n= 7L܌srCO {fLNa+&1L:e+BS1Ls?)$7XlrWG%lx_Tӯ9~PGrRER(큀Ue"rl XaU#D@`H1֭  4@\ԞCÉGB `uD-Ɲ!g:7t0Y|5@c]S=I9;ٚ{%5){0R\NKb^ jcؾ-%QT+)OLטv{2#@3ǔL0*S:r>Yxn*JVtSZTt+lx5rZnYOT;F=s]9$CYNп[=ĉ~}bcm1*J dx ʽ@N.T6mn,|$dY \}iS#ՒL4 H$>GB)xh[oFUM׺3v$|dzY}~z;jU{}z%f+zNV3r Moڜvjj< 8+]FXL:C +SZ(bYY]L}/5}kO^eg5Z31-jnF^.Q'j_Pο[6Nh9s}Y:m;w5~0 %Z#"VEm&@FhڍDMȭKHs1!osBi98䃏s72YHK=QsLΐQImYN_o~fe^0g`.,݃r L@ }}<$qyj9GHS{08d(uS@ħݎđicq5@'4Rs;8m.%ٴEp[3Gx))Q(yq%g`Ԇ\ŌK:uM8&'iGu endstream endobj 978 0 obj 2472 endobj 979 0 obj << /Filter /FlateDecode /Length 978 0 R >> stream HW[7}~hnj,tc2l`x y1K6?[Kݥ;{&J::uNՇ9Yݙk^A*8W^3{{ʳ8?:=p9_; zʾ_]ҹvPw9W'e&aBHXƙxg`5@YWz˙;۟'g,r:?x&O?߽{ v/b9̈́3d%ire\^>Y.&C}=˝6xLMoW.'w7 rsO^[E`` v'gk&um+65#N/w}6OztfGH-vs+o 5\|DhI.7R Rnfb+xƭ_7;-gZH 7ӏD bv>rގ(0})%ҟ(<x惁GWm0a gN: L]&{ N',g.H7>] NiNdLZB兎jNֻMⵒBG9]?k~H|F,po٦&[d{}IٝMB9z;ܒ'm ;5*BaK"pW{Ap{Zx>Iv'ľ8BPKZj*ڇNGly$ceawQ>)H[M%If>' ?ҳcѕҢ뱹٦\0P<ez`UiDQexVUPm.{0Ϡ$q$E+m'+W#gq6fgawۀ3H&HZIVRHZս$ʪ)'Mtnfk c#KKoi߅ҢlU>2Hn: V)F@cf5j\‹#f|m혾;L_uX(>z^;6z;ټ2Q< TofCFfCfqqk&nA] 2{GEq2:@$. Dqz!Tqix{0B87Ψ28d_rpTPoqofop5Qr Q|hE$9=m΁f3KfvxɺӳDkYX$4Fw( {H1 #)ia42HZhBR}Y]|:rL+r^ADkrvs[ ^o-|?iЫ]o)Xnu*rQ]YDd$"0(`R$1:*_Ҳ[>?<&hMg潗:VX .8h9m~6z&F^[=+|Eӻ&؛i?4M2!Owpz078w ǔf:; D b endstream endobj 980 0 obj 2311 endobj 981 0 obj << /Filter /FlateDecode /Length 980 0 R >> stream H[oϧG9(/!`EMq%@RiḈ" _C.Cݣ€$ϙ7NN b|ikY9˔gϟvww?|w5x!K|6p3ιο v? ;YwѯNV2x8>1Tߔ/(]G%h;$' 8gBB3~E]Y*oHg)Z9꾞ya B3Jφ<~^ $+X3jU:4If-aC0ߛ_^\KLB8W-|(<ǔ$6r9-+Z -~=O%NlTnXdn- ɓ[aKha[D`[ %_TVv] * \o/W.oMQSCFJR29 AZuosɸBm}cOW\Mz)[D iIZĿdU. B@Iף ̊X۝}J\3S1s{I|< #Vqnta@n`]θ~|GC{;|Rʥ,UKKnj/[^vcB;)uѠ)cew!=Zc4>D1҅WSLgD:YEȚm<>>h3R03g+q#-3cΧiΘH.%F Uw=^ V UO Qn.^ g)֨(.߈bR.)_ȹXru _RnG1V&+kxܻ`v#[_屆v1:-K SZ TвER)x Z5'Pb8Ov-d8RYK:ȫ}2z-b:eh0YAnJ\Go!CH>{@%S5::2aN$pc4{p>xOF]OFҧwYENj]FWSj́oB]FM5$pDX>{ӣ_GLkHr::N ' E Z* yo'o^+a1e26C5I;oʏx 0m endstream endobj 982 0 obj 2543 endobj 983 0 obj << /Filter /FlateDecode /Length 982 0 R >> stream HmWG;|0 H+ -#W~)PA|N]rjW.9 w8o1_k=\ v@8O~۽}x@yLJǡxfw5רwz؝>;0eeƢ0 2e;τNf x_)lί ?( /U҇滞wv)oϨ)-59A/5ᡑVkP<=p/6riEYV=۽z`Jtzң/N_fA-[2Hevlv q6?8!Ϊt2r(, LMy`玠9Ҏ) 8,EaBLDɈ 6JۈG,A3)iov؃ _fX%^&A`d.V% P7]`$8RfFĢ|b:fi1gP6Z-M)!}X jdH: )2{9v6XOXkɼkU imңa]Ǹlxtv y:?<"ORC%72@P3i G@[1/yn$oC77)B-k ?$r[!){e Jί=:Pg˲ H=%8rϨ6?y&&A0Qҭʉոy)ZQt!l " G:p6mP2`I!Ѷƶ^! ƚ Q]# {!%>T뼓_-B-sp1U<\E(P5: 'ܲ}szRTyZU!5x4-Li!]۝he3\7 ӨM 6B49P21;g^kYs|9Mo&:UU-s8&`gKrXӔF!8 ;Z<@l^1QH/ɻ"Wݥ\C<3KKXֻawqcBIf:w[]lQw}uץljUT58 fuePs3MXɜjD/OMiUv*{@b76ZЈZSj<(g(( \q`BK{ L%WAyK%c'43/4 `Q}uOZsNFD44TK;5{,{/jB`)c0|I`X ^uarU Dv ^pNC𫣤GdKΞ ihFYalJ~C).֤lq *$fp0|hBY(j/oۺCDQ kj4{'}OI*ѷQh ){Kh4>OIiY^o>_D~ qk!>+o!q B~!E_y';v~S6;~\~DV͕<guԭP/r kAyw1)yj9b2Y2)kq=ݕ!Ͷ|Op~+'f~ x F&ftO0R*]-#qe&11L1T$* حLm0$xۘstALΙM֖!CbPQU/}Cb竓g{~u/9Mx2VMQw:hVU{U/UЗ@˿6H1/CwhNHFW(8tT7G gcֆRӍ#rR!kV")pQQp¯M^*ǜkUuU>zЫ! f1|zXU$NRN%SЍj\|NEG(/`S!2g C_i9Bn13>?>ЎP0>Ά7ε&W,ŵ1+f9Ą88*6=S !VupmiQZQ%!j m"e„8PĬ:1 UAᏧ9=¤&uHi潨 i8~~R`'_D9fsQgȫ^A (_iqO{G/:fr endstream endobj 984 0 obj << /Length 120 /Filter /FlateDecode >> stream HiS03 = C HNTZbiottqnw?J0W2Zehjjkjgd_[WSPL@ Y2 * endstream endobj 985 0 obj << /Length 135 /Filter /FlateDecode >> stream HxP1|9aimpqrsqoljgdUO1J0I0J/?SUZ]adfikmoppmhd`Xr7 82h endstream endobj 986 0 obj << /Length 117 /Filter /FlateDecode >> stream H6`4e>=KG_Eb<_Yb~&^ 2`X=D{ȏ "?R~Q H[طR/bD?fO=*l`L.] endstream endobj 987 0 obj << /Length 114 /Filter /FlateDecode >> stream HcK0^4N liT }BQ2J0M1p:V3I/O1MTX\afinpsuxwvrnaj6J/ q$1 endstream endobj 988 0 obj << /Length 123 /Filter /FlateDecode >> stream HlK1e5YlnprrhXWWW[`G J0l7STVZ_dgjqsuvvsoj[g5 s- endstream endobj 989 0 obj << /Length 129 /Filter /FlateDecode >> stream HrJ0l7VjmprrsrpnjgdWK0I0]4RTV[_cfilnqrsqlhd]~: ?1I endstream endobj 990 0 obj << /Length 120 /Filter /FlateDecode >> stream HiL03 = C HMT[cjqvwtp[J0P1Ugjlnnmjgb^YUQNA X2 Y* endstream endobj 991 0 obj << /Length 117 /Filter /FlateDecode >> stream HfR/1 ; B GMSY_ekonkV4J0Q1E `bdddd`]ZWSOLJ? [3 Ϸ' endstream endobj 992 0 obj << /Length 114 /Filter /FlateDecode >> stream HcJ/i, 4 = C INTY`dhjJ J0N1?[]__^]ZXUROLIG= Y2 ?$j endstream endobj 993 0 obj << /Length 114 /Filter /FlateDecode >> stream HcN/t. 8 @ EKQV\bgkl[J0O1B ^`aba`^ZXTQMJH? [3 Cn% endstream endobj 994 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /MS-PMincho /FontDescriptor 996 0 R /CIDSystemInfo << /Registry (Adobe)/Ordering (Japan1)/Supplement 2 >> /DW 1000 /W [ 1 [ 304 ] 634 635 664 674 675 500 686 687 500 843 [ 882 ] 845 [ 953 ] 853 [ 949 792 ] 856 [ 644 ] 858 [ 914 ] 860 [ 753 ] 862 [ 753 ] 864 865 777 872 [ 906 949 ] 876 [ 855 ] 879 [ 902 ] 881 [ 703 ] 883 [ 902 949 ] 887 [ 949 968 ] 903 [ 824 ] 907 [ 757 ] 915 [ 640 792 984 ] 923 [ 855 945 750 890 ] 928 [ 777 ] 930 [ 800 ] 932 [ 941 808 ] 935 [ 878 ] 937 [ 886 ] 939 [ 746 ] 943 [ 792 ] 945 [ 953 ] 948 [ 902 820 902 ] 955 [ 785 910 ] 959 [ 734 ] 962 [ 902 ] 964 [ 589 707 ] 967 [ 910 ] 970 [ 699 976 ] 972 973 976 976 977 843 978 979 945 985 [ 921 929 ] 989 [ 675 941 ] 993 [ 792 ] 995 [ 597 ] 997 [ 765 609 980 832 ] 1007 [ 863 ] ] >> endobj 995 0 obj << /Length 114 /Filter /FlateDecode >> stream HcM.k+ 4 = C INSX^bf`K0J0R1@Z[\\[YXUROLJHE; T1 #d endstream endobj 996 0 obj << /Type /FontDescriptor /Ascent 859 /CapHeight 709 /Descent -140 /Flags 6 /FontBBox [ -82 -137 996 859 ] /FontName /MS-PMincho /ItalicAngle 0 /StemV 69 /XHeight 450 /StemH 34 /Style << /Panose <010502020401000000000000>>> >> endobj 997 0 obj << /Type /FontDescriptor /Ascent 859 /CapHeight 709 /Descent -140 /Flags 7 /FontBBox [ 0 -137 1000 859 ] /FontName /MS-Mincho /ItalicAngle 0 /StemV 69 /XHeight 450 /StemH 34 /Style << /Panose <010502020400000000000000>>> >> endobj 998 0 obj << /Length 138 /Filter /FlateDecode >> stream H{J0z9Xdiloqrpnligd_b4K0J/U2v8RVY\_adeghjigda]ZV:I0 <1 endstream endobj 999 0 obj << /Length 120 /Filter /FlateDecode >> stream HiN/y1 ; A FLRX_fkprpiR2J0Y3Ucfghgfc`]YTQNK@ Y2 l) endstream endobj 1000 0 obj << /Length 126 /Filter /FlateDecode >> stream HoN19^hloqrqnlifcQO/J0p8RUY\`cehiklmlhd`\Sl5 H|/ endstream endobj 1001 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /MS-Mincho /FontDescriptor 997 0 R /CIDSystemInfo << /Registry (Adobe)/Ordering (Japan1)/Supplement 2 >> /DW 1000 /W [ 231 [ 500 ] 244 [ 500 ] ] >> endobj 1002 0 obj << /N 3 /Alternate /DeviceRGB /Length 2575 /Filter /FlateDecode >> stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 N')].uJr  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km endstream endobj 1003 0 obj << /Length 67 >> stream J0L0J/<STUY^bgkotwxzxusXU2 endstream endobj 1004 0 obj << /Length 114 /Filter /FlateDecode >> stream HcX2= FLQX`is|ztoJ J0Wkqw~yrlfaY:Q1 +t endstream endobj 1005 0 obj << /Length 96 /Filter /FlateDecode >> stream HQP1;PV\ekpuz}~{wrlUJ0N eimospN  ʥ$L endstream endobj 1006 0 obj << /Length 99 /Filter /FlateDecode >> stream HTK09MV^fkpuy}}|xtojBV3\eilomk;J0I0 #0 endstream endobj 1007 0 obj << /Length 108 /Filter /FlateDecode >> stream H]T1; EJOV]foz{upQ J0Djz~ztnhc^T9L0 M' endstream endobj 1008 0 obj << /Length 99 /Filter /FlateDecode >> stream HTR4EV]aglquy{ufV4r;aeimngb8J0M1BRO Q2 endstream endobj 1009 0 obj << /Length 96 /Filter /FlateDecode >> stream HQW2? PV]elrw|{vqlAO2ahotu^L1J0 ΋" endstream endobj 1010 0 obj << /Length 99 /Filter /FlateDecode >> stream HTU2= KPW^fpv}{p[J0N hmry{vpiD]3 '$ endstream endobj 1011 0 obj << /Length 111 /Filter /FlateDecode >> stream H`V1> JPV]fpw}{uoM N1Zjy|~|ytmhK c5J0 +O*7 endstream endobj 1012 0 obj << /Length 111 /Filter /FlateDecode >> stream H`V2= INT[clv||vp\M1I iosy|vpjdL i5J0 5) endstream endobj 1013 0 obj << /Length 114 /Filter /FlateDecode >> stream HcX2> HMTZblu}{uoO J0Vkqu~zsmgbM o7 , endstream endobj 1014 0 obj << /Length 96 /Filter /FlateDecode >> stream H5df#*HC J K* e0Ígدl_⿋K.#Vdc`#[ endstream endobj 1015 0 obj << /Length 105 /Filter /FlateDecode >> stream H 6dnqGY/q"E~.S-A_ԿVj$?M0eg&+[PeJ?K%>dY2x0&( endstream endobj 1016 0 obj << /Length 114 /Filter /FlateDecode >> stream HcN4}N#\'i*l'n"nqswyxuqmhF K1UceiklN L1J0W3M djim< ~ ) endstream endobj 1017 0 obj << /Length 108 /Filter /FlateDecode >> stream H]J0bK!espoΗnoli]y4XG l9a4OX]aejmqtwxyv[Q1 # +0 endstream endobj 1018 0 obj << /Length 120 /Filter /FlateDecode >> stream HiX1; B GMSZbjt{}|yuqS J0Tkosuyywqkfa\WS@ W2 b-e endstream endobj 1019 0 obj << /Length 96 /Filter /FlateDecode >> stream HQJ0M4kV/yZn~`sR~gCaJN1A SV[_dhlqtwyzxuZ T1 !P endstream endobj 1020 0 obj << /Length 70 >> stream J0P1V2r<Y4MTVZ_dhlqtvxxwupgi6 endstream endobj 1021 0 obj << /Length 123 /Filter /FlateDecode >> stream HlQ06 @ D IOV^enuyxuriQ2J0K0Yiloqqrnie_[WSO= S2 X, endstream endobj 1022 0 obj << /Length 120 /Filter /FlateDecode >> stream HiU19 A FKQY`hqy{zwson;J0K0^jnsuurmgb]YUO;M1 +Y endstream endobj 1023 0 obj << /Length 111 /Filter /FlateDecode >> stream H`J1t`:khďjmjea^YVQCgWP1L0K0J0V3M[_cgknqtvZ , endstream endobj 1024 0 obj << /Length 117 /Filter /FlateDecode >> stream HfQ1:DINT\enx~}ytmm<J0N kquz|}wpj_ZO}8 , endstream endobj 1025 0 obj << /Length 120 /Filter /FlateDecode >> stream HiS: [4e5v:x6y3{/{*|&{!zwtrnjcj9b6\behcl;J0K0E bfikmmD t-x endstream endobj 1026 0 obj << /Length 117 /Filter /FlateDecode >> stream HfZCgDlAIGB?;63-~(z"tmgZL0@^bdRO2J0P1UehlmopM  -I endstream endobj 1027 0 obj << /Length 111 /Filter /FlateDecode >> stream H`R: uU|^_b^[WTPKGC>|7h r:J0M?K0A\`dhknqstZ k- endstream endobj 1028 0 obj << /Length 120 /Filter /FlateDecode >> stream HiL08B GLSZbju|~xshZ5J0L kqtwz}|tnhc^YT<Q1 /, endstream endobj 1029 0 obj << /Length 111 /Filter /FlateDecode >> stream H`YArPsPUTQMIEB>73{.t)m$OJ0H ^Yr;e6YaeiknprU  *-1 endstream endobj 1030 0 obj << /Type /ExtGState /SA false /SM 0.02 /TR2 /Default >> endobj 1031 0 obj << /Type /ExtGState /SA false /OP false /op false /OPM 0 /BG2 /Default /UCR2 /Default /TR2 /Default /HT /Default /CA 1 /ca 1 /SMask /None /AIS false /BM /Normal /TK true >> endobj 1032 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`!  endstream endobj 1033 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`BBc endstream endobj 1034 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 31 /Filter /FlateDecode >> stream H2`fT Sgg2`"(w endstream endobj 1035 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 29 /Filter /FlateDecode >> stream HcR0 vo/*a endstream endobj 1036 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 28 /Filter /FlateDecode >> stream HcVㆣHu./}/7J+ endstream endobj 1037 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 29 /Filter /FlateDecode >> stream HcRFBj^ ^ Ex endstream endobj 1038 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 29 /Filter /FlateDecode >> stream HcRVFF^ @`U!< endstream endobj 1039 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 31 /Filter /FlateDecode >> stream HcRVFFj\^ UxB endstream endobj 1040 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 31 /Filter /FlateDecode >> stream HgTVFC1j:^ f endstream endobj 1041 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 37 /Filter /FlateDecode >> stream HeVㆣ5x5 LM]f/h endstream endobj 1042 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 46 /Filter /FlateDecode >> stream HcVV85d -\-Bmb]X}/ endstream endobj 1043 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 47 /Filter /FlateDecode >> stream HcRWN.575`2`0G endstream endobj 1044 0 obj << /Type /XObject /Subtype /Image /Width 3 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H4`#n endstream endobj 1045 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 50 /Filter /FlateDecode >> stream HgH*1j2n7644b2`0 endstream endobj 1046 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 19 /Filter /FlateDecode >> stream H4`D 1 endstream endobj 1047 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 51 /Filter /FlateDecode >> stream H g.n iN Wi-'s%1{0 endstream endobj 1048 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 18 /Filter /FlateDecode >> stream Hg2 \M> endstream endobj 1049 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 55 /Filter /FlateDecode >> stream Hg,f!cgG}e'UZ4dL+/Q endstream endobj 1050 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 31 /Filter /FlateDecode >> stream H2`BB>zAZ:pAn endstream endobj 1051 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 55 /Filter /FlateDecode >> stream Hg P*nw]ҁ#mr\Tr2dX @ endstream endobj 1052 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 39 /Filter /FlateDecode >> stream H2`#o}`- (5h5n b(0;" endstream endobj 1053 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 55 /Filter /FlateDecode >> stream HJw])kGޒC'4ǟoKԙ~;{oex @ph endstream endobj 1054 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 42 /Filter /FlateDecode >> stream H4` }tm Mdu85hTT`= endstream endobj 1055 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 58 /Filter /FlateDecode >> stream HVZa9jG,#n'O :_~!bS@5/ׅG endstream endobj 1056 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 49 /Filter /FlateDecode >> stream H4d2D}jJ}R]|LMd 85h$T ` endstream endobj 1057 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 58 /Filter /FlateDecode >> stream HJp魰-L}OfG-Ofٞw:W~ryYfF endstream endobj 1058 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 59 /Filter /FlateDecode >> stream H2`2`7dn724n37*JUVb! endstream endobj 1059 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 61 /Filter /FlateDecode >> stream H1`)OjoPCQtN$I5=iy1rL r! endstream endobj 1060 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 65 /Filter /FlateDecode >> stream H2`2`7fj9ˆw]ɞQks|;NЯ-JW0i{ endstream endobj 1061 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 61 /Filter /FlateDecode >> stream H0boõ˕w>>BG$ʞT:v!QRޅTFm" endstream endobj 1062 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 69 /Filter /FlateDecode >> stream Hg2`0f^-{6괊K*M*=[p3gOKԕn*܅:Z\:l@- endstream endobj 1063 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 61 /Filter /FlateDecode >> stream H 1be͹ϝaO}O?$r>TRhuAJ- " endstream endobj 1064 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 72 /Filter /FlateDecode >> stream H2`2`(1c]`q~RIEW.dH;Ւx.vUЍ|fGX6 qGu endstream endobj 1065 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H1dwԋ Sg\(p9PZ nՎA<  endstream endobj 1066 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 73 /Filter /FlateDecode >> stream Hggh`ߒt;Fw-ք> stream H 3dgű/is/ \,p=DF+*Y  6 endstream endobj 1068 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 78 /Filter /FlateDecode >> stream H?I0N0:\1Յ]كZ׀V|RyMuIpCl?g9c6]0W,Q'K"Dc5J0 JS endstream endobj 1069 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H 0dlqҗ@WB ^.t+\N0a]k-Y  G endstream endobj 1070 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 78 /Filter /FlateDecode >> stream H?J0`3= a2~PzLwGtBo?k:g5b0^*X&S!OIC= r3J0 6j endstream endobj 1071 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H4bZu!RPk7"oE ݎ%x?JAУB=x+-Y  j endstream endobj 1072 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 81 /Filter /FlateDecode >> stream HBJ/Z2< HvDs@p;l7h1d,`'\#VRLGD C B > d2J0 U: endstream endobj 1073 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H 6diy9XZ[QBwbݏz+8FIhgQ{y-X  % endstream endobj 1074 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 81 /Filter /FlateDecode >> stream HBJ0n6=Lk2j1f,b'_ \WSNMKJHF D A p4J0 B endstream endobj 1075 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 67 /Filter /FlateDecode >> stream H6`d?(p+\vB' ?Iy ,^EXW1[> stream HBI/a3=LY_!][VVUTSQOMKIGE 7I0 ) endstream endobj 1077 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 69 /Filter /FlateDecode >> stream H6T2> XZ]`ceedcba_\I m6J0 X endstream endobj 1078 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 81 /Filter /FlateDecode >> stream HBJ/k6=QUVWXXYXXVURPNKJE k4J0 28 endstream endobj 1079 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 67 /Filter /FlateDecode >> stream H1df&(Vqd/3D^eNy&&UmqۼyM  Y5 endstream endobj 1080 0 obj << /Type /XObject /Subtype /Image /Width 1 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 14 /Filter /FlateDecode >> stream H2`0A{ endstream endobj 1081 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 81 /Filter /FlateDecode >> stream HBJ0p7? SVXYZ[\[[[YVTQNLIw7J/ I endstream endobj 1082 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 67 /Filter /FlateDecode >> stream H 2dx#4Ayȋ4Y"orD戾}!!MCȇd "sX|  kU endstream endobj 1083 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`2`0 endstream endobj 1084 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 81 /Filter /FlateDecode >> stream HBK0o7A TVYZ\]^__^][XURPM:J/ ]O< endstream endobj 1085 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 65 /Filter /FlateDecode >> stream H2`hb!"QUțLw9ĀClO>~I&nm`i endstream endobj 1086 0 obj << /Type /XObject /Subtype /Image /Width 3 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`# o endstream endobj 1087 0 obj << /Type /XObject /Subtype /Image /Width 23 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 84 /Filter /FlateDecode >> stream HEK0i6@ TWY\^_`acbb`][XTRKh5J0 | endstream endobj 1088 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 67 /Filter /FlateDecode >> stream H 4df{/:Um,yb >~#5KkTѯI"  wc+ endstream endobj 1089 0 obj << /Type /XObject /Subtype /Image /Width 25 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 88 /Filter /FlateDecode >> stream H2`2`4`4b`}$)LchqD&Iy"2UEȳT"ލ&t!P̜h@? endstream endobj 1090 0 obj << /Type /XObject /Subtype /Image /Width 43 /Height 1 /BitsPerComponent 8 /ColorSpace 946 0 R /Length 54 /Filter /FlateDecode >> stream Hb`dbfaecd`WPTRVQUS0.55 endstream endobj 1091 0 obj << /Type /XObject /Subtype /Image /Width 42 /Height 1 /BitsPerComponent 8 /ColorSpace 948 0 R /Length 53 /Filter /FlateDecode >> stream Hb`dbfaec`WPTRV0)| endstream endobj 1092 0 obj << /Type /XObject /Subtype /Image /Width 42 /Height 1 /BitsPerComponent 8 /ColorSpace 947 0 R /Length 53 /Filter /FlateDecode >> stream Hb`dbfaecWPTRVQUS0// endstream endobj 1093 0 obj << /Type /XObject /Subtype /Image /Width 41 /Height 1 /BitsPerComponent 8 /ColorSpace 944 0 R /Length 52 /Filter /FlateDecode >> stream Hb`dbfaec``WPTRVQ0' endstream endobj 1094 0 obj << /Type /XObject /Subtype /Image /Width 41 /Height 1 /BitsPerComponent 8 /ColorSpace 941 0 R /Length 52 /Filter /FlateDecode >> stream Hb`dbfaecccWPT0%( endstream endobj 1095 0 obj << /Type /XObject /Subtype /Image /Width 40 /Height 1 /BitsPerComponent 8 /ColorSpace 942 0 R /Length 51 /Filter /FlateDecode >> stream Hb`dbfaecdWPTR0&] endstream endobj 1096 0 obj << /Type /XObject /Subtype /Image /Width 39 /Height 1 /BitsPerComponent 8 /ColorSpace 943 0 R /Length 48 /Filter /FlateDecode >> stream Hb`dbfaecN.n^>~~A!aQ1q I)iY9y'H endstream endobj 1097 0 obj << /Type /XObject /Subtype /Image /Width 39 /Height 1 /BitsPerComponent 8 /ColorSpace 932 0 R /Length 39 /Filter /FlateDecode >> stream Hb`dbfa@ll\<|B"b   endstream endobj 1098 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 921 0 R /Length 37 /Filter /FlateDecode >> stream Hb`db@,l\<|B" % endstream endobj 1099 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 922 0 R /Length 43 /Filter /FlateDecode >> stream Hb``dbfaec`N.n^>~A!aQ1q I)p` endstream endobj 1100 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 923 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecc~A!aQ1q I)iY9c endstream endobj 1101 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 920 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaec0"Ty endstream endobj 1102 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 917 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaec0!ug endstream endobj 1103 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 918 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaec0!d endstream endobj 1104 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 919 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaecWP0" endstream endobj 1105 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 924 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaecWPT0#l endstream endobj 1106 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 949 0 R /Length 49 /Filter /FlateDecode >> stream Hb`dbfaecW0!~ endstream endobj 1107 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 930 0 R /Length 48 /Filter /FlateDecode >> stream Hb`dbfaecfgd0 endstream endobj 1108 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 931 0 R /Length 43 /Filter /FlateDecode >> stream Hb`dbfaecggii? endstream endobj 1109 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 928 0 R /Length 43 /Filter /FlateDecode >> stream Hb`dbfaec痐| endstream endobj 1110 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 925 0 R /Length 44 /Filter /FlateDecode >> stream Hb`dbfaecae㗐J endstream endobj 1111 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 926 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaec0 endstream endobj 1112 0 obj << /Type /XObject /Subtype /Image /Width 34 /Height 1 /BitsPerComponent 8 /ColorSpace 927 0 R /Length 45 /Filter /FlateDecode >> stream Hb`dbfaec◖0 endstream endobj 1113 0 obj << /Type /XObject /Subtype /Image /Width 34 /Height 1 /BitsPerComponent 8 /ColorSpace 929 0 R /Length 45 /Filter /FlateDecode >> stream Hb`dbfaec0 endstream endobj 1114 0 obj << /Type /XObject /Subtype /Image /Width 34 /Height 1 /BitsPerComponent 8 /ColorSpace 960 0 R /Length 45 /Filter /FlateDecode >> stream Hb`dbfaec0 endstream endobj 1115 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 965 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaec0 endstream endobj 1116 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 958 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecW0J1 endstream endobj 1117 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 956 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecW0x' endstream endobj 1118 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 954 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaec0 endstream endobj 1119 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 953 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaeceWP0K endstream endobj 1120 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 966 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPT0<^ endstream endobj 1121 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 955 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPT0e endstream endobj 1122 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 963 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPT0m] endstream endobj 1123 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 959 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPTR0~w endstream endobj 1124 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 957 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecgWPT0T endstream endobj 1125 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 962 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPT0d endstream endobj 1126 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 951 0 R /Length 47 /Filter /FlateDecode >> stream Hb`dbfaecWPT0d endstream endobj 1127 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 950 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecWP0IA endstream endobj 1128 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 952 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecW0w- endstream endobj 1129 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 964 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecW0w- endstream endobj 1130 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 961 0 R /Length 46 /Filter /FlateDecode >> stream Hb`dbfaecW0w- endstream endobj 1131 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 56 /Filter /FlateDecode >> stream HgH7gɽ͑9_E $ܛˀ I endstream endobj 1132 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 75 /Filter /FlateDecode >> stream H<J0J0Z3E XYYYXVUROMKHEC 9M0 y endstream endobj 1133 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 54 /Filter /FlateDecode >> stream HcJj4^`Ž݉yo„^G he` F endstream endobj 1134 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 72 /Filter /FlateDecode >> stream H9J0J0n6NVWVUTRPNLJGE C < Y2 ;0 endstream endobj 1135 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 54 /Filter /FlateDecode >> stream H2`(hʽޞg O~w ^me` endstream endobj 1136 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 66 /Filter /FlateDecode >> stream H3S1>TUTTSPOLJHFD A : V1 5 endstream endobj 1137 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 51 /Filter /FlateDecode >> stream HgV,lƽg IO+~w uN7a2`0 endstream endobj 1138 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H5`a p7HV@+;wo ' <} [l endstream endobj 1139 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 48 /Filter /FlateDecode >> stream HcU*fνɁ+i/~Vr3{0 Y endstream endobj 1140 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H 5biq;@fK}N?ww gޭkx,8  C endstream endobj 1141 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 48 /Filter /FlateDecode >> stream H2`n3^fýÉy/+s8X  endstream endobj 1142 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 64 /Filter /FlateDecode >> stream H7dfOyǽxpʻәw#Z;Vܵ&^ ʖ endstream endobj 1143 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 45 /Filter /FlateDecode >> stream H2`0^n˽ˉQYv,^ & endstream endobj 1144 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 61 /Filter /FlateDecode >> stream H0bZhuG7YoS^<s»͉w [9 ~ x endstream endobj 1145 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 45 /Filter /FlateDecode >> stream H2``Oj0kɽՑg3R{i61L^  endstream endobj 1146 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 61 /Filter /FlateDecode >> stream H 0df?w֋'1|\vnwȻʎ{TsF#@F endstream endobj 1147 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 39 /Filter /FlateDecode >> stream H2``j5gŽs g)@W"+ endstream endobj 1148 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 58 /Filter /FlateDecode >> stream H0boyڃ;aw|]xw8nq]cdzȊ{9w w@Q endstream endobj 1149 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 38 /Filter /FlateDecode >> stream H2`eJ17mj`e`Q endstream endobj 1150 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 56 /Filter /FlateDecode >> stream H5`b?wčHuĻőwYL 9 C  endstream endobj 1151 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 32 /Filter /FlateDecode >> stream H2`ge+7d/0f6`2`0,* endstream endobj 1152 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 54 /Filter /FlateDecode >> stream H 1bayo3.'펼xVrϳbi]gc` endstream endobj 1153 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`BE endstream endobj 1154 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 54 /Filter /FlateDecode >> stream H6`h`_ۉw#&Uv< ss7rrep3' G endstream endobj 1155 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`!  endstream endobj 1156 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 51 /Filter /FlateDecode >> stream H5`d_oϽՁwRkYMیktS9} ڣ endstream endobj 1157 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 48 /Filter /FlateDecode >> stream H 0ddɹƎg-Kif܍e9 > endstream endobj 1158 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 45 /Filter /FlateDecode >> stream H 1dl1ߊ{S6#j}BtMuNo}F endstream endobj 1159 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 44 /Filter /FlateDecode >> stream H2`(7ahoj]]Ýe`u endstream endobj 1160 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 41 /Filter /FlateDecode >> stream H2`6bi1j4NQ 2`0e endstream endobj 1161 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 38 /Filter /FlateDecode >> stream H2`H2`*Vd2`0L# endstream endobj 1162 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 35 /Filter /FlateDecode >> stream H2`cJVRe2`08G endstream endobj 1163 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 31 /Filter /FlateDecode >> stream H2`g dT `  (~ endstream endobj 1164 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`BBc endstream endobj 1165 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace 940 0 R /Length 17 /Filter /FlateDecode >> stream H2`!  endstream endobj 1 0 obj << /TextBox /Div /Frame /Div /Footnote /Note /Endnote /Note /Shape /Figure /InlineShape /Figure /TOA /TOC /TOAI /TOCI /TOF /TOC /TOFI /TOCI /Superscript /Span /Subscript /Span /Strikeout /Span /Underline /Span /DropCap /Figure /Standard /P /#E5#89#AF#E9#A1#8C /P /#E8#A1#A8#E9#A1#8C /P /Table#20Contents /P /#E6#A8#99#E6#BA#96 /P /Key#20Settings /P /Text#20body /P /#E4#B8#80#E8#A6#A7 /P >> endobj 2 0 obj << /S /Standard /A [ 3 0 R ] /C /Standard /Pg 916 0 R /K 0 /P 228 0 R >> endobj 3 0 obj << /O /Layout /StartIndent 177.25 >> endobj 4 0 obj << /Standard 5 0 R /#E5#89#AF#E9#A1#8C 8 0 R /#E8#A1#A8#E9#A1#8C 11 0 R /Table#20Contents 13 0 R /#E6#A8#99#E6#BA#96 18 0 R /Key#20Settings 28 0 R /Text#20body 30 0 R /#E4#B8#80#E8#A6#A7 101 0 R >> endobj 5 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Start /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 6 0 obj << /S /#E5#89#AF#E9#A1#8C /A [ 7 0 R ] /C /#E5#89#AF#E9#A1#8C /Pg 916 0 R /K 1 /P 228 0 R >> endobj 7 0 obj << /O /Layout /StartIndent 177 >> endobj 8 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Start /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 9 0 obj << /S /#E8#A1#A8#E9#A1#8C /C /#E8#A1#A8#E9#A1#8C /Pg 916 0 R /K 2 /P 228 0 R >> endobj 10 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 3 /P 231 0 R >> endobj 11 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Start /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 12 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 4 /P 234 0 R >> endobj 13 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Start /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 14 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 5 /P 237 0 R >> endobj 15 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 6 /P 240 0 R >> endobj 16 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 7 /P 243 0 R >> endobj 17 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 8 /P 246 0 R >> endobj 18 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Justify /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 19 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 9 /P 250 0 R >> endobj 20 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 10 /P 253 0 R >> endobj 21 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 11 /P 256 0 R >> endobj 22 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 12 /P 259 0 R >> endobj 23 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 13 /P 262 0 R >> endobj 24 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 14 /P 265 0 R >> endobj 25 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 15 /P 269 0 R >> endobj 26 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 16 /P 272 0 R >> endobj 27 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 17 /P 275 0 R >> endobj 28 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Center /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 29 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 18 /P 278 0 R >> endobj 30 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /Start /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 31 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 19 /P 281 0 R >> endobj 32 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 20 /P 284 0 R >> endobj 33 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 21 /P 288 0 R >> endobj 34 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 22 /P 291 0 R >> endobj 35 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 23 /P 294 0 R >> endobj 36 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 24 /P 297 0 R >> endobj 37 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 25 /P 300 0 R >> endobj 38 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 26 /P 303 0 R >> endobj 39 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 27 /P 307 0 R >> endobj 40 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 28 /P 310 0 R >> endobj 41 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 29 /P 313 0 R >> endobj 42 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 30 /P 316 0 R >> endobj 43 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 31 /P 319 0 R >> endobj 44 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 32 /P 322 0 R >> endobj 45 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 33 /P 326 0 R >> endobj 46 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 34 /P 329 0 R >> endobj 47 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 35 /P 332 0 R >> endobj 48 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 36 /P 335 0 R >> endobj 49 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 37 /P 338 0 R >> endobj 50 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 38 /P 341 0 R >> endobj 51 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 39 /P 345 0 R >> endobj 52 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 40 /P 348 0 R >> endobj 53 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 41 /P 351 0 R >> endobj 54 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 42 /P 354 0 R >> endobj 55 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 43 /P 357 0 R >> endobj 56 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 44 /P 360 0 R >> endobj 57 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 45 /P 364 0 R >> endobj 58 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 46 /P 367 0 R >> endobj 59 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 47 /P 370 0 R >> endobj 60 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 48 /P 373 0 R >> endobj 61 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 49 /P 376 0 R >> endobj 62 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 50 /P 379 0 R >> endobj 63 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 51 /P 383 0 R >> endobj 64 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 52 /P 386 0 R >> endobj 65 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 53 /P 389 0 R >> endobj 66 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 54 /P 392 0 R >> endobj 67 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 55 /P 395 0 R >> endobj 68 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 56 /P 398 0 R >> endobj 69 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 57 /P 402 0 R >> endobj 70 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 58 /P 405 0 R >> endobj 71 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 59 /P 408 0 R >> endobj 72 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 60 /P 411 0 R >> endobj 73 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 61 /P 414 0 R >> endobj 74 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 62 /P 417 0 R >> endobj 75 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 63 /P 421 0 R >> endobj 76 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 64 /P 424 0 R >> endobj 77 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 65 /P 427 0 R >> endobj 78 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 66 /P 430 0 R >> endobj 79 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 67 /P 433 0 R >> endobj 80 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 68 /P 436 0 R >> endobj 81 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 69 /P 440 0 R >> endobj 82 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 70 /P 443 0 R >> endobj 83 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 71 /P 446 0 R >> endobj 84 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 72 /P 449 0 R >> endobj 85 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 73 /P 452 0 R >> endobj 86 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 74 /P 455 0 R >> endobj 87 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 75 /P 459 0 R >> endobj 88 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 76 /P 462 0 R >> endobj 89 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 77 /P 465 0 R >> endobj 90 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 78 /P 468 0 R >> endobj 91 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 79 /P 471 0 R >> endobj 92 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 80 /P 474 0 R >> endobj 93 0 obj << /S /Text#20body /C /Text#20body /Pg 916 0 R /K 81 /P 478 0 R >> endobj 94 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 82 /P 481 0 R >> endobj 95 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 83 /P 484 0 R >> endobj 96 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 84 /P 487 0 R >> endobj 97 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 85 /P 490 0 R >> endobj 98 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 86 /P 493 0 R >> endobj 99 0 obj << /S /#E4#B8#80#E8#A6#A7 /C /#E4#B8#80#E8#A6#A7 /Pg 916 0 R /K 87 /P 228 0 R >> endobj 100 0 obj << /S /#E8#A1#A8#E9#A1#8C /C /#E8#A1#A8#E9#A1#8C /Pg 916 0 R /K 88 /P 228 0 R >> endobj 101 0 obj << /O /Layout /WritingMode /LrTb /StartIndent 0 /EndIndent 0 /TextAlign /End /SpaceBefore 0 /SpaceAfter 0 /TextIndent 0 >> endobj 102 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 89 /P 498 0 R >> endobj 103 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 90 /P 501 0 R >> endobj 104 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 91 /P 504 0 R >> endobj 105 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 92 /P 507 0 R >> endobj 106 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 93 /P 511 0 R >> endobj 107 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 94 /P 514 0 R >> endobj 108 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 95 /P 517 0 R >> endobj 109 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 96 /P 520 0 R >> endobj 110 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 97 /P 524 0 R >> endobj 111 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 98 /P 527 0 R >> endobj 112 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 99 /P 530 0 R >> endobj 113 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 100 /P 533 0 R >> endobj 114 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 101 /P 537 0 R >> endobj 115 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 102 /P 540 0 R >> endobj 116 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 103 /P 543 0 R >> endobj 117 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 104 /P 546 0 R >> endobj 118 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 105 /P 550 0 R >> endobj 119 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 106 /P 553 0 R >> endobj 120 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 107 /P 556 0 R >> endobj 121 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 108 /P 559 0 R >> endobj 122 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 109 /P 563 0 R >> endobj 123 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 110 /P 566 0 R >> endobj 124 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 111 /P 569 0 R >> endobj 125 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 112 /P 572 0 R >> endobj 126 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 113 /P 576 0 R >> endobj 127 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 114 /P 579 0 R >> endobj 128 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 115 /P 582 0 R >> endobj 129 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 116 /P 585 0 R >> endobj 130 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 117 /P 589 0 R >> endobj 131 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 118 /P 592 0 R >> endobj 132 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 119 /P 595 0 R >> endobj 133 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 120 /P 598 0 R >> endobj 134 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 121 /P 602 0 R >> endobj 135 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 122 /P 605 0 R >> endobj 136 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 123 /P 608 0 R >> endobj 137 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 124 /P 611 0 R >> endobj 138 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 125 /P 615 0 R >> endobj 139 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 126 /P 618 0 R >> endobj 140 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 127 /P 621 0 R >> endobj 141 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 128 /P 624 0 R >> endobj 142 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 129 /P 628 0 R >> endobj 143 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 130 /P 631 0 R >> endobj 144 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 131 /P 634 0 R >> endobj 145 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 132 /P 637 0 R >> endobj 146 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 133 /P 641 0 R >> endobj 147 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 134 /P 644 0 R >> endobj 148 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 135 /P 647 0 R >> endobj 149 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 136 /P 650 0 R >> endobj 150 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 137 /P 654 0 R >> endobj 151 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 138 /P 657 0 R >> endobj 152 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 139 /P 660 0 R >> endobj 153 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 140 /P 663 0 R >> endobj 154 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 141 /P 667 0 R >> endobj 155 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 142 /P 670 0 R >> endobj 156 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 143 /P 673 0 R >> endobj 157 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 144 /P 676 0 R >> endobj 158 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 145 /P 680 0 R >> endobj 159 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 146 /P 683 0 R >> endobj 160 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 147 /P 686 0 R >> endobj 161 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 148 /P 689 0 R >> endobj 162 0 obj << /S /#E8#A1#A8#E9#A1#8C /C /#E8#A1#A8#E9#A1#8C /Pg 916 0 R /K 149 /P 228 0 R >> endobj 163 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 150 /P 694 0 R >> endobj 164 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 151 /P 697 0 R >> endobj 165 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 152 /P 700 0 R >> endobj 166 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 153 /P 703 0 R >> endobj 167 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 154 /P 707 0 R >> endobj 168 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 155 /P 710 0 R >> endobj 169 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 156 /P 713 0 R >> endobj 170 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 157 /P 716 0 R >> endobj 171 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 158 /P 720 0 R >> endobj 172 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 159 /P 723 0 R >> endobj 173 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 160 /P 726 0 R >> endobj 174 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 161 /P 729 0 R >> endobj 175 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 162 /P 733 0 R >> endobj 176 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 163 /P 736 0 R >> endobj 177 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 164 /P 739 0 R >> endobj 178 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 165 /P 742 0 R >> endobj 179 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 166 /P 746 0 R >> endobj 180 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 167 /P 749 0 R >> endobj 181 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 168 /P 752 0 R >> endobj 182 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 169 /P 755 0 R >> endobj 183 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 170 /P 759 0 R >> endobj 184 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 171 /P 762 0 R >> endobj 185 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 172 /P 765 0 R >> endobj 186 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 173 /P 768 0 R >> endobj 187 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 174 /P 772 0 R >> endobj 188 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 175 /P 775 0 R >> endobj 189 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 176 /P 778 0 R >> endobj 190 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 177 /P 781 0 R >> endobj 191 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 178 /P 785 0 R >> endobj 192 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 179 /P 788 0 R >> endobj 193 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 180 /P 791 0 R >> endobj 194 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 181 /P 794 0 R >> endobj 195 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 182 /P 798 0 R >> endobj 196 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 183 /P 801 0 R >> endobj 197 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 184 /P 804 0 R >> endobj 198 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 185 /P 807 0 R >> endobj 199 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 186 /P 811 0 R >> endobj 200 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 187 /P 814 0 R >> endobj 201 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 188 /P 817 0 R >> endobj 202 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 189 /P 820 0 R >> endobj 203 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 190 /P 824 0 R >> endobj 204 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 191 /P 827 0 R >> endobj 205 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 192 /P 830 0 R >> endobj 206 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 193 /P 833 0 R >> endobj 207 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 194 /P 837 0 R >> endobj 208 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 195 /P 840 0 R >> endobj 209 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 196 /P 843 0 R >> endobj 210 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 197 /P 846 0 R >> endobj 211 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 198 /P 850 0 R >> endobj 212 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 199 /P 853 0 R >> endobj 213 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 200 /P 856 0 R >> endobj 214 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 201 /P 859 0 R >> endobj 215 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 202 /P 863 0 R >> endobj 216 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 203 /P 866 0 R >> endobj 217 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 204 /P 869 0 R >> endobj 218 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 205 /P 872 0 R >> endobj 219 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 206 /P 876 0 R >> endobj 220 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 207 /P 879 0 R >> endobj 221 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 208 /P 882 0 R >> endobj 222 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 209 /P 885 0 R >> endobj 223 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 210 /P 889 0 R >> endobj 224 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 211 /P 892 0 R >> endobj 225 0 obj << /S /Table#20Contents /C /Table#20Contents /Pg 916 0 R /K 212 /P 895 0 R >> endobj 226 0 obj << /S /Key#20Settings /C /Key#20Settings /Pg 916 0 R /K 213 /P 898 0 R >> endobj 227 0 obj << /S /#E4#B8#80#E8#A6#A7 /C /#E4#B8#80#E8#A6#A7 /Pg 916 0 R /K 214 /P 228 0 R >> endobj 228 0 obj << /S /Sect /P 915 0 R /K [ 2 0 R 901 0 R 6 0 R 9 0 R 229 0 R 99 0 R 100 0 R 496 0 R 162 0 R 692 0 R 227 0 R ] >> endobj 229 0 obj << /S /Table /P 228 0 R /K [ 230 0 R 249 0 R 268 0 R 287 0 R 306 0 R 325 0 R 344 0 R 363 0 R 382 0 R 401 0 R 420 0 R 439 0 R 458 0 R 477 0 R ] /A [ 905 0 R ] >> endobj 230 0 obj << /S /TR /P 229 0 R /K [ 231 0 R 234 0 R 237 0 R 240 0 R 243 0 R 246 0 R ] >> endobj 231 0 obj << /S /TD /A [ 232 0 R 233 0 R ] /P 230 0 R /K 10 0 R >> endobj 232 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 233 0 obj << /O /Layout /BlockAlign /Before >> endobj 234 0 obj << /S /TD /A [ 235 0 R 236 0 R ] /P 230 0 R /K 12 0 R >> endobj 235 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 236 0 obj << /O /Layout /BlockAlign /Before >> endobj 237 0 obj << /S /TD /A [ 238 0 R 239 0 R ] /P 230 0 R /K 14 0 R >> endobj 238 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 239 0 obj << /O /Layout /BlockAlign /Before >> endobj 240 0 obj << /S /TD /A [ 241 0 R 242 0 R ] /P 230 0 R /K 15 0 R >> endobj 241 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 242 0 obj << /O /Layout /BlockAlign /Before >> endobj 243 0 obj << /S /TD /A [ 244 0 R 245 0 R ] /P 230 0 R /K 16 0 R >> endobj 244 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 245 0 obj << /O /Layout /BlockAlign /Before >> endobj 246 0 obj << /S /TD /A [ 247 0 R 248 0 R ] /P 230 0 R /K 17 0 R >> endobj 247 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 248 0 obj << /O /Layout /BlockAlign /Before >> endobj 249 0 obj << /S /TR /P 229 0 R /K [ 250 0 R 253 0 R 256 0 R 259 0 R 262 0 R 265 0 R ] >> endobj 250 0 obj << /S /TD /A [ 251 0 R 252 0 R ] /P 249 0 R /K 19 0 R >> endobj 251 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 252 0 obj << /O /Layout /BlockAlign /Before >> endobj 253 0 obj << /S /TD /A [ 254 0 R 255 0 R ] /P 249 0 R /K 20 0 R >> endobj 254 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 255 0 obj << /O /Layout /BlockAlign /Before >> endobj 256 0 obj << /S /TD /A [ 257 0 R 258 0 R ] /P 249 0 R /K 21 0 R >> endobj 257 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 258 0 obj << /O /Layout /BlockAlign /Before >> endobj 259 0 obj << /S /TD /A [ 260 0 R 261 0 R ] /P 249 0 R /K 22 0 R >> endobj 260 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 261 0 obj << /O /Layout /BlockAlign /Before >> endobj 262 0 obj << /S /TD /A [ 263 0 R 264 0 R ] /P 249 0 R /K 23 0 R >> endobj 263 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 264 0 obj << /O /Layout /BlockAlign /Before >> endobj 265 0 obj << /S /TD /A [ 266 0 R 267 0 R ] /P 249 0 R /K 24 0 R >> endobj 266 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 267 0 obj << /O /Layout /BlockAlign /Before >> endobj 268 0 obj << /S /TR /P 229 0 R /K [ 269 0 R 272 0 R 275 0 R 278 0 R 281 0 R 284 0 R ] >> endobj 269 0 obj << /S /TD /A [ 270 0 R 271 0 R ] /P 268 0 R /K 25 0 R >> endobj 270 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 271 0 obj << /O /Layout /BlockAlign /Before >> endobj 272 0 obj << /S /TD /A [ 273 0 R 274 0 R ] /P 268 0 R /K 26 0 R >> endobj 273 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 274 0 obj << /O /Layout /BlockAlign /Before >> endobj 275 0 obj << /S /TD /A [ 276 0 R 277 0 R ] /P 268 0 R /K 27 0 R >> endobj 276 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 277 0 obj << /O /Layout /BlockAlign /Before >> endobj 278 0 obj << /S /TD /A [ 279 0 R 280 0 R ] /P 268 0 R /K 29 0 R >> endobj 279 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 280 0 obj << /O /Layout /BlockAlign /Before >> endobj 281 0 obj << /S /TD /A [ 282 0 R 283 0 R ] /P 268 0 R /K 31 0 R >> endobj 282 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 283 0 obj << /O /Layout /BlockAlign /Before >> endobj 284 0 obj << /S /TD /A [ 285 0 R 286 0 R ] /P 268 0 R /K 32 0 R >> endobj 285 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 286 0 obj << /O /Layout /BlockAlign /Before >> endobj 287 0 obj << /S /TR /P 229 0 R /K [ 288 0 R 291 0 R 294 0 R 297 0 R 300 0 R 303 0 R ] >> endobj 288 0 obj << /S /TD /A [ 289 0 R 290 0 R ] /P 287 0 R /K 33 0 R >> endobj 289 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 290 0 obj << /O /Layout /BlockAlign /Before >> endobj 291 0 obj << /S /TD /A [ 292 0 R 293 0 R ] /P 287 0 R /K 34 0 R >> endobj 292 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 293 0 obj << /O /Layout /BlockAlign /Before >> endobj 294 0 obj << /S /TD /A [ 295 0 R 296 0 R ] /P 287 0 R /K 35 0 R >> endobj 295 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 296 0 obj << /O /Layout /BlockAlign /Before >> endobj 297 0 obj << /S /TD /A [ 298 0 R 299 0 R ] /P 287 0 R /K 36 0 R >> endobj 298 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 299 0 obj << /O /Layout /BlockAlign /Before >> endobj 300 0 obj << /S /TD /A [ 301 0 R 302 0 R ] /P 287 0 R /K 37 0 R >> endobj 301 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 302 0 obj << /O /Layout /BlockAlign /Before >> endobj 303 0 obj << /S /TD /A [ 304 0 R 305 0 R ] /P 287 0 R /K 38 0 R >> endobj 304 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 305 0 obj << /O /Layout /BlockAlign /Before >> endobj 306 0 obj << /S /TR /P 229 0 R /K [ 307 0 R 310 0 R 313 0 R 316 0 R 319 0 R 322 0 R ] >> endobj 307 0 obj << /S /TD /A [ 308 0 R 309 0 R ] /P 306 0 R /K 39 0 R >> endobj 308 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 309 0 obj << /O /Layout /BlockAlign /Before >> endobj 310 0 obj << /S /TD /A [ 311 0 R 312 0 R ] /P 306 0 R /K 40 0 R >> endobj 311 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 312 0 obj << /O /Layout /BlockAlign /Before >> endobj 313 0 obj << /S /TD /A [ 314 0 R 315 0 R ] /P 306 0 R /K 41 0 R >> endobj 314 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 315 0 obj << /O /Layout /BlockAlign /Before >> endobj 316 0 obj << /S /TD /A [ 317 0 R 318 0 R ] /P 306 0 R /K 42 0 R >> endobj 317 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 318 0 obj << /O /Layout /BlockAlign /Before >> endobj 319 0 obj << /S /TD /A [ 320 0 R 321 0 R ] /P 306 0 R /K 43 0 R >> endobj 320 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 321 0 obj << /O /Layout /BlockAlign /Before >> endobj 322 0 obj << /S /TD /A [ 323 0 R 324 0 R ] /P 306 0 R /K 44 0 R >> endobj 323 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 324 0 obj << /O /Layout /BlockAlign /Before >> endobj 325 0 obj << /S /TR /P 229 0 R /K [ 326 0 R 329 0 R 332 0 R 335 0 R 338 0 R 341 0 R ] >> endobj 326 0 obj << /S /TD /A [ 327 0 R 328 0 R ] /P 325 0 R /K 45 0 R >> endobj 327 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 328 0 obj << /O /Layout /BlockAlign /Before >> endobj 329 0 obj << /S /TD /A [ 330 0 R 331 0 R ] /P 325 0 R /K 46 0 R >> endobj 330 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 331 0 obj << /O /Layout /BlockAlign /Before >> endobj 332 0 obj << /S /TD /A [ 333 0 R 334 0 R ] /P 325 0 R /K 47 0 R >> endobj 333 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 334 0 obj << /O /Layout /BlockAlign /Before >> endobj 335 0 obj << /S /TD /A [ 336 0 R 337 0 R ] /P 325 0 R /K 48 0 R >> endobj 336 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 337 0 obj << /O /Layout /BlockAlign /Before >> endobj 338 0 obj << /S /TD /A [ 339 0 R 340 0 R ] /P 325 0 R /K 49 0 R >> endobj 339 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 340 0 obj << /O /Layout /BlockAlign /Before >> endobj 341 0 obj << /S /TD /A [ 342 0 R 343 0 R ] /P 325 0 R /K 50 0 R >> endobj 342 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 343 0 obj << /O /Layout /BlockAlign /Before >> endobj 344 0 obj << /S /TR /P 229 0 R /K [ 345 0 R 348 0 R 351 0 R 354 0 R 357 0 R 360 0 R ] >> endobj 345 0 obj << /S /TD /A [ 346 0 R 347 0 R ] /P 344 0 R /K 51 0 R >> endobj 346 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 347 0 obj << /O /Layout /BlockAlign /Before >> endobj 348 0 obj << /S /TD /A [ 349 0 R 350 0 R ] /P 344 0 R /K 52 0 R >> endobj 349 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 350 0 obj << /O /Layout /BlockAlign /Before >> endobj 351 0 obj << /S /TD /A [ 352 0 R 353 0 R ] /P 344 0 R /K 53 0 R >> endobj 352 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 353 0 obj << /O /Layout /BlockAlign /Before >> endobj 354 0 obj << /S /TD /A [ 355 0 R 356 0 R ] /P 344 0 R /K 54 0 R >> endobj 355 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 356 0 obj << /O /Layout /BlockAlign /Before >> endobj 357 0 obj << /S /TD /A [ 358 0 R 359 0 R ] /P 344 0 R /K 55 0 R >> endobj 358 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 359 0 obj << /O /Layout /BlockAlign /Before >> endobj 360 0 obj << /S /TD /A [ 361 0 R 362 0 R ] /P 344 0 R /K 56 0 R >> endobj 361 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 362 0 obj << /O /Layout /BlockAlign /Before >> endobj 363 0 obj << /S /TR /P 229 0 R /K [ 364 0 R 367 0 R 370 0 R 373 0 R 376 0 R 379 0 R ] >> endobj 364 0 obj << /S /TD /A [ 365 0 R 366 0 R ] /P 363 0 R /K 57 0 R >> endobj 365 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 366 0 obj << /O /Layout /BlockAlign /Before >> endobj 367 0 obj << /S /TD /A [ 368 0 R 369 0 R ] /P 363 0 R /K 58 0 R >> endobj 368 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 369 0 obj << /O /Layout /BlockAlign /Before >> endobj 370 0 obj << /S /TD /A [ 371 0 R 372 0 R ] /P 363 0 R /K 59 0 R >> endobj 371 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 372 0 obj << /O /Layout /BlockAlign /Before >> endobj 373 0 obj << /S /TD /A [ 374 0 R 375 0 R ] /P 363 0 R /K 60 0 R >> endobj 374 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 375 0 obj << /O /Layout /BlockAlign /Before >> endobj 376 0 obj << /S /TD /A [ 377 0 R 378 0 R ] /P 363 0 R /K 61 0 R >> endobj 377 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 378 0 obj << /O /Layout /BlockAlign /Before >> endobj 379 0 obj << /S /TD /A [ 380 0 R 381 0 R ] /P 363 0 R /K 62 0 R >> endobj 380 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 381 0 obj << /O /Layout /BlockAlign /Before >> endobj 382 0 obj << /S /TR /P 229 0 R /K [ 383 0 R 386 0 R 389 0 R 392 0 R 395 0 R 398 0 R ] >> endobj 383 0 obj << /S /TD /A [ 384 0 R 385 0 R ] /P 382 0 R /K 63 0 R >> endobj 384 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 385 0 obj << /O /Layout /BlockAlign /Before >> endobj 386 0 obj << /S /TD /A [ 387 0 R 388 0 R ] /P 382 0 R /K 64 0 R >> endobj 387 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 388 0 obj << /O /Layout /BlockAlign /Before >> endobj 389 0 obj << /S /TD /A [ 390 0 R 391 0 R ] /P 382 0 R /K 65 0 R >> endobj 390 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 391 0 obj << /O /Layout /BlockAlign /Before >> endobj 392 0 obj << /S /TD /A [ 393 0 R 394 0 R ] /P 382 0 R /K 66 0 R >> endobj 393 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 394 0 obj << /O /Layout /BlockAlign /Before >> endobj 395 0 obj << /S /TD /A [ 396 0 R 397 0 R ] /P 382 0 R /K 67 0 R >> endobj 396 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 397 0 obj << /O /Layout /BlockAlign /Before >> endobj 398 0 obj << /S /TD /A [ 399 0 R 400 0 R ] /P 382 0 R /K 68 0 R >> endobj 399 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 400 0 obj << /O /Layout /BlockAlign /Before >> endobj 401 0 obj << /S /TR /P 229 0 R /K [ 402 0 R 405 0 R 408 0 R 411 0 R 414 0 R 417 0 R ] >> endobj 402 0 obj << /S /TD /A [ 403 0 R 404 0 R ] /P 401 0 R /K 69 0 R >> endobj 403 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 404 0 obj << /O /Layout /BlockAlign /Before >> endobj 405 0 obj << /S /TD /A [ 406 0 R 407 0 R ] /P 401 0 R /K 70 0 R >> endobj 406 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 407 0 obj << /O /Layout /BlockAlign /Before >> endobj 408 0 obj << /S /TD /A [ 409 0 R 410 0 R ] /P 401 0 R /K 71 0 R >> endobj 409 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 410 0 obj << /O /Layout /BlockAlign /Before >> endobj 411 0 obj << /S /TD /A [ 412 0 R 413 0 R ] /P 401 0 R /K 72 0 R >> endobj 412 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 413 0 obj << /O /Layout /BlockAlign /Before >> endobj 414 0 obj << /S /TD /A [ 415 0 R 416 0 R ] /P 401 0 R /K 73 0 R >> endobj 415 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 416 0 obj << /O /Layout /BlockAlign /Before >> endobj 417 0 obj << /S /TD /A [ 418 0 R 419 0 R ] /P 401 0 R /K 74 0 R >> endobj 418 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 419 0 obj << /O /Layout /BlockAlign /Before >> endobj 420 0 obj << /S /TR /P 229 0 R /K [ 421 0 R 424 0 R 427 0 R 430 0 R 433 0 R 436 0 R ] >> endobj 421 0 obj << /S /TD /A [ 422 0 R 423 0 R ] /P 420 0 R /K 75 0 R >> endobj 422 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 423 0 obj << /O /Layout /BlockAlign /Before >> endobj 424 0 obj << /S /TD /A [ 425 0 R 426 0 R ] /P 420 0 R /K 76 0 R >> endobj 425 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 426 0 obj << /O /Layout /BlockAlign /Before >> endobj 427 0 obj << /S /TD /A [ 428 0 R 429 0 R ] /P 420 0 R /K 77 0 R >> endobj 428 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 429 0 obj << /O /Layout /BlockAlign /Before >> endobj 430 0 obj << /S /TD /A [ 431 0 R 432 0 R ] /P 420 0 R /K 78 0 R >> endobj 431 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 432 0 obj << /O /Layout /BlockAlign /Before >> endobj 433 0 obj << /S /TD /A [ 434 0 R 435 0 R ] /P 420 0 R /K 79 0 R >> endobj 434 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 435 0 obj << /O /Layout /BlockAlign /Before >> endobj 436 0 obj << /S /TD /A [ 437 0 R 438 0 R ] /P 420 0 R /K 80 0 R >> endobj 437 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 438 0 obj << /O /Layout /BlockAlign /Before >> endobj 439 0 obj << /S /TR /P 229 0 R /K [ 440 0 R 443 0 R 446 0 R 449 0 R 452 0 R 455 0 R ] >> endobj 440 0 obj << /S /TD /A [ 441 0 R 442 0 R ] /P 439 0 R /K 81 0 R >> endobj 441 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 442 0 obj << /O /Layout /BlockAlign /Before >> endobj 443 0 obj << /S /TD /A [ 444 0 R 445 0 R ] /P 439 0 R /K 82 0 R >> endobj 444 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 445 0 obj << /O /Layout /BlockAlign /Before >> endobj 446 0 obj << /S /TD /A [ 447 0 R 448 0 R ] /P 439 0 R /K 83 0 R >> endobj 447 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 448 0 obj << /O /Layout /BlockAlign /Before >> endobj 449 0 obj << /S /TD /A [ 450 0 R 451 0 R ] /P 439 0 R /K 84 0 R >> endobj 450 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 451 0 obj << /O /Layout /BlockAlign /Before >> endobj 452 0 obj << /S /TD /A [ 453 0 R 454 0 R ] /P 439 0 R /K 85 0 R >> endobj 453 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 454 0 obj << /O /Layout /BlockAlign /Before >> endobj 455 0 obj << /S /TD /A [ 456 0 R 457 0 R ] /P 439 0 R /K 86 0 R >> endobj 456 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 457 0 obj << /O /Layout /BlockAlign /Before >> endobj 458 0 obj << /S /TR /P 229 0 R /K [ 459 0 R 462 0 R 465 0 R 468 0 R 471 0 R 474 0 R ] >> endobj 459 0 obj << /S /TD /A [ 460 0 R 461 0 R ] /P 458 0 R /K 87 0 R >> endobj 460 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 461 0 obj << /O /Layout /BlockAlign /Before >> endobj 462 0 obj << /S /TD /A [ 463 0 R 464 0 R ] /P 458 0 R /K 88 0 R >> endobj 463 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 464 0 obj << /O /Layout /BlockAlign /Before >> endobj 465 0 obj << /S /TD /A [ 466 0 R 467 0 R ] /P 458 0 R /K 89 0 R >> endobj 466 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 467 0 obj << /O /Layout /BlockAlign /Before >> endobj 468 0 obj << /S /TD /A [ 469 0 R 470 0 R ] /P 458 0 R /K 90 0 R >> endobj 469 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 470 0 obj << /O /Layout /BlockAlign /Before >> endobj 471 0 obj << /S /TD /A [ 472 0 R 473 0 R ] /P 458 0 R /K 91 0 R >> endobj 472 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 473 0 obj << /O /Layout /BlockAlign /Before >> endobj 474 0 obj << /S /TD /A [ 475 0 R 476 0 R ] /P 458 0 R /K 92 0 R >> endobj 475 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 476 0 obj << /O /Layout /BlockAlign /Before >> endobj 477 0 obj << /S /TR /P 229 0 R /K [ 478 0 R 481 0 R 484 0 R 487 0 R 490 0 R 493 0 R ] >> endobj 478 0 obj << /S /TD /A [ 479 0 R 480 0 R ] /P 477 0 R /K 93 0 R >> endobj 479 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 480 0 obj << /O /Layout /BlockAlign /Before >> endobj 481 0 obj << /S /TD /A [ 482 0 R 483 0 R ] /P 477 0 R /K 94 0 R >> endobj 482 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 483 0 obj << /O /Layout /BlockAlign /Before >> endobj 484 0 obj << /S /TD /A [ 485 0 R 486 0 R ] /P 477 0 R /K 95 0 R >> endobj 485 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 486 0 obj << /O /Layout /BlockAlign /Before >> endobj 487 0 obj << /S /TD /A [ 488 0 R 489 0 R ] /P 477 0 R /K 96 0 R >> endobj 488 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 489 0 obj << /O /Layout /BlockAlign /Before >> endobj 490 0 obj << /S /TD /A [ 491 0 R 492 0 R ] /P 477 0 R /K 97 0 R >> endobj 491 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 492 0 obj << /O /Layout /BlockAlign /Before >> endobj 493 0 obj << /S /TD /A [ 494 0 R 495 0 R ] /P 477 0 R /K 98 0 R >> endobj 494 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 495 0 obj << /O /Layout /BlockAlign /Before >> endobj 496 0 obj << /S /Table /P 228 0 R /K [ 497 0 R 510 0 R 523 0 R 536 0 R 549 0 R 562 0 R 575 0 R 588 0 R 601 0 R 614 0 R 627 0 R 640 0 R 653 0 R 666 0 R 679 0 R ] /A [ 906 0 R ] >> endobj 497 0 obj << /S /TR /P 496 0 R /K [ 498 0 R 501 0 R 504 0 R 507 0 R ] >> endobj 498 0 obj << /S /TD /A [ 499 0 R 500 0 R ] /P 497 0 R /K 102 0 R >> endobj 499 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 500 0 obj << /O /Layout /BlockAlign /Before >> endobj 501 0 obj << /S /TD /A [ 502 0 R 503 0 R ] /P 497 0 R /K 103 0 R >> endobj 502 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 503 0 obj << /O /Layout /BlockAlign /Before >> endobj 504 0 obj << /S /TD /A [ 505 0 R 506 0 R ] /P 497 0 R /K 104 0 R >> endobj 505 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 506 0 obj << /O /Layout /BlockAlign /Before >> endobj 507 0 obj << /S /TD /A [ 508 0 R 509 0 R ] /P 497 0 R /K 105 0 R >> endobj 508 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 509 0 obj << /O /Layout /BlockAlign /Before >> endobj 510 0 obj << /S /TR /P 496 0 R /K [ 511 0 R 514 0 R 517 0 R 520 0 R ] >> endobj 511 0 obj << /S /TD /A [ 512 0 R 513 0 R ] /P 510 0 R /K 106 0 R >> endobj 512 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 513 0 obj << /O /Layout /BlockAlign /Before >> endobj 514 0 obj << /S /TD /A [ 515 0 R 516 0 R ] /P 510 0 R /K 107 0 R >> endobj 515 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 516 0 obj << /O /Layout /BlockAlign /Before >> endobj 517 0 obj << /S /TD /A [ 518 0 R 519 0 R ] /P 510 0 R /K 108 0 R >> endobj 518 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 519 0 obj << /O /Layout /BlockAlign /Before >> endobj 520 0 obj << /S /TD /A [ 521 0 R 522 0 R ] /P 510 0 R /K 109 0 R >> endobj 521 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 522 0 obj << /O /Layout /BlockAlign /Before >> endobj 523 0 obj << /S /TR /P 496 0 R /K [ 524 0 R 527 0 R 530 0 R 533 0 R ] >> endobj 524 0 obj << /S /TD /A [ 525 0 R 526 0 R ] /P 523 0 R /K 110 0 R >> endobj 525 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 526 0 obj << /O /Layout /BlockAlign /Before >> endobj 527 0 obj << /S /TD /A [ 528 0 R 529 0 R ] /P 523 0 R /K 111 0 R >> endobj 528 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 529 0 obj << /O /Layout /BlockAlign /Before >> endobj 530 0 obj << /S /TD /A [ 531 0 R 532 0 R ] /P 523 0 R /K 112 0 R >> endobj 531 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 532 0 obj << /O /Layout /BlockAlign /Before >> endobj 533 0 obj << /S /TD /A [ 534 0 R 535 0 R ] /P 523 0 R /K 113 0 R >> endobj 534 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 535 0 obj << /O /Layout /BlockAlign /Before >> endobj 536 0 obj << /S /TR /P 496 0 R /K [ 537 0 R 540 0 R 543 0 R 546 0 R ] >> endobj 537 0 obj << /S /TD /A [ 538 0 R 539 0 R ] /P 536 0 R /K 114 0 R >> endobj 538 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 539 0 obj << /O /Layout /BlockAlign /Before >> endobj 540 0 obj << /S /TD /A [ 541 0 R 542 0 R ] /P 536 0 R /K 115 0 R >> endobj 541 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 542 0 obj << /O /Layout /BlockAlign /Before >> endobj 543 0 obj << /S /TD /A [ 544 0 R 545 0 R ] /P 536 0 R /K 116 0 R >> endobj 544 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 545 0 obj << /O /Layout /BlockAlign /Before >> endobj 546 0 obj << /S /TD /A [ 547 0 R 548 0 R ] /P 536 0 R /K 117 0 R >> endobj 547 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 548 0 obj << /O /Layout /BlockAlign /Before >> endobj 549 0 obj << /S /TR /P 496 0 R /K [ 550 0 R 553 0 R 556 0 R 559 0 R ] >> endobj 550 0 obj << /S /TD /A [ 551 0 R 552 0 R ] /P 549 0 R /K 118 0 R >> endobj 551 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 552 0 obj << /O /Layout /BlockAlign /Before >> endobj 553 0 obj << /S /TD /A [ 554 0 R 555 0 R ] /P 549 0 R /K 119 0 R >> endobj 554 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 555 0 obj << /O /Layout /BlockAlign /Before >> endobj 556 0 obj << /S /TD /A [ 557 0 R 558 0 R ] /P 549 0 R /K 120 0 R >> endobj 557 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 558 0 obj << /O /Layout /BlockAlign /Before >> endobj 559 0 obj << /S /TD /A [ 560 0 R 561 0 R ] /P 549 0 R /K 121 0 R >> endobj 560 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 561 0 obj << /O /Layout /BlockAlign /Before >> endobj 562 0 obj << /S /TR /P 496 0 R /K [ 563 0 R 566 0 R 569 0 R 572 0 R ] >> endobj 563 0 obj << /S /TD /A [ 564 0 R 565 0 R ] /P 562 0 R /K 122 0 R >> endobj 564 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 565 0 obj << /O /Layout /BlockAlign /Before >> endobj 566 0 obj << /S /TD /A [ 567 0 R 568 0 R ] /P 562 0 R /K 123 0 R >> endobj 567 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 568 0 obj << /O /Layout /BlockAlign /Before >> endobj 569 0 obj << /S /TD /A [ 570 0 R 571 0 R ] /P 562 0 R /K 124 0 R >> endobj 570 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 571 0 obj << /O /Layout /BlockAlign /Before >> endobj 572 0 obj << /S /TD /A [ 573 0 R 574 0 R ] /P 562 0 R /K 125 0 R >> endobj 573 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 574 0 obj << /O /Layout /BlockAlign /Before >> endobj 575 0 obj << /S /TR /P 496 0 R /K [ 576 0 R 579 0 R 582 0 R 585 0 R ] >> endobj 576 0 obj << /S /TD /A [ 577 0 R 578 0 R ] /P 575 0 R /K 126 0 R >> endobj 577 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 578 0 obj << /O /Layout /BlockAlign /Before >> endobj 579 0 obj << /S /TD /A [ 580 0 R 581 0 R ] /P 575 0 R /K 127 0 R >> endobj 580 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 581 0 obj << /O /Layout /BlockAlign /Before >> endobj 582 0 obj << /S /TD /A [ 583 0 R 584 0 R ] /P 575 0 R /K 128 0 R >> endobj 583 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 584 0 obj << /O /Layout /BlockAlign /Before >> endobj 585 0 obj << /S /TD /A [ 586 0 R 587 0 R ] /P 575 0 R /K 129 0 R >> endobj 586 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 587 0 obj << /O /Layout /BlockAlign /Before >> endobj 588 0 obj << /S /TR /P 496 0 R /K [ 589 0 R 592 0 R 595 0 R 598 0 R ] >> endobj 589 0 obj << /S /TD /A [ 590 0 R 591 0 R ] /P 588 0 R /K 130 0 R >> endobj 590 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 591 0 obj << /O /Layout /BlockAlign /Before >> endobj 592 0 obj << /S /TD /A [ 593 0 R 594 0 R ] /P 588 0 R /K 131 0 R >> endobj 593 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 594 0 obj << /O /Layout /BlockAlign /Before >> endobj 595 0 obj << /S /TD /A [ 596 0 R 597 0 R ] /P 588 0 R /K 132 0 R >> endobj 596 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 597 0 obj << /O /Layout /BlockAlign /Before >> endobj 598 0 obj << /S /TD /A [ 599 0 R 600 0 R ] /P 588 0 R /K 133 0 R >> endobj 599 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 600 0 obj << /O /Layout /BlockAlign /Before >> endobj 601 0 obj << /S /TR /P 496 0 R /K [ 602 0 R 605 0 R 608 0 R 611 0 R ] >> endobj 602 0 obj << /S /TD /A [ 603 0 R 604 0 R ] /P 601 0 R /K 134 0 R >> endobj 603 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 604 0 obj << /O /Layout /BlockAlign /Before >> endobj 605 0 obj << /S /TD /A [ 606 0 R 607 0 R ] /P 601 0 R /K 135 0 R >> endobj 606 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 607 0 obj << /O /Layout /BlockAlign /Before >> endobj 608 0 obj << /S /TD /A [ 609 0 R 610 0 R ] /P 601 0 R /K 136 0 R >> endobj 609 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 610 0 obj << /O /Layout /BlockAlign /Before >> endobj 611 0 obj << /S /TD /A [ 612 0 R 613 0 R ] /P 601 0 R /K 137 0 R >> endobj 612 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 613 0 obj << /O /Layout /BlockAlign /Before >> endobj 614 0 obj << /S /TR /P 496 0 R /K [ 615 0 R 618 0 R 621 0 R 624 0 R ] >> endobj 615 0 obj << /S /TD /A [ 616 0 R 617 0 R ] /P 614 0 R /K 138 0 R >> endobj 616 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 617 0 obj << /O /Layout /BlockAlign /Before >> endobj 618 0 obj << /S /TD /A [ 619 0 R 620 0 R ] /P 614 0 R /K 139 0 R >> endobj 619 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 620 0 obj << /O /Layout /BlockAlign /Before >> endobj 621 0 obj << /S /TD /A [ 622 0 R 623 0 R ] /P 614 0 R /K 140 0 R >> endobj 622 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 623 0 obj << /O /Layout /BlockAlign /Before >> endobj 624 0 obj << /S /TD /A [ 625 0 R 626 0 R ] /P 614 0 R /K 141 0 R >> endobj 625 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 626 0 obj << /O /Layout /BlockAlign /Before >> endobj 627 0 obj << /S /TR /P 496 0 R /K [ 628 0 R 631 0 R 634 0 R 637 0 R ] >> endobj 628 0 obj << /S /TD /A [ 629 0 R 630 0 R ] /P 627 0 R /K 142 0 R >> endobj 629 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 630 0 obj << /O /Layout /BlockAlign /Before >> endobj 631 0 obj << /S /TD /A [ 632 0 R 633 0 R ] /P 627 0 R /K 143 0 R >> endobj 632 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 633 0 obj << /O /Layout /BlockAlign /Before >> endobj 634 0 obj << /S /TD /A [ 635 0 R 636 0 R ] /P 627 0 R /K 144 0 R >> endobj 635 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 636 0 obj << /O /Layout /BlockAlign /Before >> endobj 637 0 obj << /S /TD /A [ 638 0 R 639 0 R ] /P 627 0 R /K 145 0 R >> endobj 638 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 639 0 obj << /O /Layout /BlockAlign /Before >> endobj 640 0 obj << /S /TR /P 496 0 R /K [ 641 0 R 644 0 R 647 0 R 650 0 R ] >> endobj 641 0 obj << /S /TD /A [ 642 0 R 643 0 R ] /P 640 0 R /K 146 0 R >> endobj 642 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 643 0 obj << /O /Layout /BlockAlign /Before >> endobj 644 0 obj << /S /TD /A [ 645 0 R 646 0 R ] /P 640 0 R /K 147 0 R >> endobj 645 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 646 0 obj << /O /Layout /BlockAlign /Before >> endobj 647 0 obj << /S /TD /A [ 648 0 R 649 0 R ] /P 640 0 R /K 148 0 R >> endobj 648 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 649 0 obj << /O /Layout /BlockAlign /Before >> endobj 650 0 obj << /S /TD /A [ 651 0 R 652 0 R ] /P 640 0 R /K 149 0 R >> endobj 651 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 652 0 obj << /O /Layout /BlockAlign /Before >> endobj 653 0 obj << /S /TR /P 496 0 R /K [ 654 0 R 657 0 R 660 0 R 663 0 R ] >> endobj 654 0 obj << /S /TD /A [ 655 0 R 656 0 R ] /P 653 0 R /K 150 0 R >> endobj 655 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 656 0 obj << /O /Layout /BlockAlign /Before >> endobj 657 0 obj << /S /TD /A [ 658 0 R 659 0 R ] /P 653 0 R /K 151 0 R >> endobj 658 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 659 0 obj << /O /Layout /BlockAlign /Before >> endobj 660 0 obj << /S /TD /A [ 661 0 R 662 0 R ] /P 653 0 R /K 152 0 R >> endobj 661 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 662 0 obj << /O /Layout /BlockAlign /Before >> endobj 663 0 obj << /S /TD /A [ 664 0 R 665 0 R ] /P 653 0 R /K 153 0 R >> endobj 664 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 665 0 obj << /O /Layout /BlockAlign /Before >> endobj 666 0 obj << /S /TR /P 496 0 R /K [ 667 0 R 670 0 R 673 0 R 676 0 R ] >> endobj 667 0 obj << /S /TD /A [ 668 0 R 669 0 R ] /P 666 0 R /K 154 0 R >> endobj 668 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 669 0 obj << /O /Layout /BlockAlign /Before >> endobj 670 0 obj << /S /TD /A [ 671 0 R 672 0 R ] /P 666 0 R /K 155 0 R >> endobj 671 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 672 0 obj << /O /Layout /BlockAlign /Before >> endobj 673 0 obj << /S /TD /A [ 674 0 R 675 0 R ] /P 666 0 R /K 156 0 R >> endobj 674 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 675 0 obj << /O /Layout /BlockAlign /Before >> endobj 676 0 obj << /S /TD /A [ 677 0 R 678 0 R ] /P 666 0 R /K 157 0 R >> endobj 677 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 678 0 obj << /O /Layout /BlockAlign /Before >> endobj 679 0 obj << /S /TR /P 496 0 R /K [ 680 0 R 683 0 R 686 0 R 689 0 R ] >> endobj 680 0 obj << /S /TD /A [ 681 0 R 682 0 R ] /P 679 0 R /K 158 0 R >> endobj 681 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 682 0 obj << /O /Layout /BlockAlign /Before >> endobj 683 0 obj << /S /TD /A [ 684 0 R 685 0 R ] /P 679 0 R /K 159 0 R >> endobj 684 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 685 0 obj << /O /Layout /BlockAlign /Before >> endobj 686 0 obj << /S /TD /A [ 687 0 R 688 0 R ] /P 679 0 R /K 160 0 R >> endobj 687 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 688 0 obj << /O /Layout /BlockAlign /Before >> endobj 689 0 obj << /S /TD /A [ 690 0 R 691 0 R ] /P 679 0 R /K 161 0 R >> endobj 690 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 691 0 obj << /O /Layout /BlockAlign /Before >> endobj 692 0 obj << /S /Table /P 228 0 R /K [ 693 0 R 706 0 R 719 0 R 732 0 R 745 0 R 758 0 R 771 0 R 784 0 R 797 0 R 810 0 R 823 0 R 836 0 R 849 0 R 862 0 R 875 0 R 888 0 R ] /A [ 907 0 R ] >> endobj 693 0 obj << /S /TR /P 692 0 R /K [ 694 0 R 697 0 R 700 0 R 703 0 R ] >> endobj 694 0 obj << /S /TD /A [ 695 0 R 696 0 R ] /P 693 0 R /K 163 0 R >> endobj 695 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 696 0 obj << /O /Layout /BlockAlign /Before >> endobj 697 0 obj << /S /TD /A [ 698 0 R 699 0 R ] /P 693 0 R /K 164 0 R >> endobj 698 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 699 0 obj << /O /Layout /BlockAlign /Before >> endobj 700 0 obj << /S /TD /A [ 701 0 R 702 0 R ] /P 693 0 R /K 165 0 R >> endobj 701 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 702 0 obj << /O /Layout /BlockAlign /Before >> endobj 703 0 obj << /S /TD /A [ 704 0 R 705 0 R ] /P 693 0 R /K 166 0 R >> endobj 704 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 705 0 obj << /O /Layout /BlockAlign /Before >> endobj 706 0 obj << /S /TR /P 692 0 R /K [ 707 0 R 710 0 R 713 0 R 716 0 R ] >> endobj 707 0 obj << /S /TD /A [ 708 0 R 709 0 R ] /P 706 0 R /K 167 0 R >> endobj 708 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 709 0 obj << /O /Layout /BlockAlign /Before >> endobj 710 0 obj << /S /TD /A [ 711 0 R 712 0 R ] /P 706 0 R /K 168 0 R >> endobj 711 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 712 0 obj << /O /Layout /BlockAlign /Before >> endobj 713 0 obj << /S /TD /A [ 714 0 R 715 0 R ] /P 706 0 R /K 169 0 R >> endobj 714 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 715 0 obj << /O /Layout /BlockAlign /Before >> endobj 716 0 obj << /S /TD /A [ 717 0 R 718 0 R ] /P 706 0 R /K 170 0 R >> endobj 717 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 718 0 obj << /O /Layout /BlockAlign /Before >> endobj 719 0 obj << /S /TR /P 692 0 R /K [ 720 0 R 723 0 R 726 0 R 729 0 R ] >> endobj 720 0 obj << /S /TD /A [ 721 0 R 722 0 R ] /P 719 0 R /K 171 0 R >> endobj 721 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 722 0 obj << /O /Layout /BlockAlign /Before >> endobj 723 0 obj << /S /TD /A [ 724 0 R 725 0 R ] /P 719 0 R /K 172 0 R >> endobj 724 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 725 0 obj << /O /Layout /BlockAlign /Before >> endobj 726 0 obj << /S /TD /A [ 727 0 R 728 0 R ] /P 719 0 R /K 173 0 R >> endobj 727 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 728 0 obj << /O /Layout /BlockAlign /Before >> endobj 729 0 obj << /S /TD /A [ 730 0 R 731 0 R ] /P 719 0 R /K 174 0 R >> endobj 730 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 731 0 obj << /O /Layout /BlockAlign /Before >> endobj 732 0 obj << /S /TR /P 692 0 R /K [ 733 0 R 736 0 R 739 0 R 742 0 R ] >> endobj 733 0 obj << /S /TD /A [ 734 0 R 735 0 R ] /P 732 0 R /K 175 0 R >> endobj 734 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 735 0 obj << /O /Layout /BlockAlign /Before >> endobj 736 0 obj << /S /TD /A [ 737 0 R 738 0 R ] /P 732 0 R /K 176 0 R >> endobj 737 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 738 0 obj << /O /Layout /BlockAlign /Before >> endobj 739 0 obj << /S /TD /A [ 740 0 R 741 0 R ] /P 732 0 R /K 177 0 R >> endobj 740 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 741 0 obj << /O /Layout /BlockAlign /Before >> endobj 742 0 obj << /S /TD /A [ 743 0 R 744 0 R ] /P 732 0 R /K 178 0 R >> endobj 743 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 744 0 obj << /O /Layout /BlockAlign /Before >> endobj 745 0 obj << /S /TR /P 692 0 R /K [ 746 0 R 749 0 R 752 0 R 755 0 R ] >> endobj 746 0 obj << /S /TD /A [ 747 0 R 748 0 R ] /P 745 0 R /K 179 0 R >> endobj 747 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 748 0 obj << /O /Layout /BlockAlign /Before >> endobj 749 0 obj << /S /TD /A [ 750 0 R 751 0 R ] /P 745 0 R /K 180 0 R >> endobj 750 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 751 0 obj << /O /Layout /BlockAlign /Before >> endobj 752 0 obj << /S /TD /A [ 753 0 R 754 0 R ] /P 745 0 R /K 181 0 R >> endobj 753 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 754 0 obj << /O /Layout /BlockAlign /Before >> endobj 755 0 obj << /S /TD /A [ 756 0 R 757 0 R ] /P 745 0 R /K 182 0 R >> endobj 756 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 757 0 obj << /O /Layout /BlockAlign /Before >> endobj 758 0 obj << /S /TR /P 692 0 R /K [ 759 0 R 762 0 R 765 0 R 768 0 R ] >> endobj 759 0 obj << /S /TD /A [ 760 0 R 761 0 R ] /P 758 0 R /K 183 0 R >> endobj 760 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 761 0 obj << /O /Layout /BlockAlign /Before >> endobj 762 0 obj << /S /TD /A [ 763 0 R 764 0 R ] /P 758 0 R /K 184 0 R >> endobj 763 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 764 0 obj << /O /Layout /BlockAlign /Before >> endobj 765 0 obj << /S /TD /A [ 766 0 R 767 0 R ] /P 758 0 R /K 185 0 R >> endobj 766 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 767 0 obj << /O /Layout /BlockAlign /Before >> endobj 768 0 obj << /S /TD /A [ 769 0 R 770 0 R ] /P 758 0 R /K 186 0 R >> endobj 769 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 770 0 obj << /O /Layout /BlockAlign /Before >> endobj 771 0 obj << /S /TR /P 692 0 R /K [ 772 0 R 775 0 R 778 0 R 781 0 R ] >> endobj 772 0 obj << /S /TD /A [ 773 0 R 774 0 R ] /P 771 0 R /K 187 0 R >> endobj 773 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 774 0 obj << /O /Layout /BlockAlign /Before >> endobj 775 0 obj << /S /TD /A [ 776 0 R 777 0 R ] /P 771 0 R /K 188 0 R >> endobj 776 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 777 0 obj << /O /Layout /BlockAlign /Before >> endobj 778 0 obj << /S /TD /A [ 779 0 R 780 0 R ] /P 771 0 R /K 189 0 R >> endobj 779 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 780 0 obj << /O /Layout /BlockAlign /Before >> endobj 781 0 obj << /S /TD /A [ 782 0 R 783 0 R ] /P 771 0 R /K 190 0 R >> endobj 782 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 783 0 obj << /O /Layout /BlockAlign /Before >> endobj 784 0 obj << /S /TR /P 692 0 R /K [ 785 0 R 788 0 R 791 0 R 794 0 R ] >> endobj 785 0 obj << /S /TD /A [ 786 0 R 787 0 R ] /P 784 0 R /K 191 0 R >> endobj 786 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 787 0 obj << /O /Layout /BlockAlign /Before >> endobj 788 0 obj << /S /TD /A [ 789 0 R 790 0 R ] /P 784 0 R /K 192 0 R >> endobj 789 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 790 0 obj << /O /Layout /BlockAlign /Before >> endobj 791 0 obj << /S /TD /A [ 792 0 R 793 0 R ] /P 784 0 R /K 193 0 R >> endobj 792 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 793 0 obj << /O /Layout /BlockAlign /Before >> endobj 794 0 obj << /S /TD /A [ 795 0 R 796 0 R ] /P 784 0 R /K 194 0 R >> endobj 795 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 796 0 obj << /O /Layout /BlockAlign /Before >> endobj 797 0 obj << /S /TR /P 692 0 R /K [ 798 0 R 801 0 R 804 0 R 807 0 R ] >> endobj 798 0 obj << /S /TD /A [ 799 0 R 800 0 R ] /P 797 0 R /K 195 0 R >> endobj 799 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 800 0 obj << /O /Layout /BlockAlign /Before >> endobj 801 0 obj << /S /TD /A [ 802 0 R 803 0 R ] /P 797 0 R /K 196 0 R >> endobj 802 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 803 0 obj << /O /Layout /BlockAlign /Before >> endobj 804 0 obj << /S /TD /A [ 805 0 R 806 0 R ] /P 797 0 R /K 197 0 R >> endobj 805 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 806 0 obj << /O /Layout /BlockAlign /Before >> endobj 807 0 obj << /S /TD /A [ 808 0 R 809 0 R ] /P 797 0 R /K 198 0 R >> endobj 808 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 809 0 obj << /O /Layout /BlockAlign /Before >> endobj 810 0 obj << /S /TR /P 692 0 R /K [ 811 0 R 814 0 R 817 0 R 820 0 R ] >> endobj 811 0 obj << /S /TD /A [ 812 0 R 813 0 R ] /P 810 0 R /K 199 0 R >> endobj 812 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 813 0 obj << /O /Layout /BlockAlign /Before >> endobj 814 0 obj << /S /TD /A [ 815 0 R 816 0 R ] /P 810 0 R /K 200 0 R >> endobj 815 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 816 0 obj << /O /Layout /BlockAlign /Before >> endobj 817 0 obj << /S /TD /A [ 818 0 R 819 0 R ] /P 810 0 R /K 201 0 R >> endobj 818 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 819 0 obj << /O /Layout /BlockAlign /Before >> endobj 820 0 obj << /S /TD /A [ 821 0 R 822 0 R ] /P 810 0 R /K 202 0 R >> endobj 821 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 822 0 obj << /O /Layout /BlockAlign /Before >> endobj 823 0 obj << /S /TR /P 692 0 R /K [ 824 0 R 827 0 R 830 0 R 833 0 R ] >> endobj 824 0 obj << /S /TD /A [ 825 0 R 826 0 R ] /P 823 0 R /K 203 0 R >> endobj 825 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 826 0 obj << /O /Layout /BlockAlign /Before >> endobj 827 0 obj << /S /TD /A [ 828 0 R 829 0 R ] /P 823 0 R /K 204 0 R >> endobj 828 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 829 0 obj << /O /Layout /BlockAlign /Before >> endobj 830 0 obj << /S /TD /A [ 831 0 R 832 0 R ] /P 823 0 R /K 205 0 R >> endobj 831 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 832 0 obj << /O /Layout /BlockAlign /Before >> endobj 833 0 obj << /S /TD /A [ 834 0 R 835 0 R ] /P 823 0 R /K 206 0 R >> endobj 834 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 835 0 obj << /O /Layout /BlockAlign /Before >> endobj 836 0 obj << /S /TR /P 692 0 R /K [ 837 0 R 840 0 R 843 0 R 846 0 R ] >> endobj 837 0 obj << /S /TD /A [ 838 0 R 839 0 R ] /P 836 0 R /K 207 0 R >> endobj 838 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 839 0 obj << /O /Layout /BlockAlign /Before >> endobj 840 0 obj << /S /TD /A [ 841 0 R 842 0 R ] /P 836 0 R /K 208 0 R >> endobj 841 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 842 0 obj << /O /Layout /BlockAlign /Before >> endobj 843 0 obj << /S /TD /A [ 844 0 R 845 0 R ] /P 836 0 R /K 209 0 R >> endobj 844 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 845 0 obj << /O /Layout /BlockAlign /Before >> endobj 846 0 obj << /S /TD /A [ 847 0 R 848 0 R ] /P 836 0 R /K 210 0 R >> endobj 847 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 848 0 obj << /O /Layout /BlockAlign /Before >> endobj 849 0 obj << /S /TR /P 692 0 R /K [ 850 0 R 853 0 R 856 0 R 859 0 R ] >> endobj 850 0 obj << /S /TD /A [ 851 0 R 852 0 R ] /P 849 0 R /K 211 0 R >> endobj 851 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 852 0 obj << /O /Layout /BlockAlign /Before >> endobj 853 0 obj << /S /TD /A [ 854 0 R 855 0 R ] /P 849 0 R /K 212 0 R >> endobj 854 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 855 0 obj << /O /Layout /BlockAlign /Before >> endobj 856 0 obj << /S /TD /A [ 857 0 R 858 0 R ] /P 849 0 R /K 213 0 R >> endobj 857 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 858 0 obj << /O /Layout /BlockAlign /Before >> endobj 859 0 obj << /S /TD /A [ 860 0 R 861 0 R ] /P 849 0 R /K 214 0 R >> endobj 860 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 861 0 obj << /O /Layout /BlockAlign /Before >> endobj 862 0 obj << /S /TR /P 692 0 R /K [ 863 0 R 866 0 R 869 0 R 872 0 R ] >> endobj 863 0 obj << /S /TD /A [ 864 0 R 865 0 R ] /P 862 0 R /K 215 0 R >> endobj 864 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 865 0 obj << /O /Layout /BlockAlign /Before >> endobj 866 0 obj << /S /TD /A [ 867 0 R 868 0 R ] /P 862 0 R /K 216 0 R >> endobj 867 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 868 0 obj << /O /Layout /BlockAlign /Before >> endobj 869 0 obj << /S /TD /A [ 870 0 R 871 0 R ] /P 862 0 R /K 217 0 R >> endobj 870 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 871 0 obj << /O /Layout /BlockAlign /Before >> endobj 872 0 obj << /S /TD /A [ 873 0 R 874 0 R ] /P 862 0 R /K 218 0 R >> endobj 873 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 874 0 obj << /O /Layout /BlockAlign /Before >> endobj 875 0 obj << /S /TR /P 692 0 R /K [ 876 0 R 879 0 R 882 0 R 885 0 R ] >> endobj 876 0 obj << /S /TD /A [ 877 0 R 878 0 R ] /P 875 0 R /K 219 0 R >> endobj 877 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 878 0 obj << /O /Layout /BlockAlign /Before >> endobj 879 0 obj << /S /TD /A [ 880 0 R 881 0 R ] /P 875 0 R /K 220 0 R >> endobj 880 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 881 0 obj << /O /Layout /BlockAlign /Before >> endobj 882 0 obj << /S /TD /A [ 883 0 R 884 0 R ] /P 875 0 R /K 221 0 R >> endobj 883 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 884 0 obj << /O /Layout /BlockAlign /Before >> endobj 885 0 obj << /S /TD /A [ 886 0 R 887 0 R ] /P 875 0 R /K 222 0 R >> endobj 886 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 887 0 obj << /O /Layout /BlockAlign /Before >> endobj 888 0 obj << /S /TR /P 692 0 R /K [ 889 0 R 892 0 R 895 0 R 898 0 R ] >> endobj 889 0 obj << /S /TD /A [ 890 0 R 891 0 R ] /P 888 0 R /K 223 0 R >> endobj 890 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 891 0 obj << /O /Layout /BlockAlign /Before >> endobj 892 0 obj << /S /TD /A [ 893 0 R 894 0 R ] /P 888 0 R /K 224 0 R >> endobj 893 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 894 0 obj << /O /Layout /BlockAlign /Before >> endobj 895 0 obj << /S /TD /A [ 896 0 R 897 0 R ] /P 888 0 R /K 225 0 R >> endobj 896 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 897 0 obj << /O /Layout /BlockAlign /Before >> endobj 898 0 obj << /S /TD /A [ 899 0 R 900 0 R ] /P 888 0 R /K 226 0 R >> endobj 899 0 obj << /O /Table /ColSpan 1 /RowSpan 1 >> endobj 900 0 obj << /O /Layout /BlockAlign /Before >> endobj 901 0 obj << /S /Shape /Alt () /Pg 916 0 R /K 215 /P 228 0 R /A 904 0 R >> endobj 902 0 obj << /Nums [ 0 903 0 R ] >> endobj 903 0 obj [ 2 0 R 6 0 R 9 0 R 10 0 R 12 0 R 14 0 R 15 0 R 16 0 R 17 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 29 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 901 0 R ] endobj 904 0 obj << /O /Layout /BBox [ 352 770 402 807 ] /Placement /Block /StartIndent 323.64999 /EndIndent 164.64999 >> endobj 905 0 obj << /O /Layout /BBox [ 28.29517 544.5305 559.28276 742.00764 ] /Placement /Block /StartIndent -0.05484 /EndIndent 7.36723 >> endobj 906 0 obj << /O /Layout /BBox [ 28.29517 293.6106 545.03508 505.96765 ] /Placement /Block /StartIndent -0.05484 /EndIndent 21.61491 >> endobj 907 0 obj << /O /Layout /BBox [ 28.29517 45.6906 550.19519 272.44765 ] /Placement /Block /StartIndent -0.05484 /EndIndent 16.4548 >> endobj 908 0 obj << /S /D >> endobj 909 0 obj << /Nums [ 0 908 0 R ] >> endobj 910 0 obj << /Producer (Acrobat Distiller 5.0.5 \(Windows\)) /Author (\376\377\000F\000r\000e\000e\000M\000i\000n\000dO0J0FO\032) /ModDate (D:20100415011300+09'00') /Subject (\376\377SpR7u\(0\2570\2440\3030\2570\3520\3250\2410\3540\3630\271) /CreationDate (D:20100415011142+09'00') /Title (\376\377\000F\000r\000e\000e\000M\000i\000n\000d0\2550\374d\315O\\) /Creator (\376\377\000W\000o\000r\000d\000 u\(\000 \000A\000c\000r\000o\000b\000a\000\ t\000 \000P\000D\000F\000M\000a\000k\000e\000r\000 \0005\000.\0000) >> endobj 911 0 obj << /Type /Metadata /Subtype /XML /Length 1332 >> stream FreeMindキー操作印刷用クイックリファレンス endstream endobj 912 0 obj << /Type /Pages /Kids [ 916 0 R ] /Count 1 >> endobj xref 0 913 0000000000 65535 f 0000075718 00000 n 0000076149 00000 n 0000076245 00000 n 0000076301 00000 n 0000076524 00000 n 0000076674 00000 n 0000076790 00000 n 0000076843 00000 n 0000076993 00000 n 0000077095 00000 n 0000077194 00000 n 0000077345 00000 n 0000077444 00000 n 0000077595 00000 n 0000077694 00000 n 0000077793 00000 n 0000077892 00000 n 0000077991 00000 n 0000078144 00000 n 0000078243 00000 n 0000078343 00000 n 0000078443 00000 n 0000078543 00000 n 0000078643 00000 n 0000078743 00000 n 0000078843 00000 n 0000078939 00000 n 0000079029 00000 n 0000079181 00000 n 0000079277 00000 n 0000079428 00000 n 0000079528 00000 n 0000079624 00000 n 0000079714 00000 n 0000079810 00000 n 0000079900 00000 n 0000079996 00000 n 0000080096 00000 n 0000080192 00000 n 0000080282 00000 n 0000080378 00000 n 0000080468 00000 n 0000080564 00000 n 0000080664 00000 n 0000080760 00000 n 0000080850 00000 n 0000080946 00000 n 0000081036 00000 n 0000081132 00000 n 0000081232 00000 n 0000081328 00000 n 0000081418 00000 n 0000081514 00000 n 0000081604 00000 n 0000081700 00000 n 0000081800 00000 n 0000081896 00000 n 0000081986 00000 n 0000082082 00000 n 0000082172 00000 n 0000082268 00000 n 0000082368 00000 n 0000082464 00000 n 0000082554 00000 n 0000082650 00000 n 0000082740 00000 n 0000082836 00000 n 0000082936 00000 n 0000083032 00000 n 0000083122 00000 n 0000083218 00000 n 0000083308 00000 n 0000083404 00000 n 0000083504 00000 n 0000083600 00000 n 0000083690 00000 n 0000083786 00000 n 0000083876 00000 n 0000083972 00000 n 0000084072 00000 n 0000084168 00000 n 0000084258 00000 n 0000084354 00000 n 0000084444 00000 n 0000084540 00000 n 0000084640 00000 n 0000084736 00000 n 0000084826 00000 n 0000084922 00000 n 0000085012 00000 n 0000085108 00000 n 0000085208 00000 n 0000085304 00000 n 0000085394 00000 n 0000085490 00000 n 0000085590 00000 n 0000085686 00000 n 0000085786 00000 n 0000085886 00000 n 0000085990 00000 n 0000086095 00000 n 0000086245 00000 n 0000086346 00000 n 0000086447 00000 n 0000086548 00000 n 0000086649 00000 n 0000086750 00000 n 0000086851 00000 n 0000086952 00000 n 0000087053 00000 n 0000087154 00000 n 0000087251 00000 n 0000087352 00000 n 0000087450 00000 n 0000087552 00000 n 0000087650 00000 n 0000087752 00000 n 0000087850 00000 n 0000087952 00000 n 0000088050 00000 n 0000088152 00000 n 0000088250 00000 n 0000088352 00000 n 0000088450 00000 n 0000088552 00000 n 0000088650 00000 n 0000088752 00000 n 0000088850 00000 n 0000088952 00000 n 0000089050 00000 n 0000089152 00000 n 0000089250 00000 n 0000089352 00000 n 0000089450 00000 n 0000089552 00000 n 0000089650 00000 n 0000089752 00000 n 0000089854 00000 n 0000089956 00000 n 0000090054 00000 n 0000090156 00000 n 0000090258 00000 n 0000090360 00000 n 0000090458 00000 n 0000090560 00000 n 0000090662 00000 n 0000090764 00000 n 0000090862 00000 n 0000090964 00000 n 0000091062 00000 n 0000091164 00000 n 0000091262 00000 n 0000091364 00000 n 0000091462 00000 n 0000091564 00000 n 0000091662 00000 n 0000091764 00000 n 0000091862 00000 n 0000091964 00000 n 0000092062 00000 n 0000092164 00000 n 0000092266 00000 n 0000092372 00000 n 0000092474 00000 n 0000092576 00000 n 0000092678 00000 n 0000092780 00000 n 0000092882 00000 n 0000092984 00000 n 0000093086 00000 n 0000093188 00000 n 0000093290 00000 n 0000093388 00000 n 0000093490 00000 n 0000093588 00000 n 0000093690 00000 n 0000093788 00000 n 0000093890 00000 n 0000093988 00000 n 0000094090 00000 n 0000094188 00000 n 0000094290 00000 n 0000094388 00000 n 0000094490 00000 n 0000094592 00000 n 0000094694 00000 n 0000094792 00000 n 0000094894 00000 n 0000094996 00000 n 0000095098 00000 n 0000095196 00000 n 0000095298 00000 n 0000095400 00000 n 0000095502 00000 n 0000095600 00000 n 0000095702 00000 n 0000095800 00000 n 0000095902 00000 n 0000096000 00000 n 0000096102 00000 n 0000096200 00000 n 0000096302 00000 n 0000096400 00000 n 0000096502 00000 n 0000096600 00000 n 0000096702 00000 n 0000096800 00000 n 0000096902 00000 n 0000097000 00000 n 0000097102 00000 n 0000097200 00000 n 0000097302 00000 n 0000097400 00000 n 0000097502 00000 n 0000097600 00000 n 0000097702 00000 n 0000097800 00000 n 0000097902 00000 n 0000098000 00000 n 0000098102 00000 n 0000098200 00000 n 0000098302 00000 n 0000098400 00000 n 0000098502 00000 n 0000098600 00000 n 0000098702 00000 n 0000098800 00000 n 0000098906 00000 n 0000099043 00000 n 0000099228 00000 n 0000099329 00000 n 0000099409 00000 n 0000099469 00000 n 0000099527 00000 n 0000099607 00000 n 0000099667 00000 n 0000099725 00000 n 0000099805 00000 n 0000099865 00000 n 0000099923 00000 n 0000100003 00000 n 0000100063 00000 n 0000100121 00000 n 0000100201 00000 n 0000100261 00000 n 0000100319 00000 n 0000100399 00000 n 0000100459 00000 n 0000100517 00000 n 0000100618 00000 n 0000100698 00000 n 0000100758 00000 n 0000100816 00000 n 0000100896 00000 n 0000100956 00000 n 0000101014 00000 n 0000101094 00000 n 0000101154 00000 n 0000101212 00000 n 0000101292 00000 n 0000101352 00000 n 0000101410 00000 n 0000101490 00000 n 0000101550 00000 n 0000101608 00000 n 0000101688 00000 n 0000101748 00000 n 0000101806 00000 n 0000101907 00000 n 0000101987 00000 n 0000102047 00000 n 0000102105 00000 n 0000102185 00000 n 0000102245 00000 n 0000102303 00000 n 0000102383 00000 n 0000102443 00000 n 0000102501 00000 n 0000102581 00000 n 0000102641 00000 n 0000102699 00000 n 0000102779 00000 n 0000102839 00000 n 0000102897 00000 n 0000102977 00000 n 0000103037 00000 n 0000103095 00000 n 0000103196 00000 n 0000103276 00000 n 0000103336 00000 n 0000103394 00000 n 0000103474 00000 n 0000103534 00000 n 0000103592 00000 n 0000103672 00000 n 0000103732 00000 n 0000103790 00000 n 0000103870 00000 n 0000103930 00000 n 0000103988 00000 n 0000104068 00000 n 0000104128 00000 n 0000104186 00000 n 0000104266 00000 n 0000104326 00000 n 0000104384 00000 n 0000104485 00000 n 0000104565 00000 n 0000104625 00000 n 0000104683 00000 n 0000104763 00000 n 0000104823 00000 n 0000104881 00000 n 0000104961 00000 n 0000105021 00000 n 0000105079 00000 n 0000105159 00000 n 0000105219 00000 n 0000105277 00000 n 0000105357 00000 n 0000105417 00000 n 0000105475 00000 n 0000105555 00000 n 0000105615 00000 n 0000105673 00000 n 0000105774 00000 n 0000105854 00000 n 0000105914 00000 n 0000105972 00000 n 0000106052 00000 n 0000106112 00000 n 0000106170 00000 n 0000106250 00000 n 0000106310 00000 n 0000106368 00000 n 0000106448 00000 n 0000106508 00000 n 0000106566 00000 n 0000106646 00000 n 0000106706 00000 n 0000106764 00000 n 0000106844 00000 n 0000106904 00000 n 0000106962 00000 n 0000107063 00000 n 0000107143 00000 n 0000107203 00000 n 0000107261 00000 n 0000107341 00000 n 0000107401 00000 n 0000107459 00000 n 0000107539 00000 n 0000107599 00000 n 0000107657 00000 n 0000107737 00000 n 0000107797 00000 n 0000107855 00000 n 0000107935 00000 n 0000107995 00000 n 0000108053 00000 n 0000108133 00000 n 0000108193 00000 n 0000108251 00000 n 0000108352 00000 n 0000108432 00000 n 0000108492 00000 n 0000108550 00000 n 0000108630 00000 n 0000108690 00000 n 0000108748 00000 n 0000108828 00000 n 0000108888 00000 n 0000108946 00000 n 0000109026 00000 n 0000109086 00000 n 0000109144 00000 n 0000109224 00000 n 0000109284 00000 n 0000109342 00000 n 0000109422 00000 n 0000109482 00000 n 0000109540 00000 n 0000109641 00000 n 0000109721 00000 n 0000109781 00000 n 0000109839 00000 n 0000109919 00000 n 0000109979 00000 n 0000110037 00000 n 0000110117 00000 n 0000110177 00000 n 0000110235 00000 n 0000110315 00000 n 0000110375 00000 n 0000110433 00000 n 0000110513 00000 n 0000110573 00000 n 0000110631 00000 n 0000110711 00000 n 0000110771 00000 n 0000110829 00000 n 0000110930 00000 n 0000111010 00000 n 0000111070 00000 n 0000111128 00000 n 0000111208 00000 n 0000111268 00000 n 0000111326 00000 n 0000111406 00000 n 0000111466 00000 n 0000111524 00000 n 0000111604 00000 n 0000111664 00000 n 0000111722 00000 n 0000111802 00000 n 0000111862 00000 n 0000111920 00000 n 0000112000 00000 n 0000112060 00000 n 0000112118 00000 n 0000112219 00000 n 0000112299 00000 n 0000112359 00000 n 0000112417 00000 n 0000112497 00000 n 0000112557 00000 n 0000112615 00000 n 0000112695 00000 n 0000112755 00000 n 0000112813 00000 n 0000112893 00000 n 0000112953 00000 n 0000113011 00000 n 0000113091 00000 n 0000113151 00000 n 0000113209 00000 n 0000113289 00000 n 0000113349 00000 n 0000113407 00000 n 0000113508 00000 n 0000113588 00000 n 0000113648 00000 n 0000113706 00000 n 0000113786 00000 n 0000113846 00000 n 0000113904 00000 n 0000113984 00000 n 0000114044 00000 n 0000114102 00000 n 0000114182 00000 n 0000114242 00000 n 0000114300 00000 n 0000114380 00000 n 0000114440 00000 n 0000114498 00000 n 0000114578 00000 n 0000114638 00000 n 0000114696 00000 n 0000114797 00000 n 0000114877 00000 n 0000114937 00000 n 0000114995 00000 n 0000115075 00000 n 0000115135 00000 n 0000115193 00000 n 0000115273 00000 n 0000115333 00000 n 0000115391 00000 n 0000115471 00000 n 0000115531 00000 n 0000115589 00000 n 0000115669 00000 n 0000115729 00000 n 0000115787 00000 n 0000115867 00000 n 0000115927 00000 n 0000115985 00000 n 0000116086 00000 n 0000116166 00000 n 0000116226 00000 n 0000116284 00000 n 0000116364 00000 n 0000116424 00000 n 0000116482 00000 n 0000116562 00000 n 0000116622 00000 n 0000116680 00000 n 0000116760 00000 n 0000116820 00000 n 0000116878 00000 n 0000116958 00000 n 0000117018 00000 n 0000117076 00000 n 0000117156 00000 n 0000117216 00000 n 0000117274 00000 n 0000117467 00000 n 0000117552 00000 n 0000117633 00000 n 0000117693 00000 n 0000117751 00000 n 0000117832 00000 n 0000117892 00000 n 0000117950 00000 n 0000118031 00000 n 0000118091 00000 n 0000118149 00000 n 0000118230 00000 n 0000118290 00000 n 0000118348 00000 n 0000118433 00000 n 0000118514 00000 n 0000118574 00000 n 0000118632 00000 n 0000118713 00000 n 0000118773 00000 n 0000118831 00000 n 0000118912 00000 n 0000118972 00000 n 0000119030 00000 n 0000119111 00000 n 0000119171 00000 n 0000119229 00000 n 0000119314 00000 n 0000119395 00000 n 0000119455 00000 n 0000119513 00000 n 0000119594 00000 n 0000119654 00000 n 0000119712 00000 n 0000119793 00000 n 0000119853 00000 n 0000119911 00000 n 0000119992 00000 n 0000120052 00000 n 0000120110 00000 n 0000120195 00000 n 0000120276 00000 n 0000120336 00000 n 0000120394 00000 n 0000120475 00000 n 0000120535 00000 n 0000120593 00000 n 0000120674 00000 n 0000120734 00000 n 0000120792 00000 n 0000120873 00000 n 0000120933 00000 n 0000120991 00000 n 0000121076 00000 n 0000121157 00000 n 0000121217 00000 n 0000121275 00000 n 0000121356 00000 n 0000121416 00000 n 0000121474 00000 n 0000121555 00000 n 0000121615 00000 n 0000121673 00000 n 0000121754 00000 n 0000121814 00000 n 0000121872 00000 n 0000121957 00000 n 0000122038 00000 n 0000122098 00000 n 0000122156 00000 n 0000122237 00000 n 0000122297 00000 n 0000122355 00000 n 0000122436 00000 n 0000122496 00000 n 0000122554 00000 n 0000122635 00000 n 0000122695 00000 n 0000122753 00000 n 0000122838 00000 n 0000122919 00000 n 0000122979 00000 n 0000123037 00000 n 0000123118 00000 n 0000123178 00000 n 0000123236 00000 n 0000123317 00000 n 0000123377 00000 n 0000123435 00000 n 0000123516 00000 n 0000123576 00000 n 0000123634 00000 n 0000123719 00000 n 0000123800 00000 n 0000123860 00000 n 0000123918 00000 n 0000123999 00000 n 0000124059 00000 n 0000124117 00000 n 0000124198 00000 n 0000124258 00000 n 0000124316 00000 n 0000124397 00000 n 0000124457 00000 n 0000124515 00000 n 0000124600 00000 n 0000124681 00000 n 0000124741 00000 n 0000124799 00000 n 0000124880 00000 n 0000124940 00000 n 0000124998 00000 n 0000125079 00000 n 0000125139 00000 n 0000125197 00000 n 0000125278 00000 n 0000125338 00000 n 0000125396 00000 n 0000125481 00000 n 0000125562 00000 n 0000125622 00000 n 0000125680 00000 n 0000125761 00000 n 0000125821 00000 n 0000125879 00000 n 0000125960 00000 n 0000126020 00000 n 0000126078 00000 n 0000126159 00000 n 0000126219 00000 n 0000126277 00000 n 0000126362 00000 n 0000126443 00000 n 0000126503 00000 n 0000126561 00000 n 0000126642 00000 n 0000126702 00000 n 0000126760 00000 n 0000126841 00000 n 0000126901 00000 n 0000126959 00000 n 0000127040 00000 n 0000127100 00000 n 0000127158 00000 n 0000127243 00000 n 0000127324 00000 n 0000127384 00000 n 0000127442 00000 n 0000127523 00000 n 0000127583 00000 n 0000127641 00000 n 0000127722 00000 n 0000127782 00000 n 0000127840 00000 n 0000127921 00000 n 0000127981 00000 n 0000128039 00000 n 0000128124 00000 n 0000128205 00000 n 0000128265 00000 n 0000128323 00000 n 0000128404 00000 n 0000128464 00000 n 0000128522 00000 n 0000128603 00000 n 0000128663 00000 n 0000128721 00000 n 0000128802 00000 n 0000128862 00000 n 0000128920 00000 n 0000129005 00000 n 0000129086 00000 n 0000129146 00000 n 0000129204 00000 n 0000129285 00000 n 0000129345 00000 n 0000129403 00000 n 0000129484 00000 n 0000129544 00000 n 0000129602 00000 n 0000129683 00000 n 0000129743 00000 n 0000129801 00000 n 0000129886 00000 n 0000129967 00000 n 0000130027 00000 n 0000130085 00000 n 0000130166 00000 n 0000130226 00000 n 0000130284 00000 n 0000130365 00000 n 0000130425 00000 n 0000130483 00000 n 0000130564 00000 n 0000130624 00000 n 0000130682 00000 n 0000130883 00000 n 0000130968 00000 n 0000131049 00000 n 0000131109 00000 n 0000131167 00000 n 0000131248 00000 n 0000131308 00000 n 0000131366 00000 n 0000131447 00000 n 0000131507 00000 n 0000131565 00000 n 0000131646 00000 n 0000131706 00000 n 0000131764 00000 n 0000131849 00000 n 0000131930 00000 n 0000131990 00000 n 0000132048 00000 n 0000132129 00000 n 0000132189 00000 n 0000132247 00000 n 0000132328 00000 n 0000132388 00000 n 0000132446 00000 n 0000132527 00000 n 0000132587 00000 n 0000132645 00000 n 0000132730 00000 n 0000132811 00000 n 0000132871 00000 n 0000132929 00000 n 0000133010 00000 n 0000133070 00000 n 0000133128 00000 n 0000133209 00000 n 0000133269 00000 n 0000133327 00000 n 0000133408 00000 n 0000133468 00000 n 0000133526 00000 n 0000133611 00000 n 0000133692 00000 n 0000133752 00000 n 0000133810 00000 n 0000133891 00000 n 0000133951 00000 n 0000134009 00000 n 0000134090 00000 n 0000134150 00000 n 0000134208 00000 n 0000134289 00000 n 0000134349 00000 n 0000134407 00000 n 0000134492 00000 n 0000134573 00000 n 0000134633 00000 n 0000134691 00000 n 0000134772 00000 n 0000134832 00000 n 0000134890 00000 n 0000134971 00000 n 0000135031 00000 n 0000135089 00000 n 0000135170 00000 n 0000135230 00000 n 0000135288 00000 n 0000135373 00000 n 0000135454 00000 n 0000135514 00000 n 0000135572 00000 n 0000135653 00000 n 0000135713 00000 n 0000135771 00000 n 0000135852 00000 n 0000135912 00000 n 0000135970 00000 n 0000136051 00000 n 0000136111 00000 n 0000136169 00000 n 0000136254 00000 n 0000136335 00000 n 0000136395 00000 n 0000136453 00000 n 0000136534 00000 n 0000136594 00000 n 0000136652 00000 n 0000136733 00000 n 0000136793 00000 n 0000136851 00000 n 0000136932 00000 n 0000136992 00000 n 0000137050 00000 n 0000137135 00000 n 0000137216 00000 n 0000137276 00000 n 0000137334 00000 n 0000137415 00000 n 0000137475 00000 n 0000137533 00000 n 0000137614 00000 n 0000137674 00000 n 0000137732 00000 n 0000137813 00000 n 0000137873 00000 n 0000137931 00000 n 0000138016 00000 n 0000138097 00000 n 0000138157 00000 n 0000138215 00000 n 0000138296 00000 n 0000138356 00000 n 0000138414 00000 n 0000138495 00000 n 0000138555 00000 n 0000138613 00000 n 0000138694 00000 n 0000138754 00000 n 0000138812 00000 n 0000138897 00000 n 0000138978 00000 n 0000139038 00000 n 0000139096 00000 n 0000139177 00000 n 0000139237 00000 n 0000139295 00000 n 0000139376 00000 n 0000139436 00000 n 0000139494 00000 n 0000139575 00000 n 0000139635 00000 n 0000139693 00000 n 0000139778 00000 n 0000139859 00000 n 0000139919 00000 n 0000139977 00000 n 0000140058 00000 n 0000140118 00000 n 0000140176 00000 n 0000140257 00000 n 0000140317 00000 n 0000140375 00000 n 0000140456 00000 n 0000140516 00000 n 0000140574 00000 n 0000140659 00000 n 0000140740 00000 n 0000140800 00000 n 0000140858 00000 n 0000140939 00000 n 0000140999 00000 n 0000141057 00000 n 0000141138 00000 n 0000141198 00000 n 0000141256 00000 n 0000141337 00000 n 0000141397 00000 n 0000141455 00000 n 0000141540 00000 n 0000141621 00000 n 0000141681 00000 n 0000141739 00000 n 0000141820 00000 n 0000141880 00000 n 0000141938 00000 n 0000142019 00000 n 0000142079 00000 n 0000142137 00000 n 0000142218 00000 n 0000142278 00000 n 0000142336 00000 n 0000142421 00000 n 0000142502 00000 n 0000142562 00000 n 0000142620 00000 n 0000142701 00000 n 0000142761 00000 n 0000142819 00000 n 0000142900 00000 n 0000142960 00000 n 0000143018 00000 n 0000143099 00000 n 0000143159 00000 n 0000143217 00000 n 0000143302 00000 n 0000143383 00000 n 0000143443 00000 n 0000143501 00000 n 0000143582 00000 n 0000143642 00000 n 0000143700 00000 n 0000143781 00000 n 0000143841 00000 n 0000143899 00000 n 0000143980 00000 n 0000144040 00000 n 0000144098 00000 n 0000144183 00000 n 0000144264 00000 n 0000144324 00000 n 0000144382 00000 n 0000144463 00000 n 0000144523 00000 n 0000144581 00000 n 0000144662 00000 n 0000144722 00000 n 0000144780 00000 n 0000144861 00000 n 0000144921 00000 n 0000144979 00000 n 0000145068 00000 n 0000145114 00000 n 0000146798 00000 n 0000146927 00000 n 0000147075 00000 n 0000147224 00000 n 0000147371 00000 n 0000147403 00000 n 0000147449 00000 n 0000147975 00000 n 0000149392 00000 n trailer << /Size 913 /ID[<060429cdcbfa87da010f109b4d1803eb>] >> startxref 173 %%EOF freemind-0.9.0/freemind/doc/freemind_vi.mm0000644000000000000000000032303211527433212017172 0ustar rootroot freemind-0.9.0/freemind/doc/freemind_id.mm0000644000000000000000000024164711527433212017163 0ustar rootroot

FreeMind
- perangkat lunak bebas untuk
pembuatan MindMap - 

[Paragraf ini sudah usang.] Berikut catatan tentang berkas patterns.xml. Gaya fisik diterapkan ke node, bila ada tanda <node>. Diterapkan ke tangkai, bila ada tanda <edge>. Tanda <node> bisa berisi tanda lain sebagai anaknya. Pelajari berkas "patterns.xml" yang disediakan dari FreeMind.

Untuk membuat taut ke alamat pos-el, gunakan format mailto:don.bonton@supermail.com.

Untuk membuat taut ke alamat pos-el dengan subjek, gunakan format mailto:don.bonton@supermail.com?subject=Ini judul suratnya.

Untuk mengimpor favorit dari Internet Explorer ke dalam FreeMind,dari menu pilih Berkas > Impor > Favorit dari Explorer. Anda akan diminta memasukkan jalur ke map tempat favorit disimpan. Nama map tersebut adalah Favorit (atau Favorites) dan Anda dapat mencarinya di sistem Anda. Di Windows XP dengan antarmuka bahasa Indonesia, jalurnya adalah C:\Documents and Settings\<nama pemakai>\Favorit.

Contoh HTML

Ada beberapa lema:

  • Lema satu
  • Lema dua

Anda bisa menggunakan cetak tebal or miring. Garis bawah dan juga coret.

Anda bisa buat tabel:

Sel1

Sel2

Sel3

Sel4.

Anda bisa menggunakan berbagai warna latar depan.

freemind-0.9.0/freemind/doc/freemind_de.mm0000644000000000000000000031015111527433212017142 0ustar rootroot

FreeMind
- Freie Mind Mapping Software - 

[Diese Hilfe ist veraltet.] Eine Anmerkung zur Datei 'patterns.xml' folgt: Ein Stil ist auf einen Knoten anwendbar, wenn er eine <node>-Auszeichnung enthält. Er ist auf einen Bogen (eine Kante) anwendbar, wenn er eine <edge>-Auszeichnung enthält. <node>-Auszeichnungen können -Auszeichnungen enthalten. Studieren Sie die mit FreeMind gelieferte Datei 'patterns.xml'. Um auf eine eMail-Adresse zu verweisen, setzen Sie den Querverweis als mailto:don.bonton@supermail.com.
--------
Anm.d.Ü.
Wobei Sie anstatt don.bonton@supermail.com natürlich die von Ihnen gewünschte eMail-Adresse eintragen.
Um auf eine eMail-Adresse zu verweisen und gleich einen Betreff für die eMail mitzugeben,
setzen Sie den Querverweis in folgender Form: mailto:don.bonton@supermail.com?subject=Last phone call.
--------
Anm.d.Ü.
Wobei Sie anstatt don.bonton@supermail.com ebenfalls die von Ihnen gewünschte eMail-Adresse und
anstatt Last phone call den von Ihnen gewünschten Betreff eintragen.
Um Internet Explorer Favoriten (Lesezeichen) in FreeMind zu importieren, wählen Sie vom Hauptmenü ausgehend 'Datei' -> 'Import' -> 'Explorer-Favoriten...'. Sie werden nach dem Pfad zu dem Verzeichnis gefragt, in dem die Favoriten abgelegt sind. Der Name des Verzeichnisses ist "Favoriten" und Sie finden es auf Ihrer Festplatte. Für ein unmodifiziertes, deutsches Windows 2000 lautet der vollständige Pfadname "C:\Dokumente und Einstellungen\<Benutzername>\Favoriten", wobei Sie '<Benutzername>' durch den tatsächlich verwendeten Benutzernamen ersetzen.

HTML Beispiel

Da sind verschiedene Punkte:

  • Punkt eins
  • Punkt zwei

Und wir haben Fettschrift oder Kursives. Unterstrichen, ein Durchgestrichen auch.

Es gibt Tabellen:

Zelle 1

Zelle 2

Zelle 3

Zelle 4


 Es gibt vielerlei Schriftfarben.

freemind-0.9.0/freemind/doc/FM_Key_Mappings_Quick_Guide_fr.odt0000644000000000000000000011530211527433212022767 0ustar rootrootPK8^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK8Configurations2/statusbar/PK8'Configurations2/accelerator/current.xmlPKPK8Configurations2/floater/PK8Configurations2/popupmenu/PK8Configurations2/progressbar/PK8Configurations2/menubar/PK8Configurations2/toolbar/PK8Configurations2/images/Bitmaps/PK8t2`.`.-Pictures/1000020100000081000000609CB17181.pngPNG  IHDR`:wsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxy$WuEdfK[-ZZi.6f l2ffcs x9c0Ƙe0,Fx ZXB{uޝ?{YUՒ<։ʌxqBTy+@XZǚ-}/Ow"g u_~3{R3s 0ԭQS@qƑNj1~ҥn?Q;*85K'ͪYx0,}RΆuɁdreT@nr]07[-=~VI9+"f# Ʋ>t6t!q6e)SÌ$쌜'lk6("BͥL׀31'?ʓxn{<Yf`쌼It1Ybѓ;P $P S$Άٞ f |tvFՀ'ENaIX;Q#=(HºF#1~pem}2QUfgdk7+ P!Tb4|F, sM#0dicrcƳE\&G`t: ӜՓ/7-І'}e:4lWBxc:_|ߌ\cهp&u6:)zí#^ =@*ң0#ӌNL1<6N1;n;n\uWpYv 6 ]p崲V fKu-/<^kU.ِG'?q~"nJc`;gj.bxbCb bD#c$ ~1DszAV?b'#&SnC` lKo)+$jHL;Y&96=+_%\}7.T0Ƅ+ZcDvI $x3GXpYrsK9RI2 :Obӌzgs[ OmiF $~=1B" &I@LTxDxہ}B t7u|iiqLvf#>+?71 S`HTpxz[Uz@X.ezNZ *ǚyUeZK5Rcn$Wmo40 BL؏Ġ*JW=<6lxQ?}<66? \FՃw$lO040)rS JWNp^`'8?cadXW -;!7e ' M MK bTE3 F jT25fb1X,lK /ܽ;ɱC=ySo,mjٞ~W$aFVcG#Nmehr i)ձ݌,Ⲍngy~{et8~ ,`HM` (YL!9T|Pޡa&L 5 C;_F'45 $ TX38)̅htp,EyƊ1wѿnߞ enT^v Uf=i4eQgj%nc4F0i Z:TZ::zSgjձ1现|+sdֳCrUlusIJYd-M3rreƾ4%ah)^0 A-Clj1b0Y8 V;ǜ!3-ϻh}6|"}'c |3Ok82 6D2"0"KDh2!%DPK&вr 6ߵVpu-l֥#l1¥Cu+43`8@T}Qx5(ED (8Ѳw (x7p _tP*<Զ\\-*[~BgkpHgV|c_8 CV*B!Å Ǐk;yюl7e?SRZSOؖ`<5xH:U[ ;#H@E$ }In! ^O[-]O>y¯…T|: }Qr~yq.ٝnSTHo ƆxŖQ$&ZtN'P $}`Oˁg ~l! m _8Nƭhqc9~Yƶᒆw\#ћ ‹m_0=qNxPnk z_#1 $$xO>$.|p%:A2 YPzb1 ԠC_G߸-M8r=IM!}7;NsU1j0jogC%z8HjTܼ#$$x&IBM mrg9F揷/שOQB@nė;&:RI121Tia|k8ڵY%f)!J0U3L' I㧿q˩.;la,@Cܣ/ C:`?l  6AJcFbD4"Gg-,,8q6 yAT5 Q1p*Lܷqp5H8b99ZfpN<Ʀk-5tj5@{j5 ~n\A< T@B&иb@p?,cXPQ\nJSCm-jg|mmfgb>F+8y0OyECqxy(M:|*w,l{|ls6r!jOsXj\42]7 _<^d!Jf>qkY2ʢ1`Kk-JBPvIMxz{ %H~8JU(Z?IzWkOQ;>*zhԝ'tph0Q˪uܻv8Y@GYUJ`z+Si=6X"cu{Fy|>2'=29rWʫ݀n-<[jc"<{^L8"劰(= :a(cnoUߦ8@ڡ̮IFI@5Wmcu.Ͽ;ot;Q:^QilIAj]bˡ }_|| ( %o sIx}֘"~vsfЉEIu 99- ӉR.T?@A:U5vJ [.=8AM`KcV5?=fI/hEʹ o|W=-c9vͷqx^M>mGo~'<.ؕF0VW)NIcM= 4{-+* NOEYZ?v40@gF!a[VopרW.K:@A0 ?HQs}RտXc_ pE{o_h_rNiD tU% .*~-A#D)Q8J_aPu(zң1x?s\ItCy7l|/1̰sWasvF?yk9@A\N]-P d'x?hO9i?IO//FU IxJ'X^}!tbSOEn"<T'6@r}-1mqޯ h_H/x*0#>_^Ȕ<px>o@Qb[9 ξ  xDGEeAY w^ydWa;h Uvzăs)Rq`a!հr̀PyDhCW_3/;6 Jp쌼z8r*,9ժs!W` FLPLX&eivj}I^0~ÅŜ Dϯ- IDAT9)BJVr}P==DjzXy?8;#Im 8b}|m}ՇgH!٫8}` ̀OV^ R J3ۖY;e>~cbAƨ]/Pz||{>s\>PF:׀I ]DZeK3]֖a=*>0-/UlFV`|vFkc9)-?72sGs^"zϪ&:<EV SVRJ#TX!%,0C\PzTWb,L8z}w~qoT}_Ԇ-qF.sIpKy90_ So kQ·2>ys]\1=$g!swF(| PT9YĪj>dİR'Ȯ'Pq3ZX0+BCdCհ!ls#{i),jpDƏ!1c@Y +@4s Y2¶GRc10\1qQR|5ݭ I4?`Wʚh՜&kg.%#)`TᣏG*{0XT->!tzmp,F@O:Y,& (#{Eiƈw e)7x}gbyo}b,ǣ84BiId1klqmOՄS?9(|:;OGM=Y_XLXXܿ.YyMKahY?Ő:Av,5BtΑ"X3WD.ˠC>1E϶b.<^&Js-p9: @^p>!mlb=H (qP5 ,Jd% Jk1[.!V1r`+|xRu1ܿsXp0rؓ{z=TzwiJhiOy)U̗w6M 9!͖hge,>V+=?2B 0X{QnKF=~z`JT <<6[:ls]3ogŖ[1S v) hžedE۵Sa1-X`%\\NgL1 ë.du>B`8UGgM_8މ#GKW6[zow-=w7}8Ϲ09v,5=ýiWz;^<å}Rh@ҷHx(:'J²Ղ l,籗 l[e5S>u-5`UG5͖޽}NXܽ򂍂z|8-z~|_ej۔"Ş/[eyNX>'-v-lhƦH_rư-}\+a@0;#@!F0x J`(Q/ʁokyf/mSӕMAقKX=P:M6[=פG?y5@gnmϯeY#jcfK?tڹQtD>~7[ѳrki Ўgx_55Jp> LK%xiQpS͖hz嬁*3r1@.Lhz 'E~E ']VkET-ǯ;;ZV@p0lU{Z&Q~4S/&/͖qkI;3AU&)!egW({nƦ͖qi:;3r#=*p gbYlcVd( ?0a/ubU陋!jN3%/lm@A0;#x;;9ѪXRQW~N'ͪ9ٛ^Ay&>/nKaoEapa7OwSF}[ D@R_;Qy\riE;ż ͮooΫ4Dgn4J5%C& (Pqa@5ǝ^o'TlJ'/22W۽YyC 6vӍ Ë`o^O_,g {f/ jv.IqqAϞѾSP2VqIϟҡq..+:nA-sdBVg[ƶYV*Rk}h qoG4X!rh[Zkʄ33m†28kf d.^h5"p7\x.J;Xw>Z {i ]^Xؗ5UY*f#؄z읡x4u'ZFŽU7vc*HQ\RXM{82K <v (s0l\9PS{fLj7 ʺCl*nGÑ@lCۍ=1xX\'>*h<.kC^c'5b|} Z-gS(Z6k갱ފVp_JBДfvC\EG;uE̝K74li'><"6@ (^&,[Yyy2ᕓ Ο6F`MؑOڨtбưtt^3}XR rK7tCյD.C/̮ݥSsw\Zۛ.uKyY?ǯϺW:ԹevvڋR^ }B.>j۪H{t2MTe7QcK1v^*{WWzzeK+9e]z;K3 ޏ";}4O쳶tXDžWrK8 "CNXuH q`z'F͝!>R!ڝiRRQٯs6NF ~X"bɊ/'^)Kr:;[Zݒ}mi2)翾3;I;Kk\B-g^AF9;[OK*{(h*OX+5"wc1I?l^y [3rY9o^'%SiW_!aje02PF~T2708xD ;ŠhdCˀou{O8_ MRC<\b 28[|&' &ci*)^iogE$o[ONo_1\|u`Ø=N3p3 9<%`qhEC^r =tߦq$q<| =)KNb.z Pmnj]W}yqكQ *Y|_rYBlj;UP| PvteCŅ{y^Aߚ_Xd(4_=yPl ^<Xې9ax"^8Q00\Z=3F鿃94Gf'XU97o%ؿF(I%D _~-r C3#pGOح Bcw1+ aB~F|n-#d?s()t:3rNt4'榻%uA6!M"ȍ<Ӗ6Crk7sbAYv䥇cHmX7$hg7(bfx!nLr*ߩ\`:Kh-mNTsT;~B5/<⑜t.>:3-#'_p|ḛ~ʔsvߣ@o0aL8p!ZD1=<ar!Ag:{oWG5 }̞), ڙ5-4$ PXk*,uQ@խdzj=ژkLaizM6aF3ā"8UF - )XS^y\-;jȍ_S]"wKA%\{[U1Mt~-Tγ-mÃ䴖&9-aΨYn$;,Y5%C4CWv>V>V>V>V>~B*c 9~%\A`$"Up4UPE-Q-ɂ T%([ |U*5f"lWf{ !ջdu_+VӉU[U*!BB?]iA06S|:ՃR8:\7iڐ>d28VTTR]`8>pꛘD`s TuN<{_Uǐ=>8 ybUKV },;yjQ f5qi\J#a}xt(Q&fMz 23}rw!y{cɁ`+p0% up`5n=)&ziG!LJsVgӸ晋.ilK8jR4+bJNR{eNqKA硗y >LePHo(Sv cٯ:LV4!T@_GdC6 MH"S@ .F\PloMX %,E Kvф%b’]X-$P5ZO:u("K6U_iVpoWIQ ]7h "1ʩJ"P{] ~ɹ3נ1p0QSho(fܨ{T`_Cz>O2)K242i3]+:?"^CUusz ɱL6<<Ol@y`n"r,V>C*&bG e_!n PL|)[yX.Ptz@Eg#S46.2-(-:oJUeV$4s_#GGV㰟?>㲟fr;E%ׁZ'Kt0OT+")C[XŁP (`*bp\`BOSNL j1#mM /o (dDS }q< 3sb!Yf: 0ԇ]ZQ+ BKdd[Hvu$=Ṷ ösɄ҄^-)mٮ[9,>OᒀFXM0^UZ9=Qw‹H`iHӘD~ix|e?\x r g ؅|qˏ `֔ )@{뚺_1v`TPK!PK8 styles.xmlZ[۶~?P>ڒwu)zAI-Q6IHʲ;C%K^ M|ΝC/;⢸e,XwmicID\DS&jcA%MAs6:ވnGoRv0;݀ٚɈͥ+?;;`Sz*N>"/)/{jUZ [Ewww+Cm[\Y̠x2UV3MʇX_ʷL6 ̫갛݄i=cÀJ*T'|rzDϛ],|Z*E8&w+CI_4[|hV a|RxEnt-PR38S/_Hl;Z>x%{$O`QP9N E E~V9bPď߈BLՐ|H$;V\$L=Hu 1#K,otdHTr,C/~cPh)Է}lD 7>RY?JSΰ:)Y]|̻b5Uqi9i*k/ǹk'iqwRJRs{B6jOQ௘& \^ 4 j" tϐN3o/(F|Mj.3,Qs'CLixB+-p 0a4+-`B@c(lXUL/;3vҾ2NH'#tiQ*i[8}M@c ʹ`OOH i.hRibQZb5Ui{7薡%$ЏPsMDZwǣ#5 9J!e0m#l[aܙWsCp1tSg4 M`%FVqWVE+˰24A:tEY" D]֌nb!KPo38LmMlO~1WH'YNyAp}*+@(W!d[!1/0蠐CeTя]HQAg$Z3m\|JLBܗQ@<ȥ.h$;h/dȸ(xÿ"9PI˩z&+q׽^] $rnHf7.nLCūM<]Μ%x;>2G7˘*=y^ZveV5l8F !zHKO%Eҏ.զ\~ګ9uv05p:3'k;3q"`MPG&O;iv-қef{Wh׏Ocn]93;a1]n!l1|hPb Z/{ŘwLFG7{b5.xlg])y;\nVdI/Y,&L?ۛqc^Tͱ}6Y29 ]mL%eΏ!ڢ-]ҐR`"3,{ ;u0,ed,c5)8U3 :[f>I(nNVPUskrhMo m4^S Tm|Uz]?_nj_?_վy>_jQԭO.f ;*i.i-4Mu*cGpI@ jDժԎ6I j4_BV$Sq{H'2 }4הww];fIg"GRKy[XWZrGpgxF̣`388hڢeFM!#nͤ`?MkEhi!0u0Qn$4^ZxYj;;zE1D1▪$j{`+s ; cOnÇ+$Ǟ/b pF2 (F04ŧ1MmߦB|ٽNYwoԞQ|2_V9.3!T<՚AtǗX/W㿓}PK${g+PK8==meta.xml OpenOffice.org/3.0_Beta$Win32 OpenOffice.org_project/300m2$Build-93012008-07-11T17:07:022008-07-31T20:12:13.162008-07-11T18:27:1225PT20H26M07SDaniel BerthereauFreeMind 0.9.0 Beta 19 Key Mappings Quick Guide Translation to French by Daniel Berthereau Traduction en français par Daniel Berthereau freemindraccourciguideGuide de référence rapide des raccourcis clavier de FreeMindPK8Thumbnails/thumbnail.pngUuP<=R+.}aYwS]ݝ~w/$dDNs$\ D9YIyÇ? +S~ X*')yHs\/GO tԁu;c1<` l%bO¥ĵ3g2wKj{@RJ~ I,$GT]qoe/={|xXl~0%$`Gj^oPM( C&> ->muWu1eOyG[.L2B4blM*z~6162N*yDp*CB]Ѓ?F~;{3rQ#[^ ZXH':?s9ۇ]U}H<O|W>bh39A >.H*OtOFGy-k@ڣ+Ţnaw1Z&&.2pDwD5oTA]Vΰ>gD$HqPݵ.#l=i 8!|:2‚іvyn˸9Cb~0>t|J?kP#{&թPMMR WjAiZ,LVr9_yq#ˠ r"·39Z}>.XZ1Zk;ўiPOQ \Sgd.iX49wv?f| $8* \ݾ_~<˝#v|њO ;:(D@IrS"K9MKu9q"Q'ްbIfM~qa=:~㑻uQ9`ͷ1cx/k)8/RMƿfMSi:&*}\ ;3C:4 -%Uaw+#fQeVer DEUFӓ,AbCz5xmwN9vő&_OT1T!"4q|LXy-Wӯ$)6Kycn7ՀQ-2IVq U)n]* $uEBG;c #+FLc1RwE<;Oħ(T͒ɤ}INz~*_u[oӪxlSbP0eZĭ=ui=iϽMmgXf 0t y3qTV.R\ViT+'{I>c=1;ӕML$n(BEۗ2iS$k.cz)蓻Ҳ_D$k +hH>Mm.Ub۪bK\eCe4<\:1Vf1ZJڍ$V} +]`8ʋս*zs}y⇝d*Cˎ*&q4xgݜ/p~t-gQ|/<_ |`̦l"ZkiI~ <[̯:ڶUV#D\۔vFb i"z8uhϩ3vP\Dכp t}vxXוwW:<J9{笭&R+цw5^oƛ1=[%{.Wkˈa }XlQ㦮I`*l^}h0l^+;~lA9k;Ro|w1Ԟ|rB|TZQ~dMR32ԙSczsovWrxWfrgEC`Ͳ{s!mpv&O 7낄/yPcړBۤ7w US-^1{I2o9_nNbѐfwicFiPD {>'p3jG!}G'F1%u)Bԉ-P ֓D[j5#kwag0IVFwdhvbKy$'KTz; r$ɛZ1W y- >Έ`|;~}y %Gݣa7MM#f %n7!r3D)G6XN p'3 %o iZv2]pGE|1V3 qp2dL;p~_YCˠ)gn Ԇu6GN OA{$J@7:Q*&? ESK]'(N3(lpdgtcݗyDVa+SգL2'  ȀjT8?>'tt(Te25{*+11OV,WQEmf`{Ø\F ݘ#,M|7| eʳ|r #|wDWο'v<]L>dst欸7>GUDhE#>?yWCAGIfc\-2 B;K)EQt":^/ttDH-V,a5G|{!M?o1$~4өwCgb:F:$I (e~('❕Ɍ#it_8h  <򥿢kxs 8gU/ DK쉇3_-@[k ݻףX#Nw 2 ),iZcᰙjTZdfsp1QFYFٌ|NLvJƃ%_s +Rc['^ģFLFOs!q*(?8Jtcy=xUQY|$y!l@8(\|$Qv́ZBTA(obߴU vImjvcyjǍKʻKr ] BWQ Wb<ɨ+`>%'PxV˹' o \]d;9[b5GK0t2q$aj`5 LI@vEj,oϯAk}D:J? |m.9Ka`bu"tZ7i~7cg_"6EIѬLRisDgNV+o0Ic>P`.c )=6xNԢJxN_ ǻ._|&q"Ϝhv0N}w_ȕG %[w,v vf*a agGHz B} jhh R\RTx94tHs"ydsqoN? }*M "+YܞfuuWs V"@R򳳙捀!=gV) 4J̱Nra>CfHډZ~Npq~"G1Y(oruiu!ݟq= 6,ZĪR16} P1δ?/#aWz[A;CˑG+TvxVFP- *|BGN#3e;~oZE^bA@Oy7S sD0y$Pc+9;rB7U6c-CxV/X;?^qt˥.&ѩ3T'bN_19PglÿKXQd?F3w$K1vbP'ZzCjhQ鳱);s[s*ԽzǙBgJ4\c =d/N4*dro/?hx;'?1m _lmE6[}}ߔ|:(IDiTHy]Hl-E HjT蘹wHbƊrW"aSO؍=ʂc?\7p-oE!P8,A wHTGD>\5,[yدaΩ/yAm2H5u^}R0n史v1Yp !IoFZ|6O'uSʉ)f^47Qo*'==i(>"}ګg9{x{h2OqtNHH#7嘉ăb1K±y&)aVﯹD4B%W Xj9M'Jߝ?;|t9 #(j-رQ4#UHש=h*uM zY8!t39:T \ :!Ư]KTpl*dT+۱\!0~H;H͡s,^ٖ#̅W*I֥Q&fxґF8I,w½SsCa%y dSNĴ\=`}EVoԗ=#N[/8\.e:c`JkL*(p5m(8wl.)~*X9v‚x4| %^W}H_ *'Xb,FJ !5y-PF>l$b-<8ݔeQ'œ6`aL#@@}uK8}4i; Hz،|~dr905wqދpWCb pCП<6>@9}m$sª!347~bq轩ZCyۄq-waġݞnKa}O Mn}۝Ӝ.\ʸI̩@n&Q/KhZ"aU)}SP%Rp|jmi&SUm4Ez^DKKf]{lR׼Ɛ6ipIb6Nyz'seU.ZȉbJ[2HRH37(ăA446)!&=]\ւҌ$)̝-7 ۰R0TH5'Y]:Wf=anqBfqRakULPXԂ^*n{ɀс T)q:*߅Z\$*&=wr;U?N8G&g>@()EWe&L1CL) Z߲H/`" NWl(5~ۂRdBu[Mca%RCpAZ)tEnfXx. @82[{O:TR#nr>&O~X aku>?0ZyO uC.E"ӈ#Z&J 0&? .GmO޽#Q˚;/+2\$ijM\ZI! /$Iyys\N9b*-ٙ cf14`?yJ*(=]hu E-׷05dJLὭƱvvh6fK5O]쎝؝wF2ш[W9U~Im8y#& _xKe=UqQjL Cm45kB؋3Tz<$а?M p~iYOi¶3`e~PZ.AX'ϱ5 Kg^B?4MK}hhV?8K)T+L}n.Kj`孠۹.Kd0"bD x˲UzEsPsOD֠ \*I_NbUMWe !eYiw՜,aYQ338ϲ%M_BSN˛g[.2'Ul, 7H[go}n`E   ,T,P,VAC"7,_ET|?z-znؤ$#@+2nձ>9{rMse@؋/rNX` Œ<~FѺ YA1^e9@/q1m薝{|f߈L֒v#H3%HI 55 ݰCA=P:3S󺈘jcsXYv`QK@o|?J]+NEF'$,&=1zv lE쟳QD*pF)j?̧B^>SC RO=ԑ]8l +zT(0r͒ 9&s-$#olM}xvNA!OֲX]Q]Tp JgfJf 0as oZ9{(?Uz0˦gV`țE[^Z-1CP$em׈.I"CE@% 3Q^opn\(f2q.s8-YMuuYcY43$GuҷO*i:leB &JX2<;I[~i#o͖Ui?l@k^L)+"0^=;LꙅصhɀZ$'tVcܖsT-0S]aލ-}V75O1bOh*n;9BTC@z23V@yٲ/+&yU]푇v%SH)G&K)+a@ VQ#*M<:E=\Oj$1!C\`+y'2 _dN4)ז&ŒBJwI}"5%:*hX*tH!OoA"OV@YV0shBQ@U ͡pK}B0]Ɓ=w'ڛ*]> Pṃ PJT-? Hߠܩ*VAς0Դ6:6'm>3ToEzU\+W%{F!$z*-9ӞA#sZ.A 6$r,fSBTiќoU@_Ngzg%K[&ߢˋڕq)#ȋI iTSi=6=T] ϚF5E~9w)S2vm5e(\۫%Y Càc6z H34 gjAb` EU7 91kCTIe/LTLj>eρb߂(s:Num\C߅9A"aH04763ccU[r8D ZM 1dܙIGC(=srtfJ(t|͍8_bBE /0)'qM{CDO/Phpw Q:ކwخ$a BEq_-8gJf\\s𸽠 x"L'9c6Y@ТlՑ _g9shVnX888|Y ]`QY~?.aRbE!%emRLsr% upev%MiPH7F To4"-RيcMiळwm HxaW L[ S$]JQ` LY0)Ψ-urvw~XGSIY?F|Ss)6VM,hSڑD>#767г! ˍCL$53x:MYTZSLZg9Qnj (=̲4I9"l,*cDEiҘefWSKih(Dh,B͢|/l"Ra,ztĀ!p_|Z8v/E =v'BTF@U ,U(+2Ru 8Ħ>aCMkM2Te5TL@U:20U)b\_#8[|%TaP/i3Obs뎅|kp(C9m=UH#.g@LT6/KOJHyƷu$=Z\,yg/Oև 4x1Cv1W[W;ݘk$,pŸKr C>@90P&- L ߧ6kۑ AjA5\ć NSdfPx1ȅvT<ÎPvX;2T G`_oTCK"D-*rv1ՠɽ6Ae7F<_ĥW҈u8&(\h`nV%-锕-Yc_"xetS~\A SI.[p-o.DE8(7 )=sFr&QyŨlܙh]yn|17 -4TB{~M5}!ULX:~Hbn>1m'DdkRiG0Řts5´BV>¬-]LQC :f$1H|ZFIGS>~!ٍR_bTzy,=%{mѨ]q3GkdGN[>(&e&aYs`0vxIaژԢ#u]I]m@7,0^I=-~C>P/ٯ|9@Zr#Q0[V\ۖN0PlB3UGEh|Uۣ,Vc U!e@ڶL2K&|g%.55U!# _T#-p4a3_mz+&HWX}sGR;oN[O '[ =d-x>#W2'laIŲD+x'Ax`Ir*xхZ!]7Zz q3g2J%wb.ZS\~O5 _ꤶ+y9HM"A/>Ii3'Ib,Buhy5 oXZsz0+B >o=k(ەPAEQҘtoKɕ/1TΧ=kiFչas)0-aeXސІ9[ Vf{3 ph5(={c VV[歶]C9?X0[Co6Д4T-@s(yv] 隆]G Q/I$+ ?PKpo3;;PK8 settings.xmlr8}"N Ɏ @@x#KI_ 4C,]2&gOEuR: ui:?3#< Z"v*Ria:1,V#+f$ץI\β]V{xX^]]󧛥>(U%*3" &GvQ\ٚ(laAq9$Z6giMuI?E=Km{fj=',)mUDTn*o!si]6ŧ(\l%z0eJ4 LK7p8Y1{?qrv($ ^*$W[z|qܥxZ`wX2iGvC=M@]m`-&%wށ' k=[0~#Ke4T-Ofobc_2j@;jҷL+]*$DcBDS#+mvkWvrG?RR:3x>OT@S}$4#T5M,.!V !e ؀R@*;ԤTo8 txr U 2o`x6Wℨd 2}O2 s(L*Cgx8m+}XVD1_{{Aj(P"C`*0b< R7i8\鮼vB~%CS^?:FwͽUV~Ug8: /*REV5*ho/c „F&ä>孉#D(LM!"QH%#&9"'Qsql;r˄)5iɷ,_S}ld'28z!յs v] 6}zKU gGr7= 6'w'C$4DBkA+~a}Id!<_IG`+1B{fihr?YCRrw fF^U.L$VZZOaY˼>ah`qizA[⻩|FEr4̈́N`Š>AQY&0c>kyџkT,?R͞scǐ<:su&iԎHK><gId>]_BPKʨ K%PK8META-INF/manifest.xmlKn @9΢M8.ւw}ਵkэ1^8'"0R>LjGn-gl7s(1ENƑҾ> stream x]Q$n~_Wڹ@AU!F鎒UHQ6Ql='guv+ƀq/ʟK1\_/~s/R}si/&lEo^\///;럾e/VTЧKXH][ Rܨl\hgZq#}Tׂ~Q#}*FJy\r[SčJ%2LR10I9 f &)ǘ4$sɫn#fS1=@1]ʍDYXJLkRӠSiԡkuI9tP#Ԁ>a֠aIK eҭ4*ѣW6䉍BlcDf?q"6TY? q=?-Un)=yQ9R4|"rYf4$e+ +LXI?7/ٺ)1hں)ǘK=$3xcLR1KHb`?Beȱ\ x:C[V )XA/y-K?燇_:_]x~\VJoë[߾7`G].Z;~zs Kj_:r# P$.P,.Bk6)k| {/|q~)Znï/>W]WZE_KΚ}ɡcb*comQx/ĸ .oLl}fIe!}X|c/ڍ/>RO#@O0[ _.`7X><췀D޳K.#\ᛖ]hZu։T4uBtJu։62L%Ez;H%1ѦQA(ieC ŭ&"JZ񣈒Vv~hӨEDID VEI%-c(DbS2eHDTpOw* ѦDJTt"5JJTt"U EI%-c(DbS2eHDTАfYD Q"HD>o?39KD>o?V;M2"EZ"Z-5։Dd:!Qc()%b2eHLTtJ& ŭ=&"JZ"Z-Q։DEd":!Q5d()%b2eHLTtJ& nd#Z%!ڴh\NFT\NJT՝U*)%b2eHLTtJ& mT&"JZ"Z-Q։DEd":n+2QQ1jN$&*:%Q։DDMs8Mt-F*ѵ=̌aƓɰ z $PU"H}DZ'G`f/o 4m^_wyl0+ouӴ J;^spSCym[a;| !c3XPPX}@k,]{i@  p $nb3uЯFK5 XYY1L*"MNpYWYbIjny֏=<ϙ!'L*2 f_>y/^libU\L|E^(7tf>.t O i9X~UeB~: \ 6?5|;!1t mCW>=#K1ٯ(7hb?+f=hm-j1|ia>%aɸ)N}{Cc/RxY[=(?gR~6=We /K/`p 2 c-9w|Uhևk${B?X~֙{u=ym~ Cxb' m= ݿ" L(YCOZwV Z㌥c1Q{ 3(᳣DtR%`FE-AE.sv\*mڦGx+ fI, 4RlV4<' z;4{T$k7e(Cuhj*T 捹Bي|.n=̆t{KyhF;F҈끌c3Ƃ 9!;pSWDYJ~ɪҨ7ǹY1&MV֓ & ͐B(96J,\’¡v_yrlƒ2C0,x>|Y {udFAh0@ЙaiXGƩg#I4>$kK=䅁=Hsa+>t&;Ju#;ln-=شgs:MJ&;qL̕iIEsTb+%OTڣϐX#1-Ue5Lw[d͝][_w>TZ O^!257G #W#SNO%UK)q%Ӟi8w%JZJ%~KA$֗hi[ڴ-mZU%_bP(i ZfPj@$] %-V Z-DP|5AQR%jAYePފzM@Xee TJ"(Ơ()Pk̠2JIw%JZaZ&P) 5Z%mZzZnrU%cEIVR@IߩSEP)@I_S)P"DФMʰ`֤&MlФ͉/1 J T9kp2AJI WIEe GߴZ@IK 2V*%^Z]Ub|QQ0EA;([, YzFq(e}B5&O(ჲs@gس==q3=>v;,Πbl:͎0ȎWŽڞSϞ擊=κhgAaOځ١E'~{'~֓%[_ԯID"ѽH}.R'"H}X(Rt }D$R_J-J>O`;f$ o عpKсǦOļɻ_MysOw(]be_N'"]/l ۬tSڤ CDO.}zZ}@%-<)3xD֑Y#uzR },NvX#4Y\#qg,=qǶ, ;ƛ]E.m['jyNB w8F 7O׫B8`v_jlf8O5ՙY$mgBa,VR5w<·ի>h69}MEj\}FU< ψHl~v\CTŗVjFI;z"0=sN68N~2eJ֧a]|?i07íLqPZm%vt2^SMS=]`槜9g~̧pJP0 >N3Y:,po*w$u|&8Lao^/u zzzj,e Noxu]XX}T| 7 b0P"/Oj }lڟ1iE+`&qq7<'k$U>)x^ĸGKM-=j {0 yA5rc}A־0_@{gck:%x)?YKݗS f}R'2X31joM~p-3cݗē-,䰇9Ås'#M lc q>ӘYK[- >T)AdCC^Lh zE{@̐)UYi^2 qw5(r8u~ >f,]cG*J<,MeI+V X_CX?M6H!eBڢpYO7G>]'0lr8Ԍ`e_3fsE[Y{CrCS۽N~LK#{\;u[3L3?_.Pν endstream endobj 3 0 obj 6323 endobj 4 0 obj <> stream x]XT׶FSNAsӯ  H/z؍<ӌ^cwEp}k) c^)ZZ{`k'ϡgXlm*̌H3"0KghX fD VFӿxvO^%b0;jyM͏@QC7>4?]BݡaO2%Y_B6&?W buy_ӟАdcS҆XXf6/9 b> @5+ۚc.....Ɍ5K_phC5ͧJLRvHv(V($[D[d[VY0h(#> }cxr0i8œ׌fM͞aǞiǞ3=מ=mϜcϜiό?F6FvnG?FDp!5NA")6^VӚkWj;{3MJg7XKXC-?>0alh%i^j*a͛0hb'g=#Yl[}^%;^T}K+.]>]SS58k]\o20YE&tҠBGF3֦7]1mL4ϊc>/}Q&BMU·$mI6%y]wRvyه^tQ%uKJꖖ}A'ґoy׺1g8IT8k9FT>L2%h m{ 9$yQ~eN7}W$ZT6+s*g?'sۤioP vC`>bO>4}#ӚeƂ<4-363f?.௱^԰"G+0aKIM)i[۲vx[࿯Q!ea*ć"TIN>6IzFz|J쉩i?9ad9~U~/Tkk/n5ɷ5eNMH(V J$t##P7zf (zHP$TЎ O&f-+|^x+w_"rQCZoM>j{ݎ1;v:Iuڝ/mRt @\CG |-?Vx4,2DEҰM%ͥ|_ Kϋy8F`(֤l=c=kkn@1k jf׌BM8#6HhadHD:D/igqȯ[}X>fC}tTV( Nހ|虳M8kl=GgZQ~͉VUX^~lYѥ.*ܿ`ϼssv>3kt&}=)K'z/ 5ʼn-mPc},PDH'y:7;"88;9;99ܽ}A}A`(`06wHL GKǣzD̋uWN^;{eCko^R+q>/؛=S!zԮ$'Ul`~KsJ.+>SN.9 |yzxf)L5I:n{erҨK$_Fl,W^'YAe}N&Zb3j[V% #X]}>%֍Nc`{0[=   Չy'y'bީp0ޙpH8a5+LE݌ǧʎM=Z#=2)pR|<@YؾA; m٬MWi=(8C{JGY2bc,|(l)g' g;3>ݯ=< T sļcH^]$ w*, ..!!>&82c;԰aȗXk'g4_+ٽ܍Ɲn ["O)??#ܴسScNuzĈUu+) 8R2Pom<eyA7+ygI쾋$:fƨxȇ!?y}C'e{-=UH7Y+bsg Ԇpr8?8GGb#'%Q3Q3sQ碉ďQď QHޗ>oKDjSé_Ͽ;1W#l X#01~ :WpL////Ɉ1W)q j4q-YX bTF*H$VV٫/zi_v ">DžexKh`Oo-bq{hު@O M!g[NKg$8΁v=2⼌p1QN\'.%Wɫq5n7dMy#@̙'2fVkUr|W%"zOƾ@΅rԕlYc.(m/*mL1}a璆KtVW/{D ǥE8* k|!Psqwr9zo6r/j eMWtt?} FFܘE9g%:o"Q 8O .%Wɫuy=n 7 6 #'Ȼĝ8rog4Bs@}Z$b,sgM_M| /_Nxo^(x^fuN*8M碐BL$FpՆCʢ-B ʞ OrpxˍY栫¶FßV@5X;s890s)y!D"_#.W 8DH&oP7RTV m@2yG$^"D^x꾌QB]L'8Dͪj> {^ aF$q#&!F!qR # %H``'u~]* GA.4$ ֢ @Ǹw{8;'p>^ǕOYc*D,e{X⊌%^ԍdt %}ASRwT==LӨ~ }?D7$ !lērrOٴ4Ѿ__*s8d7Yn[,Dw%ĝ(ۀh⦔+Cތ!#3$ʐa^∋22| ~ \" G$jHPK<?̭  @y xK2. gI`<*@AJn%SӨ;{Y9t}6ƒ,~6}?nP tAcݘF!!jJtS"ը&P_Z9;Dc3i#d/.p?r#~Y&I{1weX -'nS7|]Q%`_E J9>4{9$ص"Pr'*{ y'v"y3Fu] jy% UE9zh %3Sb>j]xua GyfDfpS{X+tz 7 My|aa h  d#4+ZTK:݂hNZD%j 6Ю?Ihv,1xI<MQC)0lMTCv~KꓐC'SR躝JnѷfhquS(h6B$Ro("P+at :BʝE ϕKә"|YPR[F1K<0n. Z -–d>S$͑Dx$%"<#LI l1YbC أ1~p?}%Lyl&Nw4j<4 9qPay:ƃUKf@s1.Ӑ"hHҩ yK(n4 -s|[V h+\A{-WdtnO Rt[-f q? 'üEL   tsl#A%S{RQ>LGx(h(@6Ar\\㲐"fAf"꺯a!AM#|]Fi&]L]LIy`̕G([ar( |9Hg@^(P :!nU#MБB!$dI_)[CaHMLER-(EJƒqdl- %ǃC6PRZcB& n V<8*jS!_E!2P~5ۚqaoxv̘_;*(y.5Ў7g9ӭY[Zs>q?U@{ l*Ve*%H d=$%BG!G;SZ(h=nѭr5nK %S)i lJ ck$T|"AK!£"-@7rpd"˪R@AO Hy Ef]o2奻XMh2A*')hAނL9bPGVJ]`·O:VL*C%HB'o?]k ڢ] d$/oKQ;(r\mEmłتԪX\*2z<(ȲF1@.˨1zxoIIX3ȅ,t `,8p i8oe'SxZ~mu4gS4gs4gK4g[4wG4gW4ww4w'jOH;1dp:}JK4|ȊMEJGIҷg|D'N^UbWQ*(Ah+ J@"\mJTav<F}4Hb[1TAa0t #lNoZ|Z`>4OddD{hw0w?,*`X溛?οQTjH GjBZ,KC 0VW,TU-Bu\eXD)@ZͶ,T? ܀9Y*QOW{v70%0"DHCR TYdPB!rA'>:ˬTXHbcC }1'yQ=#4B4nj0w T y:@~Ug9H ,tV;+:+2Xɂ|D"ƒ既!$"^J,91K9`e32ONW7,zzxF^Ԭ թ㝓_wd:d D]^W"A=+*T(BTXuVbTX URPp6Y?R%SSu .,B{~?}FK9:ڼoܐӹ!w3TWƵ x4~Vx,?`/Ϙa!jLcc8P~ّ^| ݅(ɡ8H\_noe?*r)HG+fḡ8_6-3v/μ2\緕ouO\ܹ.^йF޹Zֹ:ssytҨ%ŝ B3|:*:^@}Q<~4Ԣ?F M}kd`G*REw/()iV ?Sb&&qĄr&OOl^^^^й"se\JY LQ#;;w. \~#H8@O`zzxլqi).UN6/A.f^ofYHt4~vy2NsvoPT}:hiW_lZ CvgGN+ L< j~jAzAzazsAX΅EAꅘ | ƫx{yzԳ\3;D[UbĺhhGܿwdڞRخEaWo, r,ySvOt'/,Z⨮S$B*1=?WB</AUlό4Ա2/81?d"xB7#;^J6Ȩx25- Bw0i.IsOhEKP5iGkj]5ɰ*J|k5O]¡d@vqICU;{N"y烱 bf$q7!⨇ 9nMC+R}B$`}dAKWC>\BO(UWں47\dZH)Ж-x-1ȩSLGv/`:Y"gx?.E7R^F6S %>hV#D)@X1g?Y[Փ e0ە[N[d^W|0[bZbZ lgun|8H@YP!U!Ǒ BK\vT{9rܣ#6(X0ы V POj9A= IPn myhMKEI7яRh7֝ֆqNu1K7p%AZ7?o6ɤ34~26(Ȼ8F4q]B@"kTĘj|a "HK CHSH>p%=%CTHժEA P+UJz ҥ_jJ4Gch5K 5QE4!K-ł"ߤ)ně{I]y'ӾK܈AWD`/Nq+s {| gֿ<, ^: C :  TB}a(LmƠ ^4Wx2u-Ve]U,ʾw6E6r4r(z@@$Dm$戀w7qȿK9 _?;ʫ p9moN\$Ы nVUo^MA h VƑdXV!`dh$fxwU 9$AǨ?] V ÁǛ"1ďRp#D|M8|,!֟{ fo$?A6F֬[ *tpKz ͩQK9L}C9/w5آ1z'h78awx\g#e8c Q9 |:?. >;̃? ;%DE._T24*Le/*|S*@ *H۱D=&$yԶhlI7b8X>O& Ш Kp)5 yĈpP-x܃8{&pvrvp 7ֹ1M*0RZGujUTo}uvC;mfޜ|@ 1oU ̼g`އM^_yZZƚ]Ȑ֡:a]=Xzl A*ܕ_[T?nh!<̽,_IB4QU89 {ucU3<`_kʅ™c]1!7BVa^@:P.qaپx͚jԷhfR3o00$0P>4qoy"ǂQ=5M0ZnӐ{[~㍘W0:3KdۑU*5T[8=T`XZ*hYrc;.qBdB0.ubk@nbAa{f 98K|aOwo/wf-rD #_T`T@ua]76Uժy} A˜PDrg|mqt xHе (Km{g a?\oW8ٳfa>{}0=TXC.XwLC_LV3ָ3q }qcm/qoEuNC_]O~*gG6?ݎUhad9Tg %6ɣY?+X]YAPFĄ%|1纚y_dw};4=1 (?aJg2Gd&Gڰ6D zx|dc1F-μbYiJEd^l;k.:ߏlF֧iKPg?:~(Sl+ۀ?1[en pwY[,z=-Զ߀:Na,3w {LŮad@tg_>uPYV4O"o_~18'۲GEӭY#~ɃzhZWx3a`m/:M~"Vl5zIPV缈Ow*s0}S2A7]{b\g!ᰯa_4 CQ;7nY=iyc\\ZB\g5/a_ {v06}V>@?A=uƳ3j*]3]eOK ӇS5ayXƳxCOָԖQm^e!nr 5n { uU> stream xŚ_HAuw=, IEfVGRiauHdPd`CTAoEAK$QAD(>D$r!ȴy7;fo~vfYhy#/Q|;0|j9.ϩI<`yB=4@>ŀaU6S Zf8` Q' D Od9}YbݷOV7c#A~qlky@&'6P7j`clyrJ 3>~oW./q7£RDZFhBAyLPx#zƿ؄PEkCaF/ޔ'٬^5]#D7Ԝlx_?M9s0Eј>(vg՚j]h/x?FA̐8py!SY KJ-).[g_sϒca¤h:"iY"Mo6t9Lb"@6ZMW䃽v.)Z'~-ޓU؛R^f!`[^g(L42Ϩ|2\oF>k*p{8 #;.1d־neeL6},嬿J~oLrx^= 2?Ţ~;$wlE|o7+F|HX> stream xXytyY/x\`I@@bE-(ROiQqA@D2lQ;r&#IyuH:M۹^缗>7pڸ+qmHEt?佒|]}b[ cṻ~ܱ#qas+~ډ_xGMCx_J `qcfx/94_:Yzx߻K8at `^oq } NiHWd9;[v e I/P|deY,G)zJpO-.2f*~W+0: üM"j_MyI=zK%[0Zl4mqW(x5|?wO) ኲJn2Xv|鸼8pZ q-6껄~\E9p5 o`' x*waYK(^uqQKBSgx'WJۃ`y5I*p.wAkqՁ I<@V#xb ,B|ML" 0qw8AvV%p?l@KszDQ[5gcOVnVl?hw<1o V !'!j(#__Yp+TճE*S"b ,-( VͶ솦r!o![~bVmdEsTĚnPl̍- V|O/|طcpڝgܭƈjq#{l.Uj_& \s8};6f۟o4ێ,{NwƧơZMZLV6eWYVw5XRm IХtϧ8=ַdgV-^!;@U3lufQﭮ/ڲ=ewo.v}.aihϷ5{+5A*Lϲ;uY-D7|fVs{0v7O鷍Lq񉁝fRdjR}WSD݁nI(3ǤV [~yp-BW`/3ZvUtE,VCNBrB$BD]epxsw_X'sN 5PhNu9-қοR?s=qjA R>קWDʙ# Mbݜ19 :wҸRr3ȕ,93OSJ@{$9.eQb[-,or%)t{UZ54CD1 _z8j2c ~YKZl,3~ػ&ѭn:fψPMu'Kn[wsY`KHP"u+"}s J,ٲA{DoHGxvxIU) l}Y4xDfT2j,98*Y q\;?Vŀi,T@_5'rZmj{` <ɕyXwt,~^iK/(Xvj I !_G*yZBpi6d&\쒋P<rݴ+8|IuZY~YM$Κo-F5KK0Adb۹^2H]KGDaۣeM[Day4-U=o)#̙l\b)zr4?ֈXԸg51 rustHp Քt4LT>&nQoQV JL/jDM|+><^{)RK?|#O"L؋+G~sH'gYw}wCq+hibrD賷j}(ɲV&%((.K)Zy祘_+*(M@ݾ'/, , ܰn@S +p$; v:ч!N6pZ8W2pCCNm$yur#.>+M6ܴ[ y_̶!qk@K͜+cر}M zK 5[i?ԁITPe*E9ٲ Bu~v?4Kٳ)U&W$f"Ѩ8cDzM:#B-( /Ϟg #јa hgȑųIfK6rz pɛLEsx|mȩ™ӧR껻纩oj!?Eh n~|u-8,\DnetvPh{M+'(I>fS7s(.)pb9(j] +ݒHvWR_nY\,+r˗;Y#u{$)|O*wffγn(; ^.-i.Q^N$MrXpiEzZ1CyHTc8< iM7;wlωv1(ԷOJ7"/6kyXDqf"vNDXjn;-E3rt).9sݻwo=:1T$*=ݵ=j"h=s&FtE SF U?+eྎѡ"Jfy8{%ɣISO~.{ᡇ.;K:6_wg* #yف*WpQz<|C0 5ۏO[,lm}Ltً݆֦}ٙ߿)=.C/,T6꛰ 1 R~Sua]?r憡}½dx$ 77a| 〮 tt+..mx_?犸=܏59Umv+p)))Iy1]]nIT}~ETRSH}5-''洇~nNoK8VoodԚ_|k>"~1!-jbXr+Z21S﹝aD2l@ gAWMjʰ9q7YhQ4ȅgмNht\5ZTb=Фr2EE 8h25Hd3 4?Ѹ(ha௹°мǰm1c PqwY)IzNyt⫔_4 b{Xna ͣg=uW?chF&G#ZTdМ8= K:@jD%uaؗ "fbWRaBIϴ Ma-Oڳ 0Lhޠ8I2 |ҷ3 4 I?Űӿ0QF(eʨ`h2TńOYOƽ  aU Tf6@yaT喓3x340 UDAA1 ͷNe`|U0d):0Ä꟩0dg0 4Ux^dt>0-DTS#U>B|$" G=UXC&cјQcx{l~""HQ]D&cE 40쭯 T׺DP92I{DX/iPDX\q!~hrA|Ȯqരxp*21gHD#o59.DBTm'g@#1q-kMYkrS!w( ejw[Pjrn2Fo34m˔k5͒rH:Yrvx֞]OYr99@SJ߈ntXB7)6IXۢm҆zm66l$}Cˋ#}S㪓D+ºd],ysvNSYsCm~)Z´uurC,#fN5F`O|JA = VŨstdVV'gQ,ǁoZa#zM#;6y2L~D6S})C!G47}! endstream endobj 11 0 obj 5712 endobj 12 0 obj <> endobj 13 0 obj <> stream x]ˎ@E^N#H"!m5fߧo]':ݮ*jawgu.xOmTxB^(sq0(w9=ӦOSQ~M]LpQO?Ǽ>ާWaVUQת\s3}iC_9 xLQYkcoS XV.[&PCʅ:loNxlA8l+a~aeWF-cd};Yw_oW`;o%Vrov` L~5/Oۃc``%{{ǹ_jI | 37R=ѻAM?<-z/ce8)ĘSʣ/Mf} Y ) endstream endobj 14 0 obj <> endobj 15 0 obj <> stream x|{|Tյg#̏@T@ZDrzFZzjtNt`! $hҽ3BK:OH/lȩ ͦߠl'F:lߠ"|81Js0h}~%h,ZBM{[tuCl? Q; &!F`i|Ǩ/9l4q.+IFA8*zTZL-_gl[݉%u{A}^Sos;(FwOzU8CFҍ[G$[Ζ+s9ZJ;waa:Y+eǬcՉY_%Zx3|,Do+,==^ߠe^R>HN<%tI!'mG4}[wit }^`YL*ְ-l;b=lL)yoy`jMTBlZy]waӷ6-f%XO0Mj3ʋ~#c~7 ea(}V# ,^w*<*^Ûy+'%d9nuUkcc%&%lk JZD4~A\!OA.:JDZ ~AAgfA>^{PJVjKY'ʯ|A\',dX \پc/ow|W^v/ؼ3_%v%P)4Zދ<ˈ'?fE0^fF\6\;qf{piu:c7;'i{W)\?f߲LY*땭v\]JWP )}CʰrR x ^4E[,U].͖3,[nuZOrm+m;m{mfowdO [;Wf;֙s9ξxbyY8生RrUo7'F9}sZ+3vʧ0O9D-ֿv6r? dk-(kqdܷBz]OAIr'/10mR[1Vc?i*tdYIOU!Knd#v1[YVlCVA9)Ǟ~^L۩EUboW }*b6*W>My3B#l/td9΋J>raf+TQ*-Lȿpy_e{CYԱ/p漌QC[|=F|nlq}ۀ5M ȼ$b>Qp&>Cħ۞9q'.ڑx/VkZdY &Σ!oo#-@kOҠȝՉ?YG>,ԁS?n(ۢ %x'9ږx(diԝ#>EV䞃zvW_󾪫+׮Y}ժ+*-[Zdq"W~\`~9sfϜ11-=-5nZ¨Ю,]6KADh 5L剩MgEn=2**)V]j{u.u:W{U%~0@Sc]5uַAPzZVO+)tbs\!6&eN}B)(窫u b^ƚ嵖X#׺XFdZ9MViTX RGoɤi^W%ƵV1GV歋͹񕜉&g׶:7TU27OS 00as)-Pk2V}Kusumc h@^|0<׭ΝSRIv5n+6"bG&-.i(54Y6|ZFż/Z>Y zd7wͤ 2 (4'XQQl2 Zx:^#۫JF+ Z+`g\%8Íp2W~\R=Ǹ!g33q&)Ėϙr)Q>yb&JQ^34.~S(&>:S&=O2@&(#k+dϪ3qNkMe}muϊx ȞoT]fi쐉Y ƿX1k;Y5T24aais$n@6I/]J5qh&{&8|&o4qhs&/1q(^&-xXײ ,˕4I7t.kYV+mL,)' ْ~@sCϕMҋZ3DPQ.5cukAҗxf<"&{z@I?ƗtRRٸf*Eyלo9Ug\ގ1]!"Gm0 D}(Ç{l]mA/yi/0%+ՋW.9sx|B5(U zB :1 M2Lh%7~EzMċ>ЄVu k0kDj.쯢-x"ԝPbvM̷V)*4tH KݻMiɈ:;\]/g!*!]?"*%{D^ꖣ $/\/!i=UEj1)=Nzk ?nzMJK!SrCr%BnDR4)+e+{Stc(yDL"֍3 bP/&%k2&IJOpzBҶIs>J?*YcrDYL@zʈB/ Sm:#?3KO$s,[KVPiCAفRlj^/frPs&I 3{;e'|3lV2 xM& &g٤>~tir7kJפ5TCz/CWܡ6iuڼYYj^UnK]!-=0u!%uGD! z]>O$R7i!YWT4wEuu5e/Z0k]bY±M^/VԫZPV}_ ^=ս1vv?v@zu!O?{jO wFR5ҥ Ð&Һ|_07^ K/{#:. 0>Cah  ]{þ>ԅWC*L OtFC ',t0:- [|:"Ma9ꁹa1IHTz#>g9^5k=ZHXH=񉵖vG"ʲӐH'"aYO-"\x Y*:~/"Qٲycښ[[MkWko\ّH{g|[F\!/e|X2%o #=> r4c] 0Xڊah07EqU'#y8f ֎t#Hg !PܝT dチkjʔzdRu'v$v@rX Bҕ.9Vz}bcP,!i[K.R.ľ G,"OH/-,=IWT#LM MHcc.D iixR>5_# i֝+UA~Г0 ;wP)\rRu5%+SSw6X|ʕ(WXjUkiu3V܇xXLX {q yK~5Ck4$?bʋ+/VX+/VXbʋ+/VXbʋ+/VXbʋ'_Lc$^h>{22'- --\;eIgD1Vb~Nr_Ԁ+$<;K<>)L+#Je/\Z!;W|b?ZƤߋlԟ6O#u'Q9.bGy8ЙY* nn`r!{)>ix܊0M0MMMdA$~~~X1_Xe&@p= z (ତ址aǥ|oЉ ^뮨~wn9i,2W22(IAW-u($+WՠWGv>T)7&6f|+ΚYu"6?t]*V /`g~S$a%ŋ;0g3T,gTP?/(~TBeΚ,EEhɜq$Q7NjŨ:1Z"|IN猻"KO.t.z:ː;(_)qׇ X+οT=)No}Ηvqs'3# ]O:h;GGRqxDa;`xDqQ=B/\}Yhǝ*~JA=X.t_TuP0d4g+\ qsJ9d¹ 3.vIUv>";{}}j {]/ϷLNL2-%-%%ŖbIQR(eH⼻H~n-SQZ$R?#(;QiܱŲy]luQ==1!>֊VLmQs Tn?>IrGrGk+kzCH۶'fuˡ}9dmLnEɟ{wľ5V!ĂzSJUkIvr}vAg7ֵQUJ S`|6,6I6i~}P~4(>OK.C"LYMIY `˘,l ),cIaPAX 0 ']:T )`r&x Dɣ'ٰ#~PC}9:}O5=Ky]uLGtk!7 yz]\sk.uS\.#V+z2ݍA1WQA9Wue(ֵ^gJzC{n^ٙk:/烹,c+56͵.х)2yfW&YuTD9p8Ds$-M1 ~]ZpGԶ3OWRUW:QeF[A>&_i?$DMt\Hy"9'hX|tEѢږ|஗f\+? 3B7 aA%>W'fl-I'W X3Z4{~QWT䠎WH 8S([WHQ#j[.bPЈ"\aE@0w$\TDD`-bSX8J0 LâN~^S endstream endobj 16 0 obj 8590 endobj 17 0 obj <> endobj 18 0 obj <> stream x]Mn ba!UӎEԴ H ,r:dJ]YϖWJcpI+9EWnnYHfm)8wqLm+B}NH!Np5/1P8'팲Rs;ȟ}%[dㄢU@{Fi ;pr7>a_'S;8{T9坪"o endstream endobj 19 0 obj <> endobj 20 0 obj <> stream x9ktW˲4^3Id[OmYSۉƏ$vq؎8񫎝)-)md)Bi,-B[(n)KvK /ha.-KZݑ8>{:3}ww;^\X*!=:$όΟs B1y䢼L<⿇jrzyb*"hic~x9  039w=螿!/Ό7yvt{8BϝXLϮ"Tѿ:5'Jjud,UN(eCH4oI3!ˈ p%(zXV~QPE[x1=&/[ ُ{Q7` xO:̤S+ŋ8mJ$gˠ?5d7ݝXglz!˯⿑u`W n4^Vȗq^m:+>\[4>o )IM9ٸU(;Ul)?U,H.խ|y/Cakǩ2:\d$6þ6~ zHL2d O2@[')4ݳ=åޡ蛣7``jw/OΝ;8"_:'WH^MM*xl"zÃMiOpsZFȔ6P([ Uz_m04$x&f6`mPt4|Y6s_ބP]O#^6FLG}V :5FGhQd%8 -!u*gwL5]wI?Se54a31"~?ԱJN>}L1__QWtmߢM6s{s+p9`3*geF7Q[~ieCwB8"](#bbޗTj8x*kpp&ivtsjSm} Yll3[N>n 6,d>+6L4&UtV/_]@bk`d(o2=/ VY=sLkbK1o,K F~aPϥbWWt{7zQ}늙 R2Z\ 3`uCܮ$|IfFQ9P(g!u?*l:U$!5xA:M*?s +5fcgO - Ѷ+7l;A~4P M탢ERS캁9(Ž=ŰJ5ŶpWK5L/7bVc%sd۩\E:^ ⟀ln^˚Lr7e[pMn͖];n\> rͰh7V_+6r28}hf1'6T ޶'M6J;m]T,T Zb}|Κ*-$ j{ߏ#JScȄuz-`WZ d ~Sy [[,x{Cr3$=dt9fkaZXdgLl Em o7&Cf1LKjZip)&#Q lRÍ%\qK'%bJ`fkU)Bӑ`>guF\Sc5T~K͓Ǐ?ԕ H!g֟5=ݒ z"9SdO)j7^W:('>zw$ҩ(|֪9I! >,3:(~ڝmIA+v p|/#n W6) nb7Wgkuͥ D3[$L ?w}OBj-}[wM<};llhJ cc=|t<_R;GǤ<%9WM^*KL;-v|5_X{ :2?$046]ƺi?tn0IE #?$-:*.' *6J$ׅcܬ xo AΗ?)}mZEǼW,KG<t0_z GLw{vh>4C:: *\/;:o<9yLVmw?95b$Ǻb;Rޛ?jjNO*i@wt 1״P 8yUdx!z)>Ϲl6|3-4Ec}^z*k8{*Q A{V C>Xax'8I[Vv nL1$6(֦ ^̛r[k6ڒ2ױAՀR[c%0@ {% (+Z4a@G rTc0YLF56ZEG w{3;3I׻ͻ:uul3c7:}0Դu!fhH>t6AMLi6S)fhY/P*qzM2Z({}R&_d>R[lÆwkgLm ;ܼUE s*9JjÙ(U6S'i|?"={Dx0~ k\-gqHt p`Q.?s~ȸ8//&~|'SuU3kh+ VAHvb / SyQbPugU-Tu!ΛR<ߺAzVJ@!LlpM{ZBzmɈ-78gTSv?7ܑ0 \C̪z7};0*30>_~-A ݏ^yWWy0Zѫ._/9Q6ަ3vnwʉщXZΖ?zdl~KpgH|m;~!ԽD2;Bŝ]>C&'e-9D m\mxC5Έ53`$WαI|Wp z0uT&+T78r=?їԄ3 5 _0FvүtML'oWs膍#"gVd}HBvt&ZWrr{?3+OkzF %%m@!0K>p@΅u[A0:A/`=E|9JΓIe3 !TO^Pשm-74a4Һ~7u n݂JMf|ͧjZzGG(nE}P1 ?-hA6XGr7d *̠*8_js UXkWz }  V9*Pê&p cUm 3uV?ީj"l@<[ h;e~I ף;0WUCCC]sӥE9'TiyB$M,](f.NFD_̶ms %9:\$r٫å@FnS:9E!Mgyђt$MȋGNBb|biXi|Q^{=贼kilzj\/͞(E..cSNE'g blmlr~LSN7/MN򱥙p/ӣg#sQM|dsxDa(|F5s0èBbyEQJGO*v:P<oe+W@W cZfz9 *QٔNP, endstream endobj 21 0 obj 5210 endobj 22 0 obj <> endobj 23 0 obj <> stream x]M0 x+EH$H9CpH@9n+x<?v;ÒSwt9cmΙ cbCđ~k;'iX{|w=iNҟay}Iw~/<%umzwuR]|<Ò ѱJ76xq:jn:qc\GC YVՁEy Ε+RY2 b0~%r~c Uk|ǜ-xOfd[v`W9+Fc_ҿ֧Kwb_hM8CR_M_Y$Kk} ܄֧3Jx(uS[ᮄ3In9w?l&݆v{榻{Z\6zw7O3V7D endstream endobj 24 0 obj <> endobj 25 0 obj <> stream xVil~Kr)Dj)R"5^򀼉qH{cQDH|$IU$,_zwiw{i vxzW&bק̮g}.$Sے 4O$mAX4(p1'? 賗8]ASG¼zN phe:BMtՙ:<6{-s3i26}ߩIp,I ȏq99 G|O;x%z$10ZuzrSt7xfcYu&SEsk2fz/۽4[ƵB}Cx7A26h,STyJx`S^cՉb^S8ԓq;֤2ܤ}m[Ew]泷u gO!#" NBR\-fmKW;uRu8r{/xgMr"_vچY83 ;X_<(;{O#~;YKn]ln'89p^'箟Y{nca?!,^o"Glo$ ֘D8!%Li䙹-9\}Aø׊3VDZ~w{׾2ŏ_[~.!NkHվ٭_tv_{ : ,.oA50M˽ySt!b=,|ޯ& SްiN V[ls2Ĭvoj;\NX|9zJ2]5k$GI2;ϻY&\o34۔z=!:_-m:J=UO~}/(e}"ӡȀ:9:pJu[{MM'ڛa+s̿W1roYR5kv:{xq}|Opd x_DD6%B+У|׍كAE1<"r\ Dnν+jG45{! *$k kx)-EK)ShAI50 6F?*U rYG 8<"?Qhx8Bakjm*p~ %1)4W-)U/ϔ;y)[H$:Ƙ u6%ZznfVI*ݬlH*T*<=R[a.2RqS WZF2Jy\/ \]tn MZڒ*.|]-aۤ ; Pc>Ql&{#5 -!u6e[+A ~%U!WvnjǷ,jQsuȳk(jEp^S>eoFm/4囊1l!ߔ5,1 yha]F6d*JM\#Zkh#-K$EY V`)^?d> endobj 28 0 obj <> stream x]n y .&dċ0Z ·/ 6ϰZyAi`6@{&yAV[L:{Z=$-fVHa/NSz uXhO3RUTyOеmeh+nOZyE #2*Z6ME@ h]Aec@>6w'Cң4ȧ)"ߧȗ:MGDB\9Yc og~ endstream endobj 29 0 obj <> endobj 30 0 obj <> stream xWkpu.)]A\x/CY4m "7 l9z&uv:q2LM,+nilGx;FgN*XudKXPItڙ9s=9ܳEıS_xBn;R X|Ls'~[![lB0I(MSc96\q,F+ e R'. ~Bbq@_-#t#@Z(ObYW[fotX^x}@PTB# ^ OBH}x }xb~CD2Tl V }Sy!9BC>&Oޘ>Dn@l&Pբ?NdIܬiG*IK,[, r9칫.#͟Ħym.{{{ȿ7{Ax"݈^GM?]ib警l/N&8enrƐ*΀?y1gxp@0;O/6`lvN2Ʉ;5-lZb*w{p {[M@>}p~OMr+[?x` 0r/Nv:V]#߼)v=+:r*٩"&߆-*6`P&*z$ dFOC %װUPE u?XX Xh<,~Wnu~׻[+G͸]{G>݄J\y5sfD8wZ[Z"L61?*EO_wQ)U*N٫<8MEkjl/5\9$V״@%9;{|OxY\̤Sqle+Ng lO4zߌo:ۡ|S,~anMVQM9eL[9Z 7 CLJ$9w|^Ue@EcD+؈T{Yۙģp (O,k5֧B-yBqcVGTڧ UwKrlQ[X#@Z;8vqg /F6F{pftYyVeᅡ܁<~/F d\ lFO"s7g{s.Eji ʺmwֹE|'.I+ᨿX's4_.M< Sr+yDֱ6oXowsc! R鶴?,ݰ^gx(`uWe ,ƄT(q3MH c7yBad E:<>AϕiȕdJ *+)UI'aRXo|C5 5TwJsG.K]2zdI!.(uE6@C}il\kxAnQo4qo# M ұYLcڿdm-4B㑌{O&9Z|@- <ۻU>U*}8[:KW Ě6:Ěc qܹ}7Ő?͟:?|O3SgN z`aO|(u}% gdӨxZ9Ulzl.U J%ngz5*whgzZ{7Os qu7kFj='|X[Tض.~H)@0yŁITc_8?8\` [ۧ69O$Zm}j;ԁMwKdԦx` ?wET$[Uܯ}T!(>X35VɎ8ۋEJai7xN&#))3+_vȌvIÏh]X0^ yڷxÕI0)7rOF07r \7.5.)]/6r͛HLp32`D]vr2H%dmx_\G/FKY<#nQ0%i8U+o3IL:or9EI ݟyؿ(=Ҥ1+Э4"BI}#-vj绬&%tj|.qY{HGk!6U]]CP#Iz P ;MzvfUJ,涭AJ]cXtKm4m"'lU"Iwo;y"x2]rmu!nPyqyE $9VwGtд-j?w3Dڠ]g;3Ii/k]CxkF2 suly %zMkOGk7x)T&9J-w+܇p<)EE3ԵWۘ+0 /ܚ,crX+ml 5~ C,P^G@ @'o鑲DA.L近UUG!+ayM&t?Üz?C, 6A_/Fʸs[&de:azl1̏?p%eX\( & bBm; -:*atmb=eXNlY82M)&bx]Sqe '8ExN.JqqyLa$死ͅR~NܾrxnzL+,,ԩRi3?z:†c9[/.cXHz"pE.),a4ܘ>EmEgt9`1'Am`EG @K5ƭ1t&9a=^ua,=e3F=uސq[> W( endstream endobj 31 0 obj 3570 endobj 32 0 obj <> endobj 33 0 obj <> stream x]n0 e}M?nl/074] *ouFc;46}efjӍyo~o"6=^!_כ|?ܭ,dPBC<5 mv?/[X6- ȥ,D^UEFۭ)׮lU>T8-VW$cM?= SW ags?QL*{P&O%5e}lo9=25v7h1octR endstream endobj 34 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 9 0 obj <> endobj 5 0 obj <> >> endobj 37 0 obj <> endobj 38 0 obj < /Producer /CreationDate(D:20090114011015+02'00')>> endobj xref 0 39 0000000000 65535 f 0000051401 00000 n 0000000019 00000 n 0000006413 00000 n 0000006434 00000 n 0000051660 00000 n 0000019487 00000 n 0000019509 00000 n 0000020850 00000 n 0000051561 00000 n 0000020871 00000 n 0000026670 00000 n 0000026692 00000 n 0000026886 00000 n 0000027414 00000 n 0000027786 00000 n 0000036463 00000 n 0000036485 00000 n 0000036685 00000 n 0000036982 00000 n 0000037154 00000 n 0000042450 00000 n 0000042472 00000 n 0000042664 00000 n 0000043187 00000 n 0000043548 00000 n 0000045854 00000 n 0000045876 00000 n 0000046077 00000 n 0000046424 00000 n 0000046635 00000 n 0000050291 00000 n 0000050313 00000 n 0000050509 00000 n 0000050944 00000 n 0000051229 00000 n 0000051302 00000 n 0000051819 00000 n 0000051916 00000 n trailer < ] /DocChecksum /FA407EDAE09564CDEBE2DB368F976AA0 >> startxref 52103 %%EOF freemind-0.9.0/freemind/Resources_en.properties0000644000000000000000000021057611527433212020365 0ustar rootrootabout = About add=&Add about_text = FreeMind - free mind mapping and knowledge building software\nCopyright \u00a9 2000-2010 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev, and others.\nThis program is free software, licenced under GNU General Public Licence.\n\nHome: http://freemind.sourceforge.net/\nVersion: antialias_all = Antialias All antialias_edges = Antialias Edges antialias_none = Antialias None apply=&Apply background = Background bezier = Bezier blend_color = Blend Color bold = Bold boldify_branch = Boldify branch = Branch bubble = &Bubble cancel = &Cancel cannot_join_nodes_with_children = Cannot join nodes with children center = Center cloud = Cloud cloud_color = Cloud Color... close = &Close copy = Copy copy_single = Copy Single cut = Cut decrease_branch_font_size = Smaller Font decrease_node_font_size = Smaller Font delete=&Delete documentation = Documentation edge = Edge edge_color = Edge Color... edge_width_parent = Parent edge_width_thin = Thin edit = &Edit edit_link_manually = Edit Hyperlink Manually... edit_long_node = Edit Long Node... enter_base_url = I am going to paste relative links. Enter please base URL. enter_confirms = &Enter Confirms error = Error #export_branch = Branch... export_branch_to_html = Branch as HTML export_to_html = As HTML extension_menu = Physical &Style file = &File file_not_found = File $1 not found find = Find... find_what = Find what find_next = Find Next fold = Fold font = Font fork = &Fork help = Help html_export_based_on_headings = HTML Export - Based on Headings html_export_no_folding = HTML Export - No Folding html_export_fold_currently_folded = HTML Export - Fold Currently Folded html_export_fold_all = HTML Export - Fold All # Daniel Polansky: This way of maintaining icon text # will ultimately lead to unbearable overheads. icon_menu = I&cons icon_help = Question icon_messagebox_warning = Important icon_idea = Idea icon_button_ok = OK icon_button_cancel = Not OK icon_back = Back icon_forward = Forward icon_attach = Look here icon_ksmiletris = I am happy icon_clanbomber = Dangerous icon_desktop_new = Do not forget icon_gohome = Home icon_kaddressbook = Phone icon_knotify = Music icon_korn = Mailbox icon_Mail = Mail icon_password = Key icon_pencil = To be refined icon_stop = Red Traffic Light icon_wizard = Magic icon_xmag = To be discussed icon_bell = Remember icon_bookmark = Excellent icon_penguin = Linux icon_licq = Nice import = Import import_branch = Branch... import_explorer_favorites = Explorer Favorites... import_folder_structure = Folder Structure... import_linked_branch = Linked Branch import_linked_branch_without_root = (Linked Branch) Without Root... increase_branch_font_size = Larger Font increase_node_font_size = Larger Font italic = Italic italicise_branch = Italicise join_nodes = Join Nodes license = FreeMind's License license_text = FreeMind - A program for creating and viewing mind maps\nCopyright \u00a9 2000-2010 Joerg Mueller and others.\nSee COPYING for Details\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. linear = Linear load = &Load locking_failed_by_open = Locking of the map $1 failed. Opening as read-only. locking_failed_by_save_as = Locking of the map $1 failed. Action Save As aborted. locking_old_lock_removed = The map $1 was locked by the user $2. The lock has been removed because it is old. map_already_exists = The map already exists. Do you want to overwrite it? map_corrupted = Map corrupted. View detail? map_locked_by_open = The map $1 is already being edited by the user $2. Opening as read-only. map_locked_by_save_as = The map $1 is being edited by the user $2. Action Save As aborted. mindmap = Map mindmaps = Maps mindmaps_desc = Maps (*.mm) mindmaps_filter_desc = Filters (*.mmfilter) mode_na = Mode not available modes = Modes move_to_root = Move to Root new = New new_child = New Child Node new_mindmap = New Mindmap new_node = New Node new_sibling_before = New Previous Sibling Node new_sibling_behind = New Sibling Node next_map = Next Map no = No node = Node node_changed_discard_changes = You have changed the node. Do you want to discard changes? long_node_changed_submit =You have changed the node. Do you want to save changes? long_node_changed_cancel =You have changed the node. Do you want to discard changes? node_color = Node Color... node_down = Node Down node_up = Node Up nonboldify_branch = Unboldify nonitalicise_branch = Unitalicise normal = Normal no_found_from = No $1 found from $2. no_more_found_from = No more $1 found from $2. no_previous_find = No previous find. not_saved_for_link_error = The map must be saved before you can set a link by file chooser open = Open... page = Page &Setup... paste = Paste new_node_as_sibling_not_possible_for_the_root = New node as sibling is not possible for the root preferences = Preferences previous_map = Previous Map print = Print print_dialog = Print... print_preview = &Print Preview... print_preview_title = Print Preview quit = Quit read_only = Read Only remove_node = Remove Node rename=&Rename repair_link = Repair Link repair_link_question = Couldn't load the linked map. Repair the link manually? replace=Replace save = &Save save_as = Save As... save_failed = Attempt to save the map $1 failed. save_unsaved = Save the following mindmap? : saved = Saved scheme_evaluate = Evaluate! select_favorites_folder = Select the folder, in which your favorites reside select_folder_for_importing = Select the folder to import set_image_by_filechooser = Image (File Chooser or Link)... set_link_by_filechooser = Hyperlink (File Chooser)... set_link_by_textfield = Hyperlink (Text Field)... sharp_bezier = Sharp Bezier sharp_linear = Sharp Linear split = &Split style = Style #toggle_bold_branch = Toggle Bold toggle_children_folded = (Un)fold Children toggle_folded = Toggle Folded #toggle_italic_branch = Toggle Italic underline = Underline unfold = Unfold url_error = This URL is malformed! width = Width yes = Yes zoom_in = Zoom In zoom_out = Zoom Out remove_last_icon = Remove Last Icon remove_all_icons = Remove All Icons lots_of_links_warning = You are going to create a lot of links to the same node. Do you really want to create these links? remove_arrow_link = Remove Arrow Link arrow_link_color = Arrow Link Color... # removed: follow_link = Goto: user_defined_zoom = User defined. user_defined_zoom_status_bar = Changing the zoom to the user defined zoom value of {0}%. # new from 14.12.2003, fc FAQ = FAQ # new from 09.12.2006, Dimitri webDocu = Web Documentation # new from 20.12.2003, fc printing_settings = Print Scaling fit_to_page = Fit to One Page user_zoom = Print Zoom Factor (0.0 - 2.0): ok = &OK # changed from 23.1.2004, fc. selection_method_by_click = Single-click to Select selection_method_direct = Point to Select #new from 30.08.2004, Dimitri combined = Combined as_parent = As Parent # added at 2.5.2004, fc: undo = Undo redo = Redo delete_child = Delete Node # added at 22.5.2004, fc: most_recent_files = &Most Recent Files menu_view = &View menu_navigate = &Navigate menu_format = F&ormat menu_extras = &Tools menu_insert = In&sert menu_attributes = &Attributes # Beware: "Edge Width " and "Edge Style " must end with space. edge_style = Edge Style edge_width = Edge Width menu_file_import = I&mport menu_file_export = &Export edit_node = Edit Node # added at 5.6.2004, fc: node_background_color = &Node Background Color... # added at 25.8.2004, fc: choose_edge_color = Choose Edge Color # added at 27.8.2004, fc: underlined = Underlined font_size = font size font_family = font family # add at 16.9.2004, fc: import_linked_branch_no_link = The selected node has no link to import from. # added at 09.10.2004 add_link = Add Graphical Link less_than_two_selected_nodes = You have to select at least two nodes to get links. choose_node_background_color = Choose Node Background Color: choose_node_color = Choose Node Color: choose_background_color = Choose Background Color: choose_cloud_color = Choose Cloud Color: change_arrows_in_arrow_link = Change Arrows of Arrow Link add_local_link = Add Local Hyperlink link_not_available_any_more = The link is not valid anymore. The node was deleted in between. file_already_exists = The file {0} already exists. Do you want to overwrite it? error_creating_directory = Cannot create directory for export. export_svg_text = Scalable Vector Graphic (SVG) export_pdf_text = Portable Document Format (PDF) goto_link_node_action = Goto Link #fc, 14.11.2004: undefined_error = An unexpected error occured. Please try to make a bug report. cannot_add_parent_to_root = The root node can't be added to a new parent. cannot_delete_root = The root node can't be deleted or cut. cannot_add_parent_diff_parents = All nodes must have the same parent to use this function. no_format_copy_before_format_paste = You can't paste a format until you've copied one. #fc, 15.11.2004: accessories/plugins/AutomaticLayout.properties_documentation = Fixes the layout of the map.
The first level is black, the second blue, etc. accessories/plugins/AutomaticLayout.properties_name = &Automatic Layout accessories/plugins/BlinkingNodeHook.properties_documentation = This makes the node blinking. But be careful. Do not associate it to many nodes, and not with other automatic formattings to the same node accessories/plugins/BlinkingNodeHook.properties_name = Blinking Node accessories/plugins/CreationModificationPlugin.properties_documentation=This function keeps track of node creation and modification times. accessories/plugins/CreationModificationPlugin.properties_name = Show &Modification Times accessories/plugins/ExportToImage_PNG.properties_documentation = Exports the map in the current folding to a PNG image. accessories/plugins/ExportToImage_PNG.properties_name = As PNG... accessories/plugins/ExportToImage_JPEG.properties_documentation = Exports the map in the current folding to a JPEG image. accessories/plugins/ExportToImage_JPEG.properties_name = As JPEG... accessories/plugins/ExportWithXSLT.properties_documentation = This is an uniform export method using XSLT scripts. accessories/plugins/ExportWithXSLT.properties_name = Using XSLT... accessories/plugins/ExportWithXSLT_HTML.properties_documentation= accessories/plugins/ExportWithXSLT_HTML.properties_name = As XHTML (JavaScript version)... accessories/plugins/ExportWithXSLT_HTML3.properties_documentation= accessories/plugins/ExportWithXSLT_HTML3.properties_name = As XHTML (Clickable map image version)... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_name = As MindManager MindMap... accessories/plugins/ExportWithXSLT_MINDMANAGER.properties_documentation= accessories/plugins/FitToPage.properties_documentation = Adjusts the zoom such that the entire map fits into the current window. accessories/plugins/FitToPage.properties_name = Zoom to &Fit to Page accessories/plugins/FormatCopy.properties_documentation = Copies the format of a node. accessories/plugins/FormatCopy.properties_name = Copy Format accessories/plugins/FormatPaste.properties_documentation = Pastes the format of a node. accessories/plugins/FormatPaste.properties_name = Paste Format accessories/plugins/FormularEditor.properties_documentation = Associates a simple formular editor to the current note. accessories/plugins/FormularEditor.properties_name = Formular Editor accessories/plugins/IconSelectionPlugin.properties_documentation = Here you can select an icon using a subwindow. accessories/plugins/IconSelectionPlugin.properties_name = Select Icon... accessories/plugins/NewParentNode.properties_documentation = All selected are sent to a new parent. accessories/plugins/NewParentNode.properties_name = New Parent Node accessories/plugins/NodeNote.properties_documentation = Associates a simple note editor to the current note. accessories/plugins/NodeNote.properties_name = Note accessories/plugins/PMCalculation.properties_documentation = Calculates the efforts for different tasks. accessories/plugins/PMCalculation.properties_name = PMCalculation accessories/plugins/RemoveNote.properties_documentation = Removes note content of possibly several notes. accessories/plugins/RemoveNote.properties_name = Remove Notes accessories/plugins/RevisionPlugin.properties_documentation = Marks the background of each changed node. accessories/plugins/RevisionPlugin.properties_name = Show &Revisions in Yellow accessories/plugins/SplitNode.properties_documentation = Node is splitted accessories/plugins/SplitNode.properties_name = &Split Node accessories/plugins/UnfoldAll.properties_documentation = Unfolds the selected nodes and all their children. accessories/plugins/UnfoldAll.properties_name = Unfold All accessories/plugins/FoldAll.properties_documentation = Folds the selected nodes and all their children. accessories/plugins/FoldAll.properties_name = Fold All accessories/plugins/UnfoldOneLevel.properties_documentation = Unfolds the selected nodes by one level. accessories/plugins/UnfoldOneLevel.properties_name = Unfold One Level accessories/plugins/FoldOneLevel.properties_documentation = Folds the selected nodes by one level. accessories/plugins/FoldOneLevel.properties_name = Fold One Level plugins/FreemindHelp.xml_documentation = FreeMind Extended Help plugins/FreemindHelp.xml_name = Help... plugins/ExportPdf.xml_documentation = Export to PDF plugins/ExportPdf.xml_name = As PDF... plugins/ExportSvg.xml_documentation = Export to SVG plugins/ExportSvg.xml_name = As SVG... # fc, 28.11.2004: cannot_move_to_child = Can't move a node to one of its children. # fc, 14.12.2004: accessories/plugins/EnterPassword.properties_name = &Toggle Crypted / Encrypted accessories/plugins/EnterPassword.properties_documentation= accessories/plugins/EncryptNode.properties_name = Insert &Encrypted Node... accessories/plugins/EncryptNode.properties_documentation = Inserts a new node whose child nodes are stored encrypted. accessories/plugins/EncryptNode.properties_0 = Choose password for encrypted node accessories/plugins/EncryptNode.properties_1 = Passwords are not equal or too short. accessories/plugins/EncryptNode.properties_2 = Enter Password: accessories/plugins/EncryptNode.properties_3 = Re-enter Password: accessories/plugins/EncryptNode.properties_4 = Enter your password. accessories/plugins/EncryptNode.properties_5 = Remember, that the strength of the encryption
depends almost completely on the quality of your password. accessories/plugins/EncryptNode.properties_6 = OK accessories/plugins/EncryptNode.properties_7 = Cancel accessories/plugins/EncryptNode.properties_wrong_password = The password is not correct. accessories/plugins/NewEncryptedMap.properties_documentation = Create a new encrypted map accessories/plugins/NewEncryptedMap.properties_name = Create Encrypted Map... accessories/plugins/EncryptNode.properties_select_me = Select me to continue! accessories/plugins/EncryptNode.properties_insert_encrypted_node_first = You can only toggle the encryption state of an encrypted node. Please insert such a node using the tools menu. # fc, 2.2.05: selection_method_delayed=Delayed Automatic Selection # fc, 4.2.05: plugins/TimeManagement.xml_documentation= Shows the calendar module by Kai Toedter. plugins/TimeManagement.xml_name= Show Calendar... plugins/TimeManagement.xml_appendButton= Append Date To Selected Nodes plugins/TimeManagement.xml_reminderButton= Remind Me At This Date plugins/TimeManagement.xml_cancelButton=Cancel plugins/TimeManagementReminder.xml_documentation=Internal hook for scheduling resubmission tasks. plugins/TimeManagementReminder.xml_name=Internal hook for scheduling resubmission tasks. plugins/TimeManagement.xml_reminderNode_tooltip=Reminder scheduled at {0,date} {0,time}. plugins/TimeManagement.xml_reminderNode_showNode=Time has elapsed for the node " {0} ". Do you want to snooze for ten minutes? plugins/TimeManagement.xml_reminderNode_onlyOneDate=Currently, there may only be one reminder per node.
The current reminder is scheduled at {0,date} {0,time}, your choice was {1,date} {1,time}.

Do you want to change the node's reminder time (YES)
or do you want to keep the old one (NO)? plugins/TimeManagement.xml_removeReminderButton = Remove Reminder plugins/TimeManagement.xml_removeReminderButton_tooltip = Remove all reminders associated with the selected nodes. plugins/TimeManagement.xml_minute= Minute: plugins/TimeManagement.xml_hour= Hour: plugins/TimeManagement.xml_WindowTitle=Time Management plugins/latex/LatexNodeHook.properties_documentation = Latex formula plugins/latex/LatexNodeHook.properties_name = &Latex plugins/latex/LatexNodeHook.editorTitle = Editor, close to accept # fc, 18.2.2005: accessories/plugins/HierarchicalIcons.properties_documentation=If one of the (grand)children of me has an icon, I will show this icon in little format, too. accessories/plugins/HierarchicalIcons.properties_name=Show Icons &Hierarchically # fc, 1.3.2005: icon_full-1 = Priority 1 icon_full-2 = Priority 2 icon_full-3 = Priority 3 icon_full-4 = Priority 4 icon_full-5 = Priority 5 icon_full-6 = Priority 6 icon_full-7 = Priority 7 # fc, 11.3.2005: RevertAction=&Revert # the prefix for the reconstructed map (revert + undo). freemind_reverted=Freemind_Reverted_ # fc, 5.4.2005 plugins/TimeManagement.xml_todayButton=Today plugins/TimeList.xml_documentation=Shows all scheduled times and the corresponding nodes. plugins/TimeList.xml_name=Show Time Scheduler &List... remove_node_background_color = &Remove Node Background Color #plugins/NodeList.xml_documentation=Shows all nodes with its creation/modification dates. #plugins/NodeList.xml_name=Show Map History... plugins/TimeList.xml_Modified=Modified plugins/TimeList.xml_Created=Created plugins/TimeList.xml_Date=Date plugins/TimeList.xml_Text=Text plugins/TimeList.xml_Icons=Icons #fc, 26.4.2005: select_branch=Select Visible Branch select_all=Select All Visible change_link_arrows=change_link_arrows # fc, 27.4.2005: reset_node_position=Reset &Position # fc, 2.5.2005: plugins/RemoveReminder.xml_documentation=Removes a reminder from a node. plugins/RemoveReminder.xml_name=Remove Reminder # fc, 3.5.2005: plugins/TimeManagement.xml_reminderButton_tooltip=When pressed a timer is scheduled to the date given. Then blinking icons calls your attention.
If you close the map, the timers are reactivated the next time, the map is opened. # dimitri, 8.05.05 filter_toolbar=Filter filter_dialog=Filter Composer filter_no_filtering=No Filtering filter_selected_node_view=Currently Selected Nodes filter_conditions = Filters filter_edit=Edit filter_edit_description=Edit Filter List filter_unfold_ancestors=Unfold Filtered Nodes filter_icon=Icon filter_node=Node Text filter_exist=Exists filter_does_not_exist=Not Exist filter_contains=Contains filter_is_equal_to=Is equal to filter_is_not_equal_to=Is not equal to filter_ignore_case=Ignore Case filter_enter_value=Enter Value filter_add=&Add filter_delete=&Delete filter_select=&Select filter_not=&Not filter_and=A&nd filter_or=O&r filter_show_ancestors=Show Ancestors filter_show_descendants=Show Descendants # dimitri, 10.07.2005 attributes_all=All Attributes attributes_attribute=Attributes attributes_close=Close attribute_delete=Delete all Values attribute_delete_value=Delete this Value attributes_edit=Edit attributes_edit_in_place=Edit Attributes attributes_edit_tooltip=Edit Set attribute_font_size_tooltip=Attribute Font Size attributes_dialog=&Attribute Manager... attributes_dialog_title=Attribute Manager attributes_import=&Import attributes_import_tooltip=Import attributes from the other loaded maps attributes_assign_dialog=Assi&gn Attributes... attributes_visible=Selected Visible attributes_visible_tooltip=Selection for View->Attribute->Show Selected Attributes attributes_refresh=Refresh attribute_replace=Replace with attributes_restriction=Restricted Set attributes_restricted_attributes_tooltip=Restrict Set of Attributes attributes_restricted_values_tooltip=Restrict Set of Values for Current Attribute attributes_select_all=All attributes_select_all_tooltip=Select / Deselect all attributes_for_selected=Selected Nodes attributes_for_visible=All Visible Nodes attributes_deselect_all=Nothing attribute_list_box_label_text=Existing Values attributes_popup_edit=Edit attributes_popup_optimal_width=Optimal Width attributes_popup_hide=Hide attributes_popup_new=New Attribute attributes_popup_delete=Delete attributes_popup_up=Up attributes_popup_down=Down attributes_show=Show attributes_show_all = Show All Attributes attributes_show_selected = Show Selected Attributes attributes_hide_all = Hide All Attributes attribute_top=All known Attributes for the loaded Maps attributes_skip_root=Skip Root Node attributes_no_import_candidates_found=No new attributes found attributes_adding_empty_attribute_error=Can not use an empty string as attribute name # fc, 10.5.2005: property_dialog=Preferences... OptionPanel.automatic=Automatic OptionPanel.de=De OptionPanel.dk=Dk OptionPanel.en=En OptionPanel.es=Es OptionPanel.fr=Fr OptionPanel.gl=Gl OptionPanel.hu=Hu OptionPanel.it=It OptionPanel.ja=Ja OptionPanel.ko=Ko OptionPanel.nl=Nl OptionPanel.pl=Pl OptionPanel.pt_BR=Pt BR OptionPanel.pt_PT=Pt PT OptionPanel.ru=Ru OptionPanel.sl=Sl OptionPanel.zh_TW=Zh OptionPanel.zh_CN=Zh CN OptionPanel.fork=Fork OptionPanel.bubble=Bubble OptionPanel.as_parent=As Parent OptionPanel.combined=Combined OptionPanel.bezier=Bezier OptionPanel.linear=Linear OptionPanel.default=Default OptionPanel.metal=Metal OptionPanel.windows=Windows OptionPanel.motif=Motif OptionPanel.gtk=Gtk OptionPanel.nothing=Nothing OptionPanel.relative=Relative OptionPanel.absolute=Absolute OptionPanel.first=First OptionPanel.last=Last OptionPanel.selection_method_direct=Direct OptionPanel.selection_method_delayed=Delayed OptionPanel.selection_method_by_click=By Click OptionPanel.html_export_no_folding=No Folding OptionPanel.html_export_fold_currently_folded=Fold Currently Folded OptionPanel.html_export_fold_all=Fold All OptionPanel.html_export_based_on_headings=Based On Headings OptionPanel.Environment=Environment OptionPanel.Files=Files OptionPanel.language=Language OptionPanel.language.tooltip=This is the language that should be used in the program. 'automatic' tries to load the current user's language. OptionPanel.experimental_file_locking_on=Experimental File Locking OptionPanel.experimental_file_locking_on.tooltip= Experimental feature OptionPanel.draganddrop=Drag And Drop OptionPanel.draganddrop.tooltip=If dnd is enabled. OptionPanel.userproperties=Userproperties OptionPanel.patternsfile=Patternsfile OptionPanel.docmapurl_since_version_0_7_0=Docmapurl OptionPanel.browsemode_initial_map=Browsemode Initial Map OptionPanel.browsemode_initial_map.tooltip=The URL of the map that is loaded when browsemode starts up OptionPanel.last_opened_list_length=Last Opened List Length OptionPanel.time_for_automatic_save=Time For Automatic Save OptionPanel.time_for_automatic_save.tooltip= time between two consecutive automatic saving actions (in msec): To disable automatic saving set this number to 2000000000. OptionPanel.delete_automatic_saves_at_exit=Delete Automatic Saves At Exit OptionPanel.delete_automatic_saves_at_exit.tooltip= If the files should be deleted automatically on a normal shutdown of Freemind set the following variable to true OptionPanel.number_of_different_files_for_automatic_save=Number Of Different Files For Automatic Save OptionPanel.number_of_different_files_for_automatic_save.tooltip= number n of different files to store the maps into. The first automatic save is done in the first file, and so on up to the n+1-save which is again stored in the first file (cyclic) OptionPanel.path_to_automatic_saves=Path To Automatic Saves OptionPanel.path_to_automatic_saves.tooltip= to change the default path (this is 'java.io.tmpdir' of java), enter a directory path here: other possibilities: * freemind_home stands for the directory, where the auto.properties are. * default points to java.io.tmpdir OptionPanel.Defaults=Defaults OptionPanel.standardnodestyle=Standard Node Style OptionPanel.standardnodestyle.tooltip=The default new node style. 'fork', 'bubble' 'as_parent' and 'combined' are supported OptionPanel.standardrootnodestyle=Standard Root Node Style OptionPanel.standardrootnodestyle.tooltip=The root node style if no other is specified. 'fork' and 'bubble' and 'combined' are supported OptionPanel.standardnodetextcolor=Standard Node Color OptionPanel.standardnodetextcolor.tooltip=The standard node color. In html notation (#RRGGBB in hex values) OptionPanel.standardselectednodecolor=Standard Selected Node Color OptionPanel.standardselectednodecolor.tooltip=The standard node color if selected. In html notation (#RRGGBB in hex values) OptionPanel.standardselectednoderectanglecolor=Selected Node Bubble Color OptionPanel.standardselectednoderectanglecolor.tooltip=The color of buble marking selected nodes. In html notation (#RRGGBB in hex values) OptionPanel.standarddrawrectangleforselection=Display Selected Nodes in Bubbles OptionPanel.standarddrawrectangleforselection.tooltip=Mark selected nodes by bubble around. OptionPanel.standardedgecolor=Standard Edge Color OptionPanel.standardedgecolor.tooltip=The standard edge color in html notation OptionPanel.standardlinkcolor=Standard Link Color OptionPanel.standardlinkcolor.tooltip=The standard link color in html notation OptionPanel.standardbackgroundcolor=Standard Background Color OptionPanel.standardbackgroundcolor.tooltip=The standard background color in html notation OptionPanel.printonwhitebackground=White background for printing OptionPanel.printonwhitebackground.tooltip=Always use white background for printing OptionPanel.standardcloudcolor=Standard Cloud Color OptionPanel.standardcloudcolor.tooltip=The standard cloud color in html notation OptionPanel.defaultfont=Default Font OptionPanel.defaultfont.tooltip=The default node font. This will only work if the font (TrueType Font) is available on the system OptionPanel.defaultfontstyle=Default Font Style OptionPanel.defaultfontsize=Default Font Size OptionPanel.max_node_width=Max Node Width OptionPanel.max_node_width.tooltip=The default maximal node width in pixels OptionPanel.standardedgestyle=Standard Edge Style OptionPanel.standardedgestyle.tooltip=The standard edge style. 'linear' and 'bezier' are supported OptionPanel.standardcloudestyle=Standard Cloud Style OptionPanel.standardcloudestyle.tooltip=The standard cloud style. currently, only 'bezier' is supported OptionPanel.standardlinkestyle=Standard Link Style OptionPanel.standardlinkestyle.tooltip=The standard link style. currently, only 'bezier' is supported OptionPanel.Appearance=Appearance OptionPanel.lookandfeel=Look and Feel OptionPanel.lookandfeel.tooltip=The Look&Feel to use. 'metal','windows','motif', 'gtk' are supported, 'mac' is available only on MacOS. Default means, that the default look and feel is used. If you want to put your own L&F, please, enter the class name here and assure that the corresponding jar file(s) are loaded. If there are problems with the look and feel, then choose 'nothing' here. It works for applets. OptionPanel.mapxsize=Map-X-size OptionPanel.mapxsize.tooltip=The initial size of every map OptionPanel.mapysize=Map-Y-size OptionPanel.links=Links OptionPanel.links.tooltip=Set Links either relative or absolute OptionPanel.el__buttons_position=Buttons Position OptionPanel.el__buttons_position.tooltip= above / below OptionPanel.el__position_window_below_node=Position Window Below Node OptionPanel.el__min_default_window_height=Min Default Window Height OptionPanel.el__max_default_window_height=Max Default Window Height OptionPanel.el__min_default_window_width=Min Default Window Width OptionPanel.el__max_default_window_width=Max Default Window Width OptionPanel.el__enter_confirms_by_default=Enter Confirms By Default OptionPanel.el__show_icon_for_attributes=Show Icon For Attributes OptionPanel.Keystrokes=Keystrokes OptionPanel.keystroke_newMap=NewMap OptionPanel.keystroke_open=Open OptionPanel.keystroke_save=Save OptionPanel.keystroke_saveAs=SaveAs OptionPanel.keystroke_print=Print OptionPanel.keystroke_close=Close OptionPanel.keystroke_quit=Quit OptionPanel.keystroke_export_to_html=Export To Html OptionPanel.keystroke_export_branch_to_html=Export Branch To Html OptionPanel.keystroke_open_first_in_history=Open First In History OptionPanel.keystroke_previousMap=PreviousMap OptionPanel.keystroke_nextMap=NextMap OptionPanel.keystroke_mode_MindMap=Mode MindMap OptionPanel.keystroke_mode_Browse=Mode Browse OptionPanel.keystroke_mode_File=Mode File OptionPanel.keystroke_node_toggle_italic=Node Toggle Italic OptionPanel.keystroke_node_toggle_boldface=Node Toggle Boldface OptionPanel.keystroke_node_toggle_underlined=Node Toggle Underlined OptionPanel.keystroke_node_toggle_cloud=Node Toggle Cloud OptionPanel.keystroke_undo=Undo OptionPanel.keystroke_redo=Redo OptionPanel.keystroke_delete_child=Delete Child OptionPanel.keystroke_select_all=Select All OptionPanel.keystroke_select_branch=Select Branch OptionPanel.keystroke_zoom_out=Zoom Out OptionPanel.keystroke_zoom_in=Zoom In OptionPanel.keystroke_cut=Cut OptionPanel.keystroke_copy=Copy OptionPanel.keystroke_copy_single=Copy Single OptionPanel.keystroke_paste=Paste OptionPanel.keystroke_remove=Remove OptionPanel.keystroke_add_arrow_link_action=Add Arrow Link Action OptionPanel.keystroke_add_local_link_action=Add Local Link Action OptionPanel.keystroke_moveToRoot=MoveToRoot OptionPanel.keystroke_move_up=Move Up OptionPanel.keystroke_move_down=Move Down OptionPanel.keystroke_move_left=Move Left OptionPanel.keystroke_move_right=Move Right OptionPanel.keystroke_follow_link=Open Hyperlink OptionPanel.keystroke_add=Add OptionPanel.keystroke_add_child=Add Child OptionPanel.keystroke_add_child_mac=Add Child Mac OptionPanel.keystroke_add_sibling_before=Add Sibling Before OptionPanel.keystroke_edit=Edit OptionPanel.keystroke_edit_long_node=Edit Long Node OptionPanel.keystroke_join_nodes=Join Nodes OptionPanel.keystroke_toggle_folded=Toggle Folded OptionPanel.keystroke_toggle_children_folded=Toggle Children Folded OptionPanel.keystroke_set_link_by_filechooser=Set Link By Filechooser OptionPanel.keystroke_set_link_by_textfield=Set Link By Textfield OptionPanel.keystroke_set_image_by_filechooser=Set Image By Filechooser OptionPanel.keystroke_node_up=Node Up OptionPanel.keystroke_node_down=Node Down OptionPanel.keystroke_node_increase_font_size=Node Increase Font Size OptionPanel.keystroke_node_decrease_font_size=Node Decrease Font Size OptionPanel.keystroke_export_branch=Export Branch OptionPanel.keystroke_node_color=Node Color OptionPanel.keystroke_node_color_blend=Node Color Blend OptionPanel.keystroke_edge_color=Edge Color OptionPanel.keystroke_find=Find OptionPanel.keystroke_find_next=Find Next OptionPanel.keystroke_apply_pattern_1=Apply Pattern 1 OptionPanel.keystroke_apply_pattern_2=Apply Pattern 2 OptionPanel.keystroke_apply_pattern_3=Apply Pattern 3 OptionPanel.keystroke_apply_pattern_4=Apply Pattern 4 OptionPanel.keystroke_apply_pattern_5=Apply Pattern 5 OptionPanel.keystroke_apply_pattern_6=Apply Pattern 6 OptionPanel.keystroke_apply_pattern_7=Apply Pattern 7 OptionPanel.keystroke_apply_pattern_8=Apply Pattern 8 OptionPanel.keystroke_apply_pattern_9=Apply Pattern 9 OptionPanel.keystroke_apply_pattern_10=Apply Pattern 10 OptionPanel.keystroke_apply_pattern_11=Apply Pattern 11 OptionPanel.keystroke_apply_pattern_12=Apply Pattern 12 OptionPanel.keystroke_apply_pattern_13=Apply Pattern 13 OptionPanel.keystroke_apply_pattern_14=Apply Pattern 14 OptionPanel.keystroke_apply_pattern_15=Apply Pattern 15 OptionPanel.keystroke_apply_pattern_16=Apply Pattern 16 OptionPanel.keystroke_apply_pattern_17=Apply Pattern 17 OptionPanel.keystroke_apply_pattern_18=Apply Pattern 18 OptionPanel.Behaviour=Behaviour OptionPanel.placenewbranches=Place New Branches OptionPanel.placenewbranches.tooltip=Where to place new branches. Valid values are 'first' and 'last' OptionPanel.disable_cursor_move_paper=Disable Cursor Move Paper OptionPanel.disable_cursor_move_paper.tooltip=Don't display 'move' cursor during paper dragging OptionPanel.enable_leaves_folding=Enable Leaves Folding OptionPanel.enable_leaves_folding.tooltip=Enable leaves folding == changing bubble/fork for fold action (although if false, you can always use node style to change it) OptionPanel.foldingsymbolwidth=Folding Symbol Width OptionPanel.foldingsymbolwidth.tooltip=Width of the folding marking circle OptionPanel.disable_key_type=Disable Key Type OptionPanel.disable_key_type.tooltip=Key typing: if enabled enters node editing OptionPanel.key_type_adds_new=Key Type Adds New OptionPanel.key_type_adds_new.tooltip=Key typing: overwrites content (false) / creates new sibling (true) (requires: disable_key_type = false) OptionPanel.selection_method=Selection Method OptionPanel.selection_method.tooltip= with the following switch you can enable/disable the delayed selection scheme. Auto options. Do not modify these as they will be saved to auto.properties anyway. OptionPanel.time_for_delayed_selection=Time For Delayed Selection OptionPanel.time_for_delayed_selection.tooltip= Selection time delay of nodes when mouse is over (in msec). Change this value to 1 if you want direct selection on mouse over. OptionPanel.HTML=HTML OptionPanel.default_browser_command_windows_nt=Default Browser Command Windows Nt OptionPanel.default_browser_command_windows_nt.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.default_browser_command_windows_9x=Default Browser Command Windows 9x OptionPanel.default_browser_command_windows_9x.tooltip=For Windows (the "" signs are necessary due to links, that have "=" in their URL). OptionPanel.default_browser_command_other_os=Default Browser Command Other Os OptionPanel.default_browser_command_other_os.tooltip= This is typically Linux: OptionPanel.default_browser_command_mac=Default Browser Command Mac OptionPanel.default_browser_command_mac.tooltip= and MAC: (thanks to Nick!) OptionPanel.html_export_folding=Html Export Folding OptionPanel.export_icons_in_html=Export Icons In Html OptionPanel.export_icons_in_html.tooltip= Tell if HTML exported from FreeMind should contain icons. The trouble with icons is that quite often the links to icons will not be found in the exported HTML. OptionPanel.Cancel=Cancel OptionPanel.OK=Save option_changes_may_require_restart=To see the effect of the changed settings, you probably have to restart FreeMind. # fc, 12.5.2005: GrabKeyDialog.grab-key.title=Enter new key GrabKeyDialog.grab-key.caption= GrabKeyDialog.grab-key.clear=Clear GrabKeyDialog.grab-key.assigned-to.none=Currently not assigned GrabKeyDialog.grab-key.assigned-to=Assigned to GrabKeyDialog.common.ok=OK GrabKeyDialog.grab-key.remove=Remove GrabKeyDialog.common.cancel=Cancel GrabKeyDialog.grab-key.remove-ask=Are you sure to remove this keystroke? OptionPanel.separator.language=Language OptionPanel.separator.files=Files OptionPanel.separator.automatic_save=Automatic Save OptionPanel.separator.default_styles=Default Styles OptionPanel.separator.default_colors=Default Colors OptionPanel.separator.selection_colors=Selection Colors OptionPanel.separator.default_fonts=Default Fonts OptionPanel.separator.other_defaults=Other Defaults OptionPanel.separator.look_and_feel=Look and Feel OptionPanel.separator.anti_alias=Antialias OptionPanel.separator.initial_map_size=Initial Map Size OptionPanel.separator.hyperlink_types=Hyperlink Types OptionPanel.separator.edit_long_node_window=Edit Long Node Window OptionPanel.separator.commands_for_the_program=Commands for the program OptionPanel.separator.node_editing_commands=Node editing commands OptionPanel.separator.node_navigation_commands=Node navigation commands OptionPanel.separator.new_node_commands=New node commands OptionPanel.separator.patterns=Patterns OptionPanel.separator.behaviour=Behaviour OptionPanel.separator.key_typing=Key Typing OptionPanel.separator.selection_method=Selection Method OptionPanel.separator.browser=Browser OptionPanel.separator.html_export=Html Export OptionPanel.separator.attributes=Attributes OptionPanel.separator.icons=Icons in "Select Icon..." OptionPanel.keystroke_edit_attributes=Edit attributes OptionPanel.keystroke_show_all_attributes=Show all attributes OptionPanel.keystroke_show_selected_attributes=Show selected attributes OptionPanel.keystroke_hide_all_attributes=Hide all attributes OptionPanel.keystroke_show_attribute_manager=Show attribute manager OptionPanel.keystroke_assign_attributes=Assign attributes... # fc, 2.6.2005: OptionPanel.antialias.tooltip=Determines the quality of the map. More antialias needs more time. OptionPanel.antialias=Antialias OptionPanel.antialias_edges=Antialias Edges OptionPanel.antialias_all=Antialias All OptionPanel.antialias_none=No Antialias OptionPanel.cs=Cs OptionPanel.nb=Nb # fc, 12.6.2005: correction, please remove the other translation of "follow_link" above follow_link = Open Hyperlink OptionPanel.ColorProperty.ResetColor=Reset Color # fc, 16.6.2005: OptionPanel.keystroke_option_dialog=Preferences format_menu_edge_styles=&Edge Styles format_menu_edge_widths=Edge &Widths # fc, 3.7.2005: accessories/plugins/ImportMindmanagerFiles.properties_name=MindManager X5 Map... # fc, 5.7.2005: accessories/plugins/ExportToOoWriter.properties_documentation=The visible structure (ie. all unfolded nodes) build up the chapter structure of the document.
The hidden nodes (ie. the folded nodes) are put inside these chapters as lists or paragraphs. accessories/plugins/ExportToOoWriter.properties_name= As Open Office Writer Document... # fc, 10.7.2005: OptionPanel.separator.undo=Undo OptionPanel.undo_levels=Undo Levels OptionPanel.undo_levels.tooltip=Determines how many steps are stored that can be undone via "Undo". # fc, 13.8.2005 OptionPanel.lt=Lt # fc, 12.1.2006: if you create a translation of the documentation file, change this value (see german translation): browsemode_initial_map = ./doc/freemind.mm # fc, 1.2.06 link_not_found = Link $1 not found. # fc, 15.2.06 icon_smily_bad = I'm not amused OptionPanel.hr=Hr OptionPanel.nn=Nn OptionPanel.se=Se OptionPanel.unfold_on_paste=Unfold node on paste OptionPanel.unfold_on_paste.tooltip=Unfold node on paste or Drag-And-Drop # fc, 16.2.06 accessories/plugins/ExportWithXSLT_Applet.properties_documentation=Exports the map as a java browser applet. accessories/plugins/ExportWithXSLT_Applet.properties_name=As Java Applet... accessories/plugins/ExportWithXSLT_Applet.properties_webpage=Web page accessories/plugins/ExportWithXSLT_Flash.properties_documentation=Exports the map as a flash application. accessories/plugins/ExportWithXSLT_Flash.properties_name=As Flash... # fc, 21.2.06 accessories/plugins/ChangeNodeLevelAction_left.properties_documentation=On the left of root the node(s) is/are shifted downwards. It/they become children of its above sibling. On the right of root the node(s) are shifted upwards. Directly at root, the node(s) change sides. accessories/plugins/ChangeNodeLevelAction_left.properties_name=Node Left accessories/plugins/ChangeNodeLevelAction_right.properties_documentation=On the right of root the node(s) is/are shifted downwards. It/they become children of its above sibling. On the left of root the node(s) are shifted upwards. Directly at root, the node(s) change sides. accessories/plugins/ChangeNodeLevelAction_right.properties_name=Node Right # fc, 27.2.06: PatternDialog.ColorProperty.ResetColor=ResetColor PatternDialog.EdgeWidth_1=1 PatternDialog.EdgeWidth_2=2 PatternDialog.EdgeWidth_4=4 PatternDialog.EdgeWidth_8=8 PatternDialog.EdgeWidth_parent=As parent PatternDialog.EdgeWidth_thin=thin PatternDialog.as_parent=As parent PatternDialog.bezier=bezier PatternDialog.bubble=Bubble PatternDialog.combined=Combined PatternDialog.edgecolor.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgecolor=Edge color PatternDialog.edgestyle.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgestyle=Edge style PatternDialog.edgewidth.tooltip=Property of the edge to the parent node (is also applied to all child nodes) PatternDialog.edgewidth=Edge width PatternDialog.fork=Fork PatternDialog.linear=linear PatternDialog.nodebackgroundcolor=Node background color PatternDialog.nodecolor=Node color PatternDialog.nodestyle=Node style PatternDialog.nodetext=Node text PatternDialog.separator.EdgeControls=Edges PatternDialog.separator.NodeColors=Node colors PatternDialog.separator.NodeStyles=Node styles PatternDialog.sharp_bezier=sharp bezier PatternDialog.sharp_linear=sharp linear PatternDialog.undefined_font=Undefined font accessories/plugins/ApplyFormatPlugin.properties_documentation=Presents a dialog in which node and edge attributes can be changed at once. accessories/plugins/ApplyFormatPlugin.properties_name=&Change Format... accessories/plugins/ApplyFormatPlugin.dialog.title=Change format of nodes OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=Move left OptionPanel.keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=Move right OptionPanel.keystroke_accessories/plugins/FormatCopy.properties.properties_key=Copy format OptionPanel.keystroke_accessories/plugins/FormatPaste.properties.properties_key=Paste format OptionPanel.keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=Insert icon OptionPanel.keystroke_accessories/plugins/NewParentNode.properties_key=Indent nodes OptionPanel.keystroke_accessories/plugins/SplitNode.properties_key=Split node # OptionPanel.keystroke_accessories/plugins/NodeNote.properties_key=Insert a note OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=Fold one level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=Unfold on level OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=Fold all OptionPanel.keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=Unfold all OptionPanel.separator.others=Other key bindings PatternDialog.separator.General=General PatternDialog.clear_all_setters=Switch all PatternDialog.clear_all_setters.tooltip=Enables or disables all change indications. # fc, 1.3.06: accessories/plugins/ManagePatterns.dialog.title=Manage Patterns... accessories/plugins/ManagePatterns.not_found=Pattern file can't be loaded. accessories/plugins/ManagePatterns.properties_documentation=Change the patterns defined in patterns.xml in an editor. The result is automatically saved. accessories/plugins/ManagePatterns.properties_name=Manage Patterns... # fc, 14.3.06: PatternDialog.nodefontbold=Bold font PatternDialog.nodefontitalic=Italic font PatternDialog.separator.NodeFont=Node Font # fc, 19.3.06: ManagePatternsPopupDialog.remove=Remove Pattern ManagePatternsPopupDialog.add=Add new Pattern PatternDialog.patternname=Name PatternDialog.patternname.tooltip=Unique pattern name PatternNewNameProperty=New Pattern ManagePatternsPopupDialog.DuplicateNameMessage=You have chosen a name twice. Please change this before leaving this dialog. PatternDialog.childpattern.tooltip=The selected pattern is applied to all children. PatternDialog.childpattern=Child Pattern ManagePatternsPopupDialog.Save=Save and Return PatternDialog.icon.tooltip=If applied, the node will have exactly this icon. PatternDialog.icon=Icon PatternDialog.set_property_text=Change PatternDialog.set_property_text.tooltip=Empty: Don't touch; Minus=Remove property (set default values); Plus=Change property accessories/plugins/AutomaticLayout.properties_StyleDialogTitle=Change pattern OptionPanel.accessories/plugins/AutomaticLayout.properties_PatternTabName=Automatic layout patterns OptionPanel.separator.accessories/plugins/AutomaticLayout.properties_PatternSeparatorName=Patterns PatternToString.color=Color PatternToString.backgroundColor=Background Color #OptionPanel.automaticFormat_level1=Root Node Format #OptionPanel.automaticFormat_level2=1. Level Node Format PatternToString.NodeFontSize=Font Size OptionPanel.level1=Format of the Root Node OptionPanel.level2=1. Level Node Format OptionPanel.level3=2. Level Node Format OptionPanel.level4=3. Level Node Format OptionPanel.level5=Other's Node Format OptionPanel.automaticFormat_level=Automatic Layout Styles # fc, 13.4.06: ManagePatternsPopupDialog.duplicate=Duplicate Pattern ManagePatternsPopupDialog.from_nodes=Create Pattern From Selected Nodes # fc, 25.5.2006: accessories/plugins/SaveAll.properties_documentation=Saves all open maps. accessories/plugins/SaveAll.properties_name=Save &All accessories/plugins/SaveAll.properties_save_all_cancelled=Operation was not completed successfully. # fc, 23.7.06 OptionPanel.loadLastMap=Automatically open last map OptionPanel.loadLastMap.tooltip=When FreeMind starts, it fetches the last opened map automatically if checked. # dan, whenever use_rich_formatting = Use Rich Formatting use_plain_text = Use Plain Text # fc, 30.7.06: FreeMind.progress.gettingPreferenceDirectories=Getting Preference Directories... FreeMind.progress.gettingPreferences=Getting Preferences... FreeMind.progress.updateLookAndFeel=Update Look And Feel... FreeMind.progress.createController=Create Controller... FreeMind.progress.settingPreferences=Setting Preferences... FreeMind.progress.propageteLookAndFeel=Propagete Look And Feel... FreeMind.progress.createInitialMode=Create Initial Mode... FreeMind.progress.startCreateController=Start Create Controller... FreeMind.progress.loadMaps=Load Maps... FreeMind.progress.buildScreen=Build Screen... FreeMind.progress.endStartup=Finish Startup. OptionPanel.tr=Tr OptionPanel.level=Level # fc, 13.8.06: map_not_saved=The map was not saved before. # fc, 27.8.06: plugins/TimeManagement.xml_Find=Find plugins/TimeManagement.xml_Replace=Replace plugins/TimeManagement.xml_Select=Select plugins/TimeManagement.xml_Export=Export Selected Nodes plugins/TimeManagement.xml_Replace_All=Replace All plugins/TimeManagement.xml_Replace_Selected=Replace Selected plugins/TimeManagement.xml_Goto=Goto plugins/TimeManagement.xml_Cancel=Cancel # fc, 2.9.06: automatically_save_message=Map was automatically saved (using the file name {0}) ... plugins/ScriptingEngine.xml_documentation=Evaluates all contained scripts (recursive order, leaves first). plugins/ScriptingEngine.xml_name=Evaluate # fc, 4.9.06 OptionPanel.keystroke_plugins/ScriptingEngine.keystroke.evaluate=Evaluate # fc, 6.9.06: error_applying_template=Error applying XSL template. # fc, 11.10.06: accessories/plugins/NodeNote_jumpto.properties_documentation=Switch to resp. from note window accessories/plugins/NodeNote_jumpto.properties_name=Note Edit Switch #accessories/plugins/NodeNote_jumpfrom.properties_documentation=Switch back from notes to mindmap #accessories/plugins/NodeNote_jumpfrom.properties_name=Leave note # fc, 12.10.06 OptionPanel.max_tooltip_width=ToolTip Width OptionPanel.max_tooltip_width.tooltip=The default tooltip width in pixels. # fc, 13.10.06: renamed: plugins/NodeList.xml_documentation=Shows all nodes as a searchable list with filter properties. # fc, 10.11.2006: OptionPanel.keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=Note Edit Switch OptionPanel.keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=Show/Hide Note Window # Dimitry 25.10 OptionPanel.keystroke_accessories/plugins/RemoveNote.properties.properties_key=Clear Note # aki 19.10.06: (TJI support) accessories/plugins/ExportWithXSLT_Applet.properties_tji= Task Juggler Include Files accessories/plugins/ExportWithXSLT_TASKSTJI.properties_documentation=Exports tasks from TASKS node to Taskjuggler module. accessories/plugins/ExportWithXSLT_TASKSTJI.properties_name=Tasks from TASKS node to TaskJuggler file... accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_documentation=Exports resources from RESOURCES node to Taskjuggler module. accessories/plugins/ExportWithXSLT_RESOURCESTJI.properties_name=Resources from RESOURCES node to TaskJuggler file... # fc, 14.12.2006: renamed: plugins/NodeList.xml_name=Find and Replace... plugins/TimeManagement.xml_menu_actions=Actions # fc, 23.12.06: plugins/TimeList.xml_Notes=Notes # fc, 30.12.06: accessories/plugins/SortNodes.properties_documentation=Sorts all children of a node alphabetically. accessories/plugins/SortNodes.properties_name=&Sort Children # fc, 3.1.07: OptionPanel.ar=Ar # fc, 10.1.07: plugins/TimeManagement.xml_WindowTitle_All_Nodes=Search & Replace plugins/ScriptEditor.xml_documentation=Enables to write larger scripts within FreeMind. plugins/ScriptEditor.xml_name=S&cript Editor... # fc, 24.1.07: plugins/ScriptEditor/window.title=Script Editor plugins/ScriptEditor.menu_actions=&Actions plugins/ScriptEditor.run=&Run plugins/ScriptEditor/window.Result=Result: # SimplyHTML.properties # # resource bundle with strings for application SimplyHTML # - English Language (default) - # edit menu definition simplyhtml.editLabel=Edit # edit menu items simplyhtml.undoLabel=Undo simplyhtml.undoTip=undo simplyhtml.redoLabel=Redo simplyhtml.redoTip=redo simplyhtml.cutLabel=Cut simplyhtml.cutTip=cut simplyhtml.copyLabel=Copy simplyhtml.copyTip=copy simplyhtml.pasteLabel=Paste simplyhtml.pasteTip=paste simplyhtml.selectAllLabel=Select all simplyhtml.findReplaceLabel=Find & Replace simplyhtml.findReplaceTip=find & replace #insert menu definition simplyhtml.insertTableLabel=Table... # format menu definition simplyhtml.formatLabel=Format # format menu items simplyhtml.fontLabel=Font... simplyhtml.fontTip=Format font... simplyhtml.clearFormatLabel=Remove Formatting simplyhtml.clearFormatTip=Remove Formatting simplyhtml.fontBoldLabel=Bold simplyhtml.fontBoldImage=resources/bold.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontBoldTip=switch bold on/off simplyhtml.fontColorTip=Text Color simplyhtml.fontColorLabel=Text Color simplyhtml.fontColorImage=resources/fontColor.gif simplyhtml.fontItalicLabel=Italic simplyhtml.fontItalicImage=resources/italic.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontItalicTip=switch italic on/off simplyhtml.fontUnderlineLabel=Underline simplyhtml.fontUnderlineImage=resources/uline.gif simplyhtml.fontUnderlineTip=switch underline on/off simplyhtml.formatTableLabel=Table... simplyhtml.formatTableTip=Format table simplyhtml.toggleBulletsLabel=Bulleted list on/off simplyhtml.toggleBulletsTip=bulleted list on/off simplyhtml.toggleNumbersLabel=Numbered list on/off simplyhtml.toggleNumbersTip=numbered list on/off simplyhtml.formatListLabel=List... simplyhtml.formatListTip=change list format simplyhtml.formatParaLabel=Paragraph... simplyhtml.formatParaTip=Change paragraph format simplyhtml.paraAlignLeftLabel=Align left simplyhtml.paraAlignLeftTip=Set paragraph left alignment simplyhtml.paraAlignCenterLabel=Align center simplyhtml.paraAlignCenterTip=Set paragraph center alignment simplyhtml.paraAlignRightLabel=Align right simplyhtml.paraAlignRightTip=Set paragraph right alignment # table menu definition # table menu items simplyhtml.tableLabel=Table simplyhtml.nextTableCellLabel=Next cell simplyhtml.prevTableCellLabel=Previous cell simplyhtml.insertTableRowLabel=Insert row simplyhtml.insertTableColLabel=Insert column simplyhtml.appendTableRowLabel=Append row simplyhtml.appendTableColLabel=Append col simplyhtml.deleteTableRowLabel=Delete row simplyhtml.deleteTableColLabel=Delete column # help menu items simplyhtml.helpLabel=Help simplyhtml.aboutLabel=About SimplyHTML... # About frame simplyhtml.aboutFrameTitle=About this application # Font Dialog simplyhtml.fontDialogTitle=Format Font # Font panel simplyhtml.uLineLabel=Underline simplyhtml.strikeLabel=Strikethrough simplyhtml.previewLabel=Preview simplyhtml.previewText=Preview text simplyhtml.familyLabel=Family simplyhtml.sizeLabel=Size simplyhtml.plainName=plain simplyhtml.boldName=bold simplyhtml.italicName=italic simplyhtml.boldItalicName=bold italic simplyhtml.styleLabel=Style simplyhtml.effectLabel=Effect simplyhtml.colorLabel=Color simplyhtml.foregroundLabel=Foreground: simplyhtml.backgroundLabel=Background: simplyhtml.noLineLabel=none # Paragraph style panel simplyhtml.textIndentLabel=Indent: simplyhtml.alignLabel=Alignment: simplyhtml.alignLeft=left simplyhtml.alignCenter=center simplyhtml.alignRight=right simplyhtml.valignLabel=Vert. Alignment: simplyhtml.valignTop=top simplyhtml.valignMiddle=middle simplyhtml.valignBottom=bottom simplyhtml.valignBaseline=baseline # Margin panel simplyhtml.marginLabel=Outer simplyhtml.paddingLabel=Inner # Table dialog simplyhtml.tableDialogTitle=Format Table simplyhtml.tablePanelTitle=Table format simplyhtml.cellPanelTitle=Cell format simplyhtml.tableWidthLabel=Width: simplyhtml.tableBgColLabel=Background color: simplyhtml.cellMarginTabLabel=Margin simplyhtml.cellBorderTabLabel=Borders simplyhtml.borderWidthLabel=Width simplyhtml.borderColorLabel=Color: simplyhtml.thisCellRangeLabel=this cell simplyhtml.thisColRangeLabel=this column simplyhtml.thisRowRangeLabel=this row simplyhtml.allCellsRangeLabel=all cells simplyhtml.applyCellAttrLabel=Apply to simplyhtml.cellGenTabLabel=General # Paragraph style dialog simplyhtml.paraStyleDialogTitle=Paragraph Style simplyhtml.fontTabLabel=Font simplyhtml.paraTabLabel=Paragraph # Tag names simplyhtml.cTagNamePara=Paragraph simplyhtml.cTagNameHead1=Heading 1 simplyhtml.cTagNameHead2=Heading 2 simplyhtml.cTagNameHead3=Heading 3 simplyhtml.cTagNameHead4=Heading 4 simplyhtml.cTagNameHead5=Heading 5 simplyhtml.cTagNameHead6=Heading 6 simplyhtml.cTagNameLink=Link simplyhtml.cTagNameUL=Unordered List simplyhtml.cTagNameOL=Ordered List # List dialog simplyhtml.listDialogTitle=Format List simplyhtml.listTypeLabel=Type: simplyhtml.listPositionLabel=Position: simplyhtml.listIndentTitle=Indent: simplyhtml.listTypeNone=none simplyhtml.listTypeDecimal=1.,2.,3.,4. simplyhtml.listTypeLowerRoman=i.,ii.,iii.,iv. simplyhtml.listTypeUpperRoman=I.,II.,III.,IV. simplyhtml.listTypeLowerAlpha=a.,b.,c.,d. simplyhtml.listTypeUpperAlpha=A.,B.,C.,D. simplyhtml.listTypeDisc=file symbol as bullet simplyhtml.listTypeCircle=round bulled simplyhtml.listTypeSquare=square bullet simplyhtml.listPosInside=inside simplyhtml.listPosOutside=outside # Find & replace dialog simplyhtml.findReplaceDialogTitle=Find & Replace simplyhtml.findNext=Find next... simplyhtml.searchFromStart=Search from start simplyhtml.searchDown=Search down simplyhtml.wholeWordsOnly=Whole words only simplyhtml.searchUp=Search up simplyhtml.matchCase=Match case simplyhtml.replaceWith=Replace with: simplyhtml.textToFind=Text to find: simplyhtml.replace=Replace... simplyhtml.noMoreOccurrencesFound=no (more) occurrences found simplyhtml.allOccurrencesReplaced=All occurrences replaced simplyhtml.replaceThisQuery=replace this occurrence of simplyhtml.replaceYes=Yes simplyhtml.replaceNo=No simplyhtml.replaceAll=All simplyhtml.replaceDone=Done # Error messages simplyhtml.unableToUndoError=Unable to undo: simplyhtml.unableToRedoError=Unable to redo: simplyhtml.unableToOpenFileError=File can not be opened # Miscellaneous text simplyhtml.imageFileDesc=Image files simplyhtml.defaultDocName=Untitled simplyhtml.cancelBtnName=Cancel simplyhtml.closeBtnName=Close simplyhtml.okBtnName=OK simplyhtml.leftLabel=left: simplyhtml.rightLabel=right: simplyhtml.topLabel=top: simplyhtml.bottomLabel=bottom: simplyhtml.insertTableTitle=insertTable simplyhtml.insertTableMsg=How many columns? simplyhtml.close=Close simplyhtml.standardStyleName=standard simplyhtml.styleNameInputTitle=Save style simplyhtml.styleNameInputText=Name of new style? simplyhtml.newStyleDefaultName=new style simplyhtml.docTitleTitle=Edit Document Title simplyhtml.docTitleQuery=Set title to: simplyhtml.layoutTabTitle=Layout view simplyhtml.htmlTabTitle=HTML Code view #fc, 14.2.07: ScriptEditorPanel.changed_cancel=The scripts were changed. Do you really want to abandon those changes? # fc, 2.3.07: OptionPanel.separator.mouse_wheel=Mouse Wheel OptionPanel.wheel_velocity=Speed OptionPanel.wheel_velocity.tooltip=A higher value results in fast mouse wheel move effects on the map. # fc, 15.5.07: accessories/plugins/NodeHistoryBack.properties_name=Back accessories/plugins/NodeHistoryBack.properties_documentation=Jumps back in the select chain accessories/plugins/NodeHistoryForward.properties_name=Forward accessories/plugins/NodeHistoryForward.properties_documentation=Jumps forward in the select chain # fc, 25.5.07: OptionPanel.use_tabbed_pane.tooltip=If selected the maps are displayed in tabs (like in FireFox :-) ). OptionPanel.use_tabbed_pane=Use Tabs # fc, 11.6.07: accessories/plugins/ExportWithTWiki.properties_name=As TWiki... accessories/plugins/ExportWithTWiki.properties_documentation=Exports the map as a TWiki document. accessories/plugins/ExportWithTWiki.properties=TWiki File (*.twi) # fc, 31.7.07 really_remove_node=Really delete node(s)? confirmation=Confirmation OptionalDontShowMeAgainDialog.dontShowAgain=&Don't ask me again. OptionalDontShowMeAgainDialog.rememberMyDescision=&Remember my decision. OptionalDontShowMeAgainDialog.cancel=&No OptionalDontShowMeAgainDialog.ok=&Yes OptionPanel.separator.resources_notifications=Confirmations OptionPanel.delete_nodes_without_question=Delete nodes without confirmation? OptionPanel.delete_nodes_without_question.tooltip=If this check box is set the nodes are deleted without confirmation. This can cause loss of information if pressed without intention. edit.decision=HTML Editor edit.edit_rich_text=Do you want to use formattings like bold or italics? OptionPanel.remind_type_of_new_nodes.tooltip="Ask" will ask you (use in doubt).
"Yes" displays the rich text editor.
"No" displays the plain text editor. OptionPanel.ask=Ask OptionPanel.standardselectednodetextcolor.tooltip= # fc, 4.9.07: really_execute_script=Do you really want to execute the scripts included in this map? It is possible that they hurt your computer. OptionPanel.resources_execute_scripts_without_asking=Scripts should be carried out without confirmation? OptionPanel.execute_scripts_without_asking.tooltip=FreeMind scripts are principally able to perform any action on your computer.
Thus, you shouldn't execute scripts you don't know to be safe. #fc, 13.9.07: PatternToString.EdgeStyle=Edge Style PatternToString.EdgeColor=Edge Color PatternToString.EdgeWidth=Edge Width PatternToString.FontBold=Bold PatternToString.FontItalic=Italics PatternToString.FontName=Font Name PatternToString.Icon=Icon PatternToString.Child=Child Node Style ManagePatternsPopupDialog.Actions=&Actions #Dimitry 19.10.07: node_location_help=Dragging changes node location, ctrl+dragging changes distances, double click and ctrl+double click reset them. #fc, 19.10.07: really_convert_to_current_version=This map was created with an older version of FreeMind.
Should it be converted (recommended)?
(Otherwise it is taken as it is without guarantee.) OptionPanel.resources_convert_to_current_version=Automatically convert maps of older FreeMind versions
to the current version? OptionPanel.resources_convert_to_current_version.tooltip=Only for very big maps that don't need to be converted
(this is expert knowledge) you can open the maps without conversion. #Dimitry 25.10.07 OptionPanel.separator.root_node_appearance=Root node appearance OptionPanel.use_common_out_point_for_root_node=Edges start from one point at root node OptionPanel.use_common_out_point_for_root_node.tooltip=Edges start from one point at root node======= #fc, 9.11.07: ManagePatternsPopupDialog.apply=Apply PatternDialog.setscript=Change? PatternDialog.setscript.tooltip=A script can be associated to the style. PatternDialog.script=Script PatternDialog.script.tooltip=The script as groovy source code. #fc, 12.11.07: OptionPanel.keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=Manage styles #fc, 4.1.2008 changed: toggle_menubar = Menubar toggle_toolbar = &Toolbar toggle_left_toolbar = &Secondary Toolbar accessories/plugins/NodeNote_hide_show.properties_name=Note Window selection_as_rectangle=Rectangular Selection # fc, 8.1.2008 really_cut_node=Really cut node(s)? OptionPanel.resources_cut_nodes_without_question=Cut nodes without confirmation? OptionPanel.cut_nodes_without_question.tooltip=If this check box is set the nodes are cut without confirmation. This can cause loss of information if pressed without intention. # fc, 9.1.2008: follow_graphical_link=Go to: #fc 10.1.2008: changed: accessories/plugins/NodeNote_hide_show.properties_documentation=Lets the note window appear resp. disappear. #fc, 16.1.2008 plugins/ScriptEditor.new_script=New Script #fc, 20.2.2008: OptionPanel.separator.save=Save OptionPanel.save_only_intrisically_needed_ids=Save used Node IDs only OptionPanel.save_only_intrisically_needed_ids.tooltip=When checked, node IDs are omitted that are not used inside the map. Observe, that you can't link external map to specific nodes inside the map without node ID. # fc, 10.3.2008: OptionPanel.plugins/scripting/tab_name=Scripting OptionPanel.separator.plugins/scripting/separatorPropertyName=Permissions OptionPanel.resources_execute_scripts_without_file_restriction=Permit File Operations (NOT recommended) OptionPanel.resources_execute_scripts_without_file_restriction.tooltip=If your Groovy Scripts need to execute special file actions (open, close, read, write, delete(!)),
you have to enable this option.
But use it with care, as now malicious scripts can hurt your computer! OptionPanel.resources_execute_scripts_without_network_restriction=Permit Network Operations (NOT recommended) OptionPanel.resources_execute_scripts_without_network_restriction.tooltip=If your Groovy Scripts need to execute special network actions,
you have to enable this option.
But use it with care, as now malicious scripts can disclosure your secrets! OptionPanel.resources_execute_scripts_without_exec_restriction=Permit to Execute other Applications (NOT recommended) OptionPanel.resources_execute_scripts_without_exec_restriction.tooltip=If your Groovy Scripts need to execute special other applications (like a browser) without asking(!),
you have to enable this option.
But use it with care, as now malicious scripts can hurt your computer! plugins/ScriptEditor.FORBIDDEN_ACTION=FreeMind groovy scripts are restricted. The following {0,choice,0#File|1#Network|2#Exec} operation is forbidden: {1,choice,0#Accept|1#Connect|2#Listen|3#Multicast|4#SetFactory|5#Exec|6#Link|7#Delete|8#Read|9#Write}. You can change this in the program settings. # changed, fc, 11.3.2008: plugins/ScriptEditor.cancel=&Dismiss Changes and Exit plugins/ScriptEditor.exit=&Save and Exit # changed, fc, 26.3.2008: plugins/TimeManagement.xml_closeButton=Close # changed, fc, 7.4.2008: PatternDialog.nodebackgroundcolor.tooltip=The node's background when not selected. PatternDialog.nodecolor.tooltip=The node's foreground color when not selected. PatternDialog.nodestyle.tooltip=The style describes the outer form of a node.
Possible values:
fork: without surrounding box,
bubble: node with a surrounding rectangle,
As parent: take the style from the parent node
or the default root node style for the root node,
Combined: Bubble when node is folded, fork otherwise.
PatternDialog.nodetext.tooltip=Here, you can define the node's text. The former text is discarded when such a pattern is applied. PatternDialog.nodefontname=Node's font name PatternDialog.nodefontsize=Node's font size PatternDialog.nodefontname.tooltip= PatternDialog.nodefontsize.tooltip= PatternDialog.nodefontbold.tooltip= PatternDialog.nodefontitalic.tooltip= # new, fc, 8.4.2008: PatternDialog.separator.ScriptingControl=Scripting # new, fc, 10.4.2008: OptionPanel.resources_don_t_show_note_icons=Don't show the note icons #new, fc, 11.4.2008: FreeMind=FreeMind's Homepage # new, fc, 12.4.2008: really_remove_notes=Really remove the note(s)? OptionPanel.resources_remove_notes_without_question=Remove Notes without Question? OptionPanel.remove_notes_without_question.tooltip=If this check box is set the notes belonging to the selected nodes are removed without confirmation. This can cause loss of information if pressed without intention. OptionPanel.resources_save_folding_state=Always save folding state changes OptionPanel.resources_save_folding_state.tooltip=If checked, each folding action makes the map dirty and reminds you to save it. # new, fc, 17.4.2008: plugins/ScriptEditor.sign=Sign Script... # new, fc, 18.4.2008: OptionPanel.resources_script_user_key_name_for_signing=Optional User Key Alias for Signing OptionPanel.resources_script_user_key_name_for_signing.tooltip=If you want to sign your scripts, enter the alias of the key here.
The key is expected to reside in the default keystore.
The password of the key's secret key must coincide with the keystore password (this is the default). OptionPanel.resources_signed_script_are_trusted=Trust signed scripts (recommended). OptionPanel.resources_signed_script_are_trusted.tooltip=If scripts are signed by a trusted party (ie. from the FreeMind's authors or by yourself), it is executed without restrictions. # changed, fc, 24.4.2008: # this is still the old "export_branch", but as many users didn't find this feature, we # have to describe it better. Moreover, it is put into the node context menu. export_branch_new = Branch As New Mind Map... # new, fc, 28.4.2008: icon_yes = Important icon_folder = Folder icon_up = Up icon_down = Down icon_smiley-neutral = No Mind icon_smiley-oh = Surprising icon_smiley-angry = Angry icon_encrypted = Locked icon_decrypted = Unlocked icon_broken-line = Broken icon_flag-black = Black Flag icon_flag-blue = Blue Flag icon_flag-green = Green Flag icon_flag-orange = Orange Flag icon_flag-pink = Pink Flag icon_flag-yellow = Yellow Flag icon_clock = Time icon_hourglass = Waiting icon_calendar = Date icon_kmail = E-Mail icon_edit = Refine icon_stop-sign = Stop icon_closed = No Entry # changed: icon_flag = Red Flag #changed: OptionPanel.remind_use_rich_text_in_new_long_nodes=Use formatting for all nodes # new, fc, 21.5.2008: icon_freemind_butterfly = FreeMind icon_full-8 = Priority 8 icon_full-9 = Priority 9 # new, fc, 25.5.2008: node_is_write_protected=Target node is write protected. # new, fc, 6.7.2008: KeyDoc=Key Documentation PDF # translate only, when you have an own translation of this doc. pdfKeyDocLocation=./doc/FM_Key_Mappings_Quick_Guide.pdf icon_info=Info icon_full-0=Priority 0 icon_prepare=Yellow Traffic Light icon_go=Green Traffic Light icon_list=List icon_launch=Launch icon_family=Family icon_female1=Female1 icon_female2=Female2 icon_male1=Male1 icon_male2=Male2 icon_fema=Females icon_group=Group OptionPanel.separator.icon_properties=Icons OptionPanel.icons.list=List of Displayed Standard Icons OptionPanel.icon_order_description=Here, you can order or disable the standard icons. The icons have to be separated by ';'. # new, fc, 16.7.2008: OptionPanel.sk=Sk OptionPanel.el=El OptionPanel.et=Et OptionPanel.id=Id OptionPanel.uk_UA=Uk UA OptionPanel.vi=Vi # new, fc, 22.7.2008 select_icon=Select an Icon mode_MindMap=MindMap Mode mode_Browse=Browse Mode mode_File=File Mode # changed mode_status = Mode changed to {0} mode_title =FreeMind - {0} # new, fc, 25.8.2008 OptionPanel.defaultfontsize.tooltip=Default Font Size for new nodes. # new, fc, 20.12.2008 OptionPanel.ro=Ro #new, fc, 6.12.2009: really_convert_to_current_version2=The mind map you are trying to open was created with an older version of FreeMind, stored in an old format.
FreeMind is about to convert this mind map into its current format.
After the mind map is converted and saved by this version of FreeMind, it can no longer be opened in older versions of FreeMind.
Should FreeMind convert and open the mind map? OptionPanel.eu=Eu freemind-0.9.0/freemind/MANIFEST.MF0000644000000000000000000000046011527433212015232 0ustar rootrootManifest-Version: 1.0 Main-Class: freemind.main.FreeMindStarter Class-Path: freemind.jar ../ commons-lang-2.0.jar forms-1.0.5.jar jibx/jibx-run.jar jibx/xpp3.jar bindings.jar SimplyHTML/gnu-regexp-1.1.4.jar SimplyHTML/SimplyHTML.jar Created-By: Joerg Mueller freemind-0.9.0/freemind/freemind.properties0000644000000000000000000005446411527433212017524 0ustar rootroot#/*$Id: freemind.properties,v 1.36.14.16.2.71 2010/09/22 20:13:55 christianfoltin Exp $*/ -*- mode:sh -*- #This is the language that should be used in the program. "automatic" tries to load the current user's language. language = automatic antialias = antialias_edges html_export_folding = html_export_fold_currently_folded #should node be unfolded if child node is pasted ? #fc, 10.4.2008: set to false as default like in version 0.8.1 unfold_on_paste=false # Experimental features, "true" / "false" experimental_file_locking_on = false #If dnd is enabled. "true" or "false" draganddrop = true #The Modes which Freemind will load on startup, full Class names, comma, identifier, separated by a comma. #modes = freemind.modes.browsemode.BrowseMode,Browse,freemind.modes.mindmapmode.MindMapMode,MindMap,freemind.modes.filemode.FileMode,File modes_since_0_8_0 = freemind.modes.browsemode.BrowseMode,Browse,freemind.modes.mindmapmode.MindMapMode,MindMap,freemind.modes.filemode.FileMode,File #The initial mode that is loaded on startup initial_mode = MindMap #This is the place where the users properties file is located. It is ignored by the applet (set Parameters in the html #file instead). You can write "~" to indicate the users home directory. #Of course this works only in the default "freemind.properties", which is included in the jar file, not for the users #freemind.props out of the jar file. properties_folder = .freemind userproperties = user.properties autoproperties = auto.properties patternsfile = patterns.xml #The default new node style. "fork", "bubble" "as_parent" and "combined" are supported # standardnodestyle = fork # standardnodestyle = bubble standardnodestyle = as_parent #The root node style if no other is specified. "fork" and "bubble" and "combined" are supported standardrootnodestyle = fork #The standard background color in html notation standardbackgroundcolor = #ffffff #Use white as background for printing printonwhitebackground = true #The standard node color. In html notation (#RRGGBB in hex values) standardnodetextcolor = #000000 #The standard node color if selected. In html notation (#RRGGBB in hex values) standardselectednodecolor = #d2d2d2 #The selected nodes backgrounds and text colors are changed if true standarddrawrectangleforselection = false #The standard node text color if selected. In html notation (#RRGGBB in hex values) standardselectednoderectanglecolor = #002080 #The default node font. This will only work if the font (TrueTypeFont) is available on the system defaultfont = SansSerif defaultfontstyle = 0 defaultfontsize = 12 #The default maximal node width in pixels max_node_width = 600 #The standard edge color in html notation standardedgecolor = #808080 # old: #2540b4 #The standard edge style. "linear" and "bezier" are supported standardedgestyle = bezier #The standard cloud color in html notation standardcloudcolor = #f0f0f0 #The standard cloud style. currently, only "bezier" is supported standardcloudestyle = bezier #The standard link color in html notation standardlinkcolor = #b0b0b0 #The standard link style. currently, only "bezier" is supported standardlinkestyle = bezier #The Look&Feel to use. "metal","windows","motif", "gtk" are supported, "mac" is available only on MacOS # default means, that the default look and feel is used. # If you want to put your own L&F, please, enter the class name here and # assure that the corresponding jar file(s) are loaded. # If there are problems with the look and feel, then choose "nothing" here. #It work for applets lookandfeel = default #The initial size of every map mapxsize = 1000 mapysize = 3200 #Where to place new branches. Valid values are "first" and "last" placenewbranches = last #Set Links either relative or absolute links = relative #The URL of the documentation mindmap (.mm) docmapurl = ./doc/freemind.mm docmapurl_since_version_0_7_0 = ./doc/freemind.mm #This is a hash that maps endings of files to programs which should be used to open them. #It is only used by the application,not by the applet. #Special keywords: "default" instead of file and "execute" instead of program #Examples: Unix: "default:netscape,sh:bash,txt:emacs,mp3:freeamp,jpg:xv" #Windows: "default:explorer,exe:execute,com:execute,bat:execute,mp3:winamp,doc:word" #filetypes = default:netscape # filetypes is obsolete preferred_browsers = explorer;konqueror;netscape # Not yet implemented !!! last_opened_list_length = 25 loadLastMap=true # {{{ Edit Long node # above / below el__buttons_position = above el__position_window_below_node = true el__min_default_window_height = 150 el__max_default_window_height = 500 el__min_default_window_width = 600 el__max_default_window_width = 600 el__enter_confirms_by_default = true el__show_icon_for_attributes = true # }}} # {{{ Keystrokes # # These are the accelerators for the menu items. Valid modifiers are: # shift | control | alt | meta | button1 | button2 | button3 # Valid keys should be all that are defined in java.awt.event.KeyEvent # (without the "VK_" prefix), but I found this buggy. All normal char's should work. # The ideas employed in choice of keyboard shortcuts are: # If there is a standard for a feature, use it # Use control modifier whereever possible #Commands for the program keystroke_newMap = control N keystroke_open = control O keystroke_save = control S keystroke_saveAs = control shift S keystroke_print = control P keystroke_close = control W keystroke_quit = control Q keystroke_export_to_html = control E keystroke_export_branch_to_html = control H keystroke_open_first_in_history = control shift W keystroke_previousMap = alt shift LEFT keystroke_nextMap = alt shift RIGHT keystroke_option_dialog = control COMMA keystroke_mode_MindMap = alt 1 keystroke_mode_Browse = alt 2 keystroke_mode_File = alt 3 keystroke_node_toggle_italic = control I keystroke_node_toggle_boldface = control B keystroke_node_toggle_underlined = control U keystroke_node_toggle_cloud = control shift B keystroke_undo = control Z keystroke_redo = control Y keystroke_delete_child = DELETE keystroke_select_all = control A keystroke_select_branch = control shift A #Node editing commands keystroke_cut = control X keystroke_copy = control C keystroke_copy_single = control shift C keystroke_paste = control V keystroke_remove = none keystroke_add_arrow_link_action=control L keystroke_add_local_link_action=alt L # Unline with control X, the node you remove with action remove cannot be # pasted again. Therefore, we do not provide any quick shortcut. We suggest # that you use cut instead of remove. #Node navigation commands keystroke_moveToRoot = ESCAPE keystroke_move_up = E keystroke_move_down = D keystroke_move_left = S keystroke_move_right = F keystroke_follow_link = control ENTER #New node commands keystroke_add = ENTER keystroke_add_child = INSERT # on mac, there is no INSERT key, so use TAB instead. keystroke_add_child_mac = TAB keystroke_add_sibling_before = shift ENTER #Node editing commands keystroke_edit = F2 keystroke_edit_long_node = alt ENTER keystroke_edit_attributes = alt F9 keystroke_show_all_attributes= keystroke_show_selected_attributes= keystroke_hide_all_attributes= keystroke_show_attribute_manager= keystroke_assign_attributes= keystroke_join_nodes = control J keystroke_use_rich_formatting = alt R keystroke_use_plain_text = alt P keystroke_toggle_folded = SPACE keystroke_toggle_children_folded = control SPACE keystroke_set_link_by_filechooser = control shift K keystroke_set_link_by_textfield = control K keystroke_set_image_by_filechooser = alt K keystroke_node_up = control UP keystroke_node_down = control DOWN keystroke_node_increase_font_size = ? control EQUALS keystroke_node_decrease_font_size = ? control MINUS keystroke_branch_increase_font_size = ? control shift EQUALS keystroke_branch_decrease_font_size = ? control shift MINUS keystroke_export_branch = alt shift A # keystroke_node_color = alt shift F keystroke_node_color_blend = alt shift B keystroke_edge_color = alt shift E keystroke_find = control F keystroke_find_next = control G # Apply patterns # There is no limiting number of the pattern, you can have as many # keystrokes for patterns as you want. # The reason I do not follow to F10 and further in this default is that # F10 has special function on Windows. keystroke_apply_pattern_1 = F1 keystroke_apply_pattern_2 = control shift N keystroke_apply_pattern_3 = F3 keystroke_apply_pattern_4 = F4 keystroke_apply_pattern_5 = F5 keystroke_apply_pattern_6 = F6 keystroke_apply_pattern_7 = F7 keystroke_apply_pattern_8 = F8 keystroke_apply_pattern_9 = F9 keystroke_apply_pattern_10 = control F1 keystroke_apply_pattern_11 = control F2 keystroke_apply_pattern_12 = control F3 keystroke_apply_pattern_13 = control F4 keystroke_apply_pattern_14 = control F5 keystroke_apply_pattern_15 = control F6 keystroke_apply_pattern_16 = control F7 keystroke_apply_pattern_17 = control F8 keystroke_apply_pattern_18 = control F9 keystroke_zoom_out = alt DOWN keystroke_zoom_in = alt UP # # }}} # Icons in Select Icon... keystroke_remove_all_icons=DELETE keystroke_remove_last_icon=BACK_SPACE keystroke_icon_attach=\: keystroke_icon_back=< keystroke_icon_button_cancel=- keystroke_icon_button_ok=+ keystroke_icon_forward=> keystroke_icon_full-1=1 keystroke_icon_full-2=2 keystroke_icon_full-3=3 keystroke_icon_full-4=4 keystroke_icon_full-5=5 keystroke_icon_full-6=6 keystroke_icon_full-7=7 keystroke_icon_full-8=8 keystroke_icon_full-9=9 keystroke_icon_full-0=0 keystroke_icon_help=? keystroke_icon_idea=* keystroke_icon_ksmiletris=) keystroke_icon_messagebox_warning=\! keystroke_icon_smily_bad=( #Don't display "move" cursor during paper dragging disable_cursor_move_paper = false #Key typing: if enabled enters node editing disable_key_type = false #Key typing: overwrites content (false) / creates new sibling (true) # (requires: disable_key_type = false) key_type_adds_new = false #Enable leaves folding # == changing bubble/fork for fold action # (although if false, you can always use node style to change it) enable_leaves_folding = false # Tell if HTML exported from FreeMind should contain icons. # The trouble with icons is that quite often the links to # icons will not be found in the exported HTML. export_icons_in_html = false # # The Browse Mode # #The URL of the map that is loaded when browsemode starts up browsemode_initial_map = ./doc/freemind.mm # # The default browser setting # # For Windows (the \"\" signs are necessary due to links, that have "=" in their URL). # default_browser_command_windows_nt = explorer "{0}" # # # For "Windows NT": # default_browser_command_windows_nt = C:\Program Files\Internet Explorer\iexplore.exe "{0}" # # The next setting works for the default browser, but eventually starts programs without questions, so be careful! # # default_browser_command_windows_nt = rundll32 url.dll,FileProtocolHandler {0} default_browser_command_windows_nt = cmd.exe /c start "" "{0}" default_browser_command_windows_9x = command.com /c start "{0}" # Dimitri proposed: # default_browser_command_windows_9x = explorer "{0}" # # Here the default browser for other operating systems goes: # # other is typically Linux: default_browser_command_other_os = xdg-open {0} # # and MAC: (thanks to Nick!) #default_browser_command_mac = open -a /Applications/Safari.app {0} # due to https://sourceforge.net/tracker/?func=detail&atid=357118&aid=1940334&group_id=7118 default_browser_command_mac = open {0} # # Selection time delay of nodes when mouse is over (in msec) # # Change this value to 1 if you want direct selection on mouse over. # time_for_delayed_selection=60 # # with the following switch you can enable/disable the delayed selection scheme # # Auto options. Do not modify these as they will be saved to auto.properties anyway. selection_method = selection_method_delayed # time between two consecutive automatic saving actions (in msec): # ============================================================== # To disable automatic saving set this number to 2000000000. time_for_automatic_save=60000 # # If the files should be deleted automatically on a normal shutdown of Freemind set the following variable to true delete_automatic_saves_at_exit=true # # number n of different files to store the maps into. # The first automatic save is done in the first file, and so on # up to the n+1-save which is again stored in the first file (cyclic) number_of_different_files_for_automatic_save=10 # # to change the default path (this is "java.io.tmpdir" of java), enter a directory path here: # other possibilities: # * freemind_home stands for the directory, where the auto.properties are. # * default points to java.io.tmpdir path_to_automatic_saves=freemind_home # Dimitri, 01.09.04 # width of the folding marking circle foldingsymbolwidth = 6 # Fc, 10.7.2005. # Levels of undo undo_levels=100 # fc, 21.2.06: key board shortcuts for move up/down keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key=control LEFT keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key=control RIGHT keystroke_accessories/plugins/FormatCopy.properties.properties_key=alt C keystroke_accessories/plugins/FormatPaste.properties.properties_key=alt V keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key=alt I keystroke_accessories/plugins/NewParentNode.properties_key=shift INSERT # keystroke_accessories/plugins/NodeNote.properties_key=alt N keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP=alt PAGE_UP keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN=alt PAGE_DOWN keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME=alt HOME keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END=alt END keystroke_accessories/plugins/SplitNode.properties_key= #dimitry 25.10 keystroke_accessories/plugins/RemoveNote.properties.properties_key= # wysiwyg # html_editing_options are external, internal-plain, and internal-wysiwyg. # If external option is chosen, the path for the external editor is taken from html_editing_command. html_editing_option=internal-wysiwyg html_editing_command=C:\\Program Files\\Microsoft Office\\Office\\FRONTPG.EXE "{0}" html_long_node_head= cut_out_pictures_when_pasting_html=true # fc, 26.3.06: #old automaticFormat_level= #new with sharp bezier curves: automaticFormat_level= # fc, 4.9.06: keystroke_plugins/ScriptingEngine.keystroke.evaluate=alt F8 #fc, 11.10.06 # toggle key. keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N=control LESS # fc, 12.10.06: all tooltips have the following width in pixels: max_tooltip_width=600 #fc, 10.11.2006: keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less=control shift LESS # fc, 11.11.2006: don't remove this comment as it is needed for mac osx: #freemind.base.dir=. webFreeMindLocation=http://freemind.sourceforge.net/ webFAQLocation=http://freemind.sourceforge.net/faq.html webDocuLocation=http://freemind.sourceforge.net/docu.html # time management plugin: keystroke_plugins/TimeManagement.xml_key=control T keystroke_plugins/TimeList.xml_key=control shift F # simplyhtml simplyhtml.menubar=edit format table help # toolbar definition # # each word (delimited by blanks) is a key for # an action in the tool bar (- = separator) simplyhtml.toolBar=undo redo - cut copy paste - findReplace # format toolbar definition # # each word (delimited by blanks) is a key for # an action in the tool bar (- = separator) simplyhtml.formatToolBar=fontFamily fontSize - fontBold fontItalic fontUnderline fontColor clearFormat # para toolbar definition # # each word (delimited by blanks) is a key for # an action in the tool bar (- = separator) simplyhtml.paraToolBar=paraAlignLeft paraAlignCenter paraAlignRight - toggleBullets toggleNumbers # edit menu definition simplyhtml.edit=undo redo - cut copy paste - findReplace - selectAll simplyhtml.popup=undo redo - cut copy paste # edit menu items simplyhtml.undoImage=resources/undo.gif simplyhtml.redoImage=resources/redo.gif simplyhtml.cutImage=resources/cut.gif simplyhtml.copyImage=resources/copy.gif simplyhtml.pasteImage=resources/paste.gif simplyhtml.findReplaceImage=resources/fr.gif #insert menu items simplyhtml.insertTableImage=resources/table.gif simplyhtml.insertImageImage=resources/image.gif # format menu definition simplyhtml.format=font - formatPara fontBold fontItalic fontUnderline fontColor clearFormat - paraAlignLeft paraAlignCenter paraAlignRight - formatList toggleBullets toggleNumbers # format menu items simplyhtml.fontImage=resources/font.gif simplyhtml.clearFormatImage=resources/clearFormat.gif simplyhtml.fontBoldSelectedIcon=resources/bold_on.gif simplyhtml.fontColorSelectedIcon=resources/fontColor.gif simplyhtml.fontItalicSelectedIcon=resources/italic_on.gif simplyhtml.fontUnderlineSelectedIcon=resources/uline_on.gif simplyhtml.formatTableImage=resources/fmtTab.gif simplyhtml.toggleBulletsImage=resources/ul.gif simplyhtml.toggleNumbersImage=resources/ol.gif simplyhtml.formatParaImage=resources/fmtPara.gif simplyhtml.paraAlignLeftImage=resources/algnLft.gif simplyhtml.paraAlignLeftSelectedIcon=resources/algnLft_on.gif simplyhtml.paraAlignCenterImage=resources/algnCtr.gif simplyhtml.paraAlignCenterSelectedIcon=resources/algnCtr_on.gif simplyhtml.paraAlignRightImage=resources/algnRt.gif simplyhtml.paraAlignRightSelectedIcon=resources/algnRt_on.gif # table menu definition simplyhtml.table=insertTable - nextTableCell prevTableCell - appendTableRow appendTableCol - insertTableRow insertTableCol - deleteTableRow deleteTableCol # table menu items simplyhtml.deleteTableColImage=resources/delCol.gif simplyhtml.insertTableRowImage=resources/insRow.gif simplyhtml.insertTableColImage=resources/insCol.gif simplyhtml.deleteTableRowImage=resources/delRow.gif # help menu definition simplyhtml.help = about # About frame simplyhtml.appImage=resources/appImage.jpg simplyhtml.appIcon=resources/icon_trans.gif # Splah screen simplyhtml.splashImage=resources/splashImage.jpg # Miscellaneous text simplyhtml.okBtnName=OK simplyhtml.standardStyleName=standard # not use shtml standard style for new documents simplyhtml.use_std_styles=false # fc, 2.3.07, mouse wheel speed wheel_velocity=80 # fc, 12.5.07: keystrokes for history: keystroke_accessories/plugins/NodeHistoryForward.keystroke.alt_FORWARD=alt RIGHT keystroke_accessories/plugins/NodeHistoryBack.keystroke.alt_BACK=alt LEFT #fc, 25.5.07: tabbed pane or not: use_tabbed_pane=true # fc, 31.7.07 delete_nodes_without_question= # Dimitry, 30.08.07 remind_use_rich_text_in_new_long_nodes= # fc, 3.9.07: resources_execute_scripts_without_asking= #fc, 11.9.07: use_split_pane=true #dimitry, 25.10.07 use_common_out_point_for_root_node=false #fc, 25.5.07: tabbed pane or not: use_tabbed_pane=true #fc, 19.10.2007: standard is asking the user (changed, 6.12.2009) resources_convert_to_current_version= #fc, 12.11.07: keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog=F11 #fc, 8.1.2008: resources_cut_nodes_without_question= #fc, 18.2.2008: save_only_intrisically_needed_ids=false #fc, 7.3.2008: resources_execute_scripts_without_file_restriction=false resources_execute_scripts_without_network_restriction=false resources_execute_scripts_without_exec_restriction=false #fc, 10.4.2008: resources_don_t_show_note_icons=false resources_remove_notes_without_question= resources_save_folding_state=true # fc, 18.4.2008: Empty means, that the freemind default key is used. resources_script_user_key_name_for_signing= resources_signed_script_are_trusted=true # fc, 28.4.2008: used and displayed icons as a list with divider ';': icons.list=idea;help;yes;messagebox_warning;stop-sign;closed;info;button_ok;button_cancel;full-1;full-2;full-3;full-4;full-5;full-6;full-7;full-8;full-9;full-0;stop;prepare;go;back;forward;up;down;attach;ksmiletris;smiley-neutral;smiley-oh;smiley-angry;smily_bad;clanbomber;desktop_new;gohome;folder;korn;Mail;kmail;list;edit;kaddressbook;knotify;password;pencil;wizard;xmag;bell;bookmark;penguin;licq;freemind_butterfly;broken-line;calendar;clock;hourglass;launch;flag-black;flag-blue;flag-green;flag-orange;flag-pink;flag;flag-yellow;family;female1;female2;male1;male2;fema;group # not added: encrypted;decrypted;redo; # fc, 23.3.2009: Here, the default node font is taken as the default note's font, too. # possible values: true or false (or anything else, that is interpreted as "false", too). # This property waits for being integrated into the OptionPanel after the 0.9.0 release. resources_use_default_font_for_notes_too=true # fc, 23.3.2009: Here, a margin-top:0; is added to the style of each note causing # a line spacing of zero above each paragraph. # possible values: true or false (or anything else, that is interpreted as "false", too). # This property waits for being integrated into the OptionPanel after the 0.9.0 release. resources_use_margin_top_zero_for_notes=true # when no other source is present, FreeMind opens with a blank map. This can be switched off # here, and is in fact switched off for mac in MacChanges. load_new_map_when_no_other_is_specified=true # freemind tries to place dialogs on the screen. if you have multiple screens, you probalby want to switch off this feature: place_dialogs_on_first_screen=true # freemind tries to use a correct scaled font for the long node editors. experimental_font_sizing_for_long_node_editors=true freemind-0.9.0/freemind/freemind/0000755000000000000000000000000011527433212015371 5ustar rootrootfreemind-0.9.0/freemind/freemind/preferences/0000755000000000000000000000000011532143331017666 5ustar rootrootfreemind-0.9.0/freemind/freemind/preferences/layout/0000755000000000000000000000000011532143331021203 5ustar rootrootfreemind-0.9.0/freemind/freemind/preferences/layout/OptionPanel.java0000644000000000000000000012717411527433212024316 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2005 Christian Foltin. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 06.05.2005 */ /* $Id: OptionPanel.java,v 1.1.2.25.2.57 2010/02/27 21:27:14 christianfoltin Exp $ */ package freemind.preferences.layout; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Properties; import java.util.Set; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.factories.ButtonBarFactory; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; import freemind.common.BooleanProperty; import freemind.common.ColorProperty; import freemind.common.ComboProperty; import freemind.common.DontShowNotificationProperty; import freemind.common.NextLineProperty; import freemind.common.NumberProperty; import freemind.common.PropertyBean; import freemind.common.PropertyControl; import freemind.common.RemindValueProperty; import freemind.common.SeparatorProperty; import freemind.common.StringProperty; import freemind.common.TextTranslator; import freemind.common.XmlBindingTools; import freemind.controller.actions.generated.instance.OptionPanelWindowConfigurationStorage; import freemind.controller.actions.generated.instance.WindowConfigurationStorage; import freemind.main.FreeMind; import freemind.main.FreeMindCommon; import freemind.main.Tools; import freemind.modes.IconInformation; import freemind.modes.MindIcon; import freemind.modes.MindMapNode; import freemind.modes.ModeController; import freemind.modes.mindmapmode.MindMapController; import freemind.preferences.FreemindPropertyContributor; /** * @author foltin * */ public class OptionPanel implements TextTranslator { //TODO: Cancel and windowClose => Are you sure, or save. //FIXME: key dialog //FIXME: Translate me and html private static final Color MARKED_BUTTON_COLOR = Color.BLUE; private Vector controls; private final JDialog frame; private HashMap tabButtonMap = new HashMap(); private HashMap tabActionMap = new HashMap(); private String selectedPanel = null; private static JColorChooser colorChooser; private final OptionPanelFeedback feedback; private static FreeMind fmMain; private static final String PREFERENCE_STORAGE_PROPERTY = "OptionPanel_Window_Properties"; private static final String DEFAULT_LAYOUT_FORMAT = "right:max(40dlu;p), 4dlu, 120dlu, 7dlu"; /** * @throws IOException * */ public OptionPanel(FreeMind fm, JDialog frame, OptionPanelFeedback feedback) { super(); if (fmMain == null) { fmMain = fm; } this.frame = frame; this.feedback = feedback; //Retrieve window size and column positions. WindowConfigurationStorage storage = XmlBindingTools.getInstance().decorateDialog(fm.getController(), frame, PREFERENCE_STORAGE_PROPERTY); if (storage != null && storage instanceof OptionPanelWindowConfigurationStorage) { OptionPanelWindowConfigurationStorage oWindowSettings = (OptionPanelWindowConfigurationStorage) storage; selectedPanel = oWindowSettings.getPanel(); } } public interface OptionPanelFeedback { void writeProperties(Properties props); } public static Vector changeListeners = new Vector(); /** */ public void setProperties() { for (Iterator i = controls.iterator(); i.hasNext();) { PropertyControl control = (PropertyControl) i.next(); if (control instanceof PropertyBean) { PropertyBean bean = (PropertyBean) control; // System.out.println("grep -n -e \""+bean.getLabel()+"\" -r * | // grep -e \"\\.(java|xml):\""); final String label = bean.getLabel(); String value = fmMain.getAdjustableProperty(label); // System.out.println("Setting property " + bean.getLabel() // + " to " + value); bean.setValue(value); } } } private Properties getOptionProperties() { Properties p = new Properties(); for (Iterator i = controls.iterator(); i.hasNext();) { PropertyControl control = (PropertyControl) i.next(); if (control instanceof PropertyBean) { PropertyBean bean = (PropertyBean) control; final String value = bean.getValue(); if(value != null) p.setProperty(bean.getLabel(), value); } } return p; } public void buildPanel() { FormLayout leftLayout = new FormLayout("80dlu", ""); DefaultFormBuilder leftBuilder = new DefaultFormBuilder(leftLayout); CardLayout cardLayout = new VariableSizeCardLayout(); JPanel rightStack = new JPanel(cardLayout); FormLayout rightLayout = null; // add rows dynamically DefaultFormBuilder rightBuilder = null; String lastTabName = null; controls = getControls(); for (Iterator i = controls.iterator(); i.hasNext();) { PropertyControl control = (PropertyControl) i.next(); // System.out.println("layouting : " + control.getLabel()); if (control instanceof NewTabProperty) { NewTabProperty newTab = (NewTabProperty) control; if (rightBuilder != null) { // terminate old panel: rightStack.add(rightBuilder.getPanel(), lastTabName); } rightLayout = new FormLayout(newTab.getDescription(), ""); rightBuilder = new DefaultFormBuilder(rightLayout); rightBuilder.setDefaultDialogBorder(); lastTabName = newTab.getLabel(); // add a button to the left side: JButton tabButton = new JButton(getText(lastTabName)); ChangeTabAction changeTabAction = new ChangeTabAction( cardLayout, rightStack, lastTabName); tabButton.addActionListener(changeTabAction); registerTabButton(tabButton, lastTabName, changeTabAction); leftBuilder.append(tabButton); } else { control.layout(rightBuilder, this); } } // add the last one, too rightStack.add(rightBuilder.getPanel(), lastTabName); // select one panel: if(selectedPanel != null && tabActionMap.containsKey(selectedPanel)){ ((ChangeTabAction) tabActionMap.get(selectedPanel)).actionPerformed(null); } JScrollPane rightScrollPane = new JScrollPane(rightStack); rightScrollPane.getVerticalScrollBar().setUnitIncrement(100); JSplitPane centralPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftBuilder.getPanel(), rightScrollPane); frame.getContentPane().add(centralPanel, BorderLayout.CENTER); JButton cancelButton = new JButton(getText("Cancel")); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { closeWindow(); } }); JButton okButton = new JButton(getText("OK")); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { feedback.writeProperties(getOptionProperties()); closeWindow(); } }); frame.getRootPane().setDefaultButton(okButton); frame.getContentPane().add( ButtonBarFactory.buildOKCancelBar(cancelButton, okButton), BorderLayout.SOUTH); } private static String lastKey = ""; /** */ public String getText(String string) { if (string == null) return null; checkConnectionToFreeMindMain(); return fmMain.getResourceString("OptionPanel." + string); } private static void checkConnectionToFreeMindMain() { if (fmMain == null) { throw new IllegalArgumentException("FreeMindMain not set yet."); } } /** */ private void registerTabButton(JButton tabButton, String name, ChangeTabAction changeTabAction) { tabButtonMap.put(name, tabButton); tabActionMap.put(name, changeTabAction); // if no default panel was given, we use the first. if(selectedPanel == null){ selectedPanel = name; } } private JButton getTabButton(String name) { return (JButton) tabButtonMap.get(name); } private Collection getAllButtons() { return tabButtonMap.values(); } private final class ChangeTabAction implements ActionListener { private CardLayout cardLayout; private JPanel centralPanel; private String tabName; private ChangeTabAction(CardLayout cardLayout, JPanel centralPanel, String tabName) { super(); this.cardLayout = cardLayout; this.centralPanel = centralPanel; this.tabName = tabName; } public void actionPerformed(ActionEvent arg0) { cardLayout.show(centralPanel, tabName); // design: mark selected button with a color Collection c = getAllButtons(); for (Iterator i = c.iterator(); i.hasNext();) { JButton button = (JButton) i.next(); button.setForeground(null); } getTabButton(tabName).setForeground(MARKED_BUTTON_COLOR); selectedPanel = tabName; } } public static class NewTabProperty implements PropertyControl { private String label; private String layoutFormat; public NewTabProperty(String label) { this(label, DEFAULT_LAYOUT_FORMAT); } public NewTabProperty(String label, String layoutFormat) { super(); this.label = label; this.layoutFormat = layoutFormat; } public String getDescription() { return layoutFormat; } public String getLabel() { return label; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { } public void setEnabled(boolean pEnabled) { } } private static class KeyProperty extends PropertyBean implements PropertyControl { private int modifierMask = 0; String description; String label; JButton mButton = new JButton(); private String labelText; private ImageIcon icon; private static RowSpec rowSpec; /** */ public KeyProperty(final JDialog frame, String description, String label) { super(); this.description = description; this.label = label; mButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //FIXME: Determine bindings. Vector allKeybindings = new Vector(); GrabKeyDialog dialog = new GrabKeyDialog(fmMain, frame, new GrabKeyDialog.KeyBinding(getLabel(), getLabel(), getValue(), false), allKeybindings, null, modifierMask); if (dialog.isOK()) { setValue(dialog.getShortcut()); firePropertyChangeEvent(); } } }); } public void disableModifiers(){ modifierMask = KeyEvent.ALT_MASK | KeyEvent.CTRL_MASK; } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { mButton.setText(value); mButton.setToolTipText(mButton.getText()); } public String getValue() { return mButton.getText(); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { if (labelText == null) labelText = pTranslator.getText(getLabel()); JLabel label = new JLabel(labelText, icon, JLabel.RIGHT); label.setToolTipText(pTranslator.getText(getDescription())); if(rowSpec == null){ rowSpec = new RowSpec("fill:20dlu"); } if( 3 < builder.getColumn()){ builder.appendRelatedComponentsGapRow(); builder.appendRow(rowSpec); builder.nextLine(2); } else{ builder.nextColumn(2); } builder.add(label); builder.nextColumn(2); builder.add(mButton); } public void setEnabled(boolean pEnabled) { mButton.setEnabled(pEnabled); } public void setLabelText(String labelText) { this.labelText = labelText; } public void setImageIcon(ImageIcon icon) { this.icon = icon; } } // private Vector getControls() { Vector controls = new Vector(); /*********************************************************************** * Language * **************************************************************** */ controls.add(new NewTabProperty("Environment")); controls.add(new SeparatorProperty("language")); //TODO: Search class path for translations. controls.add(new ComboProperty( /** * For the codes see * http://www.loc.gov/standards/iso639-2/php/English_list.php */ "language.tooltip", FreeMindCommon.RESOURCE_LANGUAGE, new String[] { "automatic", "ar", "cs", "de", "dk", "en", "el", "es", "et", "eu", "fr", "gl", "hr", "hu", "id", "it", "ja", "ko", "lt", "nl", "nn", "nb", "pl", "pt_BR", "pt_PT", "ro", "ru", "sk", "se", "sl", "tr", "uk_UA", "vi", "zh_TW", "zh_CN" }, new TextTranslator() { public String getText(String pKey) { // decorator, that removes "TranslateMe" comments. return Tools.removeTranslateComment(OptionPanel.this .getText(pKey)); } })); // automatic //INTERNAL PROPERTY. // controls // .add(new StringProperty( // "The Modes which Freemind will load on startup, full Class names, // comma, identifier, separated by a comma.", // "modes_since_0_8_0")); // // freemind.modes.browsemode.BrowseMode,Browse,freemind.modes.mindmapmode.MindMapMode,MindMap,freemind.modes.filemode.FileMode,File // // controls.add(new StringProperty( // "The initial mode that is loaded on startup", "initial_mode")); // // MindMap // // controls // .add(new StringProperty( // "This is the place where the users properties file is located. It is // ignored by the applet (set Parameters in the html file instead). You // can write '~' to indicate the users home directory. Of course this // works only in the default 'freemind.properties', which is included in // the jar file, not for the users freemind.props out of the jar file.", // "properties_folder")); // .freemind controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("files")); controls.add(new StringProperty(null, "last_opened_list_length")); // 25 controls.add(new BooleanProperty(FreeMindCommon.LOAD_LAST_MAP+".tooltip", FreeMindCommon.LOAD_LAST_MAP)); // true controls .add(new BooleanProperty( "experimental_file_locking_on.tooltip", "experimental_file_locking_on")); // false controls.add(new NextLineProperty()); controls.add(new StringProperty(null, "userproperties")); // user.properties //FIXME: Remove autoproperties from Freemind. // controls.add(new StringProperty(null, "autoproperties")); // // auto.properties controls.add(new StringProperty(null, "patternsfile")); // patterns.xml //FIXME: Which one? controls.add(new StringProperty( // "The URL of the documentation mindmap (.mm)", "docmapurl")); // // ./doc/freemind.mm // replaced by browsemode_initial_map?? (See Controller, DocumentationAction). //controls.add(new StringProperty(null, "docmapurl_since_version_0_7_0")); // ./doc/freemind.mm // // The Browse Mode // controls.add(new StringProperty( "browsemode_initial_map.tooltip", "browsemode_initial_map")); // ./doc/freemind.mm controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("automatic_save")); controls.add(new StringProperty( "time_for_automatic_save.tooltip", "time_for_automatic_save")); // 60000 // controls.add(new BooleanProperty( "delete_automatic_saves_at_exit.tooltip", "delete_automatic_saves_at_exit")); // true controls.add(new StringProperty( "number_of_different_files_for_automatic_save.tooltip", "number_of_different_files_for_automatic_save")); // 10 controls.add(new StringProperty( "path_to_automatic_saves.tooltip", "path_to_automatic_saves")); // freemind_home controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("save")); controls.add(new BooleanProperty( "resources_save_folding_state.tooltip", FreeMind.RESOURCES_SAVE_FOLDING_STATE)); // true controls.add(new BooleanProperty( "save_only_intrisically_needed_ids.tooltip", FreeMindCommon.SAVE_ONLY_INTRISICALLY_NEEDED_IDS)); // false /*********************************************************************** * Defaults * **************************************************************** */ controls.add(new NewTabProperty("Defaults")); controls.add(new SeparatorProperty("default_styles")); controls.add(new ComboProperty("standardnodestyle.tooltip", FreeMind.RESOURCES_NODE_STYLE, MindMapNode.NODE_STYLES, this)); // as_parent controls.add(new ComboProperty( "standardrootnodestyle.tooltip", FreeMind.RESOURCES_ROOT_NODE_STYLE, new String[] { MindMapNode.STYLE_FORK, MindMapNode.STYLE_BUBBLE, MindMapNode.STYLE_COMBINED }, this)); // fork controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("default_colors")); controls.add(new ColorProperty("standardnodetextcolor.tooltip", FreeMind.RESOURCES_NODE_TEXT_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_NODE_TEXT_COLOR), this)); // #000000 controls.add(new ColorProperty("standardedgecolor.tooltip", FreeMind.RESOURCES_EDGE_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_EDGE_COLOR), this)); // #808080 controls.add(new ColorProperty("standardlinkcolor.tooltip", FreeMind.RESOURCES_LINK_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_LINK_COLOR), this)); // #b0b0b0 controls.add(new ColorProperty("standardbackgroundcolor.tooltip", FreeMind.RESOURCES_BACKGROUND_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_BACKGROUND_COLOR), this)); // #ffffff controls.add(new BooleanProperty(FreeMind.RESOURCE_PRINT_ON_WHITE_BACKGROUND+".tooltip", FreeMind.RESOURCE_PRINT_ON_WHITE_BACKGROUND)); // true controls.add(new ColorProperty("standardcloudcolor.tooltip", FreeMind.RESOURCES_CLOUD_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_CLOUD_COLOR), this)); // #f0f0f0 controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("default_fonts")); controls.add(new StringProperty( "defaultfont.tooltip", "defaultfont")); // SansSerif controls.add(new StringProperty(null, "defaultfontstyle")); // 0 controls.add(new NumberProperty("defaultfontsize.tooltip", "defaultfontsize",1,96 /* taken from openoffice as maximum.*/,1)); // 12 // controls.add(new StringProperty(null, "defaultfontsize")); // 12 controls.add(new NumberProperty("max_node_width.tooltip", "max_node_width", 1, Integer.MAX_VALUE, 1)); // 600 controls.add(new NumberProperty("max_tooltip_width.tooltip", "max_tooltip_width", 1, Integer.MAX_VALUE, 1)); // 600 controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("other_defaults")); controls.add(new ComboProperty( "standardedgestyle.tooltip", FreeMind.RESOURCES_EDGE_STYLE, new String[] { "bezier", "linear" }, this)); // bezier // controls.add(new ComboProperty( // // "standardcloudestyle.tooltip", "standardcloudestyle", // new String[] { "bezier" })); // bezier // // controls.add(new ComboProperty( // // "standardlinkestyle.tooltip", "standardlinkestyle", // new String[] { "bezier" })); // bezier /*********************************************************************** * Appearance * **************************************************************** */ controls.add(new NewTabProperty("Appearance")); controls.add(new SeparatorProperty("look_and_feel")); LookAndFeelInfo[] lafInfo = UIManager.getInstalledLookAndFeels(); int reservedCount = 6; String[] lafNames = new String[lafInfo.length + reservedCount]; Vector translatedLafNames = new Vector(); lafNames[0] = "default"; translatedLafNames.add(getText("default")); lafNames[1] = "metal"; translatedLafNames.add(getText("metal")); lafNames[2] = "windows"; translatedLafNames.add(getText("windows")); lafNames[3] = "motif"; translatedLafNames.add(getText("motif")); lafNames[4] = "gtk"; translatedLafNames.add(getText("gtk")); lafNames[5] = "nothing"; translatedLafNames.add(getText("nothing")); for (int i = 0; i < lafInfo.length; i++) { LookAndFeelInfo info = lafInfo[i]; String className = info.getClassName(); lafNames[i + reservedCount] = className; translatedLafNames.add(info.getName()); } controls.add(new ComboProperty("lookandfeel.tooltip", FreeMind.RESOURCE_LOOKANDFEEL, lafNames, translatedLafNames)); // default controls.add(new BooleanProperty( "use_tabbed_pane.tooltip", FreeMind.RESOURCES_USE_TABBED_PANE)); // true // controls.add(new BooleanProperty( // // "use_split_pane.tooltip", FreeMind.RESOURCES_USE_SPLIT_PANE)); // true /* ***************************************************************** */ controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("selection_colors")); controls.add(new BooleanProperty(FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION+".tooltip", FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION)); // false controls.add(new ColorProperty("standardselectednoderectanglecolor.tooltip", FreeMind.RESOURCES_SELECTED_NODE_RECTANGLE_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_SELECTED_NODE_RECTANGLE_COLOR), this)); // #000000 controls.add(new ColorProperty("standardselectednodecolor.tooltip", FreeMind.RESOURCES_SELECTED_NODE_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_SELECTED_NODE_COLOR), this)); // #D2D2D2 /* ***************************************************************** */ controls.add(new NextLineProperty()); final String RESOURCE_ROOT_NODE = "root_node_appearance"; final String RESOURCE_USE_COMMON_OUT_POINT_FOR_ROOT_NODE = "use_common_out_point_for_root_node"; controls.add(new SeparatorProperty(RESOURCE_ROOT_NODE)); controls.add(new BooleanProperty(RESOURCE_USE_COMMON_OUT_POINT_FOR_ROOT_NODE+".tooltip", RESOURCE_USE_COMMON_OUT_POINT_FOR_ROOT_NODE)); // false /* ***************************************************************** */ controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("anti_alias")); controls.add(new ComboProperty("antialias.tooltip", FreeMindCommon.RESOURCE_ANTIALIAS, new String[] { "antialias_edges", "antialias_all", "antialias_none" }, this)); // true /* ***************************************************************** */ controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("initial_map_size")); controls.add(new StringProperty("mapxsize.tooltip", "mapxsize")); // 1000 controls.add(new StringProperty(null, "mapysize")); // 3200 /* ***************************************************************** */ controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("hyperlink_types")); controls.add(new ComboProperty("links.tooltip", "links", new String[] { "relative", "absolute" }, this)); // relative /* ***************************************************************** */ controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("edit_long_node_window")); controls.add(new StringProperty("el__buttons_position.tooltip", "el__buttons_position")); // above controls .add(new BooleanProperty(null, "el__position_window_below_node")); // true controls.add(new StringProperty(null, "el__min_default_window_height")); // 150 controls.add(new StringProperty(null, "el__max_default_window_height")); // 500 controls.add(new StringProperty(null, "el__min_default_window_width")); // 600 controls.add(new StringProperty(null, "el__max_default_window_width")); // 600 controls .add(new BooleanProperty(null, "el__enter_confirms_by_default")); // true controls .add(new BooleanProperty(null, "el__show_icon_for_attributes")); // true controls.add(new SeparatorProperty("icon_properties")); controls.add(new BooleanProperty(null, FreeMind.RESOURCES_DON_T_SHOW_NOTE_ICONS)); controls.add(new StringProperty("icon_order_description", MindIcon.PROPERTY_STRING_ICONS_LIST)); /*********************************************************************** * Keystrokes * **************************************************************** */ String form = "right:max(40dlu;p), 4dlu, 80dlu, 7dlu"; controls.add(new NewTabProperty("Keystrokes", form+ ","+form)); //", right:max(40dlu;p), 4dlu, 60dlu")); // // These are the accelerators for the menu items. Valid modifiers are: // shift | control | alt | meta | button1 | button2 | button3 // Valid keys should be all that are defined in java.awt.event.KeyEvent // (without the "VK_" prefix), but I found this buggy. All normal char's // should work. // The ideas employed in choice of keyboard shortcuts are: // If there is a standard for a feature, use it // Use control modifier whereever possible // Commands for the program controls.add(new SeparatorProperty("commands_for_the_program")); controls.add(new KeyProperty(frame, null, "keystroke_newMap")); // control // N controls.add(new KeyProperty(frame, null, "keystroke_open")); // control // O controls.add(new KeyProperty(frame, null, "keystroke_save")); // control // S controls.add(new KeyProperty(frame, null, "keystroke_saveAs")); // control // shift // S controls.add(new KeyProperty(frame, null, "keystroke_print")); // control // P controls.add(new KeyProperty(frame, null, "keystroke_close")); // control // W controls.add(new KeyProperty(frame, null, "keystroke_quit")); // control // Q controls.add(new KeyProperty(frame, null, "keystroke_option_dialog")); // control COMMA controls.add(new KeyProperty(frame, null, "keystroke_export_to_html")); // control // E controls.add(new KeyProperty(frame, null, "keystroke_export_branch_to_html")); // control // H controls.add(new KeyProperty(frame, null, "keystroke_open_first_in_history")); // control // shift // W controls.add(new KeyProperty(frame, null, "keystroke_previousMap")); // control // LEFT controls.add(new KeyProperty(frame, null, "keystroke_nextMap")); // control // RIGHT controls.add(new KeyProperty(frame, null, "keystroke_mode_MindMap")); // alt // 1 controls.add(new KeyProperty(frame, null, "keystroke_mode_Browse")); // alt // 2 controls.add(new KeyProperty(frame, null, "keystroke_mode_File")); // alt // 3 controls.add(new KeyProperty(frame, null, "keystroke_node_toggle_italic")); // control // I controls.add(new KeyProperty(frame, null, "keystroke_node_toggle_boldface")); // control // B controls.add(new KeyProperty(frame, null, "keystroke_node_toggle_underlined")); // control // U controls .add(new KeyProperty(frame, null, "keystroke_node_toggle_cloud")); // control // shift // B controls.add(new KeyProperty(frame, null, "keystroke_undo")); // control // Z controls.add(new KeyProperty(frame, null, "keystroke_redo")); // control // Y controls.add(new KeyProperty(frame, null, "keystroke_delete_child")); // DELETE controls.add(new KeyProperty(frame, null, "keystroke_select_all")); // control // A controls.add(new KeyProperty(frame, null, "keystroke_select_branch")); // control // shift A controls.add(new KeyProperty(frame, null, "keystroke_zoom_out")); // alt // UP controls.add(new KeyProperty(frame, null, "keystroke_zoom_in")); // alt // DOWN // Node editing commands controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("node_editing_commands")); controls.add(new KeyProperty(frame, null, "keystroke_cut")); // control // X controls.add(new KeyProperty(frame, null, "keystroke_copy")); // control // C controls.add(new KeyProperty(frame, null, "keystroke_copy_single")); // control // shift C controls.add(new KeyProperty(frame, null, "keystroke_paste")); // control // V controls.add(new KeyProperty(frame, null, "keystroke_remove")); // none controls.add(new KeyProperty(frame, null, "keystroke_add_arrow_link_action")); // control // L controls.add(new KeyProperty(frame, null, "keystroke_add_local_link_action")); // alt // L // Unline with control X, the node you remove with action remove cannot // be // pasted again. Therefore, we do not provide any quick shortcut. We // suggest // that you use cut instead of remove. // Node navigation commands controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("node_navigation_commands")); controls.add(new KeyProperty(frame, null, "keystroke_moveToRoot")); // ESCAPE controls.add(new KeyProperty(frame, null, "keystroke_move_up")); // E controls.add(new KeyProperty(frame, null, "keystroke_move_down")); // D controls.add(new KeyProperty(frame, null, "keystroke_move_left")); // S controls.add(new KeyProperty(frame, null, "keystroke_move_right")); // F controls.add(new KeyProperty(frame, null, "keystroke_follow_link")); // control // ENTER // New node commands controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("new_node_commands")); controls.add(new KeyProperty(frame, null, "keystroke_add")); // ENTER controls.add(new KeyProperty(frame, null, "keystroke_add_child")); // INSERT controls.add(new KeyProperty(frame, null, "keystroke_add_child_mac")); // TAB controls.add(new KeyProperty(frame, null, "keystroke_add_sibling_before")); // shift // ENTER // Node editing commands controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("node_editing_commands")); controls.add(new KeyProperty(frame, null, "keystroke_edit")); // F2 controls.add(new KeyProperty(frame, null, "keystroke_edit_long_node")); // alt // ENTER controls.add(new KeyProperty(frame, null, "keystroke_join_nodes")); // control // J controls.add(new KeyProperty(frame, null, "keystroke_toggle_folded")); // SPACE controls.add(new KeyProperty(frame, null, "keystroke_toggle_children_folded")); // control // SPACE controls.add(new KeyProperty(frame, null, "keystroke_set_link_by_filechooser")); // control // shift // K controls.add(new KeyProperty(frame, null, "keystroke_set_link_by_textfield")); // control // K controls.add(new KeyProperty(frame, null, "keystroke_set_image_by_filechooser")); // alt // K controls.add(new KeyProperty(frame, null, "keystroke_node_up")); // control // UP controls.add(new KeyProperty(frame, null, "keystroke_node_down")); // control // DOWN controls.add(new KeyProperty(frame, null, "keystroke_node_increase_font_size")); // control // PLUS controls.add(new KeyProperty(frame, null, "keystroke_node_decrease_font_size")); // control // MINUS // controls.add(new KeyProperty(frame, null, // "keystroke_branch_increase_font_size")); // control // // shift // // PLUS // // controls.add(new KeyProperty(frame, null, // "keystroke_branch_decrease_font_size")); // control // // shift // // MINUS // controls.add(new KeyProperty(frame, null, "keystroke_export_branch")); // alt // A // controls.add(new KeyProperty(frame, null, "keystroke_node_color")); // alt // F controls .add(new KeyProperty(frame, null, "keystroke_node_color_blend")); // alt // B controls.add(new KeyProperty(frame, null, "keystroke_edge_color")); // alt // E controls.add(new KeyProperty(frame, null, "keystroke_find")); // ctrl F controls.add(new KeyProperty(frame, null, "keystroke_find_next")); // ctrl // G // Apply patterns // There is no limiting number of the pattern, you can have as many // keystrokes for patterns as you want. The reason I do not follow to // F10 and further in this default is that F10 has special function on // Windows. controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("patterns")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/ManagePatterns_manage_patterns_dialog")); // control shift F1 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_1")); // F1 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_2")); // control // shift // N controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_3")); // F3 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_4")); // F4 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_5")); // F5 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_6")); // F6 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_7")); // F7 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_8")); // F8 controls.add(new KeyProperty(frame, null, "keystroke_apply_pattern_9")); // F9 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_10")); // control // F1 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_11")); // control // F2 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_12")); // control // F3 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_13")); // control // F4 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_14")); // control // F5 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_15")); // control // F6 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_16")); // control // F7 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_17")); // control // F8 controls .add(new KeyProperty(frame, null, "keystroke_apply_pattern_18")); // control // F9 controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("others")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/ChangeNodeLevelAction_left.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/ChangeNodeLevelAction_right.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/FormatCopy.properties.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/FormatPaste.properties.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/IconSelectionPlugin.properties.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/NewParentNode.properties_key")); //controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/NodeNote.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/NodeNote_jumpto.keystroke.alt_N")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/NodeNote_hide_show.keystroke.control_shift_less")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/RemoveNote.properties.properties_key")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_UP")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/UnfoldAll.keystroke.alt_PAGE_DOWN")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/UnfoldAll.keystroke.alt_HOME")); controls.add(new KeyProperty(frame, null, "keystroke_accessories/plugins/UnfoldAll.keystroke.alt_END")); controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("attributes")); controls.add(new KeyProperty(frame, null, "keystroke_edit_attributes")); // control controls.add(new KeyProperty(frame, null, "keystroke_show_all_attributes")); // control controls.add(new KeyProperty(frame, null, "keystroke_show_selected_attributes")); // control controls.add(new KeyProperty(frame, null, "keystroke_hide_all_attributes")); // control controls.add(new KeyProperty(frame, null, "keystroke_show_attribute_manager")); // control controls.add(new KeyProperty(frame, null, "keystroke_assign_attributes")); // control controls.add(new KeyProperty(frame, null, "keystroke_plugins/ScriptingEngine.keystroke.evaluate")); final ModeController modeController = fmMain.getController().getModeController(); if(modeController instanceof MindMapController){ MindMapController controller = (MindMapController)modeController; Vector iconActions = controller.iconActions; Vector actions = new Vector(); actions.addAll(iconActions); actions.add(controller.removeLastIconAction); actions.add(controller.removeAllIconsAction); controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("icons")); final Iterator iterator = actions.iterator(); while(iterator.hasNext()){ IconInformation info = (IconInformation) iterator.next(); final KeyProperty keyProperty = new KeyProperty(frame, null, info.getKeystrokeResourceName()); keyProperty.setLabelText(info.getDescription()); keyProperty.setImageIcon(info.getIcon()); keyProperty.disableModifiers(); controls.add(keyProperty); } } /*********************************************************************** * Misc **************************************************************** */ controls.add(new NewTabProperty("Behaviour")); controls.add(new SeparatorProperty("behaviour")); controls.add(new ComboProperty( "placenewbranches.tooltip", "placenewbranches", new String[] { "first", "last" }, this)); // last controls.add(new BooleanProperty("draganddrop.tooltip", "draganddrop")); // true controls.add(new BooleanProperty("unfold_on_paste.tooltip", "unfold_on_paste")); // true controls.add(new BooleanProperty( "disable_cursor_move_paper.tooltip", "disable_cursor_move_paper")); // false controls.add(new BooleanProperty( "enable_leaves_folding.tooltip", "enable_leaves_folding")); // false controls.add(new StringProperty( "foldingsymbolwidth.tooltip", "foldingsymbolwidth")); // 6 controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("key_typing")); controls.add(new BooleanProperty( "disable_key_type.tooltip", "disable_key_type")); // false controls.add(new BooleanProperty( "key_type_adds_new.tooltip", "key_type_adds_new")); // false controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("resources_notifications")); controls.add(new RemindValueProperty("remind_type_of_new_nodes.tooltip", FreeMind.RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_LONG_NODES, modeController)); controls.add(new DontShowNotificationProperty( "resources_convert_to_current_version.tooltip", FreeMind.RESOURCES_CONVERT_TO_CURRENT_VERSION)); controls.add(new DontShowNotificationProperty( "delete_nodes_without_question.tooltip", FreeMind.RESOURCES_DELETE_NODES_WITHOUT_QUESTION)); controls.add(new DontShowNotificationProperty( "cut_nodes_without_question.tooltip", FreeMind.RESOURCES_CUT_NODES_WITHOUT_QUESTION)); controls.add(new DontShowNotificationProperty( "remove_notes_without_question.tooltip", FreeMind.RESOURCES_REMOVE_NOTES_WITHOUT_QUESTION)); controls.add(new DontShowNotificationProperty( "execute_scripts_without_asking.tooltip", FreeMind.RESOURCES_EXECUTE_SCRIPTS_WITHOUT_ASKING)); controls.add(new NextLineProperty()); controls .add(new SeparatorProperty(FreeMind.RESOURCES_SELECTION_METHOD)); controls .add(new ComboProperty( "selection_method.tooltip", FreeMind.RESOURCES_SELECTION_METHOD, new String[] { "selection_method_direct", "selection_method_delayed", "selection_method_by_click" }, this)); // selection_method_direct controls.add(new NumberProperty("time_for_delayed_selection.tooltip", "time_for_delayed_selection", 1, Integer.MAX_VALUE, 1)); // 500 controls.add(new NextLineProperty()); controls .add(new SeparatorProperty("mouse_wheel")); controls.add(new NumberProperty("wheel_velocity.tooltip", FreeMind.RESOURCES_WHEEL_VELOCITY, 1,250,1)); controls.add(new NextLineProperty()); controls .add(new SeparatorProperty("undo")); controls.add(new NumberProperty("undo_levels.tooltip", "undo_levels", 2,1000,1)); /*********************************************************************** * Browser/external apps * **************************************************************** */ controls.add(new NewTabProperty("HTML")); controls.add(new SeparatorProperty("browser")); // // The default browser setting // // For Windows (the \"\" signs are necessary due to links, that have "=" // in their URL). // default_browser_command_windows_nt = explorer "{0}" // // The next setting works for the default browser, but eventually starts // programs without questions, so be careful! // // default_browser_command_windows_nt = rundll32 // url.dll,FileProtocolHandler {0} controls.add(new StringProperty( "default_browser_command_windows_nt.tooltip", "default_browser_command_windows_nt")); // cmd.exe // /c // start // "" // "{0}" controls.add(new StringProperty( "default_browser_command_windows_9x.tooltip", "default_browser_command_windows_9x")); // command.com // /c // start // "{0}" // Dimitri proposed: // default_browser_command_windows_9x = explorer "{0}" // // Here the default browser for other operating systems goes: // controls.add(new StringProperty( "default_browser_command_other_os.tooltip", "default_browser_command_other_os")); // mozilla {0} // controls.add(new StringProperty("default_browser_command_mac.tooltip", "default_browser_command_mac")); // open -a // /Applications/Safari.app {0} controls.add(new SeparatorProperty("html_export")); // controls .add(new ComboProperty(null, "html_export_folding", new String[] { "html_export_no_folding", "html_export_fold_currently_folded", "html_export_fold_all", "html_export_based_on_headings" }, this)); // html_export_fold_currently_folded controls.add(new NextLineProperty()); controls.add(new BooleanProperty( "export_icons_in_html.tooltip", "export_icons_in_html")); // false for (Iterator iter = sContributors.iterator(); iter.hasNext();) { FreemindPropertyContributor contributor = (FreemindPropertyContributor) iter.next(); controls.addAll(contributor.getControls(this)); } return controls; } public void closeWindow() { OptionPanelWindowConfigurationStorage storage = new OptionPanelWindowConfigurationStorage(); storage.setPanel(selectedPanel); XmlBindingTools.getInstance().storeDialogPositions(fmMain.getController(), frame, storage, PREFERENCE_STORAGE_PROPERTY); frame.setVisible(false); frame.dispose(); } private static Set sContributors = new HashSet(); public static void addContributor(FreemindPropertyContributor contributor) { sContributors.add(contributor); } public static void removeContributor(FreemindPropertyContributor contributor) { sContributors.remove(contributor); } } freemind-0.9.0/freemind/freemind/preferences/layout/KeyEventTranslator.java0000644000000000000000000002641711527433212025670 0ustar rootroot/* * KeyEventTranslator.java - Hides some warts of AWT event API * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2003 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.preferences.layout; //{{{ Imports import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.util.HashMap; import java.util.Map; //import org.gjt.sp.util.Log; //}}} /** * In conjunction with the KeyEventWorkaround, hides some * warts in the AWT key event API. * * @author Slava Pestov * @version $Id: KeyEventTranslator.java,v 1.1.2.2 2005/05/12 21:56:57 christianfoltin Exp $ */ public class KeyEventTranslator { //{{{ addTranslation() method /** * Adds a keyboard translation. * @param key1 Translate this key * @param key2 Into this key * @since jEdit 4.2pre3 */ public static void addTranslation(Key key1, Key key2) { transMap.put(key1,key2); } //}}} //{{{ translateKeyEvent() method /** * Pass this an event from {@link * KeyEventWorkaround#processKeyEvent(java.awt.event.KeyEvent)}. * @since jEdit 4.2pre3 */ public static Key translateKeyEvent(KeyEvent evt) { int modifiers = evt.getModifiers(); Key returnValue = null; switch(evt.getID()) { case KeyEvent.KEY_PRESSED: int keyCode = evt.getKeyCode(); if((keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9) || (keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z)) { if(KeyEventWorkaround.ALTERNATIVE_DISPATCHER) return null; else { returnValue = new Key( modifiersToString(modifiers), //fc, 12.5.2005: changed to upper case as Freemind seems to need this. '\0',Character.toUpperCase( (char)keyCode)); } } else { if(keyCode == KeyEvent.VK_TAB) { evt.consume(); returnValue = new Key( modifiersToString(modifiers), keyCode,'\0'); } else if(keyCode == KeyEvent.VK_SPACE) { // for SPACE or S+SPACE we pass the // key typed since international // keyboards sometimes produce a // KEY_PRESSED SPACE but not a // KEY_TYPED SPACE, eg if you have to // do a " to insert ". if((modifiers & ~InputEvent.SHIFT_MASK) == 0) returnValue = null; else { returnValue = new Key( modifiersToString(modifiers), 0,' '); } } else { returnValue = new Key( modifiersToString(modifiers), keyCode,'\0'); } } break; case KeyEvent.KEY_TYPED: char ch = evt.getKeyChar(); switch(ch) { case '\n': case '\t': case '\b': return null; case ' ': if((modifiers & ~InputEvent.SHIFT_MASK) != 0) return null; } int ignoreMods; if(KeyEventWorkaround.ALT_KEY_PRESSED_DISABLED) { /* on MacOS, A+ can be user input */ ignoreMods = (InputEvent.SHIFT_MASK | InputEvent.ALT_GRAPH_MASK | InputEvent.ALT_MASK); } else { /* on MacOS, A+ can be user input */ ignoreMods = (InputEvent.SHIFT_MASK | InputEvent.ALT_GRAPH_MASK); } if((modifiers & InputEvent.ALT_GRAPH_MASK) == 0 && evt.getWhen() - KeyEventWorkaround.lastKeyTime < 750 && (KeyEventWorkaround.modifiers & ~ignoreMods) != 0) { if(KeyEventWorkaround.ALTERNATIVE_DISPATCHER) { returnValue = new Key( modifiersToString(modifiers), 0,ch); } else return null; } else { if(ch == ' ') { returnValue = new Key( modifiersToString(modifiers), 0,ch); } else returnValue = new Key(null,0,ch); } break; default: return null; } /* I guess translated events do not have the 'evt' field set so consuming won't work. I don't think this is a problem as nothing uses translation anyway */ Key trans = (Key)transMap.get(returnValue); if(trans == null) return returnValue; else return trans; } //}}} //{{{ parseKey() method /** * Converts a string to a keystroke. The string should be of the * form modifiers+shortcut where modifiers * is any combination of A for Alt, C for Control, S for Shift * or M for Meta, and shortcut is either a single character, * or a keycode name from the KeyEvent class, without * the VK_ prefix. * @param keyStroke A string description of the key stroke * @since jEdit 4.2pre3 */ public static Key parseKey(String keyStroke) { if(keyStroke == null) return null; int index = keyStroke.indexOf('+'); int modifiers = 0; if(index != -1) { for(int i = 0; i < index; i++) { switch(Character.toUpperCase(keyStroke .charAt(i))) { case 'A': modifiers |= a; break; case 'C': modifiers |= c; break; case 'M': modifiers |= m; break; case 'S': modifiers |= s; break; } } } String key = keyStroke.substring(index + 1); if(key.length() == 1) { return new Key(modifiersToString(modifiers),0,key.charAt(0)); } else if(key.length() == 0) { // Log.log(Log.ERROR,DefaultInputHandler.class, // "Invalid key stroke: " + keyStroke); return null; } else if(key.equals("SPACE")) { return new Key(modifiersToString(modifiers),0,' '); } else { int ch; try { ch = KeyEvent.class.getField("VK_".concat(key)) .getInt(null); } catch(Exception e) { // Log.log(Log.ERROR,DefaultInputHandler.class, // "Invalid key stroke: " // + keyStroke); return null; } return new Key(modifiersToString(modifiers),ch,'\0'); } } //}}} //{{{ setModifierMapping() method /** * Changes the mapping between symbolic modifier key names * (C, A, M, S) and * Java modifier flags. * * You can map more than one Java modifier to a symobolic modifier, for * example : *

	 *	setModifierMapping(
	 *		InputEvent.CTRL_MASK,
	 *		InputEvent.ALT_MASK | InputEvent.META_MASK,
	 *		0,
	 *		InputEvent.SHIFT_MASK);
	 *

* * You cannot map a Java modifer to more than one symbolic modifier. * * @param c The modifier(s) to map the C modifier to * @param a The modifier(s) to map the A modifier to * @param m The modifier(s) to map the M modifier to * @param s The modifier(s) to map the S modifier to * * @since jEdit 4.2pre3 */ public static void setModifierMapping(int c, int a, int m, int s) { int duplicateMapping = ((c & a) | (c & m) | (c & s) | (a & m) | (a & s) | (m & s)); if((duplicateMapping & InputEvent.CTRL_MASK) != 0) { throw new IllegalArgumentException( "CTRL is mapped to more than one modifier"); } if((duplicateMapping & InputEvent.ALT_MASK) != 0) { throw new IllegalArgumentException( "ALT is mapped to more than one modifier"); } if((duplicateMapping & InputEvent.META_MASK) != 0) { throw new IllegalArgumentException( "META is mapped to more than one modifier"); } if((duplicateMapping & InputEvent.SHIFT_MASK) != 0) { throw new IllegalArgumentException( "SHIFT is mapped to more than one modifier"); } KeyEventTranslator.c = c; KeyEventTranslator.a = a; KeyEventTranslator.m = m; KeyEventTranslator.s = s; } //}}} //{{{ getSymbolicModifierName() method /** * Returns a the symbolic modifier name for the specified Java modifier * flag. * * @param mod A modifier constant from InputEvent * * @since jEdit 4.2pre3 */ public static String getSymbolicModifierName(int mod) { if((mod & c) != 0) return "control"; else if((mod & a) != 0) return "alt"; else if((mod & m) != 0) return "meta"; else if((mod & s) != 0) return "shift"; else return ""; } //}}} //{{{ modifiersToString() method public static String modifiersToString(int mods) { StringBuffer buf = null; if((mods & InputEvent.CTRL_MASK) != 0) { if(buf == null) buf = new StringBuffer(); else buf.append(GrabKeyDialog.MODIFIER_SEPARATOR); buf.append(getSymbolicModifierName(InputEvent.CTRL_MASK)); } if((mods & InputEvent.ALT_MASK) != 0) { if(buf == null) buf = new StringBuffer(); else buf.append(GrabKeyDialog.MODIFIER_SEPARATOR); buf.append(getSymbolicModifierName(InputEvent.ALT_MASK)); } if((mods & InputEvent.META_MASK) != 0) { if(buf == null) buf = new StringBuffer(); else buf.append(GrabKeyDialog.MODIFIER_SEPARATOR); buf.append(getSymbolicModifierName(InputEvent.META_MASK)); } if((mods & InputEvent.SHIFT_MASK) != 0) { if(buf == null) buf = new StringBuffer(); else buf.append(GrabKeyDialog.MODIFIER_SEPARATOR); buf.append(getSymbolicModifierName(InputEvent.SHIFT_MASK)); } if(buf == null) return null; else return buf.toString(); } //}}} //{{{ getModifierString() method /** * Returns a string containing symbolic modifier names set in the * specified event. * * @param evt The event * * @since jEdit 4.2pre3 */ public static String getModifierString(InputEvent evt) { StringBuffer buf = new StringBuffer(); if(evt.isControlDown()) buf.append(getSymbolicModifierName(InputEvent.CTRL_MASK)); if(evt.isAltDown()) buf.append(getSymbolicModifierName(InputEvent.ALT_MASK)); if(evt.isMetaDown()) buf.append(getSymbolicModifierName(InputEvent.META_MASK)); if(evt.isShiftDown()) buf.append(getSymbolicModifierName(InputEvent.SHIFT_MASK)); return (buf.length() == 0 ? null : buf.toString()); } //}}} static int c, a, m, s; //{{{ Private members private static Map transMap = new HashMap(); static { if(GrabKeyDialog.isMacOS()) { setModifierMapping( InputEvent.META_MASK, /* == C+ */ InputEvent.CTRL_MASK, /* == A+ */ /* M+ discarded by key event workaround! */ InputEvent.ALT_MASK, /* == M+ */ InputEvent.SHIFT_MASK /* == S+ */); } else { setModifierMapping( InputEvent.CTRL_MASK, InputEvent.ALT_MASK, InputEvent.META_MASK, InputEvent.SHIFT_MASK); } } //}}} //{{{ Key class public static class Key { public String modifiers; public int key; public char input; public Key(String modifiers, int key, char input) { this.modifiers = modifiers; this.key = key; this.input = input; } public int hashCode() { return key + input; } public boolean equals(Object o) { if(o instanceof Key) { Key k = (Key)o; if((modifiers.equals( k.modifiers)) && key == k.key && input == k.input) { return true; } } return false; } public String toString() { return (modifiers == null ? "" : modifiers) + "<" + Integer.toString(key,16) + "," + Integer.toString(input,16) + ">"; } } //}}} }freemind-0.9.0/freemind/freemind/preferences/layout/KeyEventWorkaround.java0000644000000000000000000001547011527433212025667 0ustar rootroot/* * KeyEventWorkaround.java - Works around bugs in Java event handling * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2000, 2004 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.preferences.layout; //{{{ Imports import java.awt.event.InputEvent; import java.awt.event.KeyEvent; //import org.gjt.sp.jedit.Debug; //}}} /** * Various hacks to get keyboard event handling to behave in a consistent manner * across Java implementations. * * @author Slava Pestov * @version $Id: KeyEventWorkaround.java,v 1.1.2.1 2005/05/10 20:55:31 christianfoltin Exp $ */ public class KeyEventWorkaround { public static final boolean ALT_KEY_PRESSED_DISABLED = false; public static final boolean ALTERNATIVE_DISPATCHER = false; //{{{ processKeyEvent() method public static KeyEvent processKeyEvent(KeyEvent evt) { int keyCode = evt.getKeyCode(); char ch = evt.getKeyChar(); switch(evt.getID()) { //{{{ KEY_PRESSED... case KeyEvent.KEY_PRESSED: lastKeyTime = evt.getWhen(); // get rid of keys we never need to handle switch(keyCode) { case KeyEvent.VK_DEAD_GRAVE: case KeyEvent.VK_DEAD_ACUTE: case KeyEvent.VK_DEAD_CIRCUMFLEX: case KeyEvent.VK_DEAD_TILDE: case KeyEvent.VK_DEAD_MACRON: case KeyEvent.VK_DEAD_BREVE: case KeyEvent.VK_DEAD_ABOVEDOT: case KeyEvent.VK_DEAD_DIAERESIS: case KeyEvent.VK_DEAD_ABOVERING: case KeyEvent.VK_DEAD_DOUBLEACUTE: case KeyEvent.VK_DEAD_CARON: case KeyEvent.VK_DEAD_CEDILLA: case KeyEvent.VK_DEAD_OGONEK: case KeyEvent.VK_DEAD_IOTA: case KeyEvent.VK_DEAD_VOICED_SOUND: case KeyEvent.VK_DEAD_SEMIVOICED_SOUND: case '\0': return null; case KeyEvent.VK_ALT: modifiers |= InputEvent.ALT_MASK; return null; case KeyEvent.VK_ALT_GRAPH: modifiers |= InputEvent.ALT_GRAPH_MASK; return null; case KeyEvent.VK_CONTROL: modifiers |= InputEvent.CTRL_MASK; return null; case KeyEvent.VK_SHIFT: modifiers |= InputEvent.SHIFT_MASK; return null; case KeyEvent.VK_META: modifiers |= InputEvent.META_MASK; return null; default: if(!evt.isMetaDown()) { if(evt.isControlDown() && evt.isAltDown()) { lastKeyTime = 0L; } else if(!evt.isControlDown() && !evt.isAltDown()) { lastKeyTime = 0L; if(keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9) { return null; } if(keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z) { return null; } } } if(ALT_KEY_PRESSED_DISABLED) { /* we don't handle key pressed A+ */ /* they're too troublesome */ if((modifiers & InputEvent.ALT_MASK) != 0) return null; } switch(keyCode) { case KeyEvent.VK_NUMPAD0: case KeyEvent.VK_NUMPAD1: case KeyEvent.VK_NUMPAD2: case KeyEvent.VK_NUMPAD3: case KeyEvent.VK_NUMPAD4: case KeyEvent.VK_NUMPAD5: case KeyEvent.VK_NUMPAD6: case KeyEvent.VK_NUMPAD7: case KeyEvent.VK_NUMPAD8: case KeyEvent.VK_NUMPAD9: case KeyEvent.VK_MULTIPLY: case KeyEvent.VK_ADD: /* case KeyEvent.VK_SEPARATOR: */ case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_DECIMAL: case KeyEvent.VK_DIVIDE: last = LAST_NUMKEYPAD; break; default: last = LAST_NOTHING; break; } return evt; } //}}} //{{{ KEY_TYPED... case KeyEvent.KEY_TYPED: // need to let \b through so that backspace will work // in HistoryTextFields if((ch < 0x20 || ch == 0x7f || ch == 0xff) && ch != '\b' && ch != '\t' && ch != '\n') { return null; } if(evt.getWhen() - lastKeyTime < 750) { if(! ALTERNATIVE_DISPATCHER) { if(((modifiers & InputEvent.CTRL_MASK) != 0 ^ (modifiers & InputEvent.ALT_MASK) != 0) || (modifiers & InputEvent.META_MASK) != 0) { return null; } } // if the last key was a numeric keypad key // and NumLock is off, filter it out if(last == LAST_NUMKEYPAD) { last = LAST_NOTHING; if((ch >= '0' && ch <= '9') || ch == '.' || ch == '/' || ch == '*' || ch == '-' || ch == '+') { return null; } } // Windows JDK workaround else if(last == LAST_ALT) { last = LAST_NOTHING; switch(ch) { case 'B': case 'M': case 'X': case 'c': case '!': case ',': case '?': return null; } } } else { if((modifiers & InputEvent.SHIFT_MASK) != 0) { switch(ch) { case '\n': case '\t': return null; } } modifiers = 0; } return evt; //}}} //{{{ KEY_RELEASED... case KeyEvent.KEY_RELEASED: switch(keyCode) { case KeyEvent.VK_ALT: modifiers &= ~InputEvent.ALT_MASK; lastKeyTime = evt.getWhen(); // we consume this to work around the bug // where A+TAB window switching activates // the menu bar on Windows. evt.consume(); return null; case KeyEvent.VK_ALT_GRAPH: modifiers &= ~InputEvent.ALT_GRAPH_MASK; return null; case KeyEvent.VK_CONTROL: modifiers &= ~InputEvent.CTRL_MASK; return null; case KeyEvent.VK_SHIFT: modifiers &= ~InputEvent.SHIFT_MASK; return null; case KeyEvent.VK_META: modifiers &= ~InputEvent.META_MASK; return null; case KeyEvent.VK_LEFT: case KeyEvent.VK_RIGHT: case KeyEvent.VK_UP: case KeyEvent.VK_DOWN: case KeyEvent.VK_PAGE_UP: case KeyEvent.VK_PAGE_DOWN: case KeyEvent.VK_END: case KeyEvent.VK_HOME: /* workaround for A+keys producing * garbage on Windows */ if(modifiers == InputEvent.ALT_MASK) last = LAST_ALT; break; } return evt; //}}} default: return evt; } } //}}} //{{{ numericKeypadKey() method /** * A workaround for non-working NumLock status in some Java versions. * @since jEdit 4.0pre8 */ public static void numericKeypadKey() { last = LAST_NOTHING; } //}}} //{{{ Package-private members static long lastKeyTime; static int modifiers; //}}} //{{{ Private members private static int last; private static final int LAST_NOTHING = 0; private static final int LAST_NUMKEYPAD = 1; private static final int LAST_ALT = 2; //}}} }freemind-0.9.0/freemind/freemind/preferences/layout/VariableSizeCardLayout.java0000644000000000000000000000506111527433212026424 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 09.04.2006 * Created by Dimitri Polivaev */ package freemind.preferences.layout; import java.awt.CardLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; public class VariableSizeCardLayout extends CardLayout { public VariableSizeCardLayout() { super(); } public VariableSizeCardLayout(int hgap, int vgap) { super(hgap, vgap); } /** * Determines the preferred size of the container argument using * this card layout. * @param parent the parent container in which to do the layout * @return the preferred dimensions to lay out the subcomponents * of the specified container * @see java.awt.Container#getPreferredSize * @see java.awt.CardLayout#minimumLayoutSize */ public Dimension preferredLayoutSize(Container parent) { synchronized (parent.getTreeLock()) { Insets insets = parent.getInsets(); int ncomponents = parent.getComponentCount(); int w = 0; int h = 0; for (int i = 0 ; i < ncomponents ; i++) { Component comp = parent.getComponent(i); if(comp.isVisible()){ Dimension d = comp.getPreferredSize(); if (d.width > w) { w = d.width; } if (d.height > h) { h = d.height; } } } return new Dimension(insets.left + insets.right + w + getHgap()*2, insets.top + insets.bottom + h + getVgap()*2); } } } freemind-0.9.0/freemind/freemind/preferences/layout/GrabKeyDialog.java0000644000000000000000000003532711527433212024530 0ustar rootroot/* * GrabKeyDialog.java - Grabs keys from the keyboard * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2001, 2002 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.preferences.layout; //{{{ Imports import java.awt.AWTEvent; import java.awt.Dialog; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.lang.reflect.Field; import java.util.Enumeration; import java.util.Vector; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import freemind.main.FreeMindMain; //import org.gjt.sp.util.Log; //}}} /** * A dialog for getting shortcut keys. */ public class GrabKeyDialog extends JDialog { private final FreeMindMain fmMain; private static class Buffer { /** */ public int getLength() { // TODO Auto-generated method stub return 0; } /** */ public void insert(int length, String string) { // TODO Auto-generated method stub } } //{{{ toString() method public static String toString(KeyEvent evt) { String id; switch(evt.getID()) { case KeyEvent.KEY_PRESSED: id = "KEY_PRESSED"; break; case KeyEvent.KEY_RELEASED: id = "KEY_RELEASED"; break; case KeyEvent.KEY_TYPED: id = "KEY_TYPED"; break; default: id = "unknown type"; break; } return id + ",keyCode=0x" + Integer.toString(evt.getKeyCode(),16) + ",keyChar=0x" + Integer.toString(evt.getKeyChar(),16) + ",modifiers=0x" + Integer.toString(evt.getModifiers(),16); } //}}} //{{{ GrabKeyDialog constructor /** * Create and show a new modal dialog. * * @param parent center dialog on this component. * @param binding the action/macro that should get a binding. * @param allBindings all other key bindings. * @param debugBuffer debug info will be dumped to this buffer * (may be null) * @since jEdit 4.1pre7 */ // private GrabKeyDialog(Dialog parent, KeyBinding binding, // Vector allBindings, Buffer debugBuffer) // { // super(parent,(getText(""grab-key.title")),true); // // init(binding,allBindings,debugBuffer); // } //}}} //{{{ GrabKeyDialog constructor /** * Create and show a new modal dialog. * * @param parent center dialog on this component. * @param binding the action/macro that should get a binding. * @param allBindings all other key bindings. * @param debugBuffer debug info will be dumped to this buffer * (may be null) * @since jEdit 4.1pre7 */ public GrabKeyDialog(FreeMindMain fmMain, Dialog parent, KeyBinding binding, Vector allBindings, Buffer debugBuffer){ this(fmMain, parent, binding, allBindings, debugBuffer, 0); } public GrabKeyDialog(FreeMindMain fmMain, Dialog parent, KeyBinding binding, Vector allBindings, Buffer debugBuffer, int modifierMask) { super(parent,(/*FIXME: getText*/("grab-key.title")),true); this.fmMain = fmMain; this.modifierMask = modifierMask; setTitle(getText("grab-key.title")); init(binding,allBindings,debugBuffer); } //}}} //{{{ getShortcut() method /** * Returns the shortcut, or null if the current shortcut should be * removed or the dialog either has been cancelled. Use isOK() * to determine if the latter is true. */ public String getShortcut() { if(isOK) return shortcut.getText(); else return null; } //}}} //{{{ isOK() method /** * Returns true, if the dialog has not been cancelled. * @since jEdit 3.2pre9 */ public boolean isOK() { return isOK; } //}}} //{{{ isManagingFocus() method /** * Returns if this component can be traversed by pressing the * Tab key. This returns false. */ public boolean isManagingFocus() { return false; } //}}} //{{{ getFocusTraversalKeysEnabled() method /** * Makes the tab key work in Java 1.4. * @since jEdit 3.2pre4 */ public boolean getFocusTraversalKeysEnabled() { return false; } //}}} //{{{ processKeyEvent() method protected void processKeyEvent(KeyEvent evt) { shortcut.processKeyEvent(evt); } //}}} //{{{ Private members //{{{ Instance variables private InputPane shortcut; // this is a bad hack private JLabel assignedTo; private JButton ok; private JButton remove; private JButton cancel; private JButton clear; private boolean isOK; private KeyBinding binding; private Vector allBindings; private Buffer debugBuffer; private int modifierMask; //}}} public final static String MODIFIER_SEPARATOR = " "; //{{{ init() method private void init(KeyBinding binding, Vector allBindings, Buffer debugBuffer) { this.binding = binding; this.allBindings = allBindings; this.debugBuffer = debugBuffer; enableEvents(AWTEvent.KEY_EVENT_MASK); // create a panel with a BoxLayout. Can't use Box here // because Box doesn't have setBorder(). JPanel content = new JPanel(new GridLayout(0,1,0,6)) { /** * Returns if this component can be traversed by pressing the * Tab key. This returns false. */ public boolean isManagingFocus() { return false; } /** * Makes the tab key work in Java 1.4. * @since jEdit 3.2pre4 */ public boolean getFocusTraversalKeysEnabled() { return false; } }; content.setBorder(new EmptyBorder(12,12,12,12)); setContentPane(content); JLabel label = new JLabel( debugBuffer == null ? ( getText("grab-key.caption")+ " " + binding.label) //FIXME: getText("grab-key.caption")+new String[] { binding.label }) : (getText("grab-key.keyboard-test"))); Box input = Box.createHorizontalBox(); shortcut = new InputPane(); input.add(shortcut); input.add(Box.createHorizontalStrut(12)); clear = new JButton((getText("grab-key.clear"))); clear.addActionListener(new ActionHandler()); input.add(clear); assignedTo = new JLabel(); if(debugBuffer == null) updateAssignedTo(null); Box buttons = Box.createHorizontalBox(); buttons.add(Box.createGlue()); if(debugBuffer == null) { ok = new JButton(getText("common.ok")); ok.addActionListener(new ActionHandler()); buttons.add(ok); buttons.add(Box.createHorizontalStrut(12)); if(binding.isAssigned()) { // show "remove" button remove = new JButton((getText("grab-key.remove"))); remove.addActionListener(new ActionHandler()); //FIXME: REACTIVATE buttons.add(remove); buttons.add(Box.createHorizontalStrut(12)); } } cancel = new JButton(getText("common.cancel")); cancel.addActionListener(new ActionHandler()); buttons.add(cancel); buttons.add(Box.createGlue()); //FIXME: REACTIVATE content.add(label); content.add(input); // if(debugBuffer == null) //FIXME: REACTIVATE content.add(assignedTo); content.add(buttons); setDefaultCloseOperation(DISPOSE_ON_CLOSE); pack(); setLocationRelativeTo(getParent()); setResizable(false); setVisible(true); } //}}} //{{{ getSymbolicName() method private String getSymbolicName(int keyCode) { if(keyCode == KeyEvent.VK_UNDEFINED) return null; /* else if(keyCode == KeyEvent.VK_OPEN_BRACKET) return "["; else if(keyCode == KeyEvent.VK_CLOSE_BRACKET) return "]"; */ if(keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z) { return String.valueOf(Character.toLowerCase((char)keyCode)); } try { Field[] fields = KeyEvent.class.getFields(); for(int i = 0; i < fields.length; i++) { Field field = fields[i]; String name = field.getName(); if(name.startsWith("VK_") && field.getInt(null) == keyCode) { return name.substring(3); } } } catch(Exception e) { // Log.log(Log.ERROR,this,e); } return null; } //}}} //{{{ updateAssignedTo() method private void updateAssignedTo(String shortcut) { String text = (getText("grab-key.assigned-to.none")); KeyBinding kb = getKeyBinding(shortcut); if(kb != null) if(kb.isPrefix) text = getText("grab-key.assigned-to.prefix")+ " " + shortcut ; //FIXME: getText("grab-key.assigned-to.prefix")+ // new String[] { shortcut }; else text = kb.label; if(ok != null) ok.setEnabled(kb == null || !kb.isPrefix); assignedTo.setText( (getText("grab-key.assigned-to")+ " " + text )); //FIXME: assignedTo.setText( // (getText("grab-key.assigned-to")+ // new String[] { text })); } //}}} //{{{ getKeyBinding() method private KeyBinding getKeyBinding(String shortcut) { if(shortcut == null || shortcut.length() == 0) return null; String spacedShortcut = shortcut + " "; Enumeration e = allBindings.elements(); while(e.hasMoreElements()) { KeyBinding kb = (KeyBinding)e.nextElement(); if(!kb.isAssigned()) continue; String spacedKbShortcut = kb.shortcut + " "; // eg, trying to bind C+n C+p if C+n already bound if(spacedShortcut.startsWith(spacedKbShortcut)) return kb; // eg, trying to bind C+e if C+e is a prefix if(spacedKbShortcut.startsWith(spacedShortcut)) { // create a temporary (synthetic) prefix // KeyBinding, that won't be saved return new KeyBinding(kb.name,kb.label, shortcut,true); } } return null; } //}}} //}}} //{{{ KeyBinding class /** * A jEdit action or macro with its two possible shortcuts. * @since jEdit 3.2pre8 */ public static class KeyBinding { public KeyBinding(String name, String label, String shortcut, boolean isPrefix) { this.name = name; this.label = label; this.shortcut = shortcut; this.isPrefix = isPrefix; } public String name; public String label; public String shortcut; public boolean isPrefix; public boolean isAssigned() { return shortcut != null && shortcut.length() > 0; } } //}}} //{{{ InputPane class class InputPane extends JTextField { //{{{ getFocusTraversalKeysEnabled() method /** * Makes the tab key work in Java 1.4. * @since jEdit 3.2pre4 */ public boolean getFocusTraversalKeysEnabled() { return false; } //}}} //{{{ processKeyEvent() method protected void processKeyEvent(KeyEvent _evt) { if((getModifierMask() & _evt.getModifiers()) != 0){ KeyEvent evt = new KeyEvent(_evt.getComponent(), _evt.getID(), _evt.getWhen(), ~getModifierMask() & _evt.getModifiers(), _evt.getKeyCode(), _evt.getKeyChar(),_evt.getKeyLocation()); processKeyEvent(evt); if(evt.isConsumed()){ _evt.consume(); } return; } KeyEvent evt = KeyEventWorkaround.processKeyEvent(_evt); if(debugBuffer != null) { debugBuffer.insert(debugBuffer.getLength(), "Event " + GrabKeyDialog.toString(_evt) + (evt == null ? " filtered\n" : " passed\n")); } if(evt == null) return; evt.consume(); KeyEventTranslator.Key key = KeyEventTranslator .translateKeyEvent(evt); if(key == null) return; if(debugBuffer != null) { debugBuffer.insert(debugBuffer.getLength(), "==> Translated to " + key + "\n"); } StringBuffer keyString = new StringBuffer(/*getText()*/); // if(getDocument().getLength() != 0) // keyString.append(' '); if(key.modifiers != null) keyString.append(key.modifiers).append(' '); // TODO: plus ?? .append('+'); if(key.input == ' ') keyString.append("SPACE"); else if(key.input != '\0') keyString.append(key.input); else { String symbolicName = getSymbolicName(key.key); if(symbolicName == null) return; keyString.append(symbolicName); } setText(keyString.toString()); if(debugBuffer == null) updateAssignedTo(keyString.toString()); } //}}} } //}}} //{{{ ActionHandler class class ActionHandler implements ActionListener { //{{{ actionPerformed() method public void actionPerformed(ActionEvent evt) { if(evt.getSource() == ok) { if(canClose()) dispose(); } else if(evt.getSource() == remove) { shortcut.setText(null); isOK = true; dispose(); } else if(evt.getSource() == cancel) dispose(); else if(evt.getSource() == clear) { shortcut.setText(null); if(debugBuffer == null) updateAssignedTo(null); shortcut.requestFocus(); } } //}}} //{{{ canClose() method private boolean canClose() { String shortcutString = shortcut.getText(); if(shortcutString.length() == 0 && binding.isAssigned()) { // ask whether to remove the old shortcut int answer = JOptionPane.showConfirmDialog( GrabKeyDialog.this, getText("grab-key.remove-ask"), null, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(answer == JOptionPane.YES_OPTION) { shortcut.setText(null); isOK = true; } else return false; } // check whether this shortcut already exists KeyBinding other = getKeyBinding(shortcutString); if(other == null || other == binding) { isOK = true; return true; } // check whether the other shortcut is the alt. shortcut if(other.name == binding.name) { // we don't need two identical shortcuts JOptionPane.showMessageDialog(GrabKeyDialog.this, getText("grab-key.duplicate-alt-shortcut")); return false; } // check whether shortcut is a prefix to others if(other.isPrefix) { // can't override prefix shortcuts JOptionPane.showMessageDialog(GrabKeyDialog.this, getText("grab-key.prefix-shortcut") ); return false; } // ask whether to override that other shortcut int answer = JOptionPane.showConfirmDialog(GrabKeyDialog.this, getText("grab-key.duplicate-shortcut")+ new Object[] { other.label },null, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(answer == JOptionPane.YES_OPTION) { if(other.shortcut != null && shortcutString.startsWith(other.shortcut)) { other.shortcut = null; } isOK = true; return true; } else return false; } //}}} } //}}} /** */ private String getText(String resourceString) { return fmMain.getResourceString("GrabKeyDialog."+resourceString); } private int getModifierMask() { return modifierMask; } /**FIXME: make method here. */ public static boolean isMacOS() { return false; } } freemind-0.9.0/freemind/freemind/preferences/FreemindPropertyContributor.java0000644000000000000000000000244311527433212026271 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Christian Foltin. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 26.03.2006 */ /*$Id: FreemindPropertyContributor.java,v 1.1.2.1.2.1 2007/08/05 20:33:17 christianfoltin Exp $*/ package freemind.preferences; import java.util.List; import freemind.common.TextTranslator; import freemind.preferences.layout.OptionPanel; /** * Implement this interface to take part in the property dialog. * @author foltin * */ public interface FreemindPropertyContributor { public List getControls(TextTranslator pTextTranslator); } freemind-0.9.0/freemind/freemind/preferences/FreemindPropertyListener.java0000644000000000000000000000234311527433212025543 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2005 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 10.05.2005 */ /* $Id: FreemindPropertyListener.java,v 1.1.2.3.2.1 2006/04/05 21:26:31 dpolivaev Exp $ */ package freemind.preferences; /** * Is issued by the OptionPanel when the user accepted a change of its preferences. */ public interface FreemindPropertyListener { void propertyChanged(String propertyName, String newValue, String oldValue); }freemind-0.9.0/freemind/freemind/common/0000755000000000000000000000000011532143331016655 5ustar rootrootfreemind-0.9.0/freemind/freemind/common/PropertyBean.java0000644000000000000000000000400711527433212022137 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: PropertyBean.java,v 1.1.2.2 2006/02/28 18:56:50 christianfoltin Exp $*/ package freemind.common; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Iterator; import java.util.Vector; public abstract class PropertyBean { private Vector mPropertyChangeListeners = new Vector(); /** The key of the property. */ public abstract String getLabel(); public abstract void setValue(String value); public abstract String getValue(); public void addPropertyChangeListener(PropertyChangeListener listener) { mPropertyChangeListeners.add(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { mPropertyChangeListeners.remove(listener); } protected void firePropertyChangeEvent() { PropertyChangeEvent evt = new PropertyChangeEvent(this, getLabel(), null, getValue()); for (Iterator i = mPropertyChangeListeners.iterator(); i.hasNext();) { PropertyChangeListener listener = (PropertyChangeListener) i.next(); listener.propertyChange(evt); } } }freemind-0.9.0/freemind/freemind/common/StringProperty.java0000644000000000000000000000473311527433212022546 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: StringProperty.java,v 1.1.2.4.2.2 2009/02/04 19:31:21 christianfoltin Exp $*/ package freemind.common; import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JLabel; import javax.swing.JTextField; import com.jgoodies.forms.builder.DefaultFormBuilder; public class StringProperty extends PropertyBean implements PropertyControl { String description; String label; JTextField mTextField = new JTextField(); /** */ public StringProperty(String description, String label) { super(); this.description = description; this.label = label; // mTextField.addPropertyChangeListener(new PropertyChangeListener() { // public void propertyChange(PropertyChangeEvent pEvt) // { // firePropertyChangeEvent(); // } // }); mTextField.addKeyListener(new KeyAdapter(){ public void keyReleased(KeyEvent pE) { firePropertyChangeEvent(); }} ); } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { mTextField.setText(value); mTextField.selectAll(); } public String getValue() { return mTextField.getText(); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder .append(pTranslator.getText(getLabel()), mTextField); label.setToolTipText(pTranslator.getText(getDescription())); } public void setEnabled(boolean pEnabled) { mTextField.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/PropertyControl.java0000644000000000000000000000237711527433212022722 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: PropertyControl.java,v 1.1.2.2.2.1 2007/08/05 20:33:13 christianfoltin Exp $*/ package freemind.common; import com.jgoodies.forms.builder.DefaultFormBuilder; public interface PropertyControl { String getDescription(); String getLabel(); void layout(DefaultFormBuilder builder, TextTranslator pTranslator); void setEnabled(boolean pEnabled); }freemind-0.9.0/freemind/freemind/common/ScriptEditorProperty.java0000644000000000000000000000731211527433212023707 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: ScriptEditorProperty.java,v 1.1.2.6 2008/07/04 20:44:02 christianfoltin Exp $*/ package freemind.common; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPopupMenu; import com.jgoodies.forms.builder.DefaultFormBuilder; import freemind.main.HtmlTools; import freemind.modes.mindmapmode.MindMapController; import freemind.modes.mindmapmode.MindMapController.MindMapControllerPlugin; public class ScriptEditorProperty extends PropertyBean implements PropertyControl, ActionListener { public interface ScriptEditorStarter extends MindMapControllerPlugin { String startEditor(String scriptInput); } String description; String label; String script; JButton mButton; final JPopupMenu menu = new JPopupMenu(); private final MindMapController mMindMapController; private static java.util.logging.Logger logger = null; /** */ public ScriptEditorProperty(String description, String label, MindMapController pMindMapController) { super(); this.description = description; this.label = label; mMindMapController = pMindMapController; if (logger == null) { logger = mMindMapController.getFrame().getLogger( this.getClass().getName()); } mButton = new JButton(); mButton.addActionListener(this); script = ""; } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { setScriptValue(value); } public String getValue() { return HtmlTools.unicodeToHTMLUnicodeEntity(HtmlTools.toXMLEscapedText(script)); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder.append(pTranslator.getText(getLabel()), mButton); label.setToolTipText(pTranslator.getText(getDescription())); } public void actionPerformed(ActionEvent arg0) { // search for plugin that handles the script editor. for (Iterator iter = mMindMapController.getPlugins().iterator(); iter .hasNext();) { MindMapControllerPlugin plugin = (MindMapControllerPlugin) iter .next(); if (plugin instanceof ScriptEditorStarter) { ScriptEditorStarter starter = (ScriptEditorStarter) plugin; String resultScript = starter.startEditor(script); if (resultScript != null) { script = resultScript; firePropertyChangeEvent(); } } } } /** */ private void setScriptValue(String result) { if (result == null) { result = ""; } script = HtmlTools.toXMLUnescapedText(HtmlTools.unescapeHTMLUnicodeEntity(result)); logger.fine("Setting script to " +script); mButton.setText(script); } // /** // */ // private Color getColorValue() { // return color; // } public void setEnabled(boolean pEnabled) { mButton.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/DontShowNotificationProperty.java0000644000000000000000000000243011527433212025404 0ustar rootroot/* * FreeMind - A Program for creating and viewing Mindmaps Copyright (C) * 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * * See COPYING for Details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /* $Id: DontShowNotificationProperty.java,v 1.1.2.1 2007/08/05 20:33:12 christianfoltin Exp $ */ package freemind.common; public class DontShowNotificationProperty extends BooleanProperty { public DontShowNotificationProperty(String description, String label) { super(description, label); mTrueValue = "true"; mFalseValue = ""; } } freemind-0.9.0/freemind/freemind/common/FontProperty.java0000644000000000000000000000632211527433212022202 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: FontProperty.java,v 1.1.2.4.2.2 2007/06/27 07:03:57 dpolivaev Exp $*/ package freemind.common; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import com.jgoodies.forms.builder.DefaultFormBuilder; public class FontProperty extends PropertyBean implements PropertyControl { String description; String label; Font font = null; private final TextTranslator mTranslator; JComboBox mFontComboBox = new JComboBox(); private String[] mAvailableFontFamilyNames; /** * TODO * TODO */ public FontProperty(String description, String label, TextTranslator pTranslator) { super(); this.description = description; this.label = label; mTranslator = pTranslator; mAvailableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment(). getAvailableFontFamilyNames(); mFontComboBox.setModel(new DefaultComboBoxModel(mAvailableFontFamilyNames)); mFontComboBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent pE) { firePropertyChangeEvent(); }}); } public String getDescription() { return description; } public String getLabel() { return label; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder.append(pTranslator.getText(getLabel()), mFontComboBox); label.setToolTipText(pTranslator.getText(getDescription())); } public void setValue(String pValue) { for (int i = 0; i < mAvailableFontFamilyNames.length; i++) { String fontName = mAvailableFontFamilyNames[i]; if(fontName.equals(pValue)) { mFontComboBox.setSelectedIndex(i); return; } } System.err.println("Unknown value:" + pValue); if(mFontComboBox.getModel().getSize()>0) { mFontComboBox.setSelectedIndex(0); } } public String getValue() { return mAvailableFontFamilyNames[mFontComboBox.getSelectedIndex()]; } public void setEnabled(boolean pEnabled) { mFontComboBox.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/NextLineProperty.java0000644000000000000000000000265111527433212023023 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: NextLineProperty.java,v 1.1.2.2 2006/03/14 21:56:27 christianfoltin Exp $*/ package freemind.common; import com.jgoodies.forms.builder.DefaultFormBuilder; public class NextLineProperty implements PropertyControl { public NextLineProperty() { super(); } public String getDescription() { return null; } public String getLabel() { return null; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { builder.nextLine(); } public void setEnabled(boolean pEnabled) { } }freemind-0.9.0/freemind/freemind/common/XmlBindingTools.java0000644000000000000000000001345311527433212022606 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 23.06.2004 */ /*$Id: XmlBindingTools.java,v 1.1.2.2.2.5 2009/05/20 19:19:11 christianfoltin Exp $*/ package freemind.common; import java.awt.Dimension; import java.awt.Frame; import java.awt.Toolkit; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import javax.swing.JDialog; import javax.swing.JOptionPane; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import freemind.controller.Controller; import freemind.controller.actions.generated.instance.WindowConfigurationStorage; import freemind.controller.actions.generated.instance.XmlAction; import freemind.main.Resources; /** * @author foltin * Singleton */ public class XmlBindingTools { private static XmlBindingTools instance; private static IBindingFactory mBindingFactory; private XmlBindingTools() { } public static XmlBindingTools getInstance() { if(instance == null) { instance = new XmlBindingTools(); try { mBindingFactory = BindingDirectory.getFactory(XmlAction.class); } catch (JiBXException e) { freemind.main.Resources.getInstance().logException(e); } } return instance; } public IMarshallingContext createMarshaller() { try { return mBindingFactory.createMarshallingContext(); } catch (JiBXException e) { freemind.main.Resources.getInstance().logException(e); return null; } } public IUnmarshallingContext createUnmarshaller() { try { return mBindingFactory.createUnmarshallingContext(); } catch (JiBXException e) { freemind.main.Resources.getInstance().logException(e); return null; } } public void storeDialogPositions(Controller controller, JDialog dialog, WindowConfigurationStorage storage, String window_preference_storage_property) { storage.setX((dialog.getX())); storage.setY((dialog.getY())); storage.setWidth((dialog.getWidth())); storage.setHeight((dialog.getHeight())); String marshalled = marshall(storage); String result = marshalled; controller.setProperty(window_preference_storage_property, result); } public WindowConfigurationStorage decorateDialog(Controller controller, JDialog dialog, String window_preference_storage_property) { String marshalled = controller.getProperty(window_preference_storage_property); WindowConfigurationStorage result = decorateDialog(marshalled, dialog); return result; } public WindowConfigurationStorage decorateDialog(String marshalled, JDialog dialog) { // String unmarshalled = controller.getProperty( // propertyName); if (marshalled != null) { WindowConfigurationStorage storage = (WindowConfigurationStorage) unMarshall(marshalled); if (storage != null) { // Check that location is on current screen. Dimension screenSize; if(Resources.getInstance().getBoolProperty("place_dialogs_on_first_screen")) { Toolkit defaultToolkit = Toolkit.getDefaultToolkit(); screenSize = defaultToolkit.getScreenSize(); } else { screenSize = new Dimension(); screenSize.height = Integer.MAX_VALUE; screenSize.width = Integer.MAX_VALUE; } int delta = 20; dialog.setLocation(Math.min(storage.getX(), screenSize.width-delta), Math.min(storage.getY(), screenSize.height-delta)); dialog.setSize(new Dimension(storage.getWidth(), storage.getHeight())); return storage; } } // set standard dialog size of no size is stored final Frame rootFrame = JOptionPane.getFrameForComponent(dialog); final Dimension prefSize = rootFrame.getSize(); prefSize.width = prefSize.width * 3 / 4; prefSize.height = prefSize.height * 3 / 4; dialog.setSize(prefSize); return null; } public String marshall(XmlAction action) { // marshall: //marshal to StringBuffer: StringWriter writer = new StringWriter(); IMarshallingContext m = XmlBindingTools.getInstance().createMarshaller(); try { m.marshalDocument(action, "UTF-8", null, writer); } catch (JiBXException e) { freemind.main.Resources.getInstance().logException(e); return null; } String result = writer.toString(); return result; } public XmlAction unMarshall(String inputString) { return unMarshall(new StringReader( inputString )); } /** */ public XmlAction unMarshall(Reader reader) { try { // unmarshall: IUnmarshallingContext u = XmlBindingTools.getInstance().createUnmarshaller(); XmlAction doAction = (XmlAction) u.unmarshalDocument ( reader , null); return doAction; } catch (JiBXException e) { freemind.main.Resources.getInstance().logException(e); return null; } } } freemind-0.9.0/freemind/freemind/common/UnicodeReader.java0000644000000000000000000000654311527433212022245 0ustar rootrootpackage freemind.common; /** * * fc, 2010-12-23 Taken from http://koti.mbnet.fi/akini/java/unicodereader/UnicodeReader.java.txt * asuming public domain. * version: 1.1 / 2007-01-25 - changed BOM recognition ordering (longer boms first) Original pseudocode : Thomas Weidenfeller Implementation tweaked: Aki Nieminen http://www.unicode.org/unicode/faq/utf_bom.html BOMs: 00 00 FE FF = UTF-32, big-endian FF FE 00 00 = UTF-32, little-endian EF BB BF = UTF-8, FE FF = UTF-16, big-endian FF FE = UTF-16, little-endian Win2k Notepad: Unicode format = UTF-16LE ***/ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PushbackInputStream; import java.io.Reader; /** * Generic unicode textreader, which will use BOM mark to identify the encoding * to be used. If BOM is not found then use a given default or system encoding. */ public class UnicodeReader extends Reader { PushbackInputStream internalIn; InputStreamReader internalIn2 = null; String defaultEnc; private static final int BOM_SIZE = 4; /** * * @param in * inputstream to be read * @param defaultEnc * default encoding if stream does not have BOM marker. Give NULL * to use system-level default. */ public UnicodeReader(InputStream in, String defaultEnc) { internalIn = new PushbackInputStream(in, BOM_SIZE); this.defaultEnc = defaultEnc; } public String getDefaultEncoding() { return defaultEnc; } /** * Get stream encoding or NULL if stream is uninitialized. Call init() or * read() method to initialize it. */ public String getEncoding() { if (internalIn2 == null) return null; return internalIn2.getEncoding(); } /** * Read-ahead four bytes and check for BOM marks. Extra bytes are unread * back to the stream, only BOM bytes are skipped. */ protected void init() throws IOException { if (internalIn2 != null) return; String encoding; byte bom[] = new byte[BOM_SIZE]; int n, unread; n = internalIn.read(bom, 0, bom.length); if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) && (bom[3] == (byte) 0xFF)) { encoding = "UTF-32BE"; unread = n - 4; } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) && (bom[3] == (byte) 0x00)) { encoding = "UTF-32LE"; unread = n - 4; } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { encoding = "UTF-8"; unread = n - 3; } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { encoding = "UTF-16BE"; unread = n - 2; } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { encoding = "UTF-16LE"; unread = n - 2; } else { // Unicode BOM mark not found, unread all bytes encoding = defaultEnc; unread = n; } // System.out.println("read=" + n + ", unread=" + unread); if (unread > 0) internalIn.unread(bom, (n - unread), unread); // Use given encoding if (encoding == null) { internalIn2 = new InputStreamReader(internalIn); } else { internalIn2 = new InputStreamReader(internalIn, encoding); } } public void close() throws IOException { init(); internalIn2.close(); } public int read(char[] cbuf, int off, int len) throws IOException { init(); return internalIn2.read(cbuf, off, len); } }freemind-0.9.0/freemind/freemind/common/ComboProperty.java0000644000000000000000000001061611527433212022334 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: ComboProperty.java,v 1.1.2.5.2.2 2006/07/25 20:28:19 christianfoltin Exp $*/ package freemind.common; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import com.jgoodies.forms.builder.DefaultFormBuilder; public class ComboProperty extends PropertyBean implements PropertyControl { String description; String label; JComboBox mComboBox = new JComboBox(); private Vector possibleValues; /** * @param pTranslator TODO */ public ComboProperty(String description, String label, String[] possibles, TextTranslator pTranslator) { super(); this.description = description; this.label = label; fillPossibleValues(possibles); Vector possibleTranslations = new Vector(); for (Iterator i = possibleValues.iterator(); i.hasNext();) { String key = (String) i.next(); possibleTranslations.add(pTranslator.getText(key)); } mComboBox.setModel(new DefaultComboBoxModel(possibleTranslations)); mComboBox.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent pE) { firePropertyChangeEvent(); }}); } public ComboProperty(String description, String label, String[] possibles, List possibleTranslations) { this.description = description; this.label = label; fillPossibleValues(possibles); mComboBox.setModel(new DefaultComboBoxModel(new Vector(possibleTranslations))); } public ComboProperty(String description, String label, List possibles, List possibleTranslations) { this.description = description; this.label = label; fillPossibleValues(possibles); mComboBox.setModel(new DefaultComboBoxModel(new Vector(possibleTranslations))); } /** */ private void fillPossibleValues(String[] possibles) { fillPossibleValues(Arrays.asList(possibles)); } /** */ private void fillPossibleValues(List possibles) { this.possibleValues = new Vector(); possibleValues.addAll(possibles); } /** If your combo base changes, call this method to update the values. * The old selected value is not selected, but the first in the list. * Thus, you should call this method only shortly before setting the * value with setValue. */ public void updateComboBoxEntries(List possibles, List possibleTranslations) { mComboBox.setModel(new DefaultComboBoxModel(new Vector(possibleTranslations))); fillPossibleValues(possibles); if (possibles.size()>0) { mComboBox.setSelectedIndex(0); } } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { if (possibleValues.contains(value)) { mComboBox.setSelectedIndex(possibleValues.indexOf(value)); } else { System.err.println("Can't set the value:" + value + " into the combo box "+getLabel()+"/"+getDescription()); if(mComboBox.getModel().getSize()>0) { mComboBox.setSelectedIndex(0); } } } public String getValue() { return (String) possibleValues.get(mComboBox.getSelectedIndex()); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder .append(pTranslator.getText(getLabel()), mComboBox); label.setToolTipText(pTranslator.getText(getDescription())); } public void setEnabled(boolean pEnabled) { mComboBox.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/BooleanProperty.java0000644000000000000000000000607611527433212022661 0ustar rootroot/* * FreeMind - A Program for creating and viewing Mindmaps Copyright (C) * 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * * See COPYING for Details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /* $Id: BooleanProperty.java,v 1.1.2.3.2.3 2009/12/05 23:21:32 christianfoltin Exp $ */ package freemind.common; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JCheckBox; import javax.swing.JLabel; import com.jgoodies.forms.builder.DefaultFormBuilder; public class BooleanProperty extends PropertyBean implements PropertyControl { static public final String FALSE_VALUE = "false"; static public final String TRUE_VALUE = "true"; protected String mFalseValue = FALSE_VALUE; protected String mTrueValue = TRUE_VALUE; String description; String label; JCheckBox mCheckBox = new JCheckBox(); /** */ public BooleanProperty(String description, String label) { super(); this.description = description; this.label = label; mCheckBox.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent pE) { firePropertyChangeEvent(); }}); } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { if (value == null || !(value.toLowerCase().equals(mTrueValue) || value.toLowerCase() .equals(mFalseValue))) { throw new IllegalArgumentException("Cannot set a boolean to '" + value + "', allowed are " + mTrueValue + " and " + mFalseValue + "."); } mCheckBox.setSelected(value.toLowerCase().equals(mTrueValue)); } public String getValue() { return mCheckBox.isSelected() ? mTrueValue : mFalseValue; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder.append( pTranslator.getText(getLabel()), mCheckBox); label.setToolTipText(pTranslator.getText(getDescription())); } public void setEnabled(boolean pEnabled) { mCheckBox.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/NamedObject.java0000644000000000000000000000346311527433212021705 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 08.05.2005 * */ package freemind.common; /** * Utility Class for displaying local object names in GUI components. * * @author Dimitri Polivaev * 18.01.2007 */ public class NamedObject{ private String name; private Object object; private NamedObject(){ } public NamedObject(Object object, String name) { this.object = object; this.name = name; } static public NamedObject literal(String literal){ NamedObject result = new NamedObject(); result.object = literal; result.name = literal; return result; } public boolean equals(Object o){ if (o instanceof NamedObject){ NamedObject ts = (NamedObject)o; return object.equals(ts.object); } return object.equals(o); } public String toString(){ return name; } public Object getObject(){ return object; } } freemind-0.9.0/freemind/freemind/common/NumberProperty.java0000644000000000000000000000703211527433212022523 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: NumberProperty.java,v 1.1.2.3.2.5 2009/01/14 21:18:36 christianfoltin Exp $*/ package freemind.common; import javax.swing.JLabel; import javax.swing.JSlider; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.jgoodies.forms.builder.DefaultFormBuilder; public class NumberProperty extends PropertyBean implements PropertyControl { String description; // JSlider slider; String label; private JSpinner spinner; private final int min; private final int max; private final int step; /** */ public NumberProperty(String description, String label, int min, int max, int step) { this.min = min; this.max = max; this.step = step; // slider = new JSlider(JSlider.HORIZONTAL, 5, 1000, 100); spinner = new JSpinner( new SpinnerNumberModel(min, min, max, step)); this.description = description; this.label = label; spinner.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent pE) { firePropertyChangeEvent(); }}); } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { int intValue = min; try { int parsedIntValue = Integer.parseInt(value); intValue = parsedIntValue; int stepModul = (intValue-min) % step; if(intValue < min || intValue > max || (stepModul != 0)) { System.err.println("Actual value of property " + getLabel() + " is not in the allowed range: "+ value); intValue = min; } } catch(NumberFormatException e){ freemind.main.Resources.getInstance().logException(e); } spinner.setValue(new Integer(intValue)); } public String getValue() { return spinner.getValue().toString(); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { // JLabel label = builder // .append(pTranslator.getText(getLabel()), slider); JLabel label = builder .append(pTranslator.getText(getLabel()), spinner); label.setToolTipText(pTranslator.getText(getDescription())); } public void setEnabled(boolean pEnabled) { spinner.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/OptionalDontShowMeAgainDialog.java0000644000000000000000000001624211527433212025346 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2007 Christian Foltin, Dimitry Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 31.07.2007 */ /*$Id: OptionalDontShowMeAgainDialog.java,v 1.1.2.6 2009/12/09 21:57:39 christianfoltin Exp $*/ package freemind.common; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.AbstractAction; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import freemind.controller.Controller; import freemind.main.FreeMind; import freemind.main.Resources; import freemind.main.Tools; /** * Dialog with a decision that can be disabled. * * @author foltin * */ public class OptionalDontShowMeAgainDialog { public final static int ONLY_OK_SELECTION_IS_STORED = 0; public final static int BOTH_OK_AND_CANCEL_OPTIONS_ARE_STORED = 1; private final String mTitleId; private final String mMessageId; private final TextTranslator mTextTranslator; private final JFrame mParent; private int mResult = JOptionPane.CANCEL_OPTION; private JDialog mDialog; private JCheckBox mDontShowAgainBox; private final DontShowPropertyHandler mDontShowPropertyHandler; private final int mMessageType; private final Component mComponent; public interface DontShowPropertyHandler { /** * @return accepted are the following values as return values: * * "" (means: show this dialog) * * "true" (means: the answer was ok and I want to remember that). * * "false" (means: the answer was cancel and I want to remember that). */ String getProperty(); void setProperty(String pValue); } /** * Standard property handler, if you have a controller and a property. * */ public static class StandardPropertyHandler implements DontShowPropertyHandler { private final Controller mController; private String mPropertyName; public StandardPropertyHandler(Controller pController, String pPropertyName){ mController = pController; mPropertyName = pPropertyName; } public String getProperty() { return mController.getProperty(mPropertyName); } public void setProperty(String pValue) { mController.setProperty(mPropertyName, pValue); } } public OptionalDontShowMeAgainDialog(JFrame pFrame, Component pComponent, String pMessageId, String pTitleId, TextTranslator pTextTranslator, DontShowPropertyHandler pDontShowPropertyHandler, int pMessageType) { mComponent = pComponent; mParent = pFrame; mMessageId = pMessageId; mTitleId = pTitleId; mTextTranslator = pTextTranslator; mDontShowPropertyHandler = pDontShowPropertyHandler; mMessageType = pMessageType; } /** * @return an int from JOptionPane (eg. JOptionPane.OK_OPTION). */ public int getResult() { return mResult; } public OptionalDontShowMeAgainDialog show() { String property = mDontShowPropertyHandler.getProperty(); if(Tools.safeEquals(property, "true")) { mResult = JOptionPane.OK_OPTION; return this; } if(Tools.safeEquals(property, "false")) { mResult = JOptionPane.CANCEL_OPTION; return this; } mDialog = null; mDialog = new JDialog(mParent, mTextTranslator.getText(mTitleId)); mDialog.setModal(true); mDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); AbstractAction cancelAction = new AbstractAction() { public void actionPerformed(ActionEvent pE) { close(JOptionPane.CANCEL_OPTION); } }; AbstractAction okAction = new AbstractAction() { public void actionPerformed(ActionEvent pE) { close(JOptionPane.OK_OPTION); } }; Tools.addEscapeActionToDialog(mDialog, cancelAction); mDialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent pE) { close(JOptionPane.CANCEL_OPTION); } }); mDialog.getContentPane().setLayout(new GridBagLayout()); mDialog.getContentPane().add(new JLabel(mTextTranslator.getText(mMessageId)), new GridBagConstraints(1, 0, 1, 1, 10.0, 4.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 0, 0), 0, 10)); //TODO: Replace by usual java question mark. ImageIcon questionMark = new ImageIcon(Resources.getInstance().getResource("images/icons/help.png")); mDialog.getContentPane().add(new JLabel(questionMark), new GridBagConstraints(0, 0, 1, 2, 1.0, 2.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets( 5, 5, 0, 0), 0, 0)); String boxString; if(mMessageType == ONLY_OK_SELECTION_IS_STORED) { boxString = "OptionalDontShowMeAgainDialog.dontShowAgain"; } else { boxString = "OptionalDontShowMeAgainDialog.rememberMyDescision"; } mDontShowAgainBox = new JCheckBox(mTextTranslator .getText(boxString)); Tools.setLabelAndMnemonic(mDontShowAgainBox, null); mDialog.getContentPane().add(mDontShowAgainBox, new GridBagConstraints(0, 2, 3, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 0, 0), 0, 0)); JButton okButton = new JButton(mTextTranslator .getText("OptionalDontShowMeAgainDialog.ok")); Tools.setLabelAndMnemonic(okButton, null); okButton.addActionListener(okAction); mDialog.getContentPane().add(okButton, new GridBagConstraints(2, 3, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 0, 0), 0, 0)); JButton cancelButton = new JButton(mTextTranslator .getText("OptionalDontShowMeAgainDialog.cancel")); Tools.setLabelAndMnemonic(cancelButton, null); cancelButton.addActionListener(cancelAction); mDialog.getContentPane().add(cancelButton, new GridBagConstraints(3, 3, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 0, 0), 0, 0)); mDialog.getRootPane().setDefaultButton(okButton); mDialog.pack(); Tools.setDialogLocationRelativeTo(mDialog, mComponent); mDialog.setVisible(true); return this; } private void close(int pResult) { mResult = pResult; if(mDontShowAgainBox.isSelected()){ if(mMessageType == ONLY_OK_SELECTION_IS_STORED) { if (mResult == JOptionPane.OK_OPTION) { mDontShowPropertyHandler.setProperty("true"); } } else { mDontShowPropertyHandler.setProperty((mResult==JOptionPane.OK_OPTION)?"true":"false"); } } else { mDontShowPropertyHandler.setProperty(""); } mDialog.setVisible(false); mDialog.dispose(); } } freemind-0.9.0/freemind/freemind/common/RemindValueProperty.java0000644000000000000000000000364411527433212023513 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2007 Christian Foltin, Dimitry Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 07.08.2007 */ /*$Id: RemindValueProperty.java,v 1.1.2.2 2007/12/16 22:05:13 dpolivaev Exp $*/ package freemind.common; import javax.swing.Icon; /** * @author foltin * */ public class RemindValueProperty extends ThreeCheckBoxProperty { private final TextTranslator mTextTranslator; public RemindValueProperty(String pDescription, String pLabel, TextTranslator pTextTranslator) { super(pDescription, pLabel); mTextTranslator = pTextTranslator; mDontTouchValue = ""; } /** * */ protected void setState(int newState) { state = newState; String[] strings; strings = new String[3]; //{MINUS_IMAGE, PLUS_IMAGE, NO_IMAGE}; strings[TRUE_VALUE_INT] = mTextTranslator.getText("OptionalDontShowMeAgainDialog.ok").replaceFirst("&", ""); strings[FALSE_VALUE_INT] = mTextTranslator.getText("OptionalDontShowMeAgainDialog.cancel").replaceFirst("&", ""); strings[DON_T_TOUCH_VALUE_INT] = mTextTranslator.getText("OptionPanel.ask").replaceFirst("&", ""); mButton.setText(strings[state]); } } freemind-0.9.0/freemind/freemind/common/TextTranslator.java0000644000000000000000000000206011527433212022520 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2007 Christian Foltin, Dimitry Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 31.07.2007 */ /*$Id: TextTranslator.java,v 1.1.2.1 2007/08/05 20:33:14 christianfoltin Exp $*/ package freemind.common; public interface TextTranslator { String getText(String pKey); }freemind-0.9.0/freemind/freemind/common/ColorProperty.java0000644000000000000000000001005711527433212022352 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: ColorProperty.java,v 1.1.2.4.2.2 2008/07/24 03:10:36 christianfoltin Exp $*/ package freemind.common; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import com.jgoodies.forms.builder.DefaultFormBuilder; import freemind.controller.Controller; import freemind.main.Tools; public class ColorProperty extends PropertyBean implements PropertyControl, ActionListener { String description; String label; Color color; JButton mButton ; final JPopupMenu menu = new JPopupMenu(); private final String defaultColor; private final TextTranslator mTranslator; /** * @param defaultColor TODO * @param pTranslator TODO */ public ColorProperty(String description, String label, String defaultColor, TextTranslator pTranslator) { super(); this.description = description; this.label = label; this.defaultColor = defaultColor; mTranslator = pTranslator; mButton = new JButton(); mButton.addActionListener(this); color = Color.BLACK; } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { setColorValue(Tools.xmlToColor(value)); } public String getValue() { return Tools.colorToXml(getColorValue()); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder .append(pTranslator.getText(getLabel()), mButton); label.setToolTipText(pTranslator.getText(getDescription())); // add "reset to standard" popup: // Create and add a menu item JMenuItem item = new JMenuItem(mTranslator.getText("ColorProperty.ResetColor")); item.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { setValue(defaultColor); }}); menu.add(item); // Set the component to show the popup menu mButton.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent evt) { if (evt.isPopupTrigger()) { menu.show(evt.getComponent(), evt.getX(), evt.getY()); } } public void mouseReleased(MouseEvent evt) { if (evt.isPopupTrigger()) { menu.show(evt.getComponent(), evt.getX(), evt.getY()); } } }); } public void actionPerformed(ActionEvent arg0) { Color result = Controller.showCommonJColorChooserDialog( mButton.getRootPane(), mTranslator.getText(getLabel()), getColorValue()); if (result != null) { setColorValue(result); firePropertyChangeEvent(); } } /** */ private void setColorValue(Color result) { color = result; if(result == null) { result = Color.WHITE; } mButton.setBackground(result); mButton.setText(Tools.colorToXml(result)); } /** */ private Color getColorValue() { return color; } public void setEnabled(boolean pEnabled) { mButton.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/common/SeparatorProperty.java0000644000000000000000000000302711527433212023233 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: SeparatorProperty.java,v 1.1.2.2 2006/03/14 21:56:27 christianfoltin Exp $*/ package freemind.common; import com.jgoodies.forms.builder.DefaultFormBuilder; public class SeparatorProperty implements PropertyControl { String label; public SeparatorProperty(String label) { super(); this.label = label; } public String getDescription() { return null; } public String getLabel() { return label; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { builder.appendSeparator(pTranslator.getText("separator." + getLabel())); } public void setEnabled(boolean pEnabled) { } }freemind-0.9.0/freemind/freemind/common/ThreeCheckBoxProperty.java0000644000000000000000000001147711527433212023761 0ustar rootroot/* * FreeMind - A Program for creating and viewing Mindmaps Copyright (C) * 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * * See COPYING for Details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /* $Id: ThreeCheckBoxProperty.java,v 1.1.2.1.2.5 2009/03/29 19:37:23 christianfoltin Exp $ */ package freemind.common; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import com.jgoodies.forms.builder.DefaultFormBuilder; import freemind.controller.BlindIcon; import freemind.main.Resources; public class ThreeCheckBoxProperty extends PropertyBean implements PropertyControl { protected String mFalseValue = "false"; protected String mTrueValue = "true"; protected String mDontTouchValue = "don_t_touch"; static public final String FALSE_VALUE = "false"; static public final String TRUE_VALUE = "true"; public static final String DON_T_TOUCH_VALUE = "don_t_touch"; protected static final int DON_T_TOUCH_VALUE_INT = 2; protected static final int TRUE_VALUE_INT = 0; protected static final int FALSE_VALUE_INT = 1; private static final ImageIcon PLUS_IMAGE = new ImageIcon( Resources.getInstance().getResource("images/edit_add.png")); private static final ImageIcon MINUS_IMAGE = new ImageIcon( Resources.getInstance().getResource("images/edit_remove.png")); private static final Icon NO_IMAGE = new BlindIcon(15); String description; String label; int state = 0; JButton mButton = new JButton(); /** */ public ThreeCheckBoxProperty(String description, String label) { super(); this.description = description; this.label = label; // setState(0); mButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setState((getState() + 1) % 3); firePropertyChangeEvent(); } }); } private int getState() { return state; } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { if (value == null || !(value.toLowerCase().equals(mTrueValue) || value.toLowerCase().equals(mFalseValue) || value .toLowerCase().equals(mDontTouchValue))) { throw new IllegalArgumentException("Cannot set a boolean to " + value); } setState(transformString(value)); } private int transformString(String string) { if (string == null) { return DON_T_TOUCH_VALUE_INT; } if (string.toLowerCase().equals(mTrueValue)) { return TRUE_VALUE_INT; } if (string.toLowerCase().equals(mFalseValue)) { return FALSE_VALUE_INT; } return DON_T_TOUCH_VALUE_INT; } public String getValue() { switch (state) { case TRUE_VALUE_INT: return mTrueValue; case FALSE_VALUE_INT: return mFalseValue; case DON_T_TOUCH_VALUE_INT: return mDontTouchValue; } return null; } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder.append(pTranslator.getText(getLabel()), mButton); String tooltiptext = pTranslator.getText(getDescription()); label.setToolTipText(tooltiptext); mButton.setToolTipText(tooltiptext); } public void setEnabled(boolean pEnabled) { mButton.setEnabled(pEnabled); } /** * */ protected void setState(int newState) { state = newState; Icon[] icons; icons = new Icon[3]; //{MINUS_IMAGE, PLUS_IMAGE, NO_IMAGE}; icons[TRUE_VALUE_INT] = PLUS_IMAGE; icons[FALSE_VALUE_INT] = MINUS_IMAGE; icons[DON_T_TOUCH_VALUE_INT] = NO_IMAGE; // mButton.setText(DISPLAY_VALUES[state]); mButton.setIcon(icons[state]); } } freemind-0.9.0/freemind/freemind/common/IconProperty.java0000644000000000000000000000676711527433212022201 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /*$Id: IconProperty.java,v 1.1.2.1.2.4 2007/08/05 22:15:21 dpolivaev Exp $*/ package freemind.common; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.Vector; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JLabel; import com.jgoodies.forms.builder.DefaultFormBuilder; import freemind.main.FreeMindMain; import freemind.main.Tools; import freemind.modes.MindIcon; import freemind.modes.common.dialogs.IconSelectionPopupDialog; public class IconProperty extends PropertyBean implements PropertyControl, ActionListener { String description; String label; JButton mButton; private final FreeMindMain mFreeMindMain; /** * Of IconInformation s. */ private final Vector mIcons; private MindIcon mActualIcon = null; public IconProperty(String description, String label, FreeMindMain frame, Vector icons) { super(); this.description = description; this.label = label; this.mFreeMindMain = frame; this.mIcons = icons; mButton = new JButton(); mButton.addActionListener(this); } public String getDescription() { return description; } public String getLabel() { return label; } public void setValue(String value) { for (Iterator iter = mIcons.iterator(); iter.hasNext();) { MindIcon icon = (MindIcon) iter.next(); if (icon.getName().equals(value)) { mActualIcon = icon; setIcon(mActualIcon); } } } private void setIcon(MindIcon actualIcon) { mButton.setIcon(actualIcon.getIcon()); mButton.setToolTipText(actualIcon.getDescription()); } public String getValue() { return mActualIcon.getName(); } public void layout(DefaultFormBuilder builder, TextTranslator pTranslator) { JLabel label = builder.append(pTranslator.getText(getLabel()), mButton); label.setToolTipText(pTranslator.getText(getDescription())); } public void actionPerformed(ActionEvent arg0) { Vector icons = new Vector(); Vector descriptions = new Vector(); for (Iterator iter = mIcons.iterator(); iter.hasNext();) { MindIcon icon = (MindIcon) iter.next(); icons.add(icon); descriptions.add(icon.getDescription()); } IconSelectionPopupDialog dialog = new IconSelectionPopupDialog( mFreeMindMain.getJFrame(), icons, mFreeMindMain); dialog.setLocationRelativeTo(mFreeMindMain.getJFrame()); dialog.setModal(true); dialog.setVisible(true); int result = dialog.getResult(); if (result >= 0) { MindIcon icon = (MindIcon) mIcons.get(result); setValue(icon.getName()); firePropertyChangeEvent(); } } public void setEnabled(boolean pEnabled) { mButton.setEnabled(pEnabled); } } freemind-0.9.0/freemind/freemind/controller/0000755000000000000000000000000011532143331017550 5ustar rootrootfreemind-0.9.0/freemind/freemind/controller/ColorSwatch.java0000644000000000000000000000303011527433212022643 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.controller; import javax.swing.Icon; import java.awt.Color; import java.awt.Graphics; import java.awt.Component; class ColorSwatch implements Icon { Color color = Color.white; public ColorSwatch() { } public ColorSwatch(Color color) { this.color = color; } public int getIconWidth() { return 11; } public int getIconHeight() { return 11; } Color getColor() { return color; } public void paintIcon(Component c, Graphics g, int x, int y) { g.setColor(Color.black); g.fillRect(x, y, getIconWidth(), getIconHeight()); g.setColor(getColor()); g.fillRect(x+2, y+2, getIconWidth()-4, getIconHeight()-4); } } freemind-0.9.0/freemind/freemind/controller/NodeMotionListener.java0000644000000000000000000000507211527433212024204 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: NodeMotionListener.java,v 1.1.4.3.2.1 2006/04/05 21:26:24 dpolivaev Exp $*/ package freemind.controller; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; /** * The MouseMotionListener which belongs to every NodeView */ public class NodeMotionListener extends MouseAdapter implements MouseMotionListener, MouseListener { public static abstract class NodeMotionAdapter extends MouseAdapter implements MouseMotionListener, MouseListener { } private final Controller c; private NodeMotionAdapter mListener; public NodeMotionListener(Controller controller) { c = controller; } public void register(NodeMotionAdapter listener) { this.mListener = listener; } public void deregister() { mListener = null; } public void mouseClicked(MouseEvent e) { if (mListener != null) mListener.mouseClicked(e); } public void mouseDragged(MouseEvent e) { if (mListener != null) mListener.mouseDragged(e); } public void mouseEntered(MouseEvent e) { if (mListener != null) mListener.mouseEntered(e); } public void mouseExited(MouseEvent e) { if (mListener != null) mListener.mouseExited(e); } public void mouseMoved(MouseEvent e) { if (mListener != null) mListener.mouseMoved(e); } public void mousePressed(MouseEvent e) { if (mListener != null) mListener.mousePressed(e); } public void mouseReleased(MouseEvent e) { if (mListener != null) mListener.mouseReleased(e); } } freemind-0.9.0/freemind/freemind/controller/MindMapNodesSelection.java0000644000000000000000000001067411527433212024613 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on ??? */ /*$Id: MindMapNodesSelection.java,v 1.2.18.2.12.3 2007/02/04 22:02:02 dpolivaev Exp $*/ package freemind.controller; import java.awt.datatransfer.*; import java.io.*; import java.util.List; import java.util.ArrayList; public class MindMapNodesSelection implements Transferable, ClipboardOwner { private String nodesContent; private String stringContent; private String rtfContent; private String htmlContent; private String dropActionContent; private final List fileList; public static DataFlavor mindMapNodesFlavor = null; public static DataFlavor rtfFlavor = null; public static DataFlavor htmlFlavor = null; public static DataFlavor fileListFlavor = null; /** fc, 7.8.2004: This is a quite interisting flavor, but how does it works???*/ public static DataFlavor dropActionFlavor = null; static { try { mindMapNodesFlavor = new DataFlavor("text/freemind-nodes; class=java.lang.String"); rtfFlavor = new DataFlavor("text/rtf; class=java.io.InputStream"); htmlFlavor = new DataFlavor("text/html; class=java.lang.String"); fileListFlavor = new DataFlavor("application/x-java-file-list; class=java.util.List"); dropActionFlavor = new DataFlavor("text/drop-action; class=java.lang.String"); } catch(Exception e) { System.err.println(e); }} // public MindMapNodesSelection(String nodesContent, String stringContent, String rtfContent, String htmlContent, String dropActionContent, List fileList) { this.nodesContent = nodesContent; this.rtfContent = rtfContent; this.stringContent = stringContent; this.dropActionContent = dropActionContent; this.htmlContent = htmlContent; this.fileList = fileList; } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.equals(DataFlavor.stringFlavor)) { return stringContent; } if (flavor.equals(mindMapNodesFlavor)) { return nodesContent; } if (flavor.equals(dropActionFlavor)) { return dropActionContent; } if (flavor.equals(rtfFlavor)) { byte[] byteArray = rtfContent.getBytes(); // for (int i = 0; i < byteArray.length; ++i) { // System.out.println(byteArray[i]); } return new ByteArrayInputStream(byteArray); } if (flavor.equals(htmlFlavor) && htmlContent != null) { return htmlContent; } if(flavor.equals(fileListFlavor)) { return fileList; } throw new UnsupportedFlavorException(flavor); } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { DataFlavor.stringFlavor, mindMapNodesFlavor, rtfFlavor, htmlFlavor, dropActionFlavor}; } public boolean isDataFlavorSupported(DataFlavor flavor) { if(flavor.equals(DataFlavor.stringFlavor) && stringContent != null) return true; if(flavor.equals(mindMapNodesFlavor) && nodesContent != null) return true; if(flavor.equals(rtfFlavor) && rtfContent != null) return true; if(flavor.equals(dropActionFlavor) && dropActionContent != null) return true; if(flavor.equals(htmlFlavor) && htmlContent != null) return true; if(flavor.equals(fileListFlavor) && (fileList != null) && fileList.size()> 0) return true; return false; } public void lostOwnership(Clipboard clipboard, Transferable contents) {} public void setDropAction(String dropActionContent) { this.dropActionContent = dropActionContent; } } freemind-0.9.0/freemind/freemind/controller/FreeMindToolBar.java0000644000000000000000000000440111527433212023372 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 28.03.2004 * */ package freemind.controller; import java.awt.Insets; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JToolBar; import freemind.main.Tools; /** * @author Stefan Zechmeister */ public class FreeMindToolBar extends JToolBar { private static Insets nullInsets = new Insets(0,0,0,0); /** * */ public FreeMindToolBar() { this("", JToolBar.HORIZONTAL); } /** */ public FreeMindToolBar(int arg0) { this("", arg0); } /** */ public FreeMindToolBar(String arg0) { this(arg0, JToolBar.HORIZONTAL); } /** */ public FreeMindToolBar(String arg0, int arg1) { super(arg0, arg1); this.setMargin(nullInsets); setFloatable(false); } /* (non-Javadoc) * @see javax.swing.JToolBar#add(javax.swing.Action) */ public JButton add(Action arg0) { final Object actionName = arg0.getValue(Action.NAME); arg0.putValue(Action.SHORT_DESCRIPTION, Tools.removeMnemonic(actionName.toString())); JButton returnValue = super.add(arg0); returnValue.setName(actionName.toString()); returnValue.setText(""); returnValue.setMargin(nullInsets); returnValue.setFocusable(false); // fc, 20.6.2004: try to make the toolbar looking good under Mac OS X. if (System.getProperty("os.name").startsWith("Mac OS")) { returnValue.setBorderPainted (false); } returnValue.setContentAreaFilled (false); return returnValue; } } freemind-0.9.0/freemind/freemind/controller/MainToolBar.java0000644000000000000000000001120311527433212022563 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: MainToolBar.java,v 1.16.14.2.4.8 2009/07/04 20:38:27 christianfoltin Exp $*/ package freemind.controller; import java.awt.Insets; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JToggleButton; public class MainToolBar extends FreeMindToolBar { private JComboBox zoom; Controller controller; String userDefinedZoom; private static Logger logger= null; public MainToolBar(final Controller controller) { super(); this.setRollover(true); this.controller = controller; if(logger == null) { logger = controller.getFrame().getLogger(this.getClass().getName()); } userDefinedZoom = controller.getResourceString("user_defined_zoom"); add(controller.navigationPreviousMap); add(controller.navigationNextMap); add(controller.printDirect); JToggleButton btnFilter = new JToggleButton (controller.showFilterToolbarAction); // don't paint the border, in order to look like every other toolbar item. //btnFilter.setBorderPainted(false); // set null margin, in order to look like every other toolbar item. btnFilter.setMargin(new Insets(0, 0, 0, 0)); btnFilter.setFocusable(false); btnFilter.setContentAreaFilled(false); btnFilter.setToolTipText(controller.getResourceString("filter_toolbar")); add(btnFilter); zoom = new JComboBox(controller.getZooms()); zoom.setSelectedItem("100%"); zoom.addItem(userDefinedZoom); // Focus fix. zoom.setFocusable(false); add(zoom); zoom.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { // todo: dialog with user zoom value, if user zoom is chosen. // change proposed by dimitri: if (e.getStateChange() == ItemEvent.SELECTED) { setZoomByItem(e.getItem()); } } }); } private void setZoomByItem(Object item) { if (((String) item).equals(userDefinedZoom)) return; // nothing to do... // remove '%' sign final float zoomValue = getZoomValue(item); controller.setZoom(zoomValue); } private float getZoomValue(Object item) { String dirty = (String)item; String cleaned = dirty.substring(0,dirty.length()-1); //change representation ("125" to 1.25) final float zoomValue = Integer.parseInt(cleaned,10)/100F; return zoomValue; } public void zoomOut() { final float currentZoomIndex = getCurrentZoomIndex(); if (currentZoomIndex > 0) { setZoomByItem(zoom.getItemAt((int) (currentZoomIndex - 0.5f))); } } private float getCurrentZoomIndex() { final int selectedIndex = zoom.getSelectedIndex(); final int itemCount = zoom.getItemCount(); if(selectedIndex != itemCount - 1){ return selectedIndex; } final float userZoom = controller.getView().getZoom(); for(int i = 0; i < itemCount - 1; i++){ if (userZoom < getZoomValue(zoom.getItemAt(i))){ return i - 0.5f; } } return itemCount - 0.5f; } public void zoomIn() { final float currentZoomIndex = getCurrentZoomIndex(); if (currentZoomIndex < zoom.getItemCount() - 1) { setZoomByItem(zoom.getItemAt((int) (currentZoomIndex + 1f))); } } public String getItemForZoom(float f) { return (int)(f*100F)+"%"; } public void setZoomComboBox(float f) { logger.fine("setZoomComboBox is called with "+f+"."); String toBeFound = getItemForZoom(f); for(int i = 0; i < zoom.getItemCount(); ++i) { if(toBeFound.equals((String) zoom.getItemAt(i))) { // found zoom.setSelectedItem(toBeFound); return; } } zoom.setSelectedItem(userDefinedZoom); } public void setAllActions(boolean enabled) { if (zoom != null) { zoom.setEnabled(enabled); }} } freemind-0.9.0/freemind/freemind/controller/NodeDragListener.java0000644000000000000000000000664311527433212023621 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.controller; import freemind.main.Resources; import freemind.modes.MindMapNode; import freemind.view.mindmapview.MainView; import freemind.view.mindmapview.NodeView; // Drag & Drop import java.awt.dnd.*; import java.awt.datatransfer.Transferable; import java.awt.event.InputEvent; import java.awt.Cursor; /** * The NodeDragListener which belongs to every * NodeView */ public class NodeDragListener implements DragGestureListener { private final Controller c; public NodeDragListener(Controller controller) { c = controller; } public Cursor getCursorByAction(int dragAction) { switch (dragAction) { case DnDConstants.ACTION_COPY: return DragSource.DefaultCopyDrop; case DnDConstants.ACTION_LINK: return DragSource.DefaultLinkDrop; default: return DragSource.DefaultMoveDrop; } } public void dragGestureRecognized(DragGestureEvent e) { if(!Resources.getInstance().getBoolProperty("draganddrop")) return; MindMapNode node = ((MainView)e.getComponent()).getNodeView().getModel(); if (node.isRoot()) return; //Transferable t; // = new StringSelection(""); String dragAction = "MOVE"; Cursor cursor = getCursorByAction(e.getDragAction()); if ((e.getTriggerEvent().getModifiersEx() & InputEvent.BUTTON3_DOWN_MASK) != 0) { // Change drag action cursor = DragSource.DefaultLinkDrop; dragAction = "LINK"; } if ((e.getTriggerEvent().getModifiersEx() & InputEvent.BUTTON2_DOWN_MASK) != 0) { // Change drag action cursor = DragSource.DefaultCopyDrop; dragAction = "COPY"; } Transferable t = c.getModeController().copy(); //new MindMapNodesSelection("Ahoj","Ahoj","Ahoj", dragAction); ((MindMapNodesSelection)t).setDropAction(dragAction); //public void setDropAction(String dropActionContent) { // starts the dragging // DragSource dragSource = DragSource.getDefaultDragSource(); e.startDrag ( cursor , t, new DragSourceListener() { public void dragDropEnd(DragSourceDropEvent dsde) { } public void dragEnter(DragSourceDragEvent e) { } public void dragExit(DragSourceEvent dse) { } public void dragOver(DragSourceDragEvent dsde) { } public void dropActionChanged(DragSourceDragEvent dsde) { dsde.getDragSourceContext().setCursor(getCursorByAction(dsde.getUserAction())); } } ); } } freemind-0.9.0/freemind/freemind/controller/MapMouseMotionListener.java0000644000000000000000000001002011527433212025032 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: MapMouseMotionListener.java,v 1.7.16.5.2.1 2008/01/04 22:52:30 christianfoltin Exp $*/ package freemind.controller; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JPopupMenu; /** * The MouseListener which belongs to MapView */ public class MapMouseMotionListener implements MouseMotionListener, MouseListener { public interface MapMouseMotionReceiver { public void mouseDragged(MouseEvent e); public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); } private MapMouseMotionReceiver mReceiver; private final Controller c; public MapMouseMotionListener(Controller controller) { c = controller; } public void register(MapMouseMotionReceiver receiver) { mReceiver = receiver; } public void deregister() { mReceiver = null; } private void handlePopup(MouseEvent e) { if (e.isPopupTrigger()) { JPopupMenu popup = null; // detect collision with an element placed on the root pane of the // window. java.lang.Object obj = c.getView().detectCollision(e.getPoint()); if (obj != null) { // there is a collision with object obj. // call the modecontroller to give a popup menu for this object popup = c.getModeController().getPopupForModel(obj); } if (popup == null) { // no context popup found: // normal popup: popup = c.getFrame().getFreeMindMenuBar().getMapsPopupMenu(); } popup.show(e.getComponent(), e.getX(), e.getY()); popup.setVisible(true); } } public void mouseMoved(MouseEvent e) { } public void mouseDragged(MouseEvent e) { if (mReceiver != null) { mReceiver.mouseDragged(e); } } public void mouseClicked(MouseEvent e) { c.getView().selectAsTheOnlyOneSelected(c.getView().getSelected()); // to // loose // the // focus // in // edit } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { // start the move, when the user press the // mouse (PN) handlePopup(e); } else if (mReceiver != null) mReceiver.mousePressed(e); e.consume(); } public void mouseReleased(MouseEvent e) { if (mReceiver != null) { mReceiver.mouseReleased(e); } handlePopup(e); e.consume(); c.getView().setMoveCursor(false); // release the cursor to default // (PN) } } freemind-0.9.0/freemind/freemind/controller/StructuredMenuHolder.java0000644000000000000000000003754311527433212024562 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 21.05.2004 */ /*$Id: StructuredMenuHolder.java,v 1.1.4.7.4.11 2010/09/30 22:38:47 christianfoltin Exp $*/ package freemind.controller; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JSeparator; import javax.swing.JToolBar; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; import freemind.main.HtmlTools; import freemind.main.Resources; import freemind.main.Tools; /** * @author foltin * */ public class StructuredMenuHolder { public static final int ICON_SIZE = 16; private String mOutputString; private static Icon blindIcon = new BlindIcon(ICON_SIZE); private static final String SELECTED_ICON_PATH = "images/button_ok.png"; private static final String SEPARATOR_TEXT = "000"; private static final String ORDER_NAME = "/order"; Map menuMap; private static java.util.logging.Logger logger = null; private int mIndent; private static ImageIcon sSelectedIcon; public StructuredMenuHolder() { if (logger == null) { logger = freemind.main.Resources.getInstance().getLogger( this.getClass().getName()); } menuMap = new HashMap(); Vector order = new Vector(); menuMap.put(ORDER_NAME, order); if(sSelectedIcon == null){ sSelectedIcon = new ImageIcon(Resources.getInstance().getResource(SELECTED_ICON_PATH)); } } /** */ public JMenu addMenu(JMenu item, String category) { StringTokenizer tokens = new StringTokenizer(category, "/"); return (JMenu) addMenu(item, tokens); } /** */ public JMenuItem addMenuItem(JMenuItem item, String category) { StringTokenizer tokens = new StringTokenizer(category, "/"); StructuredMenuItemHolder holder = new StructuredMenuItemHolder(); holder.setAction(item.getAction()); holder.setMenuItem(item); adjustTooltips(holder); addMenu(holder, tokens); return item; } /** */ public JMenuItem addAction(Action item, String category) { StringTokenizer tokens = new StringTokenizer(category, "/"); StructuredMenuItemHolder holder = new StructuredMenuItemHolder(); holder.setAction(item); /* Dimitry, Eric and Dan requested to have the check marks with * the original JCheckBoxMenuItem. */ if (item instanceof MenuItemSelectedListener) { holder.setMenuItem(new JCheckBoxMenuItem(item)); } else { holder.setMenuItem(new JMenuItem(item)); } adjustTooltips(holder); addMenu(holder, tokens); return holder.getMenuItem(); } /** * Under Mac, no HTML is rendered for menus. * @param holder */ private void adjustTooltips(StructuredMenuItemHolder holder) { if(Tools.isMacOsX()) { // remove html tags from tooltips: String toolTipText = holder .getMenuItem().getToolTipText(); if (toolTipText != null) { String toolTipTextWithoutTags = HtmlTools .removeHtmlTagsFromString(toolTipText); logger.finest("Old tool tip: " + toolTipText+", New tool tip: " + toolTipTextWithoutTags); holder.getMenuItem().setToolTipText(toolTipTextWithoutTags); } } } public void addCategory(String category) { StringTokenizer tokens = new StringTokenizer(category+"/blank", "/"); // with this call, the category is created. MapTokenPair categoryPair = getCategoryMap(tokens, menuMap); } public void addSeparator(String category) { String sep = category; if (!sep.endsWith("/")) { sep += "/"; } sep += SEPARATOR_TEXT; StringTokenizer tokens = new StringTokenizer(sep, "/"); // separators can occur as doubles. MapTokenPair categoryPair = getCategoryMap(tokens, menuMap); // add an separator categoryPair.map.put(categoryPair.token, new SeparatorHolder()); categoryPair.order.add(categoryPair.token); } /** */ private Object addMenu(Object item, StringTokenizer tokens) { MapTokenPair categoryPair = getCategoryMap(tokens, menuMap); // add the item: categoryPair.map.put(categoryPair.token, item); categoryPair.order.add(categoryPair.token); return item; } private final class PrintMenuAdder implements MenuAdder { public void addMenuItem(StructuredMenuItemHolder holder) { print("JMenuItem '"+holder.getMenuItem().getActionCommand()+"'"); } public void addSeparator() { print("Separator '"+"'"); } // public void addAction(Action action) { // print("Action '"+action.getValue(Action.NAME)+"'"); // } public void addCategory(String category) { print("Category: '"+category+"'"); } } private class MapTokenPair { Map map; String token; Vector order; MapTokenPair(Map map, String token, Vector order) { this.map = map; this.token = token; this.order = order; } } private MapTokenPair getCategoryMap(StringTokenizer tokens, Map thisMap) { if (tokens.hasMoreTokens()) { String nextToken = tokens.nextToken(); if(tokens.hasMoreTokens()) { if(!thisMap.containsKey(nextToken)) { Map newMap = new HashMap(); Vector newOrder = new Vector(); newMap.put(ORDER_NAME, newOrder); thisMap.put(nextToken, newMap); } Map nextMap = (Map) thisMap.get(nextToken); Vector order = (Vector) thisMap.get(ORDER_NAME); if (!order.contains(nextToken)) { order.add(nextToken); } return getCategoryMap(tokens, nextMap); } else { Vector order = (Vector)thisMap.get(ORDER_NAME); return new MapTokenPair(thisMap, nextToken, order); } } // error case? return null; } public void updateMenus(final JMenuBar myItem, String prefix) { MapTokenPair pair = getCategoryMap(new StringTokenizer(prefix, "/"), menuMap); Map myMap = (Map) pair.map.get(pair.token); updateMenus(new MenuAdder() { public void addMenuItem(StructuredMenuItemHolder holder) { Tools.setLabelAndMnemonic(holder.getMenuItem(), null); myItem.add(holder.getMenuItem()); } public void addSeparator() { throw new NoSuchMethodError("addSeparator for JMenuBar"); } // public void addAction(Action action) { // throw new NoSuchMethodError("addAction for JMenuBar"); // } public void addCategory(String category) { }}, myMap, new DefaultMenuAdderCreator()); } public void updateMenus(final JPopupMenu myItem, String prefix) { MapTokenPair pair = getCategoryMap(new StringTokenizer(prefix, "/"), menuMap); Map myMap = (Map) pair.map.get(pair.token); updateMenus(new MenuAdder() { StructuredMenuListener listener = new StructuredMenuListener(); public void addMenuItem(StructuredMenuItemHolder holder) { Tools.setLabelAndMnemonic(holder.getMenuItem(), null); JMenuItem menuItem = holder.getMenuItem(); adjustMenuItem(menuItem); myItem.add(menuItem); if (myItem instanceof MenuEventSupplier) { MenuEventSupplier receiver = (MenuEventSupplier) myItem; receiver.addMenuListener(listener); listener.addItem(holder); } } public void addSeparator() { if(lastItemIsASeparator(myItem)) return; myItem.addSeparator(); } // public void addAction(Action action) { // myItem.add(action); // } public void addCategory(String category) { }}, myMap, new DefaultMenuAdderCreator()); } /** */ public void updateMenus(final JToolBar bar, String prefix) { MapTokenPair pair = getCategoryMap(new StringTokenizer(prefix, "/"), menuMap); Map myMap = (Map) pair.map.get(pair.token); updateMenus(new MenuAdder() { public void addMenuItem(StructuredMenuItemHolder holder) { bar.add(holder.getAction()); } public void addSeparator() { // no separators to save place. But they look good. fc, 16.6.2005. bar.addSeparator(); } // public void addAction(Action action) { // bar.add(action); // } public void addCategory(String category) { }}, myMap, new DefaultMenuAdderCreator()); } private interface MenuAdder { void addMenuItem(StructuredMenuItemHolder holder); void addSeparator(); // void addAction(Action action); void addCategory(String category); } private static class MenuItemAdder implements MenuAdder { private JMenu myItem; private StructuredMenuListener listener; public MenuItemAdder(JMenu myItem) { this.myItem = myItem; listener = new StructuredMenuListener(); myItem.addMenuListener(listener); } public void addMenuItem(StructuredMenuItemHolder holder) { Tools.setLabelAndMnemonic(holder.getMenuItem(), null); JMenuItem item = holder.getMenuItem(); adjustMenuItem(item); listener.addItem(holder); myItem.add(item); } public void addSeparator() { if(lastItemIsASeparator(myItem)) { return; } myItem.addSeparator(); } // public void addAction(Action action) { // myItem.add(action); // } public void addCategory(String category) { } } /** */ static private void adjustMenuItem(JMenuItem item) { if (item.getIcon() == null) { item.setIcon(blindIcon); } else { // align if (item.getIcon().getIconWidth() < ICON_SIZE) { item.setIconTextGap(item.getIconTextGap() + (ICON_SIZE - item.getIcon().getIconWidth())); } } } private interface MenuAdderCreator { MenuAdder createAdder(JMenu baseObject); } private class DefaultMenuAdderCreator implements MenuAdderCreator { /* (non-Javadoc) * @see freemind.controller.StructuredMenuHolder.MenuAdderCreator#createAdder(javax.swing.JMenu) */ public MenuAdder createAdder(JMenu baseObject) { return new MenuItemAdder(baseObject); } } private class SeparatorHolder { public SeparatorHolder() { } } private void updateMenus(MenuAdder menuAdder, Map thisMap, MenuAdderCreator factory) { //System.out.println(thisMap); // iterate through maps and do the changes: Vector myVector = (Vector) thisMap.get(ORDER_NAME); for (Iterator i = myVector.iterator(); i.hasNext();) { String category = (String) i.next(); // The "." target was handled earlier. if(category.equals(".")) continue; Object nextObject = thisMap.get(category); if(nextObject instanceof SeparatorHolder ) { menuAdder.addSeparator(); continue; } if (nextObject instanceof StructuredMenuItemHolder) { StructuredMenuItemHolder holder = (StructuredMenuItemHolder) nextObject; menuAdder.addMenuItem(holder); }/*if(nextObject instanceof JMenuItem) { menuAdder.addMenuItem((JMenuItem) nextObject); } */ /*else if(nextObject instanceof Action){ menuAdder.addAction((Action) nextObject); } */ else if( nextObject instanceof Map) { menuAdder.addCategory(category); Map nextMap = (Map) nextObject; MenuAdder nextItem ; if(nextMap.containsKey(".")) { // add this item to the current place: JMenu baseObject = (JMenu) nextMap.get("."); StructuredMenuItemHolder holder = new StructuredMenuItemHolder(); holder.setMenuItem(baseObject); menuAdder.addMenuItem(holder); nextItem = factory.createAdder(baseObject); } else { nextItem = menuAdder; } mIndent++; updateMenus(nextItem, nextMap, factory); mIndent--; } } } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { mIndent = 0; mOutputString = ""; updateMenus(new PrintMenuAdder(), menuMap, new PrintMenuAdderCreator()); return mOutputString; } private class PrintMenuAdderCreator implements MenuAdderCreator { /* (non-Javadoc) * @see freemind.controller.StructuredMenuHolder.MenuAdderCreator#createAdder(javax.swing.JMenu) */ public MenuAdder createAdder(JMenu baseObject) { return new PrintMenuAdder(); } } private void print(String string) { for(int i=0; i < mIndent; ++i) { mOutputString+=(" "); } mOutputString += (string)+"\n"; } public interface MenuEventSupplier { void addMenuListener(MenuListener listener); void removeMenuListener(MenuListener listener); } public static class StructuredMenuListener implements javax.swing.event.MenuListener { private Vector menuItemHolder = new Vector(); public StructuredMenuListener() { } public void menuSelected(MenuEvent arg0) { //System.out.println("Selected menu items " + item); for (Iterator i = menuItemHolder.iterator(); i.hasNext();) { StructuredMenuItemHolder holder = (StructuredMenuItemHolder) i.next(); Action action = holder.getAction(); boolean isEnabled = false; JMenuItem menuItem = holder.getMenuItem(); if(holder.getEnabledListener() != null) { try { isEnabled = holder.getEnabledListener().isEnabled( menuItem, action); } catch (Exception e) { Resources.getInstance().logException(e); } //action.setEnabled(isEnabled); menuItem.setEnabled(isEnabled); } isEnabled = menuItem.isEnabled(); if(isEnabled && holder.getSelectionListener() != null) { boolean selected = false; try { selected = holder.getSelectionListener().isSelected( menuItem, action); } catch (Exception e) { Resources.getInstance().logException(e); } if (menuItem instanceof JCheckBoxMenuItem) { JCheckBoxMenuItem checkItem = (JCheckBoxMenuItem) menuItem; checkItem.setSelected(selected); } else { //Do icon change if not a check box menu! setSelected(menuItem, selected); } } } } public void menuDeselected(MenuEvent arg0) { } public void menuCanceled(MenuEvent arg0) { } public void addItem(StructuredMenuItemHolder holder) { menuItemHolder.add(holder); } } public static boolean lastItemIsASeparator(JMenu menu) { if(menu.getItemCount() >0){ if(menu.getMenuComponents()[menu.getItemCount()-1] instanceof JSeparator) { // no separator, if the last was such. return true; } } return false; } public static boolean lastItemIsASeparator(JPopupMenu menu) { if(menu.getComponentCount() >0){ if(menu.getComponent(menu.getComponentCount()-1) instanceof JPopupMenu.Separator) { // no separator, if the last was such. return true; } } return false; } private static void setSelected(JMenuItem menuItem, boolean state) { if (state) { menuItem.setIcon(sSelectedIcon); } else { Icon normalIcon = (Icon) menuItem.getAction().getValue( Action.SMALL_ICON); if(normalIcon == null){ normalIcon = blindIcon; } menuItem.setIcon(normalIcon); } } } freemind-0.9.0/freemind/freemind/controller/MapModuleManager.java0000644000000000000000000003335711527433212023610 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 08.08.2004 */ /*$Id: MapModuleManager.java,v 1.1.4.4.2.14 2008/05/31 10:55:04 dpolivaev Exp $*/ package freemind.controller; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Vector; import freemind.main.Tools; import freemind.modes.MindMap; import freemind.modes.Mode; import freemind.modes.ModeController; import freemind.view.MapModule; import freemind.view.mindmapview.MapView; /** * Manages the list of MapModules. * As this task is very complex, I exported it * from Controller to this class to keep Controller * simple. * * The information exchange between controller and this class is managed by oberser pattern (the controller observes * changes to the map modules here). * * TODO: Use an vector with the map modules ordered by the screen order. */ public class MapModuleManager { public static interface MapModuleChangeObserver { /** The params may be null to indicate the there was no previous map, * or that the last map is closed now. */ boolean isMapModuleChangeAllowed(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode); void beforeMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode); void afterMapClose(MapModule oldMapModule, Mode oldMode); void afterMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode); /** To enable/disable the previous/next map actions. */ void numberOfOpenMapInformation(int number); } public static class MapModuleChangeObserverCompound implements MapModuleChangeObserver { private HashSet listeners = new HashSet(); public void addListener(MapModuleChangeObserver listener) { listeners.add(listener); } public void removeListener(MapModuleChangeObserver listener) { listeners.remove(listener); } public boolean isMapModuleChangeAllowed(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { boolean returnValue = true; for (Iterator iter = new Vector(listeners).iterator(); iter.hasNext();) { MapModuleChangeObserver observer = (MapModuleChangeObserver) iter.next(); returnValue = observer.isMapModuleChangeAllowed(oldMapModule, oldMode, newMapModule, newMode); if(!returnValue){ break; } } return returnValue; } public void beforeMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { for (Iterator iter = new Vector(listeners).iterator(); iter.hasNext();) { MapModuleChangeObserver observer = (MapModuleChangeObserver) iter.next(); observer.beforeMapModuleChange(oldMapModule, oldMode, newMapModule, newMode); } } public void afterMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { for (Iterator iter = new Vector(listeners).iterator(); iter.hasNext();) { MapModuleChangeObserver observer = (MapModuleChangeObserver) iter.next(); observer.afterMapModuleChange(oldMapModule, oldMode, newMapModule, newMode); } } public void numberOfOpenMapInformation(int number) { for (Iterator iter = new Vector(listeners).iterator(); iter.hasNext();) { MapModuleChangeObserver observer = (MapModuleChangeObserver) iter.next(); observer.numberOfOpenMapInformation(number); } } public void afterMapClose(MapModule pOldMapModule, Mode pOldMode) { for (Iterator iter = new Vector(listeners).iterator(); iter.hasNext();) { MapModuleChangeObserver observer = (MapModuleChangeObserver) iter.next(); observer.afterMapClose(pOldMapModule, pOldMode); } } } /** * You can register yourself to this listener at the main controller. */ public static interface MapTitleChangeListener { void setMapTitle(String pNewMapTitle, MapModule pMapModule, MindMap pModel); } MapModuleChangeObserverCompound listener = new MapModuleChangeObserverCompound(); public void addListener(MapModuleChangeObserver pListener) { listener.addListener(pListener); } public void removeListener(MapModuleChangeObserver pListener) { listener.removeListener(pListener); } // /** Contains pairs String (key+extension) => MapModule instances. // * The instances of mode, ie. the Model/View pairs. Normally, the // * order should be the order of insertion, but such a Map is not // * available. */ // private Map mapModules = new HashMap(); /** A vector of MapModule instances. They are ordered according to their screen order. */ private Vector mapModuleVector = new Vector(); /** reference to the current mapmodule; null is allowed, too. */ private MapModule mapModule; /** * Reference to the current mode as the mapModule may be null. */ private Mode mCurrentMode = null; private Controller mController; MapModuleManager(Controller c) { this.mController=c; } /** * @return a map of String to MapModule elements. * @deprecated use getMapModuleVector instead (and get the displayname as MapModule.getDisplayName(). */ public Map getMapModules() { HashMap returnValue = new HashMap(); for (Iterator iterator = mapModuleVector.iterator(); iterator.hasNext();) { MapModule module = (MapModule) iterator.next(); returnValue.put(module.getDisplayName(), module); } return Collections.unmodifiableMap(returnValue); } public List getMapModuleVector() { return Collections.unmodifiableList(mapModuleVector); } /** @return an unmodifiable set of all display names of current opened maps.*/ public List getMapKeys() { LinkedList returnValue = new LinkedList(); for (Iterator iterator = mapModuleVector.iterator(); iterator.hasNext();) { MapModule module = (MapModule) iterator.next(); returnValue.add(module.getDisplayName()); } return Collections.unmodifiableList(returnValue); } public MapModule getMapModule() { return mapModule; } public void newMapModule(MindMap map, ModeController modeController) { MapModule mapModule = new MapModule(map, new MapView(map, mController), modeController.getMode(), modeController); addToOrChangeInMapModules(mapModule.toString(), mapModule); setMapModule(mapModule, modeController.getMode()); } public void updateMapModuleName() { //removeFromViews() doesn't work because MapModuleChanged() //must not be called at this state getMapModule().rename(); addToOrChangeInMapModules(getMapModule().toString(),getMapModule()); setMapModule(getMapModule(), getMapModule().getMode()); } void nextMapModule() { int index; int size = mapModuleVector.size(); if (getMapModule() != null) index = mapModuleVector.indexOf(getMapModule()); else index = size - 1; if (index + 1 < size && index >= 0) { changeToMapModule((MapModule) mapModuleVector.get(index + 1)); } else if (size > 0) { // Change to the first in the list changeToMapModule((MapModule) mapModuleVector.get(0)); } } void previousMapModule() { int index; int size = mapModuleVector.size(); if (getMapModule() != null) index = mapModuleVector.indexOf(getMapModule()); else index = 0; if (index > 0) { changeToMapModule((MapModule) mapModuleVector.get(index - 1)); } else { if (size > 0) { changeToMapModule((MapModule) mapModuleVector.get(size - 1)); } } } // Change MapModules /** * This is the question whether the map is already opened. If this is * the case, the map is automatically opened + returns true. Otherwise * does nothing + returns false. */ public boolean tryToChangeToMapModule(String mapModule) { if (mapModule != null && getMapKeys().contains(mapModule)) { changeToMapModule(mapModule); return true; } else { return false; }} /** * * Checks, whether or not a given url is already opened. Unlike tryToChangeToMapModule, * it does not consider the map+extension identifiers nor switches to the module. * @return null, if not found, the map+extension identifier otherwise. */ public String checkIfFileIsAlreadyOpened(URL urlToCheck) throws MalformedURLException { for (Iterator iter = mapModuleVector.iterator(); iter.hasNext();) { MapModule module = (MapModule) iter.next(); if (module.getModel() != null) { final URL moduleUrl = module.getModel().getURL(); if (sameFile(urlToCheck, moduleUrl)) return module.getDisplayName(); } } return null; } private boolean sameFile(URL urlToCheck, final URL moduleUrl) { if( moduleUrl == null){ return false; } if(urlToCheck.getProtocol().equals("file") && moduleUrl.getProtocol().equals("file")){ return (new File (urlToCheck.getFile())).equals(new File (moduleUrl.getFile())); } return urlToCheck.sameFile(moduleUrl); } public boolean changeToMapModule(String mapModuleDisplayName) { MapModule mapModuleCandidate = null; for (Iterator iterator = mapModuleVector.iterator(); iterator.hasNext();) { MapModule mapMod = (MapModule) iterator.next(); if(Tools.safeEquals(mapModuleDisplayName, mapMod.getDisplayName())) { mapModuleCandidate = mapMod; break; } } if(mapModuleCandidate == null) { throw new IllegalArgumentException("Map module " + mapModuleDisplayName + " not found."); } return changeToMapModule(mapModuleCandidate); } private boolean changeToMapModule(MapModule mapModuleCandidate) { return setMapModule(mapModuleCandidate, mapModuleCandidate.getMode()); } public void changeToMapOfMode(Mode mode) { for (Iterator iterator = mapModuleVector.iterator(); iterator.hasNext();) { MapModule mapMod = (MapModule) iterator.next(); if (mapMod.getMode() == mode) { changeToMapModule(mapMod); return; } } // there is no map with the given mode open. We have to create an empty one? setMapModule(null, mode); //FIXME: Is getting here an error? fc, 25.11.2005. } /** * is null if the old mode should be closed. * @return true if the set command was sucessful. */ boolean setMapModule(MapModule newMapModule, Mode newMode) { // allowed? MapModule oldMapModule = this.mapModule; Mode oldMode = mCurrentMode; if(!listener.isMapModuleChangeAllowed(oldMapModule, oldMode, newMapModule, newMode)){ return false; } listener.beforeMapModuleChange(oldMapModule, oldMode, newMapModule, newMode); this.mapModule = newMapModule; this.mCurrentMode = newMode; listener.afterMapModuleChange(oldMapModule, oldMode, newMapModule, newMode); listener.numberOfOpenMapInformation(mapModuleVector.size()); return true; } //private private void addToOrChangeInMapModules(String key, MapModule newOrChangedMapModule) { // begin bug fix, 20.12.2003, fc. // check, if already present: String extension = ""; int count = 1; List mapKeys = getMapKeys(); while (mapKeys.contains(key+extension)) { extension = "<"+(++count)+">"; } // rename map: newOrChangedMapModule.setName(key+extension); newOrChangedMapModule.setDisplayName(key+extension); if(!mapModuleVector.contains(newOrChangedMapModule)) { mapModuleVector.add(newOrChangedMapModule); } // end bug fix, 20.12.2003, fc. } /** * Close the currently active map, return false if closing canceled. * @param force forces the closing without any save actions. */ public boolean close(boolean force) { // (DP) The mode controller does not close the map MapModule module = getMapModule(); // FIXME: This is not correct, as this class should not ask somebody. // This class is only a list! boolean closingNotCancelled = module.getModeController().close(force, this); if (!closingNotCancelled) { return false; } int index = mapModuleVector.indexOf(module); mapModuleVector.remove(module); if (mapModuleVector.isEmpty()) { /* Keep the current running mode */ setMapModule(null, module.getMode()); } else { if(index >= mapModuleVector.size() || index < 0) { index = mapModuleVector.size()-1; } changeToMapModule((MapModule)mapModuleVector.get(index)); } listener.afterMapClose(module, module.getMode()); return true; } // }} } freemind-0.9.0/freemind/freemind/controller/MenuBar.java0000644000000000000000000004324411527433212021757 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: MenuBar.java,v 1.24.14.17.2.22 2008/11/12 21:44:33 christianfoltin Exp $*/ package freemind.controller; import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import javax.swing.Action; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import freemind.modes.ModeController; import freemind.view.MapModule; /**This is the menu bar for FreeMind. Actions are defined in MenuListener. * Moreover, the StructuredMenuHolder of all menus are hold here. * */ public class MenuBar extends JMenuBar { private static java.util.logging.Logger logger ; public static final String MENU_BAR_PREFIX = "menu_bar/"; public static final String GENERAL_POPUP_PREFIX = "popup/"; public static final String POPUP_MENU = GENERAL_POPUP_PREFIX+"popup/"; public static final String INSERT_MENU = MENU_BAR_PREFIX+"insert/"; public static final String NAVIGATE_MENU = MENU_BAR_PREFIX+"navigate/"; public static final String VIEW_MENU = MENU_BAR_PREFIX+"view/"; public static final String HELP_MENU = MENU_BAR_PREFIX+"help/"; public static final String MINDMAP_MENU = MENU_BAR_PREFIX+"mindmaps/"; private static final String MENU_MINDMAP_CATEGORY = MINDMAP_MENU+"mindmaps"; public static final String MODES_MENU = MINDMAP_MENU; // public static final String MODES_MENU = MENU_BAR_PREFIX+"modes/"; public static final String EDIT_MENU = MENU_BAR_PREFIX+"edit/"; public static final String FILE_MENU = MENU_BAR_PREFIX+"file/"; public static final String FORMAT_MENU = MENU_BAR_PREFIX+"format/"; public static final String EXTRAS_MENU = MENU_BAR_PREFIX+"extras/"; private StructuredMenuHolder menuHolder; JPopupMenu mapsPopupMenu; private JMenu filemenu; private JMenu editmenu; private JMenu mapsmenu; Controller c; ActionListener mapsMenuActionListener = new MapsMenuActionListener(); ActionListener lastOpenedActionListener = new LastOpenedActionListener(); private JMenu formatmenu; public MenuBar(Controller controller) { this.c = controller; if(logger==null) { logger = controller.getFrame().getLogger(this.getClass().getName()); } //updateMenus(); }//Constructor /** * This is the only public method. It restores all menus. * @param newModeController */ public void updateMenus(ModeController newModeController) { this.removeAll(); menuHolder = new StructuredMenuHolder(); // filemenu filemenu = menuHolder.addMenu(new JMenu(c.getResourceString("file")), FILE_MENU+"."); // filemenu.setMnemonic(KeyEvent.VK_F); menuHolder.addCategory(FILE_MENU+"open"); menuHolder.addCategory(FILE_MENU+"close"); menuHolder.addSeparator(FILE_MENU); menuHolder.addCategory(FILE_MENU+"export"); menuHolder.addSeparator(FILE_MENU); menuHolder.addCategory(FILE_MENU+"import"); menuHolder.addSeparator(FILE_MENU); menuHolder.addCategory(FILE_MENU+"print"); menuHolder.addSeparator(FILE_MENU); menuHolder.addCategory(FILE_MENU+"last"); menuHolder.addSeparator(FILE_MENU); menuHolder.addCategory(FILE_MENU+"quit"); // editmenu editmenu = menuHolder.addMenu(new JMenu(c.getResourceString("edit")), EDIT_MENU+"."); menuHolder.addCategory(EDIT_MENU+"undo"); menuHolder.addSeparator(EDIT_MENU); menuHolder.addCategory(EDIT_MENU+"select"); menuHolder.addSeparator(EDIT_MENU); menuHolder.addCategory(EDIT_MENU+"paste"); menuHolder.addSeparator(EDIT_MENU); menuHolder.addCategory(EDIT_MENU+"edit"); menuHolder.addSeparator(EDIT_MENU); menuHolder.addCategory(EDIT_MENU+"find"); //view menu menuHolder.addMenu(new JMenu(c.getResourceString("menu_view")), VIEW_MENU+"."); //insert menu menuHolder.addMenu(new JMenu(c.getResourceString("menu_insert")), INSERT_MENU+"."); menuHolder.addCategory(INSERT_MENU+"nodes"); menuHolder.addSeparator(INSERT_MENU); menuHolder.addCategory(INSERT_MENU+"icons"); menuHolder.addSeparator(INSERT_MENU); //format menu formatmenu = menuHolder.addMenu(new JMenu(c.getResourceString("menu_format")), FORMAT_MENU+"."); //navigate menu menuHolder.addMenu(new JMenu(c.getResourceString("menu_navigate")), NAVIGATE_MENU+"."); //extras menu menuHolder.addMenu(new JMenu(c.getResourceString("menu_extras")), EXTRAS_MENU+"."); menuHolder.addCategory(EXTRAS_MENU+"first"); //Mapsmenu mapsmenu = menuHolder.addMenu(new JMenu(c.getResourceString("mindmaps")), MINDMAP_MENU+"."); // mapsmenu.setMnemonic(KeyEvent.VK_M); menuHolder.addCategory(MINDMAP_MENU+"navigate"); menuHolder.addSeparator(MINDMAP_MENU); menuHolder.addCategory(MENU_MINDMAP_CATEGORY); menuHolder.addSeparator(MINDMAP_MENU); //Modesmenu menuHolder.addCategory(MODES_MENU); // maps popup menu mapsPopupMenu = new FreeMindPopupMenu(); mapsPopupMenu.setName(c.getResourceString("mindmaps")); menuHolder.addCategory(POPUP_MENU+"navigate"); //menuHolder.addSeparator(POPUP_MENU); // formerly, the modes menu was an own menu, but to need less place for the menus, // we integrated it into the maps menu. //JMenu modesmenu = menuHolder.addMenu(new JMenu(c.getResourceString("modes")), MODES_MENU+"."); menuHolder.addMenu(new JMenu(c.getResourceString("help")), HELP_MENU+"."); menuHolder.addAction(c.documentation, HELP_MENU+"doc/documentation"); menuHolder.addAction(c.freemindUrl, HELP_MENU+"doc/freemind"); menuHolder.addAction(c.faq, HELP_MENU+"doc/faq"); menuHolder.addAction(c.keyDocumentation, HELP_MENU+"doc/keyDocumentation"); menuHolder.addSeparator(HELP_MENU); menuHolder.addAction(c.license, HELP_MENU+"about/license"); menuHolder.addAction(c.about, HELP_MENU+"about/about"); updateFileMenu(); updateViewMenu(); updateEditMenu(); updateModeMenu(); updateMapsMenu(menuHolder, MENU_MINDMAP_CATEGORY+"/"); updateMapsMenu(menuHolder, POPUP_MENU); addAdditionalPopupActions(); // the modes: newModeController.updateMenus(menuHolder); menuHolder.updateMenus(this, MENU_BAR_PREFIX); menuHolder.updateMenus(mapsPopupMenu, GENERAL_POPUP_PREFIX); } private void updateModeMenu() { ButtonGroup group = new ButtonGroup(); ActionListener modesMenuActionListener = new ModesMenuActionListener(); List keys = new LinkedList(c.getModes()); for (ListIterator i = keys.listIterator(); i.hasNext();) { String key = (String)i.next(); JRadioButtonMenuItem item = new JRadioButtonMenuItem(c.getResourceString("mode_"+key)); item.setActionCommand(key); JRadioButtonMenuItem newItem = (JRadioButtonMenuItem) menuHolder.addMenuItem(item, MODES_MENU+key); group.add(newItem); if (c.getMode() != null) { newItem.setSelected(c.getMode().toString().equals(key)); } else { newItem.setSelected(false); } String keystroke = c.getFrame().getAdjustableProperty("keystroke_mode_"+key); if (keystroke != null) { newItem.setAccelerator(KeyStroke.getKeyStroke(keystroke)); } newItem.addActionListener(modesMenuActionListener); } } private void addAdditionalPopupActions() { menuHolder.addSeparator(POPUP_MENU); JMenuItem newPopupItem; if (c.getFrame().isApplet()) { // We have enabled hiding of menubar only in applets. It it because // when we hide menubar in application, the key accelerators from // menubar do not work. newPopupItem = menuHolder.addAction(c.toggleMenubar, POPUP_MENU + "toggleMenubar"); newPopupItem.setForeground(new Color(100, 80, 80)); } newPopupItem = menuHolder.addAction(c.toggleToolbar, POPUP_MENU + "toggleToolbar"); newPopupItem.setForeground(new Color(100, 80, 80)); newPopupItem = menuHolder.addAction(c.toggleLeftToolbar, POPUP_MENU+"toggleLeftToolbar"); newPopupItem.setForeground(new Color(100,80,80)); } private void updateMapsMenu(StructuredMenuHolder holder, String basicKey) { MapModuleManager mapModuleManager = c.getMapModuleManager(); List mapModuleVector = mapModuleManager.getMapModuleVector(); if (mapModuleVector == null) { return; } ButtonGroup group = new ButtonGroup(); for (Iterator iterator = mapModuleVector.iterator(); iterator.hasNext();) { MapModule mapModule = (MapModule) iterator.next(); String displayName = mapModule.getDisplayName(); JRadioButtonMenuItem newItem = new JRadioButtonMenuItem(displayName); newItem.setSelected(false); group.add(newItem); newItem.addActionListener(mapsMenuActionListener); newItem.setMnemonic(displayName.charAt(0)); MapModule currentMapModule = mapModuleManager.getMapModule(); if (currentMapModule != null) { if (mapModule == currentMapModule) { newItem.setSelected(true); } } holder.addMenuItem(newItem, basicKey+displayName); } } private void updateFileMenu() { menuHolder.addAction(c.page, FILE_MENU+"print/pageSetup"); JMenuItem print = menuHolder.addAction(c.print, FILE_MENU+"print/print"); print.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_print"))); JMenuItem printPreview = menuHolder.addAction(c.printPreview, FILE_MENU+"print/printPreview"); printPreview.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_print_preview"))); JMenuItem close = menuHolder.addAction(c.close, FILE_MENU+"close/close"); close.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_close"))); JMenuItem quit = menuHolder.addAction(c.quit, FILE_MENU+"quit/quit"); quit.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_quit"))); updateLastOpenedList(); } private void updateLastOpenedList() { menuHolder.addMenu(new JMenu(c.getResourceString("most_recent_files")), FILE_MENU+"last/."); boolean firstElement = true; LastOpenedList lst = c.getLastOpenedList(); for (ListIterator it = lst.listIterator(); it.hasNext();) { String key = (String) it.next(); JMenuItem item = new JMenuItem(key); if (firstElement) { firstElement = false; item.setAccelerator( KeyStroke.getKeyStroke( c.getFrame().getAdjustableProperty( "keystroke_open_first_in_history"))); } item.addActionListener(lastOpenedActionListener); menuHolder.addMenuItem(item, FILE_MENU+"last/"+(key.replace('/', '_'))); } } private void updateEditMenu() { JMenuItem moveToRoot = menuHolder.addAction(c.moveToRoot, NAVIGATE_MENU+"nodes/moveToRoot"); moveToRoot.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_moveToRoot"))); JMenuItem previousMap = menuHolder.addAction(c.navigationPreviousMap, MINDMAP_MENU+"navigate/navigationPreviousMap"); previousMap.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_previousMap"))); JMenuItem nextMap = menuHolder.addAction(c.navigationNextMap, MINDMAP_MENU+"navigate/navigationNextMap"); nextMap.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_nextMap"))); // option menu item moved to mindmap_menus.xml // if (false) { // preferences.add(c.background); // // Background is disabled from preferences, because it has no real function. // // To complete the function, one would either make sure that the color is // // saved and read from auto.properties or think about storing the background // // color into map (just like ). // } } private void updateViewMenu() { JMenuItem toggleToolbar = menuHolder.addAction(c.toggleToolbar, VIEW_MENU+"toolbars/toggleToolbar"); JMenuItem toggleLeftToolbar = menuHolder.addAction(c.toggleLeftToolbar, VIEW_MENU+"toolbars/toggleLeftToolbar"); menuHolder.addSeparator(VIEW_MENU); JMenuItem showSelectionAsRectangle = menuHolder.addAction(c.showSelectionAsRectangle, VIEW_MENU+"general/selectionAsRectangle"); JMenuItem zoomIn = menuHolder.addAction(c.zoomIn, VIEW_MENU+"zoom/zoomIn"); zoomIn.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_zoom_in"))); JMenuItem zoomOut = menuHolder.addAction(c.zoomOut, VIEW_MENU+"zoom/zoomOut"); zoomOut.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_zoom_out"))); menuHolder.addSeparator(VIEW_MENU); menuHolder.addCategory(VIEW_MENU+"note_window"); menuHolder.addSeparator(VIEW_MENU); JMenu attributes = menuHolder.addMenu(new JMenu(c.getResourceString("menu_attributes")), VIEW_MENU+"attributes/."); ButtonGroup buttonGroup = new ButtonGroup(); JRadioButtonMenuItem itemShowAll = (JRadioButtonMenuItem) menuHolder.addMenuItem(new JRadioButtonMenuItem(c.showAllAttributes), VIEW_MENU+"attributes/showAllAttributes"); itemShowAll.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_show_all_attributes"))); buttonGroup.add(itemShowAll); JRadioButtonMenuItem itemShowSelected = (JRadioButtonMenuItem) menuHolder.addMenuItem(new JRadioButtonMenuItem(c.showSelectedAttributes), VIEW_MENU+"attributes/showSelectedAttributes"); itemShowSelected.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_show_selected_attributes"))); buttonGroup.add(itemShowSelected); JRadioButtonMenuItem itemHideAll = (JRadioButtonMenuItem) menuHolder.addMenuItem(new JRadioButtonMenuItem(c.hideAllAttributes), VIEW_MENU+"attributes/hideAllAttributes"); itemHideAll.setAccelerator(KeyStroke.getKeyStroke(c.getFrame().getAdjustableProperty("keystroke_hide_all_attributes"))); buttonGroup.add(itemHideAll); } private void addOptionSet(Action action, String[] textIDs, JMenu menu, String selectedTextID) { ButtonGroup group = new ButtonGroup(); for (int optionIdx = 0; optionIdx < textIDs.length; optionIdx++) { JRadioButtonMenuItem item = new JRadioButtonMenuItem(action); item.setText(c.getResourceString(textIDs[optionIdx])); item.setActionCommand(textIDs[optionIdx]); group.add(item); menu.add(item); if (selectedTextID != null) { item.setSelected(selectedTextID.equals(textIDs[optionIdx])); } // keystroke present? String keystroke = c.getFrame().getAdjustableProperty("keystroke_"+textIDs[optionIdx]); if(keystroke != null) item.setAccelerator(KeyStroke.getKeyStroke(keystroke)); } } JPopupMenu getMapsPopupMenu() { // visible only in controller package return mapsPopupMenu; } /** * This method simpy copy's all elements of the source Menu * to the end of the second menu. */ private void copyMenuItems (JMenu source, JMenu dest) { Component[] items = source.getMenuComponents(); for (int i=0; i= (filterResult & FILTER_SHOW_ECLIPSED) ) && ((options & filterResult & ~FILTER_SHOW_ECLIPSED) != 0); } static public void resetFilter(MindMapNode node){ node.getFilterInfo().reset(); } static void addFilterResult(MindMapNode node, int flag){ node.getFilterInfo().add(flag); } /* (non-Javadoc) * @see freemind.controller.filter.Filter#areMatchedShown() */ public boolean areMatchedShown() { return true; } /* (non-Javadoc) * @see freemind.controller.filter.Filter#areHiddenShown() */ public boolean areHiddenShown() { return false; } /* (non-Javadoc) * @see freemind.controller.filter.Filter#areAncestorsShown() */ public boolean areAncestorsShown() { return 0 != (options & FILTER_SHOW_ANCESTOR) ; } /* (non-Javadoc) * @see freemind.controller.filter.Filter#areDescendantsShown() */ public boolean areDescendantsShown() { return 0 != (options & FILTER_SHOW_DESCENDANT) ; } /* (non-Javadoc) * @see freemind.controller.filter.Filter#areEclipsedShown() */ public boolean areEclipsedShown() { return true; } public Object getCondition(){ return condition; } } freemind-0.9.0/freemind/freemind/controller/filter/FilterToolbar.java0000644000000000000000000002417011527433212024460 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 05.05.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter; import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Box; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JToolBar; import freemind.controller.Controller; import freemind.controller.FreeMindToolBar; import freemind.controller.filter.condition.Condition; import freemind.controller.filter.condition.NoFilteringCondition; import freemind.controller.filter.condition.SelectedViewCondition; import freemind.main.Resources; import freemind.modes.MindMap; import freemind.modes.MindMapNode; class FilterToolbar extends FreeMindToolBar { private FilterController fc; private FilterComposerDialog filterDialog = null; private JComboBox activeFilterConditionComboBox; private JCheckBox showAncestors; private JCheckBox showDescendants; private Filter activeFilter; private JButton btnEdit; private JButton btnUnfoldAncestors; private Controller c; private static Color filterInactiveColor = null; private String pathToFilterFile; private FilterChangeListener filterChangeListener; private class FilterChangeListener extends AbstractAction implements ItemListener, PropertyChangeListener{ /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public FilterChangeListener(){ } public void actionPerformed(ActionEvent arg0) { resetFilter(); setMapFilter(); refreshMap(); DefaultFilter.selectVisibleNode(c.getView()); } /* (non-Javadoc) * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent) */ public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) filterChanged(); } private void filterChanged() { resetFilter(); setMapFilter(); final MindMap map = fc.getMap(); if(map != null){ activeFilter.applyFilter(c); refreshMap(); DefaultFilter.selectVisibleNode(c.getView()); } } public void propertyChange(PropertyChangeEvent evt) { if(evt.getPropertyName().equals("model")){ addStandardConditions(); filterChanged(); } } } private class EditFilterAction extends AbstractAction { EditFilterAction() { super("", new ImageIcon(Resources.getInstance().getResource("images/Btn_edit.gif"))); putValue(SHORT_DESCRIPTION, Resources.getInstance().getResourceString("filter_edit_description")); } /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ private FilterComposerDialog getFilterDialog() { if (filterDialog == null){ filterDialog = new FilterComposerDialog(c, FilterToolbar.this); getFilterDialog().setLocationRelativeTo(FilterToolbar.this); } return filterDialog; } public void actionPerformed(ActionEvent arg0) { Object selectedItem = getFilterConditionModel().getSelectedItem(); if(selectedItem != null){ getFilterDialog().setSelectedItem(selectedItem); } getFilterDialog().show(); } } private class UnfoldAncestorsAction extends AbstractAction { /** * */ UnfoldAncestorsAction() { super("", new ImageIcon(Resources.getInstance().getResource("images/unfold.png"))); } private void unfoldAncestors(MindMapNode parent) { for(Iterator i = parent.childrenUnfolded(); i.hasNext();) { MindMapNode node = (MindMapNode)i.next(); if (showDescendants.isSelected()|| node.getFilterInfo().isAncestor() ){ setFolded(node, false); unfoldAncestors(node) ; } } } private void setFolded(MindMapNode node, boolean state) { if(node.hasChildren() && (node.isFolded()!=state)) { c.getModeController().setFolded(node, state); } } public void actionPerformed(ActionEvent e) { if (getSelectedCondition() != null){ unfoldAncestors(c.getModel().getRootNode()); } } } FilterToolbar(final Controller c) { super(); this.fc = c.getFilterController(); this.c = c; setVisible(false); setFocusable(false); setRollover(true); filterChangeListener = new FilterChangeListener(); add(new JLabel(Resources.getInstance().getResourceString("filter_toolbar") + " ")); activeFilter = null; activeFilterConditionComboBox = new JComboBox(){public Dimension getMaximumSize(){return getPreferredSize();}}; activeFilterConditionComboBox.setFocusable(false); pathToFilterFile = c.getFrame().getFreemindDirectory() + File.separator + "auto." + FilterController.FREEMIND_FILTER_EXTENSION_WITHOUT_DOT; btnEdit = add(new EditFilterAction()); add(btnEdit); btnUnfoldAncestors = add(new UnfoldAncestorsAction()); btnUnfoldAncestors.setToolTipText(Resources.getInstance().getResourceString("filter_unfold_ancestors")); add(btnUnfoldAncestors); showAncestors = new JCheckBox(Resources.getInstance().getResourceString("filter_show_ancestors"), true); add(showAncestors); showAncestors.getModel().addActionListener(filterChangeListener); showDescendants = new JCheckBox(Resources.getInstance().getResourceString("filter_show_descendants"), false); add(showDescendants); showDescendants.getModel().addActionListener(filterChangeListener); } void addStandardConditions() { DefaultComboBoxModel filterConditionModel = fc.getFilterConditionModel(); final Condition noFiltering = NoFilteringCondition.createCondition(); filterConditionModel.insertElementAt(noFiltering, 0); filterConditionModel.insertElementAt(SelectedViewCondition.CreateCondition(), 1); if(filterConditionModel.getSelectedItem()== null){ filterConditionModel.setSelectedItem(noFiltering); } } void initConditions() { try { fc.loadConditions(fc.getFilterConditionModel(), pathToFilterFile); } catch (Exception e) { } addStandardConditions(); activeFilterConditionComboBox.setSelectedIndex(0); activeFilterConditionComboBox.setRenderer(fc.getConditionRenderer()); add(activeFilterConditionComboBox); add(Box.createHorizontalGlue()); activeFilterConditionComboBox.addItemListener(filterChangeListener); activeFilterConditionComboBox.addPropertyChangeListener(filterChangeListener); } /** * */ public void resetFilter() { activeFilter = null; } private Condition getSelectedCondition() { return (Condition)activeFilterConditionComboBox.getSelectedItem(); } void setMapFilter(){ if(activeFilter == null) activeFilter = new DefaultFilter( getSelectedCondition(), showAncestors.getModel().isSelected(), showDescendants.getModel().isSelected() ); final MindMap map = fc.getMap(); if(map != null){ map.setFilter(activeFilter); } } /** */ FilterComposerDialog getFilterDialog() { return filterDialog; } /** */ void mapChanged(MindMap newMap) { if(!isVisible()) return; Filter filter; if(newMap != null){ filter = newMap.getFilter(); if(filter != activeFilter){ activeFilter = filter; activeFilterConditionComboBox.setSelectedItem(filter.getCondition()); showAncestors.setSelected(filter.areAncestorsShown()); showDescendants.setSelected(filter.areDescendantsShown()); } } else{ filter = null; activeFilterConditionComboBox.setSelectedIndex(0); } } private void refreshMap() { fc.refreshMap(); } void saveConditions(){ try { fc.saveConditions(fc.getFilterConditionModel(), pathToFilterFile); } catch (Exception e) { } } ComboBoxModel getFilterConditionModel() { return activeFilterConditionComboBox.getModel(); } void setFilterConditionModel(ComboBoxModel filterConditionModel) { activeFilterConditionComboBox.setModel(filterConditionModel); } } freemind-0.9.0/freemind/freemind/controller/filter/FilterInfo.java0000644000000000000000000000366111527433212023753 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 15.05.2005 * */ package freemind.controller.filter; /** * @author dimitri * 15.05.2005 */ public class FilterInfo { private int info = Filter.FILTER_INITIAL_VALUE; /** * */ public FilterInfo() { super(); } public void reset() { info = Filter.FILTER_INITIAL_VALUE; } public void setAncestor() { add(Filter.FILTER_SHOW_ANCESTOR); } public void setDescendant() { add(Filter.FILTER_SHOW_DESCENDANT); } public void setMatched() { add(Filter.FILTER_SHOW_MATCHED); } void add(int flag){ if ((flag & (Filter.FILTER_SHOW_MATCHED | Filter.FILTER_SHOW_HIDDEN)) != 0){ info &= ~Filter.FILTER_INITIAL_VALUE; } info |= flag; } int get() { return info; } /** */ public boolean isAncestor() { return (info & Filter.FILTER_SHOW_ANCESTOR) != 0; } /** */ public boolean isMatched() { return (info & Filter.FILTER_SHOW_MATCHED) != 0; } } freemind-0.9.0/freemind/freemind/controller/filter/condition/0000755000000000000000000000000011532143331023023 5ustar rootrootfreemind-0.9.0/freemind/freemind/controller/filter/condition/ConjunctConditions.java0000644000000000000000000000707111527433212027514 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 08.05.2005 * */ package freemind.controller.filter.condition; import java.util.Vector; import javax.swing.JComponent; import javax.swing.JLabel; import freemind.controller.Controller; import freemind.controller.filter.FilterController; import freemind.main.Resources; import freemind.main.Tools; import freemind.main.XMLElement; import freemind.modes.MindMapNode; /** * @author dimitri * 08.05.2005 */ public class ConjunctConditions implements Condition { static final String NAME = "conjunct_condition"; private Object[] conditions; /** * */ public ConjunctConditions(Object[] conditions) { this.conditions = conditions; } /* (non-Javadoc) * @see freemind.controller.filter.condition.Condition#checkNode(freemind.modes.MindMapNode) */ public boolean checkNode(Controller c, MindMapNode node) { int i; for(i=0; i -1; } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); super.saveAttributes(child); child.setAttribute(VALUE, value); element.addChild(child); } static Condition load(XMLElement element) { return new IgnoreCaseNodeContainsCondition( element.getStringAttribute(VALUE) ); } protected String createDesctiption() { final String nodeCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_NODE); final String simpleCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_CONTAINS); return ConditionFactory.createDescription(nodeCondition, simpleCondition , value, true); } }freemind-0.9.0/freemind/freemind/controller/filter/condition/ConditionRenderer.java0000644000000000000000000000503211527433212027307 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 06.05.2005 * */ package freemind.controller.filter.condition; import java.awt.Color; import java.awt.Component; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; import freemind.modes.MindIcon; import freemind.main.Resources;; /** * @author dimitri * 06.05.2005 */ public class ConditionRenderer implements ListCellRenderer { final public static Color SELECTED_BACKGROUND = new Color(207, 247, 202); /* (non-Javadoc) * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) */ public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ if(value == null) return new JLabel(Resources.getInstance().getResourceString("filter_no_filtering")); JComponent component; if(value instanceof MindIcon){ component = new JLabel(((MindIcon)value).getIcon()); } else if(value instanceof Condition){ Condition cond = (Condition) value; component = cond.getListCellRendererComponent(); } else{ component = new JLabel(value.toString()); } component.setOpaque(true); if (isSelected){ component.setBackground(SELECTED_BACKGROUND); } else{ component.setBackground(Color.WHITE); } component.setAlignmentX(Component.LEFT_ALIGNMENT); return component; } } freemind-0.9.0/freemind/freemind/controller/filter/condition/AttributeCompareCondition.java0000644000000000000000000000655111527433212031022 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 12.07.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.condition; import freemind.controller.Controller; import freemind.main.Tools; import freemind.main.XMLElement; import freemind.modes.MindMapNode; import freemind.modes.attributes.AttributeTableModel; /** * @author Dimitri Polivaev * 12.07.2005 */ public class AttributeCompareCondition extends CompareConditionAdapter { static final String COMPARATION_RESULT = "comparation_result"; static final String ATTRIBUTE = "attribute"; static final String NAME = "attribute_compare_condition"; static final String SUCCEED = "succeed"; private String attribute; private int comparationResult; private boolean succeed; /** */ public AttributeCompareCondition(String attribute, String value, boolean ignoreCase, int comparationResult, boolean succeed) { super(value, ignoreCase); this.attribute = attribute; this.comparationResult = comparationResult; this.succeed = succeed; } /* (non-Javadoc) * @see freemind.controller.filter.condition.Condition#checkNode(freemind.modes.MindMapNode) */ public boolean checkNode(Controller c, MindMapNode node) { AttributeTableModel attributes = node.getAttributes(); for(int i = 0; i < attributes.getRowCount(); i++){ try{ if (attributes.getValueAt(i, 0).equals(attribute) && succeed == (compareTo(attributes.getValueAt(i, 1).toString()) == comparationResult)) return true; } catch(NumberFormatException fne) { } } return false; } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); super.saveAttributes(child); child.setAttribute(ATTRIBUTE, attribute); child.setIntAttribute(COMPARATION_RESULT, comparationResult); child.setAttribute(SUCCEED, Tools.BooleanToXml(succeed)); element.addChild(child); } static Condition load(XMLElement element) { return new AttributeCompareCondition( element.getStringAttribute(ATTRIBUTE), element.getStringAttribute(AttributeCompareCondition.VALUE), Tools.xmlToBoolean(element.getStringAttribute(AttributeCompareCondition.IGNORE_CASE)), element.getIntAttribute(COMPARATION_RESULT), Tools.xmlToBoolean(element.getStringAttribute(SUCCEED)) ); } protected String createDesctiption() { return super.createDescription(attribute, comparationResult, succeed); } } freemind-0.9.0/freemind/freemind/controller/filter/condition/DisjunctConditions.java0000644000000000000000000000706411527433212027516 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 08.05.2005 * */ package freemind.controller.filter.condition; import java.util.Vector; import javax.swing.JComponent; import javax.swing.JLabel; import freemind.controller.Controller; import freemind.controller.filter.FilterController; import freemind.main.Resources; import freemind.main.Tools; import freemind.main.XMLElement; import freemind.modes.MindMapNode; /** * @author dimitri * 08.05.2005 */ public class DisjunctConditions implements Condition { static final String NAME = "disjunct_condition"; private Object[] conditions; /** * */ public DisjunctConditions(Object[] conditions) { this.conditions = conditions; } /* (non-Javadoc) * @see freemind.controller.filter.condition.Condition#checkNode(freemind.modes.MindMapNode) */ public boolean checkNode(Controller c, MindMapNode node) { int i; for(i=0; i -1; } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); super.saveAttributes(child); child.setAttribute(VALUE, value); element.addChild(child); } static Condition load(XMLElement element) { return new NodeContainsCondition( element.getStringAttribute(VALUE) ); } protected String createDesctiption() { final String nodeCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_NODE); final String simpleCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_CONTAINS); return ConditionFactory.createDescription(nodeCondition, simpleCondition , value, false); } }freemind-0.9.0/freemind/freemind/controller/filter/condition/NodeCompareCondition.java0000644000000000000000000000543211527433212027741 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 17.05.2005 * */ package freemind.controller.filter.condition; import freemind.controller.Controller; import freemind.main.Resources; import freemind.main.XMLElement; import freemind.modes.MindMapNode; import freemind.main.Tools; class NodeCompareCondition extends CompareConditionAdapter{ static final String COMPARATION_RESULT = "comparation_result"; static final String VALUE = "value"; static final String NAME = "node_compare_condition"; static final String SUCCEED = "succeed"; private int comparationResult; private boolean succeed; NodeCompareCondition( String value, boolean ignoreCase, int comparationResult, boolean succeed) { super(value, ignoreCase); this.comparationResult = comparationResult; this.succeed = succeed; } public boolean checkNode(Controller c, MindMapNode node) { try{ return succeed == (compareTo(node.getText()) == comparationResult); } catch(NumberFormatException fne) { return false; } } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); super.saveAttributes(child); child.setIntAttribute(COMPARATION_RESULT, comparationResult); child.setAttribute(SUCCEED, Tools.BooleanToXml(succeed)); element.addChild(child); } static Condition load(XMLElement element) { return new NodeCompareCondition( element.getStringAttribute(VALUE), Tools.xmlToBoolean(element.getStringAttribute(NodeCompareCondition.IGNORE_CASE)), element.getIntAttribute(COMPARATION_RESULT), Tools.xmlToBoolean(element.getStringAttribute(SUCCEED)) ); } protected String createDesctiption() { final String nodeCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_NODE); return super.createDescription(nodeCondition, comparationResult, succeed); } }freemind-0.9.0/freemind/freemind/controller/filter/condition/IconContainedCondition.java0000644000000000000000000000711711527433212030264 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 05.05.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.condition; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; import javax.swing.JComponent; import javax.swing.JLabel; import freemind.controller.Controller; import freemind.main.Resources; import freemind.main.XMLElement; import freemind.modes.MindIcon; import freemind.modes.MindMapNode; public class IconContainedCondition implements Condition { static final String ICON = "icon"; static final String NAME = "icon_contained_condition"; private String iconName; public IconContainedCondition(String iconName){ this.iconName = iconName; } public boolean checkNode(Controller c, MindMapNode node) { return iconFirstIndex(node, iconName) != -1 || isStateIconContained(node, iconName); } static public int iconFirstIndex(MindMapNode node, String iconName) { List icons = node.getIcons(); for (ListIterator i=icons.listIterator(); i.hasNext(); ) { MindIcon nextIcon = (MindIcon) i.next() ; if (iconName.equals(nextIcon.getName())) return i.previousIndex(); } return -1; } static public int iconLastIndex(MindMapNode node, String iconName) { List icons = node.getIcons(); ListIterator i=icons.listIterator(icons.size()); while ( i.hasPrevious()) { MindIcon nextIcon = (MindIcon) i.previous() ; if (iconName.equals(nextIcon.getName())) return i.nextIndex(); } return -1; } private static boolean isStateIconContained(MindMapNode node, String iconName) { Set stateIcons = node.getStateIcons().keySet(); for(Iterator stateIcon = stateIcons.iterator(); stateIcon.hasNext();){ String nextIcon = (String) stateIcon.next() ; if (iconName.equals(nextIcon)) return true; } return false; } /* (non-Javadoc) * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) */ public JComponent getListCellRendererComponent() { JCondition component = new JCondition(); String text = Resources.getInstance().getResourceString("filter_icon") + ' ' + Resources.getInstance().getResourceString("filter_contains") + ' '; component.add(new JLabel(text)); component.add(MindIcon.factory(getIconName()).getRendererComponent()); return component; } private String getIconName() { return iconName; } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); child.setAttribute(ICON, iconName); element.addChild(child); } static Condition load(XMLElement element) { return new IconContainedCondition( element.getStringAttribute(ICON)); } } freemind-0.9.0/freemind/freemind/controller/filter/condition/Condition.java0000644000000000000000000000244211527433212025622 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 05.05.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.condition; import javax.swing.JComponent; import freemind.controller.Controller; import freemind.main.XMLElement; import freemind.modes.MindMapNode; public interface Condition{ boolean checkNode(Controller c, MindMapNode node); public JComponent getListCellRendererComponent(); void save(XMLElement element); } freemind-0.9.0/freemind/freemind/controller/filter/condition/NoFilteringCondition.java0000644000000000000000000000420111527433212027756 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 18.04.2006 * Created by Dimitri Polivaev */ package freemind.controller.filter.condition; import javax.swing.JComponent; import javax.swing.JLabel; import freemind.controller.Controller; import freemind.main.Resources; import freemind.main.XMLElement; import freemind.modes.MindMapNode; public class NoFilteringCondition implements Condition { private static String description; private static JComponent renderer; private static NoFilteringCondition condition; private NoFilteringCondition() { super(); // TODO Auto-generated constructor stub } public String toString(){ if(description == null){ description = Resources.getInstance().getResourceString("filter_no_filtering"); } return description; } public boolean checkNode(Controller c, MindMapNode node) { return true; } public JComponent getListCellRendererComponent() { if(renderer == null){ renderer = new JLabel(description); } return renderer; } public static Condition createCondition(){ if(condition == null){ condition = new NoFilteringCondition(); } return condition; } public void save(XMLElement element) { } } freemind-0.9.0/freemind/freemind/controller/filter/condition/AttributeExistsCondition.java0000644000000000000000000000503311527433212030705 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 12.07.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.condition; import freemind.controller.Controller; import freemind.main.Resources; import freemind.main.XMLElement; import freemind.modes.MindMapNode; import freemind.modes.attributes.AttributeTableModel; /** * @author Dimitri Polivaev * 12.07.2005 */ public class AttributeExistsCondition extends NodeCondition { static final String ATTRIBUTE = "attribute"; static final String NAME = "attribute_exists_condition"; private String attribute; /** */ public AttributeExistsCondition(String attribute) { super(); this.attribute = attribute; } /* (non-Javadoc) * @see freemind.controller.filter.condition.Condition#checkNode(freemind.modes.MindMapNode) */ public boolean checkNode(Controller c, MindMapNode node) { AttributeTableModel attributes = node.getAttributes(); for(int i = 0; i < attributes.getRowCount(); i++){ if (attributes.getValueAt(i, 0).equals(attribute)) return true; } return false; } public void save(XMLElement element) { XMLElement child = new XMLElement(); child.setName(NAME); super.saveAttributes(child); child.setAttribute(ATTRIBUTE, attribute); element.addChild(child); } static Condition load(XMLElement element) { return new AttributeExistsCondition( element.getStringAttribute(ATTRIBUTE)); } protected String createDesctiption() { final String simpleCondition = Resources.getInstance().getResourceString(ConditionFactory.FILTER_EXIST); return ConditionFactory.createDescription(attribute, simpleCondition , null, false); } } freemind-0.9.0/freemind/freemind/controller/filter/FilterComposerDialog.java0000644000000000000000000006646611527433212026003 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 05.05.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Box; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.border.EmptyBorder; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.filechooser.FileFilter; import freemind.common.NamedObject; import freemind.controller.Controller; import freemind.controller.filter.condition.Condition; import freemind.controller.filter.condition.ConditionNotSatisfiedDecorator; import freemind.controller.filter.condition.ConjunctConditions; import freemind.controller.filter.condition.DisjunctConditions; import freemind.controller.filter.util.ExtendedComboBoxModel; import freemind.main.Resources; import freemind.main.Tools; import freemind.modes.MapRegistry; import freemind.modes.MindIcon; import freemind.modes.MindMap; import freemind.modes.ModeController; import freemind.modes.attributes.AttributeRegistry; /** * @author dimitri * */ public class FilterComposerDialog extends JDialog { private static final Dimension maxButtonDimension = new Dimension(1000, 1000); /** * @author dimitri * 06.05.2005 */ private class AddConditionAction extends AbstractAction { /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ AddConditionAction(){ super(); Tools.setLabelAndMnemonic(this, Resources.getInstance().getResourceString("filter_add")); } public void actionPerformed(ActionEvent e) { Condition newCond ; String value; try{ value = getAttributeValue(); } catch(NullPointerException ex){ return; } NamedObject simpleCond = (NamedObject) simpleCondition.getSelectedItem(); boolean ignoreCase = caseInsensitive.isSelected(); Object selectedItem = attributes.getSelectedItem(); if(selectedItem instanceof NamedObject){ NamedObject attribute = (NamedObject) selectedItem; newCond = fc.getConditionFactory().createCondition( attribute, simpleCond, value, ignoreCase); } else{ String attribute = selectedItem.toString(); newCond = fc.getConditionFactory().createAttributeCondition( attribute, simpleCond, value, ignoreCase); } DefaultComboBoxModel model = (DefaultComboBoxModel) conditionList.getModel(); if (newCond != null) model.addElement(newCond); if(values.isEditable()){ Object item = values.getSelectedItem(); if (item != null && !item.equals("")){ values.removeItem(item); values.insertItemAt(item, 0); values.setSelectedIndex(0); if (values.getItemCount() >= 10) values.removeItemAt(9); } } validate(); } } private class DeleteConditionAction extends AbstractAction { /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ DeleteConditionAction(){ super(); Tools.setLabelAndMnemonic(this, Resources.getInstance().getResourceString("filter_delete")); } public void actionPerformed(ActionEvent e) { DefaultComboBoxModel model = (DefaultComboBoxModel)conditionList.getModel(); final int minSelectionIndex = conditionList.getMinSelectionIndex(); int selectedIndex; while(0 <= (selectedIndex = conditionList.getSelectedIndex())){ model.removeElementAt(selectedIndex); } final int size = conditionList.getModel().getSize(); if (size > 0){ conditionList.setSelectedIndex(minSelectionIndex < size ? minSelectionIndex : size - 1); } validate(); } } private class CreateNotSatisfiedConditionAction extends AbstractAction { /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ CreateNotSatisfiedConditionAction(){ super(); Tools.setLabelAndMnemonic(this, Resources.getInstance().getResourceString("filter_not")); } public void actionPerformed(ActionEvent e) { int min = conditionList.getMinSelectionIndex(); if(min >= 0){ int max = conditionList.getMinSelectionIndex(); if(min == max){ Condition oldCond = (Condition)conditionList.getSelectedValue(); Condition newCond = new ConditionNotSatisfiedDecorator(oldCond); DefaultComboBoxModel model = (DefaultComboBoxModel)conditionList.getModel(); model.addElement(newCond); validate(); } } } } private class CreateConjunctConditionAction extends AbstractAction { /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ CreateConjunctConditionAction(){ super(); Tools.setLabelAndMnemonic(this, Resources.getInstance().getResourceString("filter_and")); } public void actionPerformed(ActionEvent e) { Object[] selectedValues = conditionList.getSelectedValues() ; if (selectedValues.length < 2) return; Condition newCond = new ConjunctConditions(selectedValues); DefaultComboBoxModel model = (DefaultComboBoxModel )conditionList.getModel(); model.addElement(newCond); validate(); } } private class CreateDisjunctConditionAction extends AbstractAction { /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ CreateDisjunctConditionAction(){ super(); Tools.setLabelAndMnemonic(this, Resources.getInstance().getResourceString("filter_or")); } public void actionPerformed(ActionEvent e) { Object[] selectedValues = conditionList.getSelectedValues() ; if (selectedValues.length < 2) return; Condition newCond = new DisjunctConditions(selectedValues); DefaultComboBoxModel model = (DefaultComboBoxModel )conditionList.getModel(); model.addElement(newCond); validate(); } } private class ConditionListSelectionListener implements ListSelectionListener , ListDataListener { /* (non-Javadoc) * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent) */ public void valueChanged(ListSelectionEvent e) { if (conditionList.getMinSelectionIndex() == -1){ btnNot.setEnabled(false); btnAnd.setEnabled(false); btnOr.setEnabled(false); btnDelete.setEnabled(false); return; } else if(conditionList.getMinSelectionIndex() == conditionList.getMaxSelectionIndex()){ btnNot.setEnabled(true); btnAnd.setEnabled(false); btnOr.setEnabled(false); btnDelete.setEnabled(true); return; } else { btnNot.setEnabled(false); btnAnd.setEnabled(true); btnOr.setEnabled(true); btnDelete.setEnabled(true); } } public void intervalAdded(ListDataEvent e) { conditionList.setSelectedIndex(e.getIndex0()); } public void intervalRemoved(ListDataEvent e) { } public void contentsChanged(ListDataEvent e) { } } private class ConditionListMouseListener extends MouseAdapter{ public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ EventQueue.invokeLater(new Runnable(){ public void run(){ if(selectCondition()){ dispose(); } } }); } } } private class CloseAction implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if(source == btnOK ||source == btnApply) applyChanges(); if(source == btnOK ||source == btnCancel) dispose(); else initInternalConditionModel(); } } static private class MindMapFilterFileFilter extends FileFilter { static FileFilter filter = new MindMapFilterFileFilter(); public boolean accept(File f) { if (f.isDirectory()) return true; String extension = Tools.getExtension(f.getName()); if (extension != null) { if (extension.equals(FilterController.FREEMIND_FILTER_EXTENSION_WITHOUT_DOT)) { return true; } else { return false; } } return false; } public String getDescription() { return Resources.getInstance().getResourceString("mindmaps_filter_desc"); } } protected JFileChooser getFileChooser() { final ModeController modeController = fc.getMap().getModeController(); JFileChooser chooser = modeController.getFileChooser(MindMapFilterFileFilter.filter); return chooser; } private class SaveAction implements ActionListener { public void actionPerformed(ActionEvent e) { JFileChooser chooser = getFileChooser(); chooser.setDialogTitle(Resources.getInstance().getResourceString("save_as")); int returnVal = chooser.showSaveDialog(FilterComposerDialog.this); if (returnVal != JFileChooser.APPROVE_OPTION) {// not ok pressed return ; } // |= Pressed O.K. try { File f = chooser.getSelectedFile(); String canonicalPath = f.getCanonicalPath(); final String suffix = '.' + FilterController.FREEMIND_FILTER_EXTENSION_WITHOUT_DOT; if (!canonicalPath.endsWith(suffix)){ canonicalPath = canonicalPath + suffix; } fc.saveConditions(internalConditionsModel, canonicalPath); } catch (Exception ex) { handleSavingException (ex); } } private void handleSavingException(Exception ex) { // TODO Auto-generated method stub } } private class LoadAction implements ActionListener { public void actionPerformed(ActionEvent e) { JFileChooser chooser = getFileChooser(); int returnVal = chooser.showOpenDialog(FilterComposerDialog.this); if (returnVal==JFileChooser.APPROVE_OPTION) { try { File theFile = chooser.getSelectedFile(); fc.loadConditions(internalConditionsModel, theFile.getCanonicalPath()); } catch (Exception ex) { handleLoadingException (ex); } { } } } private void handleLoadingException(Exception ex) { // TODO Auto-generated method stub } } private static final int NODE_POSITION = 0; private static final int ICON_POSITION = 1; private class SimpleConditionChangeListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED) { boolean considerValue = ! simpleCondition.getSelectedItem().equals("filter_exist") && ! simpleCondition.getSelectedItem().equals("filter_does_not_exist"); caseInsensitive.setEnabled(considerValue); values.setEnabled(considerValue); } } } private class SelectedAttributeChangeListener implements ItemListener{ /* (non-Javadoc) * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent) */ public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED) { if (attributes.getSelectedIndex() == NODE_POSITION){ simpleCondition.setModel(simpleNodeConditionComboBoxModel); simpleCondition.setEnabled(true); values.setEditable(true); values.setEnabled(true); nodes.setExtensionList(null); values.setModel(nodes); caseInsensitive.setEnabled(true); return; } if (attributes.getSelectedIndex() == ICON_POSITION){ simpleCondition.setModel(simpleIconConditionComboBoxModel); simpleCondition.setSelectedIndex(0); simpleCondition.setEnabled(false); values.setEditable(false); values.setEnabled(true); values.setModel(icons); if(icons.getSize() >= 1){ values.setSelectedIndex(0); } caseInsensitive.setEnabled(false); return; } if (attributes.getSelectedIndex() > NODE_POSITION){ final String attributeName = attributes.getSelectedItem().toString(); nodes.setExtensionList(registeredAttributes.getElement(attributeName).getValues()); values.setModel(nodes); if (values.getSelectedItem() != null){ if(nodes.getSize() >= 1){ values.setSelectedIndex(0); } else{ values.setSelectedItem(null); } } if(simpleCondition.getModel() != simpleAttributeConditionComboBoxModel){ simpleCondition.setModel(simpleAttributeConditionComboBoxModel); simpleCondition.setSelectedIndex(0); } if(simpleCondition.getSelectedIndex() == 0){ caseInsensitive.setEnabled(false); values.setEnabled(false); } values.setEditable(true); simpleCondition.setEnabled(true); return; } } } } private Controller c; private FilterController fc; private JList conditionList; private JComboBox simpleCondition; private JComboBox values; private JComboBox attributes; private FilterToolbar ft; private JButton btnAdd; private JButton btnNot; private JButton btnAnd; private JButton btnOr; private JButton btnDelete; private JCheckBox caseInsensitive; private ExtendedComboBoxModel icons; private ExtendedComboBoxModel nodes; private AttributeRegistry registeredAttributes; private DefaultComboBoxModel simpleNodeConditionComboBoxModel; private DefaultComboBoxModel simpleIconConditionComboBoxModel; private DefaultComboBoxModel simpleAttributeConditionComboBoxModel; private ExtendedComboBoxModel filteredAttributeComboBoxModel; private DefaultComboBoxModel internalConditionsModel; private ComboBoxModel externalConditionsModel; private JButton btnOK; private JButton btnApply; private JButton btnCancel; private JButton btnSave; private JButton btnLoad; private ConditionListSelectionListener conditionListListener; public FilterComposerDialog(Controller c, final FilterToolbar ft) { super(c.getJFrame(), c.getResourceString("filter_dialog")); this.c = c; this.fc = c.getFilterController(); this.ft = ft; final Box simpleConditionBox = Box.createHorizontalBox(); simpleConditionBox.setBorder(new EmptyBorder(5, 0, 5, 0)); getContentPane().add(simpleConditionBox, BorderLayout.NORTH); attributes = new JComboBox(); filteredAttributeComboBoxModel = new ExtendedComboBoxModel(new NamedObject[] { Resources.getInstance().createTranslatedString("filter_node"), Resources.getInstance().createTranslatedString("filter_icon") }); MapRegistry registry = c.getModel().getRegistry(); registeredAttributes = registry.getAttributes(); filteredAttributeComboBoxModel.setExtensionList(registeredAttributes.getListBoxModel()); attributes.setModel(filteredAttributeComboBoxModel); attributes.addItemListener(new SelectedAttributeChangeListener()); simpleConditionBox.add(Box.createHorizontalGlue()); simpleConditionBox.add(attributes); attributes.setRenderer(fc.getConditionRenderer()); simpleNodeConditionComboBoxModel = new DefaultComboBoxModel(fc.getConditionFactory().getNodeConditionNames()); simpleIconConditionComboBoxModel = new DefaultComboBoxModel(fc.getConditionFactory().getIconConditionNames()); simpleCondition = new JComboBox(); simpleCondition.setModel(simpleNodeConditionComboBoxModel); simpleCondition.addItemListener(new SimpleConditionChangeListener()); simpleConditionBox.add(Box.createHorizontalGlue()); simpleConditionBox.add(simpleCondition); simpleCondition.setRenderer(fc.getConditionRenderer()); simpleAttributeConditionComboBoxModel = new DefaultComboBoxModel(fc.getConditionFactory().getAttributeConditionNames()); values = new JComboBox(); nodes = new ExtendedComboBoxModel(); values.setModel(nodes); simpleConditionBox.add(Box.createHorizontalGlue()); simpleConditionBox.add(values); values.setRenderer(fc.getConditionRenderer()); values.setEditable(true); icons = new ExtendedComboBoxModel(); icons.setExtensionList(registry.getIcons()); caseInsensitive = new JCheckBox(); simpleConditionBox.add(Box.createHorizontalGlue()); simpleConditionBox.add(caseInsensitive); caseInsensitive.setText(Resources.getInstance().getResourceString("filter_ignore_case")); final Box conditionButtonBox = Box.createVerticalBox(); conditionButtonBox.setBorder(new EmptyBorder(0, 10, 0, 10)); getContentPane().add(conditionButtonBox, BorderLayout.EAST); btnAdd = new JButton(new AddConditionAction()); btnAdd.setMaximumSize(maxButtonDimension); conditionButtonBox.add(Box.createVerticalGlue()); conditionButtonBox.add(btnAdd); btnNot = new JButton(new CreateNotSatisfiedConditionAction()); conditionButtonBox.add(Box.createVerticalGlue()); btnNot.setMaximumSize(maxButtonDimension); conditionButtonBox.add(btnNot); btnNot.setEnabled(false); btnAnd = new JButton(new CreateConjunctConditionAction()); conditionButtonBox.add(Box.createVerticalGlue()); btnAnd.setMaximumSize(maxButtonDimension); conditionButtonBox.add(btnAnd); btnAnd.setEnabled(false); btnOr = new JButton(new CreateDisjunctConditionAction()); conditionButtonBox.add(Box.createVerticalGlue()); btnOr.setMaximumSize(maxButtonDimension); conditionButtonBox.add(btnOr); btnOr.setEnabled(false); btnDelete = new JButton(new DeleteConditionAction()); btnDelete.setEnabled(false); conditionButtonBox.add(Box.createVerticalGlue()); btnDelete.setMaximumSize(maxButtonDimension); conditionButtonBox.add(btnDelete); conditionButtonBox.add(Box.createVerticalGlue()); final Box controllerBox = Box.createHorizontalBox(); controllerBox.setBorder(new EmptyBorder(5, 0, 5, 0)); getContentPane().add(controllerBox, BorderLayout.SOUTH); CloseAction closeAction = new CloseAction(); btnOK = new JButton(); Tools.setLabelAndMnemonic(btnOK, Resources.getInstance().getResourceString("ok")); btnOK.addActionListener(closeAction); btnOK.setMaximumSize(maxButtonDimension); btnApply = new JButton(); Tools.setLabelAndMnemonic(btnApply, Resources.getInstance().getResourceString("apply")); btnApply.addActionListener(closeAction); btnApply.setMaximumSize(maxButtonDimension); btnCancel = new JButton(); Tools.setLabelAndMnemonic(btnCancel, Resources.getInstance().getResourceString("cancel")); btnCancel.addActionListener(closeAction); btnCancel.setMaximumSize(maxButtonDimension); controllerBox.add(Box.createHorizontalGlue()); controllerBox.add(btnOK); controllerBox.add(Box.createHorizontalGlue()); controllerBox.add(btnApply); controllerBox.add(Box.createHorizontalGlue()); controllerBox.add(btnCancel); controllerBox.add(Box.createHorizontalGlue()); if(! c.getFrame().isApplet()){ ActionListener saveAction = new SaveAction(); btnSave = new JButton(); Tools.setLabelAndMnemonic(btnSave, Resources.getInstance().getResourceString("save")); btnSave.addActionListener(saveAction); btnSave.setMaximumSize(maxButtonDimension); ActionListener loadAction = new LoadAction(); btnLoad = new JButton(); Tools.setLabelAndMnemonic(btnLoad, Resources.getInstance().getResourceString("load")); btnLoad.addActionListener(loadAction); btnLoad.setMaximumSize(maxButtonDimension); controllerBox.add(btnSave); controllerBox.add(Box.createHorizontalGlue()); controllerBox.add(btnLoad); controllerBox.add(Box.createHorizontalGlue()); } conditionList = new JList(); conditionList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); conditionList.setCellRenderer(fc.getConditionRenderer()); conditionList.setLayoutOrientation(JList.VERTICAL); conditionList.setAlignmentX(Component.LEFT_ALIGNMENT); conditionListListener = new ConditionListSelectionListener(); conditionList.addListSelectionListener(conditionListListener); conditionList.addMouseListener(new ConditionListMouseListener()); final JScrollPane conditionScrollPane = new JScrollPane(conditionList); JLabel conditionColumnHeader = new JLabel(Resources.getInstance().getResourceString("filter_conditions")); conditionColumnHeader.setHorizontalAlignment(JLabel.CENTER); conditionScrollPane.setColumnHeaderView(conditionColumnHeader); conditionScrollPane.setPreferredSize(new Dimension(500, 200)); getContentPane().add(conditionScrollPane, BorderLayout.CENTER); Tools.addEscapeActionToDialog(this); pack(); } private String getAttributeValue() { if (attributes.getSelectedIndex() == ICON_POSITION){ MindIcon mi = (MindIcon)values.getSelectedItem(); return mi.getName(); } Object item = values.getSelectedItem(); return item != null ? item.toString() : ""; } /** */ void mapChanged(MindMap newMap) { if(newMap != null){ icons.setExtensionList(newMap.getRegistry().getIcons()); if(icons.getSize() >= 1 && values.getModel()==icons){ values.setSelectedIndex(0); } else{ values.setSelectedIndex(-1); if(values.getModel()==icons){ values.setSelectedItem(null); } } if(attributes.getSelectedIndex() > 1) attributes.setSelectedIndex(0); registeredAttributes = newMap.getRegistry().getAttributes(); filteredAttributeComboBoxModel.setExtensionList(registeredAttributes.getListBoxModel()); } else{ icons.setExtensionList(null); values.setSelectedIndex(-1); attributes.setSelectedIndex(0); filteredAttributeComboBoxModel.setExtensionList(null); } } private boolean selectCondition() { int min = conditionList.getMinSelectionIndex(); if(min >= 0){ int max = conditionList.getMinSelectionIndex(); if(min == max){ applyChanges(); return true; } } return false; } /** */ public void setSelectedItem(Object selectedItem) { conditionList.setSelectedValue(selectedItem, true); } public void show() { initInternalConditionModel(); super.show(); } private void initInternalConditionModel() { externalConditionsModel = fc.getFilterConditionModel(); if(internalConditionsModel == null){ internalConditionsModel = new DefaultComboBoxModel(); internalConditionsModel.addListDataListener(conditionListListener); conditionList.setModel(internalConditionsModel); } else{ internalConditionsModel.removeAllElements(); } int index = -1; for (int i = 2; i < externalConditionsModel.getSize(); i++){ final Object element = externalConditionsModel.getElementAt(i); internalConditionsModel.addElement(element); if(element == externalConditionsModel.getSelectedItem()){ index = i - 2; } } if(index >= 0){ conditionList.setSelectedIndex(index); } else{ conditionList.clearSelection(); } } private void applyChanges() { internalConditionsModel.setSelectedItem(conditionList.getSelectedValue()); internalConditionsModel.removeListDataListener(conditionListListener); fc.setFilterConditionModel(internalConditionsModel); internalConditionsModel = null; } } freemind-0.9.0/freemind/freemind/controller/filter/FilterController.java0000644000000000000000000001623111527433212025200 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 05.05.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.util.Vector; import javax.swing.AbstractAction; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import freemind.controller.Controller; import freemind.controller.MapModuleManager.MapModuleChangeObserver; import freemind.controller.filter.condition.Condition; import freemind.controller.filter.condition.ConditionFactory; import freemind.controller.filter.condition.ConditionRenderer; import freemind.controller.filter.condition.NoFilteringCondition; import freemind.controller.filter.condition.SelectedViewCondition; import freemind.main.Resources; import freemind.main.XMLElement; import freemind.modes.MindIcon; import freemind.modes.MindMap; import freemind.modes.MindMapNode; import freemind.modes.Mode; import freemind.modes.common.plugins.NodeNoteBase; import freemind.view.MapModule; import freemind.view.mindmapview.NodeView; /** * @author dimitri * */ public class FilterController implements MapModuleChangeObserver{ private Controller c; private FilterToolbar filterToolbar; private DefaultComboBoxModel filterConditionModel; static private ConditionRenderer conditionRenderer = null; static private ConditionFactory conditionFactory; private MindMap map; static final String FREEMIND_FILTER_EXTENSION_WITHOUT_DOT = "mmfilter"; private static Filter inactiveFilter; public FilterController(Controller c){ this.c = c; c.getMapModuleManager().addListener(this); } ConditionRenderer getConditionRenderer() { if(conditionRenderer == null) conditionRenderer = new ConditionRenderer(); return conditionRenderer; } /** */ public FilterToolbar getFilterToolbar() { if(filterToolbar == null){ filterToolbar = new FilterToolbar(c); filterConditionModel = (DefaultComboBoxModel)filterToolbar.getFilterConditionModel(); //FIXME state icons should be created on order to make possible // their use in the filter component. // It should not happen here. MindIcon.factory("AttributeExist", new ImageIcon(Resources.getInstance().getResource("images/showAttributes.gif"))); MindIcon.factory(NodeNoteBase.NODE_NOTE_ICON, new ImageIcon(Resources.getInstance().getResource("images/knotes.png"))); MindIcon.factory("encrypted"); MindIcon.factory("decrypted"); filterToolbar.initConditions(); } return filterToolbar; } /** */ public void showFilterToolbar(boolean show){ if (show == getFilterToolbar().isVisible()) return; getFilterToolbar().setVisible(show); final Filter filter = getMap().getFilter(); if (show){ filter.applyFilter(c); } else{ createTransparentFilter().applyFilter(c); } refreshMap(); } void refreshMap() { c.getModeController().refreshMap(); } static public ConditionFactory getConditionFactory(){ if(conditionFactory == null) conditionFactory = new ConditionFactory(); return conditionFactory; } /** */ public MindMap getMap() { return map; } /** * @param filterToolbar The filterToolbar to set. */ private void setFilterToolbar(FilterToolbar filterToolbar) { this.filterToolbar = filterToolbar; } public boolean isMapModuleChangeAllowed(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { return true; } public void beforeMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { } public void afterMapClose(MapModule pOldMapModule, Mode pOldMode) { } public void afterMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { MindMap newMap = newMapModule != null ? newMapModule.getModel() : null; FilterComposerDialog fd = getFilterToolbar().getFilterDialog(); if (fd != null){ fd.mapChanged(newMap); } map = newMap; getFilterToolbar().mapChanged(newMap); } public void numberOfOpenMapInformation(int number) { } private static Filter createTransparentFilter(){ if(inactiveFilter == null) inactiveFilter = new DefaultFilter(NoFilteringCondition.createCondition(), true, false); return inactiveFilter; } public void saveConditions(){ if(filterToolbar != null){ filterToolbar.saveConditions(); } } public DefaultComboBoxModel getFilterConditionModel() { return filterConditionModel; } public void setFilterConditionModel(DefaultComboBoxModel filterConditionModel) { this.filterConditionModel = filterConditionModel; filterToolbar.setFilterConditionModel(filterConditionModel); } void saveConditions(DefaultComboBoxModel filterConditionModel, String pathToFilterFile) throws IOException{ XMLElement saver = new XMLElement(); saver.setName("filter_conditions"); Writer writer = new FileWriter(pathToFilterFile); for(int i = 0; i < filterConditionModel.getSize(); i++){ Condition cond = (Condition)filterConditionModel.getElementAt(i); cond.save(saver); } saver.write(writer); writer.close(); } void loadConditions(DefaultComboBoxModel filterConditionModel, String pathToFilterFile) throws IOException{ filterConditionModel.removeAllElements(); XMLElement loader = new XMLElement(); Reader reader = new FileReader(pathToFilterFile); loader.parseFromReader(reader); reader.close(); final Vector conditions = loader.getChildren(); for(int i = 0; i < conditions.size(); i++){ filterConditionModel.addElement(FilterController.getConditionFactory().loadCondition((XMLElement)conditions.get(i))); } } } freemind-0.9.0/freemind/freemind/controller/filter/Filter.java0000644000000000000000000000313111527433212023127 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 07.05.2005 * */ package freemind.controller.filter; import freemind.controller.Controller; import freemind.modes.MindMapNode; /** * @author dimitri * 07.05.2005 */ public interface Filter { public static final int FILTER_INITIAL_VALUE = 1; static final int FILTER_SHOW_MATCHED = 2; static final int FILTER_SHOW_ANCESTOR = 4; static final int FILTER_SHOW_DESCENDANT = 8; static final int FILTER_SHOW_ECLIPSED = 16; static final int FILTER_SHOW_HIDDEN = 32; void applyFilter(Controller c); boolean isVisible(MindMapNode node); boolean areMatchedShown(); boolean areHiddenShown(); boolean areAncestorsShown(); boolean areDescendantsShown(); boolean areEclipsedShown(); Object getCondition(); } freemind-0.9.0/freemind/freemind/controller/filter/util/0000755000000000000000000000000011532143331022012 5ustar rootrootfreemind-0.9.0/freemind/freemind/controller/filter/util/SortedComboBoxModel.java0000644000000000000000000000307411527433212026537 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 10.07.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.util; import javax.swing.ComboBoxModel; /** * @author Dimitri Polivaev * 10.07.2005 */ public class SortedComboBoxModel extends SortedMapListModel implements SortedListModel, ComboBoxModel { private Object selectedItem; /* (non-Javadoc) * @see javax.swing.ComboBoxModel#setSelectedItem(java.lang.Object) */ public void setSelectedItem(Object o) { selectedItem = o; fireContentsChanged(this, -1, -1); } /* (non-Javadoc) * @see javax.swing.ComboBoxModel#getSelectedItem() */ public Object getSelectedItem() { return selectedItem; } } freemind-0.9.0/freemind/freemind/controller/filter/util/SortedMapListModel.java0000644000000000000000000000547111527433212026403 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 14.05.2005 * */ package freemind.controller.filter.util; import javax.swing.*; import java.util.*; public class SortedMapListModel extends AbstractListModel implements SortedListModel { SortedSet model; public SortedMapListModel() { model = new TreeSet(); } public int getSize() { return model.size(); } public Object getElementAt(int index) { return model.toArray()[index]; } public void add(Object element) { if (model.add(element)) { fireContentsChanged(this, 0, getSize()); } } public void addAll(Object elements[]) { Collection c = Arrays.asList(elements); model.addAll(c); fireContentsChanged(this, 0, getSize()); } public void clear() { int oldSize = getSize(); if(oldSize > 0){ model.clear(); fireIntervalRemoved(this, 0, oldSize-1); } } public boolean contains(Object element) { return model.contains(element); } public Object firstElement() { return model.first(); } public Iterator iterator() { return model.iterator(); } public Object lastElement() { return model.last(); } /** */ public int getIndexOf(Object o) { Iterator i = iterator(); int count = -1; while(i.hasNext()){ count++; if (i.next().equals(o)) return count; } return -1; } /* (non-Javadoc) * @see freemind.controller.filter.util.SortedListModel#replace(java.lang.Object, java.lang.Object) */ public void replace(Object oldO, Object newO) { if(oldO.equals(newO)) return; boolean removed = model.remove(oldO); boolean added = model.add(newO); if(removed || added) { fireContentsChanged(this, 0, getSize()); } } /* (non-Javadoc) * @see freemind.controller.filter.util.SortedListModel#delete(java.lang.Object) */ public void remove(Object element) { if (model.remove(element)) { fireContentsChanged(this, 0, getSize()); } } } freemind-0.9.0/freemind/freemind/controller/filter/util/SortedListModel.java0000644000000000000000000000256411527433212025745 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 18.06.2005 * Copyright (C) 2005 Dimitri Polivaev * */ package freemind.controller.filter.util; import javax.swing.ListModel; /** * @author Dimitri Polivaev * 18.06.2005 */ public interface SortedListModel extends ListModel{ /** * */ void clear(); /** */ boolean contains(Object o); /** */ void add(Object o); void replace(Object oldO, Object newO); void remove(Object o); /** */ int getIndexOf(Object o); } freemind-0.9.0/freemind/freemind/controller/filter/util/ExtendedComboBoxModel.java0000644000000000000000000001163111527433212027035 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 14.05.2005 * */ package freemind.controller.filter.util; import java.util.Vector; import javax.swing.DefaultComboBoxModel; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; /** * @author dimitri * 14.05.2005 */ public class ExtendedComboBoxModel extends DefaultComboBoxModel { private class ExtensionDataListener implements ListDataListener{ /* (non-Javadoc) * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent) */ public void intervalAdded(ListDataEvent e) { int size = getOwnSize(); fireIntervalAdded(getModel(), size + e.getIndex0(), size + e.getIndex1()); } /* (non-Javadoc) * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent) */ public void intervalRemoved(ListDataEvent e) { int size = getOwnSize(); fireIntervalRemoved(getModel(), size + e.getIndex0(), size + e.getIndex1()); } /* (non-Javadoc) * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent) */ public void contentsChanged(ListDataEvent e) { int size = getOwnSize(); fireContentsChanged(getModel(), size + e.getIndex0(), size + e.getIndex1()); } } private SortedListModel extension = null; private ExtensionDataListener extensionDataListener = new ExtensionDataListener(); /** */ public void setExtensionList(final SortedListModel sortedListModel) { final int ownSize = getOwnSize(); { if (extension != null){ extension.removeListDataListener(extensionDataListener); final int extensionSize = getExtensionSize(); if (extensionSize > 0){ fireIntervalRemoved(this, ownSize, ownSize + extensionSize - 1); } } } { extension = sortedListModel; final int extensionSize = getExtensionSize(); if (extensionSize > 0){ fireIntervalAdded(this, ownSize, ownSize + extensionSize - 1); } if (extension != null){ extension.addListDataListener(extensionDataListener); } } } public ExtendedComboBoxModel() { super(); } public ExtendedComboBoxModel(Object[] o) { super(o); } public ExtendedComboBoxModel(Vector v) { super(v); } public Object getElementAt(int i) { int s = getOwnSize(); if (i < s || extension == null) return super.getElementAt(i); return extension.getElementAt(i - s); } public int getSize() { return getOwnSize() + getExtensionSize(); } private int getExtensionSize() { return extension != null ? extension.getSize() : 0; } /** */ private int getOwnSize() { return super.getSize(); } private ExtendedComboBoxModel getModel(){ return this; } public void insertElementAt(Object o, int i) { super.insertElementAt(o, Math.min(getOwnSize(), i)); } public void removeAllElements() { super.removeAllElements(); if (extension != null){ extension.clear(); } } public void removeElement(Object o) { super.removeElement(o); } public void removeElementAt(int i) { if (i < getOwnSize()) super.removeElementAt(i); } public void addSortedElement(Object o){ if (extension != null && ! extension.contains(o)){ extension.add(o); } } public int getIndexOf(Object o) { int idx = super.getIndexOf(o); if (idx > -1 || extension == null) { return idx; } int extIdx = extension.getIndexOf(o); return extIdx>-1 ? extIdx + getOwnSize() : -1; } } freemind-0.9.0/freemind/freemind/controller/filter/util/SortedMapVector.java0000644000000000000000000001176211527433212025751 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 18.06.2005 * Copyright (C) 2005 Dimitri Polivaev */ package freemind.controller.filter.util; import java.util.NoSuchElementException; import java.util.Vector; /** * @author Dimitri Polivaev * 18.06.2005 */ public class SortedMapVector{ private static class MapElement{ private Comparable key; private Object value; public MapElement(Comparable key, Object value) { super(); this.key = key; this.value = value; } Object getValue() { return value; } void setValue(Object value) { this.value = value; } Comparable getKey() { return key; } } private Vector elements; private static final int ELEMENT_NOT_FOUND_FLAG = 1 << 31; private static final int CAPACITY_INCREMENT = 10; public SortedMapVector() { elements =new Vector(0, CAPACITY_INCREMENT); } public int add(Comparable key, Object value) { int index = findElement(key); if ((index & ELEMENT_NOT_FOUND_FLAG) != 0) { index &= ~ELEMENT_NOT_FOUND_FLAG; elements.add(index, new MapElement(key, value)); } return index; } public int capacity() { return elements.capacity(); } public void clear() { elements.clear(); } public Object getValue(int index) { return ((MapElement)elements.get(index)).getValue(); } public Object getValue(Comparable key) { int index = findElement(key); if ((index & ELEMENT_NOT_FOUND_FLAG) == 0) return ((MapElement)elements.get(index)).getValue(); throw new NoSuchElementException(); } public Comparable getKey(int index) { return ((MapElement)elements.get(index)).getKey(); } public boolean containsKey(Comparable key){ int index = findElement(key); return (index & ELEMENT_NOT_FOUND_FLAG) == 0; } public int indexOf(Comparable key){ int index = findElement(key); if((index & ELEMENT_NOT_FOUND_FLAG) == 0) return index; return -1; } private int findElement(Comparable key) { return findElement(key, 0, size()); } private int findElement(Comparable key, int first, int size) { if (size == 0) return first | ELEMENT_NOT_FOUND_FLAG; int halfSize = size/2; int middle = first + halfSize; MapElement middleElement = (MapElement)elements.get(middle); int comparationResult = key.compareTo(middleElement.getKey()); int last = first+size-1; if (comparationResult < 0){ if (halfSize <= 1){ if (middle != first) comparationResult = key.compareTo(((MapElement)elements.get(first)).getKey()); if (comparationResult < 0) return first | ELEMENT_NOT_FOUND_FLAG; if (comparationResult == 0) return first; return middle | ELEMENT_NOT_FOUND_FLAG; } return findElement(key, first, halfSize); } else if(comparationResult == 0) { return middle; } else { if (halfSize <= 1){ if (middle != last) comparationResult = key.compareTo(((MapElement)elements.get(last)).getKey()); if (comparationResult < 0) return last | ELEMENT_NOT_FOUND_FLAG; if (comparationResult == 0) return last; return last+1 | ELEMENT_NOT_FOUND_FLAG; } return findElement(key, middle, size - halfSize); } } public boolean remove(Comparable key) { int index = findElement(key); if ((index & ELEMENT_NOT_FOUND_FLAG) == 0) { elements.remove(index); return true; } return false; } public void remove(int index) { elements.removeElementAt(index); } public int size() { return elements.size(); } } freemind-0.9.0/freemind/freemind/controller/LastOpenedList.java0000644000000000000000000000747211527433212023323 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: LastOpenedList.java,v 1.8.18.2.2.2 2008/04/11 16:58:31 christianfoltin Exp $*/ package freemind.controller; import freemind.main.XMLParseException; import freemind.view.MapModule; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.util.*; /** * This class manages a list of the maps that were opened last. * It aims to provide persistence for the last recent maps. * Maps should be shown in the format:"mode\:key",ie."Mindmap\:/home/joerg/freemind.mm" */ public class LastOpenedList { private Controller c; private int maxEntries = 25; // is rewritten from property anyway /** * Contains Restore strings. */ private List lastOpenedList = new LinkedList(); /** * Contains Restore string => map name (map.toString()). */ private Map mRestorableToMapName = new HashMap(); LastOpenedList(Controller c, String restored) { this.c=c; maxEntries = new Integer(c.getFrame().getProperty("last_opened_list_length")).intValue(); load(restored); } void mapOpened(MapModule mapModule) { if (mapModule==null || mapModule.getModel()==null) return; String restoreString = mapModule.getModel().getRestoreable(); if (restoreString==null) return; if (lastOpenedList.contains(restoreString)) { lastOpenedList.remove(restoreString); } lastOpenedList.add(0,restoreString); mRestorableToMapName.put(restoreString,mapModule.toString()); while (lastOpenedList.size()>maxEntries) { lastOpenedList.remove(lastOpenedList.size()-1); //remove last elt } } void mapClosed(MapModule map) { // hash.remove(map.getModel().getRestoreable()); //not needed } /** fc, 8.8.2004: This method returns a string representation of this class. */ String save() { String str = new String(); for(ListIterator it=listIterator();it.hasNext();) { str=str.concat((String)it.next()+";"); } return str; } /** * */ void load(String data) { // Take care that there are no ";" in restorable names! if (data != null) { StringTokenizer token = new StringTokenizer(data,";"); while (token.hasMoreTokens()) lastOpenedList.add(token.nextToken()); } } public void open(String restoreable) throws FileNotFoundException, XMLParseException, MalformedURLException, IOException, URISyntaxException { boolean changedToMapModule = c.getMapModuleManager() .tryToChangeToMapModule( (String) mRestorableToMapName.get(restoreable)); if ((restoreable != null) && !(changedToMapModule)) { StringTokenizer token = new StringTokenizer(restoreable, ":"); if (token.hasMoreTokens()) { String mode = token.nextToken(); if (c.createNewMode(mode)) { // fix for windows (??, fc, 25.11.2005). String fileName = token.nextToken("").substring(1); c.getMode().restore(fileName); } } } } ListIterator listIterator () { return lastOpenedList.listIterator(); } } freemind-0.9.0/freemind/freemind/controller/MenuItemSelectedListener.java0000644000000000000000000000226011527433212025321 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 15.07.2004 */ /*$Id: MenuItemSelectedListener.java,v 1.1.4.1.16.1 2008/01/04 22:52:30 christianfoltin Exp $*/ package freemind.controller; import javax.swing.Action; import javax.swing.JMenuItem; public interface MenuItemSelectedListener { boolean isSelected(JMenuItem checkItem, Action action); }freemind-0.9.0/freemind/freemind/controller/NodeDropListener.java0000644000000000000000000000427011527433212023642 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package freemind.controller; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; // import ublic class MindMapNodesSelection implements Transferable, // ClipboardOwner { // public static DataFlavor fileListFlavor = null; public class NodeDropListener implements DropTargetListener { private final Controller c; private DropTargetListener mListener; public NodeDropListener(Controller controller) { c = controller; } public void register(DropTargetListener listener) { this.mListener = listener; } public void deregister() { mListener = null; } public void dragEnter(DropTargetDragEvent dtde) { if (mListener != null) mListener.dragEnter(dtde); } public void dragExit(DropTargetEvent dte) { if (mListener != null) mListener.dragExit(dte); } public void dragOver(DropTargetDragEvent dtde) { if (mListener != null) mListener.dragOver(dtde); } public void drop(DropTargetDropEvent dtde) { if (mListener != null) mListener.drop(dtde); } public void dropActionChanged(DropTargetDragEvent dtde) { if (mListener != null) mListener.dropActionChanged(dtde); } } freemind-0.9.0/freemind/freemind/controller/BlindIcon.java0000644000000000000000000000330711527433212022263 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 26.05.2004 */ /*$Id: BlindIcon.java,v 1.1.4.1.16.1 2010/09/30 22:38:47 christianfoltin Exp $*/ package freemind.controller; import java.awt.Component; import java.awt.Graphics; import javax.swing.Icon; /** * @author foltin * */ public class BlindIcon implements Icon { private int length; public BlindIcon(int length) { this.length = length; } /* (non-Javadoc) * @see javax.swing.Icon#getIconHeight() */ public int getIconHeight() { return length; } /* (non-Javadoc) * @see javax.swing.Icon#getIconWidth() */ public int getIconWidth() { return length; } /* (non-Javadoc) * @see javax.swing.Icon#paintIcon(java.awt.Component, java.awt.Graphics, int, int) */ public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3) { } } freemind-0.9.0/freemind/freemind/controller/NodeMouseMotionListener.java0000644000000000000000000000526011527433212025214 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: NodeMouseMotionListener.java,v 1.15.14.3 2006/01/12 23:10:12 christianfoltin Exp $*/ package freemind.controller; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; /** * The MouseMotionListener which belongs to every NodeView */ public class NodeMouseMotionListener implements MouseMotionListener, MouseListener { public static interface NodeMouseMotionObserver extends MouseMotionListener, MouseListener { void updateSelectionMethod(); } private final Controller c; private NodeMouseMotionObserver mListener; public NodeMouseMotionListener(Controller controller) { c = controller; } public void register(NodeMouseMotionObserver listener) { this.mListener = listener; } public void deregister() { mListener = null; } public void mouseClicked(MouseEvent e) { if (mListener != null) mListener.mouseClicked(e); } public void mouseDragged(MouseEvent e) { if (mListener != null) mListener.mouseDragged(e); } public void mouseEntered(MouseEvent e) { if (mListener != null) mListener.mouseEntered(e); } public void mouseExited(MouseEvent e) { if (mListener != null) mListener.mouseExited(e); } public void mouseMoved(MouseEvent e) { if (mListener != null) mListener.mouseMoved(e); } public void mousePressed(MouseEvent e) { if (mListener != null) mListener.mousePressed(e); } public void mouseReleased(MouseEvent e) { if (mListener != null) mListener.mouseReleased(e); } public void updateSelectionMethod() { if (mListener != null) mListener.updateSelectionMethod(); } } freemind-0.9.0/freemind/freemind/controller/Controller.java0000644000000000000000000016203711527433212022553 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: Controller.java,v 1.40.14.21.2.64 2010/02/22 21:18:53 christianfoltin Exp $*/ package freemind.controller; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.HeadlessException; import java.awt.Insets; import java.awt.KeyboardFocusManager; import java.awt.RenderingHints; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.print.PageFormat; import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.Serializable; import java.net.MalformedURLException; import java.net.URL; import java.security.AccessControlException; import java.text.MessageFormat; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.Vector; import java.util.logging.Logger; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JToggleButton; import javax.swing.JToolBar; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import freemind.common.BooleanProperty; import freemind.controller.MapModuleManager.MapModuleChangeObserver; import freemind.controller.filter.FilterController; import freemind.controller.printpreview.PreviewDialog; import freemind.main.FreeMind; import freemind.main.FreeMindCommon; import freemind.main.FreeMindMain; import freemind.main.Resources; import freemind.main.Tools; import freemind.modes.MindMap; import freemind.modes.Mode; import freemind.modes.ModeController; import freemind.modes.ModesCreator; import freemind.modes.attributes.AttributeRegistry; import freemind.modes.attributes.AttributeTableLayoutModel; import freemind.modes.browsemode.BrowseMode; import freemind.modes.mindmapmode.attributeactors.AttributeManagerDialog; import freemind.preferences.FreemindPropertyListener; import freemind.preferences.layout.OptionPanel; import freemind.preferences.layout.OptionPanel.OptionPanelFeedback; import freemind.view.MapModule; import freemind.view.mindmapview.MapView; /** * Provides the methods to edit/change a Node. * Forwards all messages to MapModel(editing) or MapView(navigation). */ public class Controller implements MapModuleChangeObserver { private HashSet mMapTitleChangeListenerSet = new HashSet(); /** * Converts from a local link to the real file URL of the * documentation map. (Used to change this behaviour under MacOSX). */ private static Logger logger; /** Used for MAC!!! */ public static LocalLinkConverter localDocumentationLinkConverter; private static JColorChooser colorChooser = new JColorChooser(); private LastOpenedList lastOpened;//A list of the pathnames of all the maps that were opened in the last time private MapModuleManager mapModuleManager;// new MapModuleManager(); /** The current mode */ private Mode mMode; private FreeMindMain frame; private JToolBar toolbar; private JToolBar filterToolbar; private JPanel northToolbarPanel; private NodeMouseMotionListener nodeMouseMotionListener; private NodeMotionListener nodeMotionListener; private NodeKeyListener nodeKeyListener; private NodeDragListener nodeDragListener; private NodeDropListener nodeDropListener; private MapMouseMotionListener mapMouseMotionListener; private MapMouseWheelListener mapMouseWheelListener; private ModesCreator mModescreator = new ModesCreator(this); private PageFormat pageFormat = null; private PrinterJob printerJob = null; private Icon bswatch = new BackgroundSwatch();//needed for BackgroundAction private boolean antialiasEdges = false; private boolean antialiasAll = false; private Map fontMap = new HashMap(); private FilterController mFilterController; boolean isPrintingAllowed=true; boolean menubarVisible=true; boolean toolbarVisible=true; boolean leftToolbarVisible=true; public CloseAction close; public Action print; public Action printDirect; public Action printPreview; public Action page; public Action quit; public Action showAllAttributes = new ShowAllAttributesAction(); public Action showSelectedAttributes = new ShowSelectedAttributesAction(); public Action hideAllAttributes = new HideAllAttributesAction(); public OptionAntialiasAction optionAntialiasAction; public Action optionHTMLExportFoldingAction; public Action optionSelectionMechanismAction; public Action about; public Action faq; public Action keyDocumentation; public Action webDocu; public Action documentation; public Action license; public Action navigationPreviousMap; public Action showFilterToolbarAction; public Action showAttributeManagerAction; public Action navigationNextMap; public Action moveToRoot; public Action toggleMenubar; public Action toggleToolbar; public Action toggleLeftToolbar; public Action zoomIn; public Action zoomOut; public Action showSelectionAsRectangle; public PropertyAction propertyAction; public OpenURLAction freemindUrl; // this values better suit at least the test purposes private static final String[] zooms = {"25%","50%","75%","100%","150%","200%","300%","400%"}; // private static final String[] zooms = {"25%","40%","60%","75%","100%","125%","150%","200%"}; // // Constructors // public Controller(FreeMindMain frame) { this.frame = frame; if(logger == null) { logger = frame.getLogger(this.getClass().getName()); } /** * Arranges the keyboard focus especially after * opening FreeMind. * */ KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); focusManager.addPropertyChangeListener( new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { String prop = e.getPropertyName(); if ("focusOwner".equals(prop)) { Component comp = (Component)e.getNewValue(); // logger.info("Focus change for " + comp); if (comp instanceof FreeMindMain) { obtainFocusForSelected(); } } } } ); localDocumentationLinkConverter = new DefaultLocalLinkConverter(); lastOpened = new LastOpenedList(this, getProperty("lastOpened")); mapModuleManager = new MapModuleManager(this); mapModuleManager.addListener(this); nodeMouseMotionListener = new NodeMouseMotionListener(this); nodeMotionListener = new NodeMotionListener(this); nodeKeyListener = new NodeKeyListener(this); nodeDragListener = new NodeDragListener(this); nodeDropListener = new NodeDropListener(this); mapMouseMotionListener = new MapMouseMotionListener(this); mapMouseWheelListener = new MapMouseWheelListener(this); close = new CloseAction(this); print = new PrintAction(this,true); printDirect = new PrintAction(this,false); printPreview = new PrintPreviewAction(this); page = new PageAction(this); quit = new QuitAction(this); about = new AboutAction(this); freemindUrl = new OpenURLAction(this, getResourceString("FreeMind"), getProperty("webFreeMindLocation")); faq = new OpenURLAction(this, getResourceString("FAQ"), getProperty("webFAQLocation")); keyDocumentation = new KeyDocumentationAction(this); webDocu = new OpenURLAction(this, getResourceString("webDocu"), getProperty("webDocuLocation")); documentation = new DocumentationAction(this); license = new LicenseAction(this); navigationPreviousMap = new NavigationPreviousMapAction(this); showFilterToolbarAction = new ShowFilterToolbarAction(this); showAttributeManagerAction = new ShowAttributeDialogAction(this); navigationNextMap = new NavigationNextMapAction(this); toggleMenubar = new ToggleMenubarAction(this); toggleToolbar = new ToggleToolbarAction(this); toggleLeftToolbar = new ToggleLeftToolbarAction(this); optionAntialiasAction = new OptionAntialiasAction(this); optionHTMLExportFoldingAction = new OptionHTMLExportFoldingAction(this); optionSelectionMechanismAction = new OptionSelectionMechanismAction(this); zoomIn = new ZoomInAction(this); zoomOut = new ZoomOutAction(this); propertyAction = new PropertyAction(this); showSelectionAsRectangle = new ShowSelectionAsRectangleAction(this); moveToRoot = new MoveToRootAction(this); //Create the ToolBar northToolbarPanel = new JPanel(new BorderLayout()); toolbar = new MainToolBar(this); mFilterController = new FilterController(this); filterToolbar = mFilterController.getFilterToolbar(); getFrame().getContentPane().add( northToolbarPanel, BorderLayout.NORTH ); northToolbarPanel.add( toolbar, BorderLayout.NORTH); northToolbarPanel.add( filterToolbar, BorderLayout.SOUTH); setAllActions(false); if (!Tools.isAvailableFontFamily(getProperty("defaultfont"))) { logger.warning("Warning: the font you have set as standard - "+getProperty("defaultfont")+ " - is not available."); frame.setProperty("defaultfont","SansSerif"); } } // // get/set methods // public static final String JAVA_VERSION = System.getProperty("java.version"); public String getProperty(String property) { return frame.getProperty(property); } public int getIntProperty(String property, int defaultValue) { return frame.getIntProperty(property, defaultValue); } public void setProperty(String property, String value) { String oldValue = getProperty(property); firePropertyChanged(property, value, oldValue); } private void firePropertyChanged(String property, String value, String oldValue) { if(oldValue == null || ! oldValue.equals(value)) { frame.setProperty(property, value); for (Iterator i = Controller.getPropertyChangeListeners().iterator(); i.hasNext();) { FreemindPropertyListener listener = (FreemindPropertyListener) i .next(); listener.propertyChanged(property, value, oldValue); } } } public FreeMindMain getFrame() { return frame; } public JFrame getJFrame() { FreeMindMain f = getFrame(); if (f instanceof JFrame) return (JFrame) f; return null; } public URL getResource(String resource) { return getFrame().getResource(resource); } public String getResourceString(String resource) { return frame.getResourceString(resource); } /** @return the current modeController. */ public ModeController getModeController() { if (getMapModule() != null) { return getMapModule().getModeController(); } // no map present: we take the default: return getMode().getDefaultModeController(); } /**Returns the current model*/ public MindMap getModel() { if (getMapModule() != null) { return getMapModule().getModel(); } return null; } public MapView getView() { if (getMapModule() != null) { return getMapModule().getView(); } else { // System.err.println("[Freemind-Developer-Internal-Warning (do not write a bug report, please)]: Tried to get view without being able to get map module."); return null; } } Set getModes() { return mModescreator.getAllModes(); } public Mode getMode() { return mMode; } public String[] getZooms() { return zooms; } public MapModuleManager getMapModuleManager() { return mapModuleManager; } public LastOpenedList getLastOpenedList() { return lastOpened; } // public MapModule getMapModule() { return getMapModuleManager().getMapModule(); } private JToolBar getToolBar() { return toolbar; } // public Font getFontThroughMap(Font font) { if (!fontMap.containsKey(font.toString())) { fontMap.put(font.toString(),font); } return (Font)fontMap.get(font.toString()); } // public void setAntialiasEdges(boolean antialiasEdges) { this.antialiasEdges = antialiasEdges; } public void setAntialiasAll(boolean antialiasAll) { this.antialiasAll = antialiasAll; } private boolean getAntialiasEdges() { return antialiasEdges; } private boolean getAntialiasAll() { return antialiasAll; } public Font getDefaultFont() { // Maybe implement handling for cases when the font is not // available on this system. int fontSize = getDefaultFontSize(); int fontStyle = getDefaultFontStyle(); String fontFamily = getDefaultFontFamilyName(); return getFontThroughMap (new Font(fontFamily, fontStyle, fontSize)); } /** */ public String getDefaultFontFamilyName() { String fontFamily = getProperty("defaultfont"); return fontFamily; } /** */ public int getDefaultFontStyle() { int fontStyle = frame.getIntProperty("defaultfontstyle",0); return fontStyle; } /** */ public int getDefaultFontSize() { int fontSize = frame.getIntProperty("defaultfontsize",12); return fontSize; } /** Static JColorChooser to have the recent colors feature. */ static public JColorChooser getCommonJColorChooser() { return colorChooser; } public static Color showCommonJColorChooserDialog(Component component, String title, Color initialColor) throws HeadlessException { final JColorChooser pane = getCommonJColorChooser(); pane.setColor(initialColor); ColorTracker ok = new ColorTracker(pane); JDialog dialog = JColorChooser.createDialog(component, title, true, pane, ok, null); dialog.addWindowListener(new Closer()); dialog.addComponentListener(new DisposeOnClose()); dialog.show(); // blocks until user brings dialog down... return ok.getColor(); } private static class ColorTracker implements ActionListener, Serializable { JColorChooser chooser; Color color; public ColorTracker(JColorChooser c) { chooser = c; } public void actionPerformed(ActionEvent e) { color = chooser.getColor(); } public Color getColor() { return color; } } static class Closer extends WindowAdapter implements Serializable{ public void windowClosing(WindowEvent e) { Window w = e.getWindow(); w.hide(); } } static class DisposeOnClose extends ComponentAdapter implements Serializable{ public void componentHidden(ComponentEvent e) { Window w = (Window)e.getComponent(); w.dispose(); } } public boolean isMapModuleChangeAllowed(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { return true; } public void afterMapClose(MapModule pOldMapModule, Mode pOldMode) { } public void beforeMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { ModeController oldModeController; this.mMode = newMode; if (oldMapModule != null) { // shut down screens of old view + frame oldModeController = oldMapModule.getModeController(); oldModeController.setVisible(false); oldModeController.shutdownController(); } else { if (oldMode != null) { oldModeController = oldMode.getDefaultModeController(); } else { return; } } if (oldModeController.getModeToolBar() != null) { toolbar.remove(oldModeController.getModeToolBar()); } /* other toolbars are to be removed too. */ if (oldModeController.getLeftToolBar() != null) { getFrame().getContentPane().remove( oldModeController.getLeftToolBar()); } } public void afterMapModuleChange(MapModule oldMapModule, Mode oldMode, MapModule newMapModule, Mode newMode) { ModeController newModeController; if (newMapModule != null) { getFrame().setView(newMapModule.getView()); setAllActions(true); if ((getView().getSelected() == null)) { moveToRoot(); } lastOpened.mapOpened(newMapModule); ((MainToolBar) getToolbar()).setZoomComboBox(newMapModule.getView() .getZoom()); // old // obtainFocusForSelected(); newModeController = newMapModule.getModeController(); newModeController.startupController(); newModeController.setVisible(true); // old // obtainFocusForSelected(); } else { newModeController = newMode.getDefaultModeController(); getFrame().setView(null); setAllActions(false); } setTitle(); JToolBar newToolBar = newModeController.getModeToolBar(); if (newToolBar != null) { toolbar.add(newToolBar); newToolBar.repaint(); } /* new left toolbar. */ Component newLeftToolBar = newModeController.getLeftToolBar(); if (newLeftToolBar != null) { getFrame().getContentPane().add(newLeftToolBar, BorderLayout.WEST); if(leftToolbarVisible){ newLeftToolBar.setVisible(true); newLeftToolBar.repaint(); } else{ newLeftToolBar.setVisible(false); } } toolbar.validate(); toolbar.repaint(); MenuBar menuBar = getFrame().getFreeMindMenuBar(); menuBar.updateMenus(newModeController); menuBar.revalidate(); menuBar.repaint(); // new obtainFocusForSelected(); } public void numberOfOpenMapInformation(int number) { navigationPreviousMap.setEnabled(number>0); navigationNextMap.setEnabled(number>0); } /** Creates a new mode (controller), activates the toolbars, title and deactivates all * actions. * Does nothing, if the mode is identical to the current mode. * * @return false if the change was not successful. */ public boolean createNewMode(String mode) { if (getMode() != null && mode.equals(getMode().toString())) { return true; } //Check if the mode is available and create ModeController. Mode newMode = mModescreator.getMode(mode); if (newMode == null) { errorMessage(getResourceString("mode_na")+": "+mode); return false; } // change the map module to get changed toolbars etc.: getMapModuleManager().setMapModule(null, newMode); setTitle(); getMode().activate(); Object[] messageArguments = { getMode().toLocalizedString() }; MessageFormat formatter = new MessageFormat(getResourceString("mode_status")); getFrame().out(formatter.format(messageArguments)); return true; } public void setMenubarVisible(boolean visible) { menubarVisible = visible; getFrame().getFreeMindMenuBar().setVisible(menubarVisible); } public void setToolbarVisible(boolean visible) { toolbarVisible = visible; toolbar.setVisible(toolbarVisible); } /** * @return Returns the main toolbar. */ public JToolBar getToolbar() { return toolbar; } public void setLeftToolbarVisible(boolean visible) { leftToolbarVisible = visible; if (getMode() == null){ return; } final Component leftToolBar = getModeController().getLeftToolBar(); if (leftToolBar != null) { leftToolBar.setVisible(leftToolbarVisible); ((JComponent)leftToolBar.getParent()).revalidate(); } } public NodeKeyListener getNodeKeyListener() { return nodeKeyListener; } public NodeMouseMotionListener getNodeMouseMotionListener() { return nodeMouseMotionListener; } public NodeMotionListener getNodeMotionListener() { return nodeMotionListener; } public MapMouseMotionListener getMapMouseMotionListener() { return mapMouseMotionListener; } public MapMouseWheelListener getMapMouseWheelListener() { return mapMouseWheelListener; } public NodeDragListener getNodeDragListener() { return nodeDragListener; } public NodeDropListener getNodeDropListener() { return nodeDropListener; } public void setFrame(FreeMindMain frame) { this.frame = frame; } /** * I don't understand how this works now (it's called twice etc.) * but it _works_ now. So let it alone or fix it to be understandable, * if you have the time ;-) */ void moveToRoot() { if (getMapModule() != null) { getView().moveToRoot(); } } /** Closes the actual map. * @param force true= without save. */ public void close(boolean force) { getMapModuleManager().close(force); } // (PN) %%% // public void select( NodeView node) { // getView().select(node,false); // getView().setSiblingMaxLevel(node.getModel().getNodeLevel()); // this level is default // } // // void selectBranch( NodeView node, boolean extend ) { // getView().selectBranch(node,extend); // } // // boolean isSelected( NodeView node ) { // return getView().isSelected(node); // } // // void centerNode() { // getView().centerNode(getView().getSelected()); // } // // private MindMapNode getSelected() { // return getView().getSelected().getModel(); // } public void informationMessage(Object message) { JOptionPane.showMessageDialog(getFrame().getContentPane(), message.toString(), "FreeMind", JOptionPane.INFORMATION_MESSAGE); } public void informationMessage(Object message, JComponent component) { JOptionPane.showMessageDialog(component, message.toString(), "FreeMind", JOptionPane.INFORMATION_MESSAGE); } public void errorMessage(Object message) { String myMessage = ""; if (message != null) { myMessage = message.toString(); } else { myMessage = getResourceString("undefined_error"); if (myMessage == null) { myMessage = "Undefined error"; } } JOptionPane.showMessageDialog(getFrame().getContentPane(), myMessage, "FreeMind", JOptionPane.ERROR_MESSAGE); } public void errorMessage(Object message, JComponent component) { JOptionPane.showMessageDialog(component, message.toString(), "FreeMind", JOptionPane.ERROR_MESSAGE); } public void obtainFocusForSelected() { // logger.finest("obtainFocusForSelected"); if (getView() != null) { // is null if the last map was closed. logger.info("Requesting Focus for " + getView().getSelected()); getView().getSelected().requestFocus(); } else { // fc, 6.1.2004: bug fix, that open and quit are not working if no map is present. // to avoid this, the menu bar gets the focus, and everything seems to be all right!! // but I cannot avoid thinking of this change to be a bad hack .... logger.info("No view present. No focus!"); getFrame().getFreeMindMenuBar().requestFocus(); } } // // Map Navigation // // // other // public void setZoom(float zoom) { getView().setZoom(zoom); ((MainToolBar)toolbar).setZoomComboBox(zoom); // show text in status bar: Object[] messageArguments = { String.valueOf(zoom*100f) }; String stringResult = Resources.getInstance().format("user_defined_zoom_status_bar", messageArguments); getFrame().out(stringResult); } ////////////// // Private methods. Internal implementation //////////// // // Node editing // // (PN) // private void getFocus() { // getView().getSelected().requestFocus(); // } // // Multiple Views management // /** * Set the Frame title with mode and file if exist */ public void setTitle() { Object[] messageArguments = { getMode().toLocalizedString() }; MessageFormat formatter = new MessageFormat (getResourceString("mode_title")); String title = formatter.format(messageArguments); String rawTitle = ""; MindMap model = null; MapModule mapModule = getMapModule(); if (mapModule != null) { model = mapModule.getModel(); rawTitle = mapModule.toString(); title = rawTitle + (model.isSaved()?"":"*") + " - " + title + ( model.isReadOnly() ? " ("+getResourceString("read_only")+")" : ""); File file = model.getFile(); if (file != null) { title += " " + file.getAbsolutePath(); } } getFrame().setTitle(title); for (Iterator iterator = mMapTitleChangeListenerSet.iterator(); iterator.hasNext();) { MapModuleManager.MapTitleChangeListener listener = (MapModuleManager.MapTitleChangeListener) iterator.next(); listener.setMapTitle(rawTitle, mapModule, model); } } public void registerMapTitleChangeListener(MapModuleManager.MapTitleChangeListener pMapTitleChangeListener){ mMapTitleChangeListenerSet.add(pMapTitleChangeListener); } public void deregisterMapTitleChangeListener(MapModuleManager.MapTitleChangeListener pMapTitleChangeListener){ mMapTitleChangeListenerSet.remove(pMapTitleChangeListener); } // // Actions management // /** * Manage the availabilty of all Actions dependend * of whether there is a map or not */ public void setAllActions(boolean enabled) { print.setEnabled(enabled && isPrintingAllowed); printDirect.setEnabled(enabled && isPrintingAllowed); printPreview.setEnabled(enabled && isPrintingAllowed); page.setEnabled(enabled && isPrintingAllowed); close.setEnabled(enabled); moveToRoot.setEnabled(enabled); showAllAttributes.setEnabled(enabled); showSelectedAttributes.setEnabled(enabled); hideAllAttributes.setEnabled(enabled); showAttributeManagerAction.setEnabled(enabled); ((MainToolBar)getToolBar()).setAllActions(enabled); showSelectionAsRectangle.setEnabled(enabled); } // // program/map control // private void quit() { String currentMapRestorable = (getModel()!=null) ? getModel().getRestoreable() : null; while (getMapModuleManager().getMapModuleVector().size() > 0) { if (getMapModule() != null) { boolean closingNotCancelled = getMapModuleManager().close( false); if (!closingNotCancelled) { return; } } else { // map module without view open. // FIXME: This seems to be a bad hack. correct me! getMapModuleManager().nextMapModule(); } } String lastOpenedString=lastOpened.save(); setProperty("lastOpened",lastOpenedString); if (currentMapRestorable != null) { getFrame().setProperty(FreeMindCommon.ON_START_IF_NOT_SPECIFIED,currentMapRestorable); } // getFrame().setProperty("menubarVisible",menubarVisible ? "true" : "false"); // ^ Not allowed in application because of problems with not working key shortcuts setProperty("toolbarVisible", toolbarVisible ? "true" : "false"); setProperty("leftToolbarVisible", leftToolbarVisible ? "true" : "false"); setProperty("antialiasEdges", antialiasEdges ? "true" : "false"); setProperty("antialiasAll", antialiasAll ? "true" : "false"); if(! getFrame().isApplet()) { final int winState = getFrame().getWinState(); if (JFrame.MAXIMIZED_BOTH != (winState & JFrame.MAXIMIZED_BOTH)){ setProperty("appwindow_x", String.valueOf(getFrame().getWinX())); setProperty("appwindow_y", String.valueOf(getFrame().getWinY())); setProperty("appwindow_width", String.valueOf(getFrame().getWinWidth())); setProperty("appwindow_height", String.valueOf(getFrame().getWinHeight())); } setProperty("appwindow_state", String.valueOf(winState)); } getFrame().saveProperties(); //save to properties System.exit(0); } private boolean acquirePrinterJobAndPageFormat() { if (printerJob == null) { try { printerJob = PrinterJob.getPrinterJob(); } catch (SecurityException ex) { isPrintingAllowed = false; return false; }} if (pageFormat == null) { pageFormat = printerJob.defaultPage(); if (Tools.safeEquals(getProperty("page_orientation"), "landscape")) { pageFormat.setOrientation(PageFormat.LANDSCAPE); } else if (Tools.safeEquals(getProperty("page_orientation"), "portrait")) { pageFormat.setOrientation(PageFormat.PORTRAIT); } else if (Tools.safeEquals(getProperty("page_orientation"), "reverse_landscape")) { pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE); } } return true; } ////////////// // Inner Classes //////////// /** * Manages the history of visited maps. * Maybe explicitly closed maps should be removed from * History too? */ // // program/map control // private class QuitAction extends AbstractAction { QuitAction(Controller controller) { super(controller.getResourceString("quit")); } public void actionPerformed(ActionEvent e) { quit(); } } /**This closes only the current map*/ public static class CloseAction extends AbstractAction { private final Controller controller; CloseAction(Controller controller) { Tools.setLabelAndMnemonic(this, controller.getResourceString("close")); this.controller = controller; } public void actionPerformed(ActionEvent e) { controller.close(false); } } private class PrintAction extends AbstractAction { Controller controller; boolean isDlg; PrintAction(Controller controller, boolean isDlg) { super(isDlg ? controller.getResourceString("print_dialog") : controller.getResourceString("print"), new ImageIcon(getResource("images/fileprint.png"))); this.controller = controller; setEnabled(false); this.isDlg = isDlg; } public void actionPerformed(ActionEvent e) { if (!acquirePrinterJobAndPageFormat()) { return; } printerJob.setPrintable(getView(),pageFormat); if (!isDlg || printerJob.printDialog()) { try { frame.setWaitingCursor(true); printerJob.print(); } catch (Exception ex) { freemind.main.Resources.getInstance().logException(ex); } finally { frame.setWaitingCursor(false); } } } } private class PrintPreviewAction extends AbstractAction { Controller controller; PrintPreviewAction(Controller controller) { super(controller.getResourceString("print_preview")); this.controller = controller; } public void actionPerformed(ActionEvent e) { if (!acquirePrinterJobAndPageFormat()) { return; } PreviewDialog previewDialog = new PreviewDialog(controller.getResourceString("print_preview_title"), getView()); previewDialog.pack(); previewDialog.setLocationRelativeTo(JOptionPane.getFrameForComponent(getView())); previewDialog.setVisible(true); } } private class PageAction extends AbstractAction { Controller controller; PageAction(Controller controller) { super(controller.getResourceString("page")); this.controller = controller; setEnabled(false); } public void actionPerformed(ActionEvent e) { if (!acquirePrinterJobAndPageFormat()) { return; } // Ask about custom printing settings final JDialog dialog = new JDialog((JFrame)getFrame(), getResourceString("printing_settings"), /*modal=*/true); final JCheckBox fitToPage = new JCheckBox(getResourceString("fit_to_page"), Resources.getInstance().getBoolProperty("fit_to_page")); final JLabel userZoomL = new JLabel(getResourceString("user_zoom")); final JTextField userZoom = new JTextField(getProperty("user_zoom"),3); userZoom.setEditable(!fitToPage.isSelected()); final JButton okButton = new JButton(); Tools.setLabelAndMnemonic(okButton, getResourceString("ok")); final Tools.IntHolder eventSource = new Tools.IntHolder(); JPanel panel = new JPanel(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); eventSource.setValue(0); okButton.addActionListener (new ActionListener() { public void actionPerformed(ActionEvent e) { eventSource.setValue(1); dialog.dispose(); }}); fitToPage.addItemListener (new ItemListener() { public void itemStateChanged(ItemEvent e) { userZoom.setEditable(e.getStateChange() == ItemEvent.DESELECTED); } }); //c.weightx = 0.5; c.gridx = 0; c.gridy = 0; c.gridwidth = 2; gridbag.setConstraints(fitToPage, c); panel.add(fitToPage); c.gridy = 1; c.gridwidth = 1; gridbag.setConstraints(userZoomL, c); panel.add(userZoomL); c.gridx = 1; c.gridwidth = 1; gridbag.setConstraints(userZoom, c); panel.add(userZoom); c.gridy = 2; c.gridx = 0; c.gridwidth = 3; c.insets = new Insets(10,0,0,0); gridbag.setConstraints(okButton, c); panel.add(okButton); panel.setLayout(gridbag); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(panel); dialog.setLocationRelativeTo((JFrame)getFrame()); dialog.getRootPane().setDefaultButton(okButton); dialog.pack(); // calculate the size dialog.setVisible(true); if (eventSource.getValue() == 1) { setProperty("user_zoom", userZoom.getText()); setProperty("fit_to_page", fitToPage.isSelected() ? "true" : "false"); } else return; // Ask user for page format (e.g., portrait/landscape) pageFormat = printerJob.pageDialog(pageFormat); if (pageFormat.getOrientation() == PageFormat.LANDSCAPE) { setProperty("page_orientation", "landscape"); } else if (pageFormat.getOrientation() == PageFormat.PORTRAIT) { setProperty("page_orientation", "portrait"); } else if (pageFormat.getOrientation() == PageFormat.REVERSE_LANDSCAPE) { setProperty("page_orientation", "reverse_landscape"); } } } public interface LocalLinkConverter { String convertLocalLink(String link); } private class DefaultLocalLinkConverter implements LocalLinkConverter { public String convertLocalLink(String map) { /* new handling for relative urls. fc, 29.10.2003.*/ String applicationPath = frame.getFreemindBaseDir(); return "file:" + applicationPath + map.substring(1);//remove "." and make url /* end: new handling for relative urls. fc, 29.10.2003.*/ } } // // Help // private class DocumentationAction extends AbstractAction { Controller controller; DocumentationAction(Controller controller) { super(controller.getResourceString("documentation")); this.controller = controller; } public void actionPerformed(ActionEvent e) { String map = controller.getFrame().getResourceString("browsemode_initial_map"); // if the current language does not provide its own translation, POSTFIX_TRANSLATE_ME is appended: map = Tools.removeTranslateComment(map); if (map != null && map.startsWith(".")) { try{ map = localDocumentationLinkConverter.convertLocalLink(map); } catch(AccessControlException ex){ webDocu.actionPerformed(e); return; } } if (map != null && map != "") { URL url = null; try { url = new URL(map); } catch (MalformedURLException e2) { freemind.main.Resources.getInstance().logException(e2); return; } final URL endUrl = url; // invokeLater is necessary, as the mode changing removes all menus (inclusive this action!). SwingUtilities.invokeLater(new Runnable() { public void run() { try { createNewMode(BrowseMode.MODENAME); controller.getModeController().load(endUrl); } catch (Exception e1) { freemind.main.Resources.getInstance().logException(e1); } } }); } } } private class KeyDocumentationAction extends AbstractAction { Controller controller; KeyDocumentationAction(Controller controller) { super(controller.getResourceString("KeyDoc")); this.controller = controller; } public void actionPerformed(ActionEvent e) { String urlText = controller.getFrame().getResourceString("pdfKeyDocLocation"); // if the current language does not provide its own translation, POSTFIX_TRANSLATE_ME is appended: urlText = Tools.removeTranslateComment(urlText); try{ if (urlText != null && urlText.startsWith(".")) { urlText = localDocumentationLinkConverter.convertLocalLink(urlText); } if (urlText != null && urlText != "") { URL url = null; url = new URL(urlText); controller.getFrame().openDocument(url); } } catch (Exception e2) { freemind.main.Resources.getInstance().logException(e2); return; } } } private class AboutAction extends AbstractAction { Controller controller; AboutAction(Controller controller) { super(controller.getResourceString("about")); this.controller = controller; } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(getFrame().getViewport(), controller .getResourceString("about_text") + getFrame().getFreemindVersion(), controller .getResourceString("about"), JOptionPane.INFORMATION_MESSAGE); } } private class LicenseAction extends AbstractAction { Controller controller; LicenseAction(Controller controller) { super(controller.getResourceString("license")); this.controller = controller; } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(getView(), controller .getResourceString("license_text"), controller .getResourceString("license"), JOptionPane.INFORMATION_MESSAGE); } } // // Map navigation // private class NavigationPreviousMapAction extends AbstractAction { NavigationPreviousMapAction(Controller controller) { super(controller.getResourceString("previous_map"), new ImageIcon(getResource("images/1leftarrow.png"))); setEnabled(false); } public void actionPerformed(ActionEvent event) { mapModuleManager.previousMapModule(); } } private class ShowAttributeDialogAction extends AbstractAction { private Controller c; ShowAttributeDialogAction(Controller c) { super(c.getResourceString("attributes_dialog"), new ImageIcon(getResource("images/showAttributes.gif"))); this.c = c; } private AttributeManagerDialog getAttributeDialog() { if (attributeDialog == null) { attributeDialog = new AttributeManagerDialog(c); } return attributeDialog; } public void actionPerformed(ActionEvent e) { if (getAttributeDialog().isVisible() == false && getMapModule() != null) { getAttributeDialog().pack(); getAttributeDialog().show(); } } } private class ShowFilterToolbarAction extends AbstractAction { ShowFilterToolbarAction(Controller controller) { super(null, new ImageIcon(getResource("images/filter.gif"))); } public void actionPerformed(ActionEvent event) { JToggleButton btnFilter = (JToggleButton)event.getSource(); if(btnFilter.getModel().isSelected()){ getFilterController().showFilterToolbar(true); } else{ getFilterController().showFilterToolbar(false); } } } private class NavigationNextMapAction extends AbstractAction { NavigationNextMapAction(Controller controller) { super(controller.getResourceString("next_map"), new ImageIcon(getResource("images/1rightarrow.png"))); setEnabled(false); } public void actionPerformed(ActionEvent event) { mapModuleManager.nextMapModule(); } } // // Node navigation // private class MoveToRootAction extends AbstractAction { MoveToRootAction(Controller controller) { super(controller.getResourceString("move_to_root")); setEnabled(false); } public void actionPerformed(ActionEvent event) { moveToRoot(); } } private class ToggleMenubarAction extends AbstractAction implements MenuItemSelectedListener { ToggleMenubarAction(Controller controller) { super(controller.getResourceString("toggle_menubar")); setEnabled(true); } public void actionPerformed(ActionEvent event) { menubarVisible=!menubarVisible; setMenubarVisible(menubarVisible); } public boolean isSelected(JMenuItem pCheckItem, Action pAction) { return menubarVisible; } } private class ToggleToolbarAction extends AbstractAction implements MenuItemSelectedListener { ToggleToolbarAction(Controller controller) { super(controller.getResourceString("toggle_toolbar")); setEnabled(true); } public void actionPerformed(ActionEvent event) { toolbarVisible=!toolbarVisible; setToolbarVisible(toolbarVisible); } public boolean isSelected(JMenuItem pCheckItem, Action pAction) { logger.info("ToggleToolbar was asked for selectedness."); return toolbarVisible; } } private class ToggleLeftToolbarAction extends AbstractAction implements MenuItemSelectedListener { ToggleLeftToolbarAction(Controller controller) { super(controller.getResourceString("toggle_left_toolbar")); setEnabled(true); } public void actionPerformed(ActionEvent event) { leftToolbarVisible=!leftToolbarVisible; setLeftToolbarVisible(leftToolbarVisible); } public boolean isSelected(JMenuItem pCheckItem, Action pAction) { return leftToolbarVisible; } } protected class ZoomInAction extends AbstractAction { public ZoomInAction(Controller controller) { super(controller.getResourceString("zoom_in")); } public void actionPerformed(ActionEvent e) { // logger.info("ZoomInAction actionPerformed"); ((MainToolBar)toolbar).zoomIn(); }} protected class ZoomOutAction extends AbstractAction { public ZoomOutAction(Controller controller) { super(controller.getResourceString("zoom_out")); } public void actionPerformed(ActionEvent e) { // logger.info("ZoomOutAction actionPerformed"); ((MainToolBar)toolbar).zoomOut(); }} protected class ShowSelectionAsRectangleAction extends AbstractAction implements MenuItemSelectedListener{ public ShowSelectionAsRectangleAction(Controller controller) { super(controller.getResourceString("selection_as_rectangle")); } public void actionPerformed(ActionEvent e) { // logger.info("ShowSelectionAsRectangleAction action Performed"); toggleSelectionAsRectangle(); } public boolean isSelected(JMenuItem pCheckItem, Action pAction) { return isSelectionAsRectangle(); } } private class ShowAllAttributesAction extends AbstractAction { public ShowAllAttributesAction(){ super(Resources.getInstance().getResourceString("attributes_show_all")); }; public void actionPerformed(ActionEvent e) { final MindMap map = getMap(); setAttributeViewType(map); } public void setAttributeViewType(final MindMap map) { final AttributeRegistry attributes = map.getRegistry().getAttributes(); if(attributes.getAttributeViewType() != AttributeTableLayoutModel.SHOW_ALL){ attributes.setAttributeViewType(AttributeTableLayoutModel.SHOW_ALL); } } } private class HideAllAttributesAction extends AbstractAction { public HideAllAttributesAction(){ super(Resources.getInstance().getResourceString("attributes_hide_all")); }; public void actionPerformed(ActionEvent e) { final MindMap map = getMap(); setAttributeViewType(map); } public void setAttributeViewType(final MindMap map) { final AttributeRegistry attributes = map.getRegistry().getAttributes(); if(attributes.getAttributeViewType() != AttributeTableLayoutModel.HIDE_ALL){ attributes.setAttributeViewType(AttributeTableLayoutModel.HIDE_ALL); } } } private class ShowSelectedAttributesAction extends AbstractAction { public ShowSelectedAttributesAction(){ super(Resources.getInstance().getResourceString("attributes_show_selected")); }; public void actionPerformed(ActionEvent e) { MindMap map = getMap(); setAttributeViewType(map); } void setAttributeViewType(MindMap map){ final AttributeRegistry attributes = map.getRegistry().getAttributes(); if(attributes.getAttributeViewType() != AttributeTableLayoutModel.SHOW_SELECTED){ attributes.setAttributeViewType(AttributeTableLayoutModel.SHOW_SELECTED); } } } // // Preferences // private static Vector propertyChangeListeners = new Vector(); private AttributeManagerDialog attributeDialog = null; public static Collection getPropertyChangeListeners() { return Collections.unmodifiableCollection(propertyChangeListeners); } public void toggleSelectionAsRectangle() { if(isSelectionAsRectangle()){ setProperty(FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION, BooleanProperty.FALSE_VALUE); } else{ setProperty(FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION, BooleanProperty.TRUE_VALUE); } } private boolean isSelectionAsRectangle() { return getProperty(FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION).equalsIgnoreCase(BooleanProperty.TRUE_VALUE); } /** */ public MindMap getMap() { return getMapModule().getModel(); } public static void addPropertyChangeListener(FreemindPropertyListener listener) { Controller.propertyChangeListeners.add(listener); } /** * @param listener The new listener. All currently available properties are sent to * the listener after registration. Here, the oldValue parameter is set to null. */ public static void addPropertyChangeListenerAndPropagate(FreemindPropertyListener listener) { Controller.addPropertyChangeListener(listener); Properties properties = Resources.getInstance().getProperties(); for (Iterator it = properties.keySet().iterator(); it.hasNext();) { String key = (String) it.next(); listener.propertyChanged(key, properties.getProperty(key), null); } } public static void removePropertyChangeListener(FreemindPropertyListener listener) { Controller.propertyChangeListeners.remove(listener); } /** * @author foltin * */ public class PropertyAction extends AbstractAction { private final Controller controller; /** * */ public PropertyAction(Controller controller) { super(controller.getResourceString("property_dialog")); this.controller = controller; } public void actionPerformed(ActionEvent arg0) { JDialog dialog = new JDialog(getFrame().getJFrame(), true /* modal */); dialog.setResizable(true); dialog.setUndecorated(false); final OptionPanel options = new OptionPanel((FreeMind)getFrame(), dialog, new OptionPanelFeedback() { public void writeProperties(Properties props) { Vector sortedKeys = new Vector(); sortedKeys.addAll(props.keySet()); Collections.sort(sortedKeys); boolean propertiesChanged = false; for (Iterator i = sortedKeys.iterator(); i.hasNext();) { String key = (String) i.next(); // save only changed keys: String newProperty = props.getProperty(key); propertiesChanged = propertiesChanged || ! newProperty.equals(controller.getProperty(key)); controller.setProperty(key, newProperty); } if (propertiesChanged ) { JOptionPane .showMessageDialog( null, getResourceString("option_changes_may_require_restart")); controller.getFrame().saveProperties(); } } }); options.buildPanel(); options.setProperties(); dialog.setTitle("Freemind Properties"); dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); dialog.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent event) { options.closeWindow(); } }); Action action = new AbstractAction() { public void actionPerformed(ActionEvent arg0) { options.closeWindow(); } }; Tools.addEscapeActionToDialog(dialog, action); dialog.setVisible(true); } } private class BackgroundSwatch extends ColorSwatch { Color getColor() { return getView().getBackground(); } } public class OptionAntialiasAction extends AbstractAction implements FreemindPropertyListener { OptionAntialiasAction(Controller controller) { Controller.addPropertyChangeListener(this); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); changeAntialias(command); } /** */ public void changeAntialias(String command) { if(command == null) { return; } if (command.equals("antialias_none")) { setAntialiasEdges(false); setAntialiasAll(false); } if (command.equals("antialias_edges")) { setAntialiasEdges(true); setAntialiasAll(false); } if (command.equals("antialias_all")) { setAntialiasEdges(true); setAntialiasAll(true); } if(getView() != null) getView().repaint(); } public void propertyChanged(String propertyName, String newValue, String oldValue) { if (propertyName.equals(FreeMindCommon.RESOURCE_ANTIALIAS)) { changeAntialias(newValue); } } } private class OptionHTMLExportFoldingAction extends AbstractAction { OptionHTMLExportFoldingAction(Controller controller) {} public void actionPerformed(ActionEvent e) { setProperty("html_export_folding", e.getActionCommand()); }} // switch auto properties for selection mechanism fc, 7.12.2003. private class OptionSelectionMechanismAction extends AbstractAction implements FreemindPropertyListener { Controller c; OptionSelectionMechanismAction(Controller controller) { c = controller; Controller.addPropertyChangeListener(this); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); changeSelection(command); } /** */ private void changeSelection(String command) { setProperty("selection_method", command); // and update the selection method in the NodeMouseMotionListener c.getNodeMouseMotionListener().updateSelectionMethod(); String statusBarString = c.getResourceString(command); if (statusBarString != null) // should not happen c.getFrame().out(statusBarString); } public void propertyChanged(String propertyName, String newValue, String oldValue) { if(propertyName.equals(FreeMind.RESOURCES_SELECTION_METHOD)) { changeSelection(newValue); } } } // open faq url from freeminds page: private class OpenURLAction extends AbstractAction { Controller c; private final String url; OpenURLAction(Controller controller, String description, String url) { super(description, new ImageIcon(controller.getResource("images/Link.png"))); c = controller; this.url = url; } public void actionPerformed(ActionEvent e) { try { c.getFrame().openDocument(new URL(url)); } catch (MalformedURLException ex) { c.errorMessage(c.getResourceString("url_error")+"\n"+ex); } catch (Exception ex) { c.errorMessage(ex); } } } public FilterController getFilterController() { return mFilterController; } public PageFormat getPageFormat() { return pageFormat; } public void setAttributeViewType(MindMap map, String value) { if(value.equals(AttributeTableLayoutModel.SHOW_SELECTED)){ ((ShowSelectedAttributesAction)showSelectedAttributes).setAttributeViewType(map); } else if(value.equals(AttributeTableLayoutModel.HIDE_ALL)){ ((HideAllAttributesAction)hideAllAttributes).setAttributeViewType(map); } else if(value.equals(AttributeTableLayoutModel.SHOW_ALL)){ ((ShowAllAttributesAction)showAllAttributes).setAttributeViewType(map); } } public Object setEdgesRenderingHint(Graphics2D g) { Object renderingHint = g.getRenderingHint(RenderingHints.KEY_ANTIALIASING); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, (getAntialiasEdges())?RenderingHints.VALUE_ANTIALIAS_ON:RenderingHints.VALUE_ANTIALIAS_OFF); return renderingHint; } public void setTextRenderingHint(Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, (getAntialiasAll())?RenderingHints.VALUE_TEXT_ANTIALIAS_ON:RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, (getAntialiasAll())?RenderingHints.VALUE_ANTIALIAS_ON:RenderingHints.VALUE_ANTIALIAS_OFF); } } freemind-0.9.0/freemind/freemind/controller/NodeKeyListener.java0000644000000000000000000000375211527433212023472 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: NodeKeyListener.java,v 1.16.18.2 2006/01/12 23:10:12 christianfoltin Exp $*/ package freemind.controller; import java.awt.dnd.DropTargetListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.Externalizable; import javax.swing.KeyStroke; import freemind.main.Tools; /** * The KeyListener which belongs to the node and cares for Events like C-D * (Delete Node). It forwards the requests to NodeController. */ public class NodeKeyListener implements KeyListener { private Controller c; private KeyListener mListener; public NodeKeyListener(Controller controller) { c = controller; } public void register(KeyListener listener) { this.mListener = listener; } public void deregister() { mListener = null; } public void keyPressed(KeyEvent e) { if (mListener != null) mListener.keyPressed(e); } public void keyReleased(KeyEvent e) { if (mListener != null) mListener.keyReleased(e); } public void keyTyped(KeyEvent e) { if (mListener != null) mListener.keyTyped(e); } } freemind-0.9.0/freemind/freemind/controller/StructuredMenuItemHolder.java0000644000000000000000000000451511527433212025372 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 15.07.2004 */ /*$Id: StructuredMenuItemHolder.java,v 1.1.4.1.16.1 2008/01/13 20:55:34 christianfoltin Exp $*/ package freemind.controller; import javax.swing.Action; import javax.swing.JMenuItem; public class StructuredMenuItemHolder { private JMenuItem menuItem; private Action action; private MenuItemEnabledListener enabledListener; private MenuItemSelectedListener selectionListener; public StructuredMenuItemHolder() { } public Action getAction() { return action; } public void setAction(Action action) { this.action = action; if (action instanceof MenuItemEnabledListener) { MenuItemEnabledListener listener = (MenuItemEnabledListener) action; setEnabledListener(listener); } if (action instanceof MenuItemSelectedListener) { MenuItemSelectedListener listener = (MenuItemSelectedListener) action; setSelectedListener(listener); } } public MenuItemEnabledListener getEnabledListener() { return enabledListener; } public void setEnabledListener( MenuItemEnabledListener enabledListener) { this.enabledListener = enabledListener; } public JMenuItem getMenuItem() { return menuItem; } public void setMenuItem(JMenuItem menuItem) { this.menuItem = menuItem; } public MenuItemSelectedListener getSelectionListener() { return selectionListener; } public void setSelectedListener( MenuItemSelectedListener selectionListener) { this.selectionListener = selectionListener; } }freemind-0.9.0/freemind/freemind/controller/MenuItemEnabledListener.java0000644000000000000000000000225311527433212025125 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 15.07.2004 */ /*$Id: MenuItemEnabledListener.java,v 1.1.4.1.16.1 2008/01/13 20:55:34 christianfoltin Exp $*/ package freemind.controller; import javax.swing.Action; import javax.swing.JMenuItem; public interface MenuItemEnabledListener { boolean isEnabled(JMenuItem pItem, Action pAction); }freemind-0.9.0/freemind/freemind/controller/FreeMindPopupMenu.java0000644000000000000000000000442511527433212023766 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2008 Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 03.01.2008 * */ package freemind.controller; import java.util.HashSet; import java.util.Iterator; import javax.swing.JPopupMenu; import javax.swing.event.MenuListener; /** * @author foltin * */ public class FreeMindPopupMenu extends JPopupMenu implements StructuredMenuHolder.MenuEventSupplier { private HashSet listeners = new HashSet(); protected void firePopupMenuWillBecomeVisible() { super.firePopupMenuWillBecomeVisible(); // logger.info("Popup firePopupMenuWillBecomeVisible called."); for (Iterator i = listeners.iterator(); i.hasNext();) { MenuListener listener = (MenuListener) i.next(); listener.menuSelected(null); } } public void addMenuListener(MenuListener listener) { listeners.add(listener); } public void removeMenuListener(MenuListener listener) { listeners.remove(listener); } protected void firePopupMenuCanceled() { super.firePopupMenuCanceled(); // logger.info("Popup firePopupMenuCanceled called."); for (Iterator i = listeners.iterator(); i.hasNext();) { MenuListener listener = (MenuListener) i.next(); listener.menuCanceled(null); } } protected void firePopupMenuWillBecomeInvisible() { super.firePopupMenuWillBecomeInvisible(); // logger.info("Popup firePopupMenuWillBecomeInvisible called."); for (Iterator i = listeners.iterator(); i.hasNext();) { MenuListener listener = (MenuListener) i.next(); listener.menuDeselected(null); } } } freemind-0.9.0/freemind/freemind/controller/MapMouseWheelListener.java0000644000000000000000000000310011527433212024632 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: MapMouseWheelListener.java,v 1.8.18.1 2006/01/12 23:10:12 christianfoltin Exp $*/ package freemind.controller; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; /** * The MouseListener which belongs to MapView */ public class MapMouseWheelListener implements MouseWheelListener { private final Controller c; private MouseWheelListener mListener; public MapMouseWheelListener(Controller controller) { c = controller; } public void mouseWheelMoved(MouseWheelEvent e) { if(mListener != null) mListener.mouseWheelMoved(e); } public void register(MouseWheelListener handler) { mListener = handler; } public void deregister() { mListener = null; } } freemind-0.9.0/freemind/freemind/controller/printpreview/0000755000000000000000000000000011532143331022306 5ustar rootrootfreemind-0.9.0/freemind/freemind/controller/printpreview/BrowseAction.java0000644000000000000000000000413211527433212025554 0ustar rootroot/* * Preview Dialog - A Preview Dialog for your Swing Applications * * Copyright (C) 2003 Jens Kaiser. * * Written by: 2003 Jens Kaiser * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package freemind.controller.printpreview; import java.awt.EventQueue; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JLabel; class BrowseAction extends AbstractAction { private JLabel pageNumber; public BrowseAction(Preview preview, JLabel pageNumber, int pageStep) { super(); this.preview = preview; this.pageStep = pageStep; this.pageNumber = pageNumber; pageIndexPainter = new Runnable(){ public void run() { paintPageIndex(); } }; } public void actionPerformed(ActionEvent e) { preview.moveIndex(pageStep); paintPageIndex(); preview.repaint(); EventQueue.invokeLater(pageIndexPainter); } private void paintPageIndex() { pageNumber.setText(getPageIndexText()); pageNumber.paintImmediately(0, 0, pageNumber.getWidth(), pageNumber.getHeight()); } private String getPageIndexText() { return "- " + String.valueOf(1 + preview.getPageIndex()) + " -"; } protected Preview preview; protected int pageStep; private final Runnable pageIndexPainter; } freemind-0.9.0/freemind/freemind/controller/printpreview/PreviewDialog.java0000644000000000000000000000776711527433212025737 0ustar rootroot/* * Preview Dialog - A Preview Dialog for your Swing Applications * * Copyright (C) 2003 Jens Kaiser. * Created by Dimitri Polivaev. * * Written by: 2003 Jens Kaiser * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package freemind.controller.printpreview; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeListener; import java.net.URL; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JToolBar; import freemind.main.Tools; import freemind.view.mindmapview.MapView; public class PreviewDialog extends JDialog implements ActionListener { private final static double DEFAULT_ZOOM_FACTOR_STEP = 0.1; private JLabel pageNumber; public PreviewDialog(String title, MapView view) { super(JOptionPane.getFrameForComponent(view), title, true); this.view = view; Preview preview = new Preview(view, 1); JScrollPane scrollPane = new JScrollPane(preview); getContentPane().add(scrollPane, "Center"); JToolBar toolbar = new JToolBar(); //toolbar.setRollover(true); getContentPane().add(toolbar, "North"); pageNumber = new JLabel("- 1 -"); final JButton button = getButton("Back24.gif", new BrowseAction(preview, pageNumber, -1)); toolbar.add(button); pageNumber.setPreferredSize(button.getPreferredSize()); pageNumber.setHorizontalAlignment(JLabel.CENTER); toolbar.add(pageNumber); toolbar.add(getButton("Forward24.gif", new BrowseAction(preview, pageNumber,1))); toolbar.add(new JToolBar.Separator()); toolbar.add(getButton("ZoomIn24.gif", new ZoomAction(preview, DEFAULT_ZOOM_FACTOR_STEP))); toolbar.add(getButton("ZoomOut24.gif", new ZoomAction(preview, -DEFAULT_ZOOM_FACTOR_STEP))); toolbar.add(new JToolBar.Separator()); JPanel dialog = new JPanel(); dialog.setLayout(new FlowLayout(FlowLayout.RIGHT)); JButton ok = new JButton("OK"); ok.addActionListener(this); dialog.add(ok); getContentPane().add(dialog, "South"); Tools.addEscapeActionToDialog(this); } private JButton getButton(String iconName) { return getButton(null, iconName, null); } private JButton getButton(String iconName, AbstractAction action) { return getButton(null, iconName, action); } private JButton getButton(String name, String iconName, AbstractAction action) { JButton result = null; ImageIcon icon = null; URL imageURL = getClass().getClassLoader().getResource("images/" + iconName); if (imageURL != null) icon = new ImageIcon(imageURL); if (action != null) { if (icon != null) action.putValue(Action.SMALL_ICON, new ImageIcon(imageURL)); if (name != null) action.putValue(Action.NAME, name); result = new JButton(action); } else result = new JButton(name, icon); return result; } public void actionPerformed(ActionEvent e) { dispose(); } protected MapView view; } freemind-0.9.0/freemind/freemind/controller/printpreview/Preview.java0000644000000000000000000000772111527433212024605 0ustar rootroot/* * Preview Dialog - A Preview Dialog for your Swing Applications * * Copyright (C) 2003 Jens Kaiser. * * Written by: 2003 Jens Kaiser * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package freemind.controller.printpreview; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.awt.print.PageFormat; import java.awt.print.Printable; import javax.swing.JComponent; import freemind.view.mindmapview.MapView; class Preview extends JComponent { private final static int DEFAULT_PREVIEW_SIZE = 300; private final static double MINIMUM_ZOOM_FACTOR = 0.1; private BufferedImage previewPageImage = null; private Graphics2D imageGraphics; public Preview(MapView view, double zoom) { this.view = view; PageFormat format = getPageFormat(); if (zoom == 0.0) { if (format.getOrientation() == PageFormat.PORTRAIT) this.zoom = DEFAULT_PREVIEW_SIZE / format.getHeight(); else this.zoom = DEFAULT_PREVIEW_SIZE / format.getWidth(); } else this.zoom = zoom; resize(); } protected void paintPaper(Graphics g, PageFormat format) { g.setColor(Color.white); g.fillRect(0, 0, getPageWidth(format), getPageHeight(format)); g.setColor(Color.black); g.drawRect(0, 0, getPageWidth(format) - 1, getPageHeight(format) - 1); } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; PageFormat format = getPageFormat(); paintPaper(g, format); if(previewPageImage == null){ previewPageImage = (BufferedImage)createImage(getPageWidth(format) - 1, getPageHeight(format) - 1); imageGraphics = previewPageImage.createGraphics(); imageGraphics.scale(zoom, zoom); while(Printable.NO_SUCH_PAGE == view.print(imageGraphics, format, index) && index > 0){ index -= 1; } } g2d.drawImage(previewPageImage, 0, 0, this); } private int getPageHeight(PageFormat format) { return (int)(format.getHeight()*zoom); } private int getPageWidth(PageFormat format) { return (int)(format.getWidth()*zoom); } public void moveIndex(int indexStep) { int newIndex = index + indexStep; if(newIndex >= 0){ index = newIndex; previewPageImage = null; } } public void changeZoom(double zoom) { this.zoom = Math.max(MINIMUM_ZOOM_FACTOR, this.zoom + zoom); resize(); } public void resize() { int size = (int)Math.max(getPageFormat().getWidth() * zoom, getPageFormat().getHeight() * zoom); setPreferredSize(new Dimension(size, size)); previewPageImage = null; revalidate(); } private PageFormat getPageFormat() { return view.getController().getPageFormat(); } public Dimension getMinimumSize() { return getPreferredSize(); } protected MapView view; protected int index = 0; protected double zoom = 0.0; public int getPageIndex() { return index; } } freemind-0.9.0/freemind/freemind/controller/printpreview/ZoomAction.java0000644000000000000000000000257011527433212025243 0ustar rootroot/* * Preview Dialog - A Preview Dialog for your Swing Applications * * Copyright (C) 2003 Jens Kaiser. * * Written by: 2003 Jens Kaiser * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package freemind.controller.printpreview; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; class ZoomAction extends AbstractAction { public ZoomAction(Preview preview, double zoomStep) { super(); this.preview = preview; this.zoomStep = zoomStep; } public void actionPerformed(ActionEvent e) { preview.changeZoom(zoomStep); preview.repaint(); } protected Preview preview; protected double zoomStep; } freemind-0.9.0/freemind/freemind/main/0000755000000000000000000000000011532143331016311 5ustar rootrootfreemind-0.9.0/freemind/freemind/main/FreeMindSplash.java0000644000000000000000000002035511527433212022031 0ustar rootroot/*************************************************************************** FreeMindSplash, taken from GanttSplash.java - description ------------------- begin : dec 2002 copyright : (C) 2002 by Thomas Alexandre email : alexthomas(at)ganttproject.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ package freemind.main; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Toolkit; import java.text.NumberFormat; import java.util.Set; import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.JRootPane; import javax.swing.SwingUtilities; /** * Class to put a splash before lunch the soft */ public class FreeMindSplash extends JFrame implements IFreeMindSplash { private static final int SPLASH_FONT_SIZE = 16; private class FeedBackImpl implements FeedBack { private int mActualValue; private long mActualTimeStamp=System.currentTimeMillis(); private long mTotalTime = 0; private String lastTaskId=null; private JLabel mImageJLabel=null; public void progress(final int act, String messageId) { final String progressString = frame.getResourceString(messageId); logger.info(progressString); this.mActualValue = act; long timeDifference = System.currentTimeMillis()-mActualTimeStamp; mActualTimeStamp = System.currentTimeMillis(); mTotalTime += timeDifference; logger.info("Task: "+lastTaskId + " (" + act+") last " + (timeDifference)/1000.0 + " seconds.\nTotal: "+mTotalTime/1000.0+"\n"); SwingUtilities.invokeLater(new Runnable() { public void run() { mProgressBar.setValue(act); double percent = act*1.0/mProgressBar.getMaximum(); mProgressBar.setString(progressString); if (mImageJLabel!=null) { mImageJLabel.putClientProperty("progressString",progressString); mImageJLabel.putClientProperty("progressPercent",new Double(percent)); mImageJLabel.repaint(); } } }); logger.info("Beginnig task:" + messageId); lastTaskId = messageId; } public int getActualValue() { return mActualValue; } public void setMaximumValue(int max) { mProgressBar.setMaximum(max); mProgressBar.setIndeterminate(false); } public void increase(String messageId) { progress(getActualValue()+1, messageId); } public void setImageJLabel(JLabel imageJLabel) { mImageJLabel = imageJLabel; } } private final FreeMindMain frame; private final FeedBackImpl feedBack; private JProgressBar mProgressBar; private static Logger logger; private ImageIcon mIcon; public FeedBack getFeedBack() { return feedBack; } public FreeMindSplash(final FreeMindMain frame){ super("FreeMind"); this.frame = frame; if(logger == null) { logger = frame.getLogger(this.getClass().getName()); } this.feedBack = new FeedBackImpl(); mIcon = new ImageIcon(frame.getResource( "images/FreeMindWindowIcon.png")); setIconImage(mIcon.getImage()); //set the ganttproject icon setDefaultLookAndFeelDecorated(false); setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.NONE); //set no border ImageIcon splashImage = new ImageIcon(frame.getResource("images/splash.JPG")); JLabel splashImageLabel = new JLabel(splashImage) { private Integer mWidth = null; private final Font progressFont = new Font("SansSerif", Font.PLAIN, 10); private Font versionTextFont = null; { Set availableFontFamilyNames = Tools.getAvailableFontFamilyNames(); versionTextFont = availableFontFamilyNames.contains("Century Gothic") ? new Font("Century Gothic", Font.BOLD, 14) : new Font("Arial", Font.BOLD, 12); } public void paint (Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setFont(versionTextFont); // Determine width of string to center it String freemindVersion = frame.getFreemindVersion().toString(); if (mWidth == null) { mWidth = new Integer(g2.getFontMetrics().stringWidth(freemindVersion)); } int yCoordinate = (int)(getSize().getHeight())-14; int xCoordinate = (int)(getSize().getWidth()-mWidth.intValue())-45; g2.setColor(new Color(0x4d,0x63,0xb4)); g2.drawString(freemindVersion, xCoordinate , yCoordinate); // Draw progress bar String progressString = (String)getClientProperty("progressString"); if (progressString!=null) { Double percent = (Double)getClientProperty("progressPercent"); int xBase = 21; int yBase = yCoordinate+7; int width = (int) getSize().getWidth() - 2*xBase; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); g2.setFont(progressFont); g2.setColor(new Color(0x80,0x80,0x80)); g2.drawString(progressString, xBase+1, yBase-4); g2.setColor(new Color(0xf0,0xf0,0xf0)); g2.draw(new Rectangle(xBase+2, yBase, width, 3)); g2.setColor(new Color(0xd0,0xd0,0xd0)); g2.draw(new Rectangle(xBase+1, yBase+1, width, 2)); g2.setColor(new Color(0xf4,0xf4,0xf4)); g2.fill(new Rectangle(xBase+1, yBase+1, width-1, 2)); g2.setColor(new Color(0x4d,0x63,0xb4)); g2.fill(new Rectangle(xBase+1, yBase+1, (int)(width*percent.doubleValue()), 2)); } } }; feedBack.setImageJLabel(splashImageLabel); getContentPane().add(splashImageLabel, BorderLayout.CENTER); // getContentPane().add(l, BorderLayout.CENTER); mProgressBar = new JProgressBar(); mProgressBar.setIndeterminate(true); mProgressBar.setStringPainted(true); // getContentPane().add(mProgressBar, BorderLayout.SOUTH); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension labelSize = splashImageLabel.getPreferredSize(); // Put image at the middle of the screen setLocation(screenSize.width/2 - (labelSize.width/2), screenSize.height/2 - (labelSize.height/2)); } public void close() { setVisible(false); dispose(); } public ImageIcon getWindowIcon() { return mIcon; } } freemind-0.9.0/freemind/freemind/main/FreeMindMain.java0000644000000000000000000001533411527433212021464 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: FreeMindMain.java,v 1.12.14.5.2.12 2008/07/17 19:16:33 christianfoltin Exp $*/ package freemind.main; import java.awt.Container; import java.io.File; import java.net.URL; import java.util.Properties; import java.util.ResourceBundle; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLayeredPane; import javax.swing.JSplitPane; import freemind.controller.Controller; import freemind.controller.MenuBar; import freemind.view.mindmapview.MapView; public interface FreeMindMain { public JFrame getJFrame(); public boolean isApplet(); public MapView getView(); public void setView(MapView view); public Controller getController(); public void setWaitingCursor(boolean waiting); public File getPatternsFile(); public MenuBar getFreeMindMenuBar(); /**Returns the ResourceBundle with the current language*/ public ResourceBundle getResources(); public String getResourceString(String key) ; public String getResourceString(String key, String defaultResource); public Container getContentPane(); public void out (String msg); public void err (String msg); /** * Open url in WWW browser. This method hides some differences between operating systems. */ public void openDocument(URL location) throws Exception; /**remove this!*/ public void repaint(); public URL getResource(String name); public int getIntProperty(String key, int defaultValue); /** @return returns the list of all properties. */ public Properties getProperties(); /** * Properties are stored in freemind.properties (internally) and ~/.freemind/auto.properties * for user changed values. * This method returns the user value (if changed) or the original. * * @param key The property key as specified in freemind.properties * @return the value of the property or null, if not found. */ public String getProperty(String key); public void setProperty(String key, String value); public void saveProperties(); /** Returns the path to the directory the freemind auto properties are in, or null, if not present.*/ public String getFreemindDirectory(); public JLayeredPane getLayeredPane(); public Container getViewport(); public void setTitle(String title); // to keep last win size (PN) public int getWinHeight(); public int getWinWidth(); public int getWinState(); public int getWinX(); public int getWinY(); public static final int VERSION_TYPE_ALPHA=0; public static final int VERSION_TYPE_BETA=1; public static final int VERSION_TYPE_RC=2; public static final int VERSION_TYPE_RELEASE=3; public static class VersionInformation { public int mMaj = 0; public int mMid = 9; public int mMin = 0; public int mType = VERSION_TYPE_BETA; public int mNum = 17; public VersionInformation(int pMaj, int pMid, int pMin, int pType, int pNum) { super(); mMaj = pMaj; mMid = pMid; mMin = pMin; mType = pType; mNum = pNum; } public VersionInformation(String pString) { StringTokenizer t = new StringTokenizer(pString, ". ", false); String[] info = new String[t.countTokens()]; int i=0; while(t.hasMoreTokens()) { info[i++]=t.nextToken(); } if(info.length != 3 && info.length != 5) throw new IllegalArgumentException("Wrong number of tokens for version information: " + pString); mMaj = Integer.parseInt(info[0]); mMid = Integer.parseInt(info[1]); mMin = Integer.parseInt(info[2]); if(info.length == 3){ // release. mType = VERSION_TYPE_RELEASE; mNum = 0; return; } // here,we have info.length == 5! Vector types = new Vector(); types.add("Alpha"); types.add("Beta"); types.add("RC"); int typeIndex = types.indexOf(info[3]); if(typeIndex < 0){ throw new IllegalArgumentException("Wrong version type for version information: " + info[4]); } mType = typeIndex; mNum = Integer.parseInt(info[4]); } public String toString() { StringBuffer buf = new StringBuffer(); buf.append(mMaj); buf.append('.'); buf.append(mMid); buf.append('.'); buf.append(mMin); switch(mType){ case VERSION_TYPE_ALPHA: buf.append(' '); buf.append("Alpha"); break; case VERSION_TYPE_BETA: buf.append(' '); buf.append("Beta"); break; case VERSION_TYPE_RC: buf.append(' '); buf.append("RC"); break; case VERSION_TYPE_RELEASE: break; default: throw new IllegalArgumentException("Unknown version type " +mType); } if(mType != VERSION_TYPE_RELEASE){ buf.append(' '); buf.append(mNum); } return buf.toString(); } } /** version info:*/ public VersionInformation getFreemindVersion(); /** To obtain a logging element, ask here. */ public java.util.logging.Logger getLogger(String forClass); /** * Inserts a (south) component into the split pane. If the * screen isn't split yet, a split pane should be created on the fly. * * @param pMindMapComponent south panel to be inserted * @return the split pane in order to move the dividers. */ public JSplitPane insertComponentIntoSplitPane(JComponent pMindMapComponent); /** * Indicates that the south panel should be made invisible. */ public void removeSplitPane(); /** * @return a ClassLoader derived from the standard, with * freeminds base dir included. */ public ClassLoader getFreeMindClassLoader(); /** * @return default ".", but on different os this differs. */ String getFreemindBaseDir(); /** Makes it possible to have a property different for different localizations. * Common example is to put keystrokes to different keys as some are better * reachable than others depending on the locale. */ public String getAdjustableProperty(String label); public void setDefaultProperty(String key, String value); } freemind-0.9.0/freemind/freemind/main/XMLElement.java0000644000000000000000000031002111527433212021127 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* XMLElement.java * * $Revision: 1.7.18.4.2.8 $ * $Date: 2009/08/27 20:04:10 $ * $Name: fm_060405_integration $ * * This file is part of NanoXML 2 Lite. * Copyright (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from the * use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in * a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source distribution. *****************************************************************************/ /* * This version of XMLElement has been *altered* for the purposes of FreeMind * toUpperCase(Locale.ENGLISH) for turkish added. */ package freemind.main; import java.io.ByteArrayOutputStream; import java.io.CharArrayReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.StringReader; import java.io.Writer; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; import java.util.Locale; import java.util.TreeMap; import java.util.Vector; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * XMLElement is a representation of an XML object. The object is able to parse * XML code. *

*
Parsing XML Data
*
* You can parse XML data using the following code: *
    * XMLElement xml = new XMLElement();
    * FileReader reader = new FileReader("filename.xml");
    * xml.parseFromReader(reader); *
*
Retrieving Attributes
*
* You can enumerate the attributes of an element using the method * {@link #enumerateAttributeNames() enumerateAttributeNames}. * The attribute values can be retrieved using the method * {@link #getStringAttribute(java.lang.String) getStringAttribute}. * The following example shows how to list the attributes of an element: *
    * XMLElement element = ...;
    * Enumeration enumerator = element.getAttributeNames();
    * while (enumerator.hasMoreElements()) {
    *     String key = (String) enumerator.nextElement();
    *     String value = element.getStringAttribute(key);
    *     System.out.println(key + " = " + value);
    * } *
*
Retrieving Child Elements
*
* You can enumerate the children of an element using * {@link #enumerateChildren() enumerateChildren}. * The number of child elements can be retrieved using * {@link #countChildren() countChildren}. *
*
Elements Containing Character Data
*
* If an elements contains character data, like in the following example: *
    * <title>The Title</title> *
* you can retrieve that data using the method * {@link #getContent() getContent}. *
*
Subclassing XMLElement
*
* When subclassing XMLElement, you need to override the method * {@link #createAnotherElement() createAnotherElement} * which has to return a new copy of the receiver. *
*

* * * * @author Marc De Scheemaecker * <cyberelf@mac.com> * @version $Name: fm_060405_integration $, $Revision: 1.7.18.4.2.8 $ */ public class XMLElement { public static final String XML_NODE_XHTML_CONTENT_TAG = "richcontent"; public static final String XML_NODE_XHTML_CONTENT_END_TAG_REGEXP = "<\\s*/\\s*" + XML_NODE_XHTML_CONTENT_TAG + "\\s*>"; private static Pattern sContentEndTagPattern = null; /** * Serialization serial version ID. */ static final long serialVersionUID = 6685035139346394777L; /** * Major version of NanoXML. Classes with the same major and minor * version are binary compatible. Classes with the same major version * are source compatible. If the major version is different, you may * need to modify the client source code. * * @see freemind.main.XMLElement#NANOXML_MINOR_VERSION */ public static final int NANOXML_MAJOR_VERSION = 2; /** * Minor version of NanoXML. Classes with the same major and minor * version are binary compatible. Classes with the same major version * are source compatible. If the major version is different, you may * need to modify the client source code. * * @see freemind.main.XMLElement#NANOXML_MAJOR_VERSION */ public static final int NANOXML_MINOR_VERSION = 2; /** * The attributes given to the element. * *

Invariants:
*
  • The field can be empty. *
  • The field is never null. *
  • The keys and the values are strings. *
*/ private TreeMap attributes; /** * Child elements of the element. * *
Invariants:
*
  • The field can be empty. *
  • The field is never null. *
  • The elements are instances of XMLElement * or a subclass of XMLElement. *
*/ private Vector children; /** * The name of the element. * *
Invariants:
*
  • The field is null iff the element is not * initialized by either parse or setName. *
  • If the field is not null, it's not empty. *
  • If the field is not null, it contains a valid * XML identifier. *
*/ private String name; /** * The #PCDATA content of the object. * *
Invariants:
*
  • The field is null iff the element is not a * #PCDATA element. *
  • The field can be any string, including the empty string. *
*/ private String contents; /** * fc, 17.5.06: enable buld xml writing. */ private boolean dontEncodeContents; /** * Conversion table for &...; entities. The keys are the entity names * without the & and ; delimiters. * *
Invariants:
*
  • The field is never null. *
  • The field always contains the following associations: * "lt" => "<", "gt" => ">", * "quot" => "\"", "apos" => "'", * "amp" => "&" *
  • The keys are strings *
  • The values are char arrays *
*/ private Hashtable entities; /** * The line number where the element starts. * *
Invariants:
*
  • lineNr >= 0 *
*/ private int lineNr; /** * true if the case of the element and attribute names * are case insensitive. */ protected boolean ignoreCase; /** * true if the leading and trailing whitespace of #PCDATA * sections have to be ignored. */ private boolean ignoreWhitespace; /** * Character read too much. * This character provides push-back functionality to the input reader * without having to use a PushbackReader. * If there is no such character, this field is '\0'. */ private char charReadTooMuch; /** * The reader provided by the caller of the parse method. * *
Invariants:
*
  • The field is not null while the parse method * is running. *
*/ private Reader reader; /** * The current line number in the source content. * *
Invariants:
*
  • parserLineNr > 0 while the parse method is running. *
*/ private int parserLineNr; /** * Creates and initializes a new XML element. * Calling the construction is equivalent to: *
    new XMLElement(new Hashtable(), false, true) *
* *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable) * XMLElement(Hashtable) * @see freemind.main.XMLElement#XMLElement(boolean) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable,boolean) * XMLElement(Hashtable, boolean) */ public XMLElement() { this(new Hashtable(), false, true, true); } /** * Creates and initializes a new XML element. * Calling the construction is equivalent to: *
    new XMLElement(entities, false, true) *
* * The entity conversion table. * *
Preconditions:
*
  • entities != null *
* *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#XMLElement() * @see freemind.main.XMLElement#XMLElement(boolean) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable,boolean) * XMLElement(Hashtable, boolean) */ public XMLElement(Hashtable entities) { this(entities, false, true, true); } /** * Creates and initializes a new XML element. * Calling the construction is equivalent to: *
    new XMLElement(new Hashtable(), skipLeadingWhitespace, true) *
* * true if leading and trailing whitespace in PCDATA * content has to be removed. * *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#XMLElement() * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable) * XMLElement(Hashtable) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable,boolean) * XMLElement(Hashtable, boolean) */ public XMLElement(boolean skipLeadingWhitespace) { this(new Hashtable(), skipLeadingWhitespace, true, true); } /** * Creates and initializes a new XML element. * Calling the construction is equivalent to: *
    new XMLElement(entities, skipLeadingWhitespace, true) *
* * The entity conversion table. * true if leading and trailing whitespace in PCDATA * content has to be removed. * *
Preconditions:
*
  • entities != null *
* *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#XMLElement() * @see freemind.main.XMLElement#XMLElement(boolean) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable) * XMLElement(Hashtable) */ public XMLElement(Hashtable entities, boolean skipLeadingWhitespace) { this(entities, skipLeadingWhitespace, true, true); } /** * Creates and initializes a new XML element. * * The entity conversion table. * true if leading and trailing whitespace in PCDATA * content has to be removed. * true if the case of element and attribute names have * to be ignored. * *
Preconditions:
*
  • entities != null *
* *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#XMLElement() * @see freemind.main.XMLElement#XMLElement(boolean) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable) * XMLElement(Hashtable) * @see freemind.main.XMLElement#XMLElement(java.util.Hashtable,boolean) * XMLElement(Hashtable, boolean) */ public XMLElement(Hashtable entities, boolean skipLeadingWhitespace, boolean ignoreCase) { this(entities, skipLeadingWhitespace, true, ignoreCase); } /** * Creates and initializes a new XML element. *

* This constructor should only be called from * {@link #createAnotherElement() createAnotherElement} * to create child elements. * * The entity conversion table. * true if leading and trailing whitespace in PCDATA * content has to be removed. * true if the basic entities need to be added to * the entity list. * true if the case of element and attribute names have * to be ignored. * *

Preconditions:
*
  • entities != null *
  • if fillBasicConversionTable == false * then entities contains at least the following * entries: amp, lt, gt, * apos and quot *
* *
Postconditions:
*
  • countChildren() => 0 *
  • enumerateChildren() => empty enumeration *
  • enumeratePropertyNames() => empty enumeration *
  • getChildren() => empty vector *
  • getContent() => "" *
  • getLineNr() => 0 *
  • getName() => null *
* * @see freemind.main.XMLElement#createAnotherElement() */ protected XMLElement(Hashtable entities, boolean skipLeadingWhitespace, boolean fillBasicConversionTable, boolean ignoreCase) { this.ignoreWhitespace = skipLeadingWhitespace; this.ignoreCase = ignoreCase; this.name = null; this.contents = ""; this.attributes = new TreeMap(); this.children = new Vector(); this.entities = entities; this.lineNr = 0; Enumeration enumerator = this.entities.keys(); while (enumerator.hasMoreElements()) { Object key = enumerator.nextElement(); Object value = this.entities.get(key); if (value instanceof String) { value = ((String) value).toCharArray(); this.entities.put(key, value); } } if (fillBasicConversionTable) { this.entities.put("amp", new char[] { '&' }); this.entities.put("quot", new char[] { '"' }); this.entities.put("apos", new char[] { '\'' }); this.entities.put("lt", new char[] { '<' }); this.entities.put("gt", new char[] { '>' }); } } // We may expect that some subclass would like to have its own object public Object getUserObject() { return null; } /** * Adds a child element. * * The child element to add. * *
Preconditions:
*
  • child != null *
  • child.getName() != null *
  • child does not have a parent element *
* *
Postconditions:
*
  • countChildren() => old.countChildren() + 1 *
  • enumerateChildren() => old.enumerateChildren() + child *
  • getChildren() => old.enumerateChildren() + child *
* * @see freemind.main.XMLElement#countChildren() * @see freemind.main.XMLElement#enumerateChildren() * @see freemind.main.XMLElement#getChildren() * @see freemind.main.XMLElement#removeChild(XMLElement) * removeChild(XMLElement) */ public void addChild(XMLElement child) { this.children.addElement(child); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • value != null *
* *
Postconditions:
*
  • enumerateAttributeNames() * => old.enumerateAttributeNames() + name *
  • getAttribute(name) => value *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getAttribute(java.lang.String) * getAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, java.lang.Object) * getAttribute(String, Object) * @see freemind.main.XMLElement#getAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String) * getStringAttribute(String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.lang.String) * getStringAttribute(String, String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getStringAttribute(String, Hashtable, String, boolean) */ public void setAttribute(String name, Object value) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } this.attributes.put(name, value.toString()); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * * @deprecated Use {@link #setAttribute(java.lang.String, java.lang.Object) * setAttribute} instead. */ public void addProperty(String name, Object value) { this.setAttribute(name, value); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* *
Postconditions:
*
  • enumerateAttributeNames() * => old.enumerateAttributeNames() + name *
  • getIntAttribute(name) => value *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getIntAttribute(java.lang.String) * getIntAttribute(String) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, int) * getIntAttribute(String, int) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getIntAttribute(String, Hashtable, String, boolean) */ public void setIntAttribute(String name, int value) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } this.attributes.put(name, Integer.toString(value)); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * * @deprecated Use {@link #setIntAttribute(java.lang.String, int) * setIntAttribute} instead. */ public void addProperty(String key, int value) { this.setIntAttribute(key, value); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* *
Postconditions:
*
  • enumerateAttributeNames() * => old.enumerateAttributeNames() + name *
  • getDoubleAttribute(name) => value *
* * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String) * getDoubleAttribute(String) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, double) * getDoubleAttribute(String, double) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getDoubleAttribute(String, Hashtable, String, boolean) */ public void setDoubleAttribute(String name, double value) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } this.attributes.put(name, Double.toString(value)); } /** * Adds or modifies an attribute. * * The name of the attribute. * The value of the attribute. * * @deprecated Use {@link #setDoubleAttribute(java.lang.String, double) * setDoubleAttribute} instead. */ public void addProperty(String name, double value) { this.setDoubleAttribute(name, value); } /** * Returns the number of child elements of the element. * *
Postconditions:
*
  • result >= 0 *
* * @see freemind.main.XMLElement#addChild(XMLElement) * addChild(XMLElement) * @see freemind.main.XMLElement#enumerateChildren() * @see freemind.main.XMLElement#getChildren() * @see freemind.main.XMLElement#removeChild(XMLElement) * removeChild(XMLElement) */ public int countChildren() { return this.children.size(); } /** * Enumerates the attribute names. * *
Postconditions:
*
  • result != null *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String) * getAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, java.lang.Object) * getAttribute(String, String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String) * getStringAttribute(String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.lang.String) * getStringAttribute(String, String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getStringAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String) * getIntAttribute(String) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, int) * getIntAttribute(String, int) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getIntAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String) * getDoubleAttribute(String) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, double) * getDoubleAttribute(String, double) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getDoubleAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getBooleanAttribute(java.lang.String, * java.lang.String, * java.lang.String, boolean) * getBooleanAttribute(String, String, String, boolean) */ public Iterator enumerateAttributeNames() { return this.attributes.keySet().iterator(); } /** * Enumerates the attribute names. * * @deprecated Use {@link #enumerateAttributeNames() * enumerateAttributeNames} instead. */ public Iterator enumeratePropertyNames() { return this.enumerateAttributeNames(); } /** * Enumerates the child elements. * *
Postconditions:
*
  • result != null *
* * @see freemind.main.XMLElement#addChild(XMLElement) * addChild(XMLElement) * @see freemind.main.XMLElement#countChildren() * @see freemind.main.XMLElement#getChildren() * @see freemind.main.XMLElement#removeChild(XMLElement) * removeChild(XMLElement) */ public Enumeration enumerateChildren() { return this.children.elements(); } /** * Returns the child elements as a Vector. It is safe to modify this * Vector. * *
Postconditions:
*
  • result != null *
* * @see freemind.main.XMLElement#addChild(XMLElement) * addChild(XMLElement) * @see freemind.main.XMLElement#countChildren() * @see freemind.main.XMLElement#enumerateChildren() * @see freemind.main.XMLElement#removeChild(XMLElement) * removeChild(XMLElement) */ public Vector getChildren() { try { return (Vector) this.children.clone(); } catch (Exception e) { // this never happens, however, some Java compilers are so // braindead that they require this exception clause return null; } } /** * Returns the PCDATA content of the object. If there is no such content, * null is returned. * * @deprecated Use {@link #getContent() getContent} instead. */ public String getContents() { return this.getContent(); } /** * Returns the PCDATA content of the object. If there is no such content, * null is returned. * * @see freemind.main.XMLElement#setContent(java.lang.String) * setContent(String) */ public String getContent() { return this.contents; } /** * Returns the line nr in the source data on which the element is found. * This method returns 0 there is no associated source data. * *
Postconditions:
*
  • result >= 0 *
*/ public int getLineNr() { return this.lineNr; } /** * Returns an attribute of the element. * If the attribute doesn't exist, null is returned. * * @param name The name of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getAttribute(java.lang.String, java.lang.Object) * getAttribute(String, Object) * @see freemind.main.XMLElement#getAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getAttribute(String, Hashtable, String, boolean) */ public Object getAttribute(String name) { return this.getAttribute(name, null); } /** * Returns an attribute of the element. * If the attribute doesn't exist, defaultValue is returned. * * @param name The name of the attribute. * @param defaultValue Key to use if the attribute is missing. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getAttribute(java.lang.String) * getAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getAttribute(String, Hashtable, String, boolean) */ public Object getAttribute(String name, Object defaultValue) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } Object value = this.attributes.get(name); if (value == null) { value = defaultValue; } return value; } /** * Returns an attribute by looking up a key in a hashtable. * If the attribute doesn't exist, the value corresponding to defaultKey * is returned. *

* As an example, if valueSet contains the mapping "one" => * "1" * and the element contains the attribute attr="one", then * getAttribute("attr", mapping, defaultKey, false) returns * "1". * * The name of the attribute. * Hashtable mapping keys to values. * Key to use if the attribute is missing. * true if literals are valid. * *

Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • valueSet != null *
  • the keys of valueSet are strings *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getAttribute(java.lang.String) * getAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, java.lang.Object) * getAttribute(String, Object) */ public Object getAttribute(String name, Hashtable valueSet, String defaultKey, boolean allowLiterals) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } Object key = this.attributes.get(name); Object result; if (key == null) { key = defaultKey; } result = valueSet.get(key); if (result == null) { if (allowLiterals) { result = key; } else { throw this.invalidValue(name, (String) key); } } return result; } /** * Returns an attribute of the element. * If the attribute doesn't exist, null is returned. * * @param name The name of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.lang.String) * getStringAttribute(String, String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getStringAttribute(String, Hashtable, String, boolean) */ public String getStringAttribute(String name) { return this.getStringAttribute(name, null); } /** * Returns an attribute of the element. * If the attribute doesn't exist, defaultValue is returned. * * @param name The name of the attribute. * @param defaultValue Key to use if the attribute is missing. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getStringAttribute(java.lang.String) * getStringAttribute(String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getStringAttribute(String, Hashtable, String, boolean) */ public String getStringAttribute(String name, String defaultValue) { return (String) this.getAttribute(name, defaultValue); } /** * Returns an attribute by looking up a key in a hashtable. * If the attribute doesn't exist, the value corresponding to defaultKey * is returned. *

* As an example, if valueSet contains the mapping "one" => * "1" * and the element contains the attribute attr="one", then * getAttribute("attr", mapping, defaultKey, false) returns * "1". * * The name of the attribute. * Hashtable mapping keys to values. * Key to use if the attribute is missing. * true if literals are valid. * *

Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • valueSet != null *
  • the keys of valueSet are strings *
  • the values of valueSet are strings *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getStringAttribute(java.lang.String) * getStringAttribute(String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.lang.String) * getStringAttribute(String, String) */ public String getStringAttribute(String name, Hashtable valueSet, String defaultKey, boolean allowLiterals) { return (String) this.getAttribute(name, valueSet, defaultKey, allowLiterals); } /** * Returns an attribute of the element. * If the attribute doesn't exist, 0 is returned. * * @param name The name of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, int) * getIntAttribute(String, int) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getIntAttribute(String, Hashtable, String, boolean) */ public int getIntAttribute(String name) { return this.getIntAttribute(name, 0); } /** * Returns an attribute of the element. * If the attribute doesn't exist, defaultValue is returned. * * @param name The name of the attribute. * @param defaultValue Key to use if the attribute is missing. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getIntAttribute(java.lang.String) * getIntAttribute(String) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getIntAttribute(String, Hashtable, String, boolean) */ public int getIntAttribute(String name, int defaultValue) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } String value = (String) this.attributes.get(name); if (value == null) { return defaultValue; } else { try { return Integer.parseInt(value); } catch (NumberFormatException e) { throw this.invalidValue(name, value); } } } /** * Returns an attribute by looking up a key in a hashtable. * If the attribute doesn't exist, the value corresponding to defaultKey * is returned. *

* As an example, if valueSet contains the mapping "one" => 1 * and the element contains the attribute attr="one", then * getIntAttribute("attr", mapping, defaultKey, false) returns * 1. * * The name of the attribute. * Hashtable mapping keys to values. * Key to use if the attribute is missing. * true if literal numbers are valid. * *

Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • valueSet != null *
  • the keys of valueSet are strings *
  • the values of valueSet are Integer objects *
  • defaultKey is either null, a * key in valueSet or an integer. *
* * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getIntAttribute(java.lang.String) * getIntAttribute(String) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, int) * getIntAttribute(String, int) */ public int getIntAttribute(String name, Hashtable valueSet, String defaultKey, boolean allowLiteralNumbers) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } Object key = this.attributes.get(name); Integer result; if (key == null) { key = defaultKey; } try { result = (Integer) valueSet.get(key); } catch (ClassCastException e) { throw this.invalidValueSet(name); } if (result == null) { if (! allowLiteralNumbers) { throw this.invalidValue(name, (String) key); } try { result = Integer.valueOf((String) key); } catch (NumberFormatException e) { throw this.invalidValue(name, (String) key); } } return result.intValue(); } /** * Returns an attribute of the element. * If the attribute doesn't exist, 0.0 is returned. * * @param name The name of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, double) * getDoubleAttribute(String, double) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getDoubleAttribute(String, Hashtable, String, boolean) */ public double getDoubleAttribute(String name) { return this.getDoubleAttribute(name, 0.); } /** * Returns an attribute of the element. * If the attribute doesn't exist, defaultValue is returned. * * @param name The name of the attribute. * @param defaultValue Key to use if the attribute is missing. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String) * getDoubleAttribute(String) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getDoubleAttribute(String, Hashtable, String, boolean) */ public double getDoubleAttribute(String name, double defaultValue) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } String value = (String) this.attributes.get(name); if (value == null) { return defaultValue; } else { try { return Double.valueOf(value).doubleValue(); } catch (NumberFormatException e) { throw this.invalidValue(name, value); } } } /** * Returns an attribute by looking up a key in a hashtable. * If the attribute doesn't exist, the value corresponding to defaultKey * is returned. *

* As an example, if valueSet contains the mapping "one" => * 1.0 * and the element contains the attribute attr="one", then * getDoubleAttribute("attr", mapping, defaultKey, false) * returns 1.0. * * The name of the attribute. * Hashtable mapping keys to values. * Key to use if the attribute is missing. * true if literal numbers are valid. * *

Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • valueSet != null *
  • the keys of valueSet are strings *
  • the values of valueSet are Double objects *
  • defaultKey is either null, a * key in valueSet or a double. *
* * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String) * getDoubleAttribute(String) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, double) * getDoubleAttribute(String, double) */ public double getDoubleAttribute(String name, Hashtable valueSet, String defaultKey, boolean allowLiteralNumbers) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } Object key = this.attributes.get(name); Double result; if (key == null) { key = defaultKey; } try { result = (Double) valueSet.get(key); } catch (ClassCastException e) { throw this.invalidValueSet(name); } if (result == null) { if (! allowLiteralNumbers) { throw this.invalidValue(name, (String) key); } try { result = Double.valueOf((String) key); } catch (NumberFormatException e) { throw this.invalidValue(name, (String) key); } } return result.doubleValue(); } /** * Returns an attribute of the element. * If the attribute doesn't exist, defaultValue is returned. * If the value of the attribute is equal to trueValue, * true is returned. * If the value of the attribute is equal to falseValue, * false is returned. * If the value doesn't match trueValue or * falseValue, an exception is thrown. * * @param name The name of the attribute. * @param trueValue The value associated with true. * @param falseValue The value associated with true. * @param defaultValue Value to use if the attribute is missing. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
  • trueValue and falseValue * are different strings. *
* * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#removeAttribute(java.lang.String) * removeAttribute(String) * @see freemind.main.XMLElement#enumerateAttributeNames() */ public boolean getBooleanAttribute(String name, String trueValue, String falseValue, boolean defaultValue) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } Object value = this.attributes.get(name); if (value == null) { return defaultValue; } else if (value.equals(trueValue)) { return true; } else if (value.equals(falseValue)) { return false; } else { throw this.invalidValue(name, (String) value); } } /** * Returns an attribute by looking up a key in a hashtable. * * @deprecated Use {@link #getIntAttribute(java.lang.String, * java.util.Hashtable, java.lang.String, boolean) * getIntAttribute} instead. */ public int getIntProperty(String name, Hashtable valueSet, String defaultKey) { return this.getIntAttribute(name, valueSet, defaultKey, false); } /** * Returns an attribute. * * @deprecated Use {@link #getStringAttribute(java.lang.String) * getStringAttribute} instead. */ public String getProperty(String name) { return this.getStringAttribute(name); } /** * Returns an attribute. * * @deprecated Use {@link #getStringAttribute(java.lang.String, * java.lang.String) getStringAttribute} instead. */ public String getProperty(String name, String defaultValue) { return this.getStringAttribute(name, defaultValue); } /** * Returns an attribute. * * @deprecated Use {@link #getIntAttribute(java.lang.String, int) * getIntAttribute} instead. */ public int getProperty(String name, int defaultValue) { return this.getIntAttribute(name, defaultValue); } /** * Returns an attribute. * * @deprecated Use {@link #getDoubleAttribute(java.lang.String, double) * getDoubleAttribute} instead. */ public double getProperty(String name, double defaultValue) { return this.getDoubleAttribute(name, defaultValue); } /** * Returns an attribute. * * @deprecated Use {@link #getBooleanAttribute(java.lang.String, * java.lang.String, java.lang.String, boolean) * getBooleanAttribute} instead. */ public boolean getProperty(String key, String trueValue, String falseValue, boolean defaultValue) { return this.getBooleanAttribute(key, trueValue, falseValue, defaultValue); } /** * Returns an attribute by looking up a key in a hashtable. * * @deprecated Use {@link #getAttribute(java.lang.String, * java.util.Hashtable, java.lang.String, boolean) * getAttribute} instead. */ public Object getProperty(String name, Hashtable valueSet, String defaultKey) { return this.getAttribute(name, valueSet, defaultKey, false); } /** * Returns an attribute by looking up a key in a hashtable. * * @deprecated Use {@link #getStringAttribute(java.lang.String, * java.util.Hashtable, java.lang.String, boolean) * getStringAttribute} instead. */ public String getStringProperty(String name, Hashtable valueSet, String defaultKey) { return this.getStringAttribute(name, valueSet, defaultKey, false); } /** * Returns an attribute by looking up a key in a hashtable. * * @deprecated Use {@link #getIntAttribute(java.lang.String, * java.util.Hashtable, java.lang.String, boolean) * getIntAttribute} instead. */ public int getSpecialIntProperty(String name, Hashtable valueSet, String defaultKey) { return this.getIntAttribute(name, valueSet, defaultKey, true); } /** * Returns an attribute by looking up a key in a hashtable. * * @deprecated Use {@link #getDoubleAttribute(java.lang.String, * java.util.Hashtable, java.lang.String, boolean) * getDoubleAttribute} instead. */ public double getSpecialDoubleProperty(String name, Hashtable valueSet, String defaultKey) { return this.getDoubleAttribute(name, valueSet, defaultKey, true); } /** * Returns the name of the element. * * @see freemind.main.XMLElement#setName(java.lang.String) setName(String) */ public String getName() { return this.name; } /** * Returns the name of the element. * * @deprecated Use {@link #getName() getName} instead. */ public String getTagName() { return this.getName(); } /** * Reads one XML element from a java.io.Reader and parses it. * * The reader from which to retrieve the XML data. * *
Preconditions:
*
  • reader != null *
  • reader is not closed *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
  • the reader points to the first character following the last * '>' character of the XML element *
* * @throws java.io.IOException * If an error occured while reading the input. * @throws XMLParseException * If an error occured while parsing the read data. */ public void parseFromReader(Reader reader) throws IOException, XMLParseException { this.parseFromReader(reader, /*startingLineNr*/ 1); } /** * Reads one XML element from a java.io.Reader and parses it. * * The reader from which to retrieve the XML data. * The line number of the first line in the data. * *
Preconditions:
*
  • reader != null *
  • reader is not closed *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
  • the reader points to the first character following the last * '>' character of the XML element *
* * @throws java.io.IOException * If an error occured while reading the input. * @throws XMLParseException * If an error occured while parsing the read data. */ public void parseFromReader(Reader reader, int startingLineNr) throws IOException, XMLParseException { this.charReadTooMuch = '\0'; this.reader = reader; this.parserLineNr = startingLineNr; for (;;) { char ch = this.scanWhitespace(); if (ch != '<') { throw this.expectedInput("<"); } ch = this.readChar(); if ((ch == '!') || (ch == '?')) { this.skipSpecialTag(0); } else { this.unreadChar(ch); this.scanElement(this); return; } } } /** * Reads one XML element from a String and parses it. * * The reader from which to retrieve the XML data. * *
Preconditions:
*
  • string != null *
  • string.length() > 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseString(String string) throws XMLParseException { try { this.parseFromReader(new StringReader(string), /*startingLineNr*/ 1); } catch (IOException e) { // Java exception handling suxx } } /** * Reads one XML element from a String and parses it. * * The reader from which to retrieve the XML data. * The first character in string to scan. * *
Preconditions:
*
  • string != null *
  • offset < string.length() *
  • offset >= 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseString(String string, int offset) throws XMLParseException { this.parseString(string.substring(offset)); } /** * Reads one XML element from a String and parses it. * * The reader from which to retrieve the XML data. * The first character in string to scan. * The character where to stop scanning. * This character is not scanned. * *
Preconditions:
*
  • string != null *
  • end <= string.length() *
  • offset < end *
  • offset >= 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseString(String string, int offset, int end) throws XMLParseException { this.parseString(string.substring(offset, end)); } /** * Reads one XML element from a String and parses it. * * The reader from which to retrieve the XML data. * The first character in string to scan. * The character where to stop scanning. * This character is not scanned. * The line number of the first line in the data. * *
Preconditions:
*
  • string != null *
  • end <= string.length() *
  • offset < end *
  • offset >= 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseString(String string, int offset, int end, int startingLineNr) throws XMLParseException { string = string.substring(offset, end); try { this.parseFromReader(new StringReader(string), startingLineNr); } catch (IOException e) { // Java exception handling suxx } } /** * Reads one XML element from a char array and parses it. * * The reader from which to retrieve the XML data. * The first character in string to scan. * The character where to stop scanning. * This character is not scanned. * *
Preconditions:
*
  • input != null *
  • end <= input.length *
  • offset < end *
  • offset >= 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseCharArray(char[] input, int offset, int end) throws XMLParseException { this.parseCharArray(input, offset, end, /*startingLineNr*/ 1); } /** * Reads one XML element from a char array and parses it. * * The reader from which to retrieve the XML data. * The first character in string to scan. * The character where to stop scanning. * This character is not scanned. * The line number of the first line in the data. * *
Preconditions:
*
  • input != null *
  • end <= input.length *
  • offset < end *
  • offset >= 0 *
* *
Postconditions:
*
  • the state of the receiver is updated to reflect the XML element * parsed from the reader *
* * @throws XMLParseException * If an error occured while parsing the string. */ public void parseCharArray(char[] input, int offset, int end, int startingLineNr) throws XMLParseException { try { Reader reader = new CharArrayReader(input, offset, end); this.parseFromReader(reader, startingLineNr); } catch (IOException e) { // This exception will never happen. } } /** * Removes a child element. * * The child element to remove. * *
Preconditions:
*
  • child != null *
  • child is a child element of the receiver *
* *
Postconditions:
*
  • countChildren() => old.countChildren() - 1 *
  • enumerateChildren() => old.enumerateChildren() - child *
  • getChildren() => old.enumerateChildren() - child *
* * @see freemind.main.XMLElement#addChild(XMLElement) * addChild(XMLElement) * @see freemind.main.XMLElement#countChildren() * @see freemind.main.XMLElement#enumerateChildren() * @see freemind.main.XMLElement#getChildren() */ public void removeChild(XMLElement child) { this.children.removeElement(child); } /** * Removes an attribute. * * The name of the attribute. * *
Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* *
Postconditions:
*
  • enumerateAttributeNames() * => old.enumerateAttributeNames() - name *
  • getAttribute(name) => null *
* * @see freemind.main.XMLElement#enumerateAttributeNames() * @see freemind.main.XMLElement#setDoubleAttribute(java.lang.String, double) * setDoubleAttribute(String, double) * @see freemind.main.XMLElement#setIntAttribute(java.lang.String, int) * setIntAttribute(String, int) * @see freemind.main.XMLElement#setAttribute(java.lang.String, java.lang.Object) * setAttribute(String, Object) * @see freemind.main.XMLElement#getAttribute(java.lang.String) * getAttribute(String) * @see freemind.main.XMLElement#getAttribute(java.lang.String, java.lang.Object) * getAttribute(String, Object) * @see freemind.main.XMLElement#getAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String) * getStringAttribute(String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.lang.String) * getStringAttribute(String, String) * @see freemind.main.XMLElement#getStringAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getStringAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String) * getIntAttribute(String) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, int) * getIntAttribute(String, int) * @see freemind.main.XMLElement#getIntAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getIntAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String) * getDoubleAttribute(String) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, double) * getDoubleAttribute(String, double) * @see freemind.main.XMLElement#getDoubleAttribute(java.lang.String, * java.util.Hashtable, * java.lang.String, boolean) * getDoubleAttribute(String, Hashtable, String, boolean) * @see freemind.main.XMLElement#getBooleanAttribute(java.lang.String, * java.lang.String, * java.lang.String, boolean) * getBooleanAttribute(String, String, String, boolean) */ public void removeAttribute(String name) { if (this.ignoreCase) { name = name.toUpperCase(Locale.ENGLISH); } this.attributes.remove(name); } /** * Removes an attribute. * * The name of the attribute. * * @deprecated Use {@link #removeAttribute(java.lang.String) * removeAttribute} instead. */ public void removeProperty(String name) { this.removeAttribute(name); } /** * Removes an attribute. * * The name of the attribute. * * @deprecated Use {@link #removeAttribute(java.lang.String) * removeAttribute} instead. */ public void removeChild(String name) { this.removeAttribute(name); } /** * Creates a new similar XML element. *

* You should override this method when subclassing XMLElement. */ protected XMLElement createAnotherElement() { return new XMLElement(this.entities, this.ignoreWhitespace, false, this.ignoreCase); } // You should override this method when subclassing XMLElement. protected void completeElement() { } /** * Changes the content string. * * The new content string. */ public void setContent(String content) { this.contents = content; this.dontEncodeContents = false; } /** * Changes the content string. * * The new content string. */ public void setEncodedContent(String content) { this.contents = content; this.dontEncodeContents = true; } /** * Changes the name of the element. * * The new name. * * @deprecated Use {@link #setName(java.lang.String) setName} instead. */ public void setTagName(String name) { this.setName(name); } /** * Changes the name of the element. * * The new name. * *

Preconditions:
*
  • name != null *
  • name is a valid XML identifier *
* * @see freemind.main.XMLElement#getName() */ public void setName(String name) { this.name = name; } /** * Writes the XML element to a string. * * @see freemind.main.XMLElement#write(java.io.Writer) write(Writer) */ public String toString() { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputStreamWriter writer = new OutputStreamWriter(out); this.write(writer); writer.flush(); return new String(out.toByteArray()); } catch (IOException e) { // Java exception handling suxx return super.toString(); } } /** * Writes the XML element to a writer. * * The writer to write the XML data to. * *
Preconditions:
*
  • writer != null *
  • writer is not closed *
* * @throws java.io.IOException * If the data could not be written to the writer. * * @see freemind.main.XMLElement#toString() */ public void write(Writer writer) throws IOException { write(writer, true); } public void writeWithoutClosingTag(Writer writer) throws IOException { write(writer, false); } public void writeClosingTag(Writer writer) throws IOException { writer.write('<'); writer.write('/'); writer.write(this.name); writer.write('>'); writer.write('\n'); } public void write(Writer writer, boolean withClosingTag) throws IOException { if (this.name == null) { // fc, 17.5.06: support encoded contents if (dontEncodeContents) { writer.write(this.contents); } else { this.writeEncoded(writer, this.contents); } return; } writer.write('<'); writer.write(this.name); if (! this.attributes.isEmpty()) { Iterator enumerator = this.attributes.keySet().iterator(); while (enumerator.hasNext()) { writer.write(' '); String key = (String) enumerator.next(); String value = (String) this.attributes.get(key); writer.write(key); writer.write('='); writer.write('"'); this.writeEncoded(writer, value); writer.write('"'); } } if ((this.contents != null) && (this.contents.length() > 0)) { writer.write('>'); //writer.write('\n'); // fc, 17.5.06: support encoded contents if (dontEncodeContents) { writer.write(this.contents); } else { this.writeEncoded(writer, this.contents); } if (withClosingTag) { writer.write('<'); writer.write('/'); writer.write(this.name); writer.write('>'); writer.write('\n'); } } else if (this.children.isEmpty()) { if (withClosingTag) { writer.write('/'); } writer.write('>'); writer.write('\n'); } else { writer.write('>'); writer.write('\n'); Enumeration enumerator = this.enumerateChildren(); while (enumerator.hasMoreElements()) { XMLElement child = (XMLElement) enumerator.nextElement(); child.write(writer); } if (withClosingTag) { writer.write('<'); writer.write('/'); writer.write(this.name); writer.write('>'); writer.write('\n'); } } } /** * Writes a string encoded to a writer. * * The writer to write the XML data to. * The string to write encoded. * *
Preconditions:
*
  • writer != null *
  • writer is not closed *
  • str != null *
*/ protected void writeEncoded(Writer writer, String str) throws IOException { for (int i = 0; i < str.length(); i += 1) { char ch = str.charAt(i); switch (ch) { case '<': writer.write('&'); writer.write('l'); writer.write('t'); writer.write(';'); break; case '>': writer.write('&'); writer.write('g'); writer.write('t'); writer.write(';'); break; case '&': writer.write('&'); writer.write('a'); writer.write('m'); writer.write('p'); writer.write(';'); break; case '"': writer.write('&'); writer.write('q'); writer.write('u'); writer.write('o'); writer.write('t'); writer.write(';'); break; case '\'': writer.write('&'); writer.write('a'); writer.write('p'); writer.write('o'); writer.write('s'); writer.write(';'); break; default: int unicode = (int) ch; if((unicode < 32)||(unicode > 126)) { writer.write('&'); writer.write('#'); writer.write('x'); writer.write(Integer.toString(unicode, 16)); writer.write(';'); } else { writer.write(ch); } } } } /** * Scans an identifier from the current reader. * The scanned identifier is appended to result. * * The buffer in which the scanned identifier will be put. * *
Preconditions:
*
  • result != null *
  • The next character read from the reader is a valid first * character of an XML identifier. *
* *
Postconditions:
*
  • The next character read from the reader won't be an identifier * character. *
*/ protected void scanIdentifier(StringBuffer result) throws IOException { for (;;) { char ch = this.readChar(); if (((ch < 'A') || (ch > 'Z')) && ((ch < 'a') || (ch > 'z')) && ((ch < '0') || (ch > '9')) && (ch != '_') && (ch != '.') && (ch != ':') && (ch != '-') && (ch <= '\u007E')) { this.unreadChar(ch); return; } result.append(ch); } } /** * This method scans an identifier from the current reader. * * @return the next character following the whitespace. */ protected char scanWhitespace() throws IOException { for (;;) { char ch = this.readChar(); switch (ch) { case ' ': case '\t': case '\n': case '\r': break; default: return ch; } } } /** * This method scans an identifier from the current reader. * The scanned whitespace is appended to result. * * @return the next character following the whitespace. * *
Preconditions:
*
  • result != null *
*/ protected char scanWhitespace(StringBuffer result) throws IOException { for (;;) { char ch = this.readChar(); switch (ch) { case ' ': case '\t': case '\n': result.append(ch); case '\r': break; default: return ch; } } } /** * This method scans a delimited string from the current reader. * The scanned string without delimiters is appended to * string. * *
Preconditions:
*
  • string != null *
  • the next char read is the string delimiter *
*/ protected void scanString(StringBuffer string) throws IOException { char delimiter = this.readChar(); if ((delimiter != '\'') && (delimiter != '"')) { throw this.expectedInput("' or \""); } for (;;) { char ch = this.readChar(); if (ch == delimiter) { return; } else if (ch == '&') { this.resolveEntity(string); } else { string.append(ch); } } } /** * Scans a #PCDATA element. CDATA sections and entities are resolved. * The next < char is skipped. * The scanned data is appended to data. * *
Preconditions:
*
  • data != null *
*/ protected void scanPCData(StringBuffer data) throws IOException { for (;;) { char ch = this.readChar(); if (ch == '<') { ch = this.readChar(); if (ch == '!') { this.checkCDATA(data); } else { this.unreadChar(ch); return; } } else if (ch == '&') { this.resolveEntity(data); } else { data.append(ch); } } } /** * Scans a special tag and if the tag is a CDATA section, append its * content to buf. * *
Preconditions:
*
  • buf != null *
  • The first < has already been read. *
*/ protected boolean checkCDATA(StringBuffer buf) throws IOException { char ch = this.readChar(); if (ch != '[') { this.unreadChar(ch); this.skipSpecialTag(0); return false; } else if (! this.checkLiteral("CDATA[")) { this.skipSpecialTag(1); // one [ has already been read return false; } else { int delimiterCharsSkipped = 0; while (delimiterCharsSkipped < 3) { ch = this.readChar(); switch (ch) { case ']': if (delimiterCharsSkipped < 2) { delimiterCharsSkipped += 1; } else { buf.append(']'); buf.append(']'); delimiterCharsSkipped = 0; } break; case '>': if (delimiterCharsSkipped < 2) { for (int i = 0; i < delimiterCharsSkipped; i++) { buf.append(']'); } delimiterCharsSkipped = 0; buf.append('>'); } else { delimiterCharsSkipped = 3; } break; default: for (int i = 0; i < delimiterCharsSkipped; i += 1) { buf.append(']'); } buf.append(ch); delimiterCharsSkipped = 0; } } return true; } } /** * Skips a comment. * *
Preconditions:
*
  • The first <!-- has already been read. *
*/ protected void skipComment() throws IOException { int dashesToRead = 2; while (dashesToRead > 0) { char ch = this.readChar(); if (ch == '-') { dashesToRead -= 1; } else { dashesToRead = 2; } } if (this.readChar() != '>') { throw this.expectedInput(">"); } } /** * Skips a special tag or comment. * * @param bracketLevel The number of open square brackets ([) that have * already been read. * *
Preconditions:
*
  • The first <! has already been read. *
  • bracketLevel >= 0 *
*/ protected void skipSpecialTag(int bracketLevel) throws IOException { int tagLevel = 1; // < char stringDelimiter = '\0'; if (bracketLevel == 0) { char ch = this.readChar(); if (ch == '[') { bracketLevel += 1; } else if (ch == '-') { ch = this.readChar(); if (ch == '[') { bracketLevel += 1; } else if (ch == ']') { bracketLevel -= 1; } else if (ch == '-') { this.skipComment(); return; } } } while (tagLevel > 0) { char ch = this.readChar(); if (stringDelimiter == '\0') { if ((ch == '"') || (ch == '\'')) { stringDelimiter = ch; } else if (bracketLevel <= 0) { if (ch == '<') { tagLevel += 1; } else if (ch == '>') { tagLevel -= 1; } } if (ch == '[') { bracketLevel += 1; } else if (ch == ']') { bracketLevel -= 1; } } else { if (ch == stringDelimiter) { stringDelimiter = '\0'; } } } } /** * Scans the data for literal text. * Scanning stops when a character does not match or after the complete * text has been checked, whichever comes first. * * @param literal the literal to check. * *
Preconditions:
*
  • literal != null *
*/ protected boolean checkLiteral(String literal) throws IOException { int length = literal.length(); for (int i = 0; i < length; i += 1) { if (this.readChar() != literal.charAt(i)) { return false; } } return true; } /** * Reads a character from a reader. */ protected char readChar() throws IOException { if (this.charReadTooMuch != '\0') { char ch = this.charReadTooMuch; this.charReadTooMuch = '\0'; return ch; } else { int i = this.reader.read(); if (i < 0) { throw this.unexpectedEndOfData(); } else if (i == 10) { this.parserLineNr += 1; return '\n'; } else { return (char) i; } } } /** * Scans an XML element. * * @param elt The element that will contain the result. * *
Preconditions:
*
  • The first < has already been read. *
  • elt != null *
*/ protected void scanElement(XMLElement elt) throws IOException { boolean isCollectionMode = false; StringBuffer buf = new StringBuffer(); this.scanIdentifier(buf); String name = buf.toString(); elt.setName(name); if(XML_NODE_XHTML_CONTENT_TAG.equals(name)) { /* special case of html content tag: collect chars until occurs. */ isCollectionMode = true; } char ch = this.scanWhitespace(); // Scan the attributes of opening tag while ((ch != '>') && (ch != '/')) { // Not the end of the tag buf.setLength(0); this.unreadChar(ch); this.scanIdentifier(buf); String key = buf.toString(); ch = this.scanWhitespace(); if (ch != '=') { throw this.expectedInput("="); } this.unreadChar(this.scanWhitespace()); buf.setLength(0); this.scanString(buf); elt.setAttribute(key, buf); ch = this.scanWhitespace(); } if (ch == '/') { // Case of self ending tag ch = this.readChar(); if (ch != '>') { throw this.expectedInput(">"); } elt.completeElement(); return; } // special collection mode: if(isCollectionMode) { StringBuffer waitingBuf = new StringBuffer(); int lastOpeningBreak = -1; for(;;) { ch = this.readChar(); waitingBuf.append(ch); if(ch == '<') { lastOpeningBreak = waitingBuf.length()-1; } if(ch == '>' && lastOpeningBreak >= 0) { String content = waitingBuf.toString(); if (sContentEndTagPattern == null) { sContentEndTagPattern = Pattern .compile(XML_NODE_XHTML_CONTENT_END_TAG_REGEXP); } String substring = content.substring(lastOpeningBreak); Matcher matcher = sContentEndTagPattern.matcher(substring); if(matcher.matches()) { // end found, remove the end tag: content = content.substring(0, lastOpeningBreak); // Dimitry: begin // // PCDATA // if (this.ignoreWhitespace) { // elt.setContent(content.trim()); // } else { // elt.setContent(content); // } // Dimitry: always remove spaces around the rich content block because it should be valid xml. elt.setContent(content.trim()); // Dimitry: end elt.completeElement(); return; } } } } // This part is unclear - probing for PCDATA buf.setLength(0); ch = this.scanWhitespace(buf); if (ch != '<') { // Either: PCDATA this.unreadChar(ch); this.scanPCData(buf); } else { // Or: Maybe sequence of children tags for (;;) { // This is a loop, after all ch = this.readChar(); if (ch == '!') { if (this.checkCDATA(buf)) { this.scanPCData(buf); break; } else { ch = this.scanWhitespace(buf); if (ch != '<') { this.unreadChar(ch); this.scanPCData(buf); break; } } } else { buf.setLength(0); break; } } } if (buf.length() == 0) { // Not PCDATA, '<' already read while (ch != '/') { if (ch == '!') { // Comment ch = this.readChar(); if (ch != '-') { throw this.expectedInput("Comment or Element"); } ch = this.readChar(); if (ch != '-') { throw this.expectedInput("Comment or Element"); } this.skipComment(); } else { // Not Comment this.unreadChar(ch); XMLElement child = this.createAnotherElement(); // Here goes the recursion. this.scanElement(child); elt.addChild(child); } ch = this.scanWhitespace(); if (ch != '<') { throw this.expectedInput("<"); } ch = this.readChar(); } this.unreadChar(ch); } else { // PCDATA if (this.ignoreWhitespace) { elt.setContent(buf.toString().trim()); } else { elt.setContent(buf.toString()); } } // ch = this.readChar(); if (ch != '/') { throw this.expectedInput("/"); } this.unreadChar(this.scanWhitespace()); if (! this.checkLiteral(name)) { throw this.expectedInput(name); } if (this.scanWhitespace() != '>') { throw this.expectedInput(">"); } elt.completeElement(); } /** * Resolves an entity. The name of the entity is read from the reader. * The value of the entity is appended to buf. * * @param buf Where to put the entity value. * *
Preconditions:
*
  • The first & has already been read. *
  • buf != null *
*/ protected void resolveEntity(StringBuffer buf) throws IOException { char ch = '\0'; StringBuffer keyBuf = new StringBuffer(); for (;;) { ch = this.readChar(); if (ch == ';') { break; } keyBuf.append(ch); } String key = keyBuf.toString(); if (key.charAt(0) == '#') { try { if (key.charAt(1) == 'x') { ch = (char) Integer.parseInt(key.substring(2), 16); } else { ch = (char) Integer.parseInt(key.substring(1), 10); } } catch (NumberFormatException e) { throw this.unknownEntity(key); } buf.append(ch); } else { char[] value = (char[]) this.entities.get(key); if (value == null) { throw this.unknownEntity(key); } buf.append(value); } } /** * Pushes a character back to the read-back buffer. * * @param ch The character to push back. * *
Preconditions:
*
  • The read-back buffer is empty. *
  • ch != '\0' *
*/ protected void unreadChar(char ch) { this.charReadTooMuch = ch; } /** * Creates a parse exception for when an invalid valueset is given to * a method. * * @param name The name of the entity. * *
Preconditions:
*
  • name != null *
*/ protected XMLParseException invalidValueSet(String name) { String msg = "Invalid value set (entity name = \"" + name + "\")"; return new XMLParseException(this.getName(), this.parserLineNr, msg); } /** * Creates a parse exception for when an invalid value is given to a * method. * * @param name The name of the entity. * @param value The value of the entity. * *
Preconditions:
*
  • name != null *
  • value != null *
*/ protected XMLParseException invalidValue(String name, String value) { String msg = "Attribute \"" + name + "\" does not contain a valid " + "value (\"" + value + "\")"; return new XMLParseException(this.getName(), this.parserLineNr, msg); } /** * Creates a parse exception for when the end of the data input has been * reached. */ protected XMLParseException unexpectedEndOfData() { String msg = "Unexpected end of data reached"; return new XMLParseException(this.getName(), this.parserLineNr, msg); } /** * Creates a parse exception for when a syntax error occured. * * @param context The context in which the error occured. * *
Preconditions:
*
  • context != null *
  • context.length() > 0 *
*/ protected XMLParseException syntaxError(String context) { String msg = "Syntax error while parsing " + context; return new XMLParseException(this.getName(), this.parserLineNr, msg); } /** * Creates a parse exception for when the next character read is not * the character that was expected. * * @param charSet The set of characters (in human readable form) that was * expected. * *
Preconditions:
*
  • charSet != null *
  • charSet.length() > 0 *
*/ protected XMLParseException expectedInput(String charSet) { String msg = "Expected: " + charSet; return new XMLParseException(this.getName(), this.parserLineNr, msg); } /** * Creates a parse exception for when an entity could not be resolved. * * @param name The name of the entity. * *
Preconditions:
*
  • name != null *
  • name.length() > 0 *
*/ protected XMLParseException unknownEntity(String name) { String msg = "Unknown or invalid entity: &" + name + ";"; return new XMLParseException(this.getName(), this.parserLineNr, msg); } } freemind-0.9.0/freemind/freemind/main/XHTMLWriter.java0000644000000000000000000001642611527433212021262 0ustar rootrootpackage freemind.main; /* * XHTMLWriter -- A simple XHTML document writer * * (C) 2004 Richard "Shred" Koerber * http://www.shredzone.net/ * * This is free software. You can modify and use it at will. */ import java.io.*; import java.util.Enumeration; import javax.swing.text.*; import javax.swing.text.html.*; /** * Create a new XHTMLWriter which is able to save a HTMLDocument as XHTML. *

* The result will be a valid XML file, but it is not granted that the file * will really be XHTML 1.0 transitional conformous. The basic purpose of * this class is to give an XSL processor access to plain HTML files. * * @author Richard "Shred" K�rber */ public class XHTMLWriter extends FixedHTMLWriter { final private MutableAttributeSet convAttr = new SimpleAttributeSet(); private boolean writeLineSeparatorEnabled = true; /** * Create a new XHTMLWriter that will write the entire HTMLDocument. * * @param writer Writer to write to * @param doc Source document */ public XHTMLWriter( Writer writer, HTMLDocument doc ) { this( writer, doc, 0, doc.getLength() ); } /** * Create a new XHTMLWriter that will write a part of a HTMLDocument. * * @param writer Writer to write to * @param doc Source document * @param pos Starting position * @param len Length */ public XHTMLWriter( Writer writer, HTMLDocument doc, int pos, int len ) { super( new XHTMLFilterWriter( writer ), doc, pos, len ); setLineLength( Integer.MAX_VALUE ); } /** * Start the writing process. An XML and DOCTYPE header will be written * prior to the XHTML output. */ public void write() throws IOException, BadLocationException { // fc, 17.5.06: no special tags, as they are wrong inside XML tags like ...... // write( "" ); // writeLineSeparator(); // write( "" ); // writeLineSeparator(); super.write(); } protected void writeOption(Option option) throws IOException { writeLineSeparatorEnabled = false; super.writeOption(option); writeLineSeparatorEnabled = true; write(""); writeLineSeparator(); } protected void writeLineSeparator() throws IOException { if(writeLineSeparatorEnabled ) super.writeLineSeparator(); } /** * Read HTML from the Reader, and send XHTML to the writer. Common mistakes * in the HTML code will also be corrected. The result is pretty-printed. * * @param reader HTML source * @param writer XHTML target */ public static void html2xhtml( Reader reader, Writer writer ) throws IOException, BadLocationException { //--- Create a HTML document --- HTMLEditorKit kit = new HTMLEditorKit(); Document doc = kit.createDefaultDocument(); //--- Read the HTML source --- kit.read( reader, doc, doc.getLength() ); //--- Write the content --- XHTMLWriter xhw = new XHTMLWriter( writer, (HTMLDocument) doc ); xhw.write(); } /** * External call to convert a source HTML file to a target XHTML file. *

* Usage: java XHTMLWriter <source file> <target file> * * @param args Shell arguments */ public static void main( String[] args ) { try { FileReader reader = new FileReader( args[0] ); FileWriter writer = new FileWriter( args[1] ); html2xhtml( reader, writer ); writer.close(); reader.close(); }catch( Exception e ) { freemind.main.Resources.getInstance().logException(e); } } /** * This FilterWriter will convert the output of Swing's HTMLWriter to * XHTML format. This is done by converting tags like <br> to * <br />. Also, special characters in tag attributes are * escaped. *

* This filter relies on known flaws of the HTMLWriter. It is known to * work with Java 1.4, but might not work with future Java releases. */ public static class XHTMLFilterWriter extends FilterWriter { private boolean insideTag = false; // We're inside a tag private boolean insideValue = false; // We're inside an attribute value private boolean readTag = false; // We're reading the tag name private String tag = ""; // Collector for the tag name /** * Create a new XHTMLFilterWriter. * * @param writer Writer to write to */ public XHTMLFilterWriter( Writer writer ) { super(writer); } /** * Write a single char to the Writer. * * @param c Char to be written */ public void write( int c ) throws IOException { if( insideValue ) { // We're currently within a tag attribute's value. // Take care for proper HTML escaping. if( c=='&' ) { super.write( "&", 0, 5 ); return; }else if( c=='<' ) { super.write( "<", 0, 4 ); return; }else if( c=='>' ) { super.write( ">", 0, 4 ); return; }else if( c=='"' ) { // leaving the value insideValue = false; } }else if( insideTag ) { // We're inside a tag. Add a slash to the closing tag bracket for // certain tags (like img, br, hr, input, ... ). if( readTag ) { if( c==' ' || c=='>' ) { // tag name ends readTag = false; }else { tag += (char) c; // collect tag name here } } if( c=='"' ) { // attribute value begins insideValue = true; }else if( c=='>' ) { // check if this is a "certain tag" if( tag.equals("img") || tag.equals("br") || tag.equals("hr") || tag.equals("input") || tag.equals("meta") || tag.equals("link") || tag.equals("area") || tag.equals("base") || tag.equals("basefont") || tag.equals("frame") || tag.equals("iframe") || tag.equals("col") ) { super.write( " /" ); // add slash to the closing bracket } insideTag = false; readTag = false; } }else if( c=='<' ) { // We're just at the very beginning of a tag. tag = ""; insideTag = true; readTag = true; } super.write(c); } /** * Write a char array to the Writer. * * @param cbuf Char array to be written * @param off Start offset within the array * @param len Number of chars to be written */ public void write( char[] cbuf, int off, int len ) throws IOException { while( len-- > 0 ) { write( (int) cbuf[off++] ); } } /** * Write a String to the Writer. * * @param str String to be written * @param off Start offset within the String * @param len Number of chars to be written */ public void write( String str, int off, int len ) throws IOException { write( str.toCharArray(), off, len ); } } }freemind-0.9.0/freemind/freemind/main/Base64Coding.java0000644000000000000000000001356611527433212021343 0ustar rootroot/* AbstractPreferences -- Partial implementation of a Preference node Copyright (C) 2001, 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ package freemind.main; import java.io.ByteArrayOutputStream; /** * Partial implementation of a Preference node. * * @since 1.4 * @author Mark Wielaard (mark@klomp.org) * * 22.3.2008: * FC: Changed name from AbstractPreferences to the current, * Removed all but base64 coding. */ public class Base64Coding { private static java.util.logging.Logger logger = null; static { logger = freemind.main.Resources.getInstance().getLogger("Base64Coding"); } /** * Helper method for decoding a Base64 string as an byte array. * Returns null on encoding error. This method does not allow any other * characters present in the string then the 65 special base64 chars. */ public static byte[] decode64(String s) { ByteArrayOutputStream bs = new ByteArrayOutputStream((s.length()/4)*3); char[] c = new char[s.length()]; s.getChars(0, s.length(), c, 0); // Convert from base64 chars int endchar = -1; for(int j = 0; j < c.length && endchar == -1; j++) { if (c[j] >= 'A' && c[j] <= 'Z') { c[j] -= 'A'; } else if (c[j] >= 'a' && c[j] <= 'z') { c[j] = (char) (c[j] + 26 - 'a'); } else if (c[j] >= '0' && c[j] <= '9') { c[j] = (char) (c[j] + 52 - '0'); } else if (c[j] == '+') { c[j] = 62; } else if (c[j] == '/') { c[j] = 63; } else if (c[j] == '=') { endchar = j; } else { logger.severe("Found illegal character in base64 coding: '" + c[j]+"'"); return null; // encoding exception } } int remaining = endchar == -1 ? c.length : endchar; int i = 0; while (remaining > 0) { // Four input chars (6 bits) are decoded as three bytes as // 000000 001111 111122 222222 byte b0 = (byte) (c[i] << 2); if (remaining >= 2) { b0 += (c[i+1] & 0x30) >> 4; } bs.write(b0); if (remaining >= 3) { byte b1 = (byte) ((c[i+1] & 0x0F) << 4); b1 += (byte) ((c[i+2] & 0x3C) >> 2); bs.write(b1); } if (remaining >= 4) { byte b2 = (byte) ((c[i+2] & 0x03) << 6); b2 += c[i+3]; bs.write(b2); } i += 4; remaining -= 4; } return bs.toByteArray(); } /** * Helper method for encoding an array of bytes as a Base64 String. */ public static String encode64(byte[] b) { StringBuffer sb = new StringBuffer((b.length/3)*4); int i = 0; int remaining = b.length; char c[] = new char[4]; while (remaining > 0) { // Three input bytes are encoded as four chars (6 bits) as // 00000011 11112222 22333333 c[0] = (char) ((b[i] & 0xFC) >> 2); c[1] = (char) ((b[i] & 0x03) << 4); if (remaining >= 2) { c[1] += (char) ((b[i+1] & 0xF0) >> 4); c[2] = (char) ((b[i+1] & 0x0F) << 2); if (remaining >= 3) { c[2] += (char) ((b[i+2] & 0xC0) >> 6); c[3] = (char) (b[i+2] & 0x3F); } else { c[3] = 64; } } else { c[2] = 64; c[3] = 64; } // Convert to base64 chars for(int j = 0; j < 4; j++) { if (c[j] < 26) { c[j] += 'A'; } else if (c[j] < 52) { c[j] = (char) (c[j] - 26 + 'a'); } else if (c[j] < 62) { c[j] = (char) (c[j] - 52 + '0'); } else if (c[j] == 62) { c[j] = '+'; } else if (c[j] == 63) { c[j] = '/'; } else { c[j] = '='; } } sb.append(c); i += 3; remaining -= 3; } return sb.toString(); } } freemind-0.9.0/freemind/freemind/main/StdFormatter.java0000644000000000000000000000450011527433212021575 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2007 Joerg Mueller, Daniel Polansky, Christian Foltin and others. *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: StdFormatter.java,v 1.1.2.5 2008/02/03 21:50:04 dpolivaev Exp $*/ package freemind.main; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.SimpleFormatter; class StdFormatter extends SimpleFormatter { private static class StdOutErrLevel extends Level { public StdOutErrLevel(String name, int value) { super(name, value); } } /** * Level for STDOUT activity. */ final static Level STDOUT = new StdOutErrLevel("STDOUT", Level.WARNING.intValue()+53); /** * Level for STDERR activity */ final static Level STDERR = new StdOutErrLevel("STDERR", Level.SEVERE.intValue()+53); // Line separator string. This is the value of the line.separator // property at the moment that the SimpleFormatter was created. private String lineSeparator = System.getProperty("line.separator"); /** * Format the given LogRecord. * @param record the log record to be formatted. * @return a formatted log record */ public synchronized String format(LogRecord record) { if(! STDERR.getName().equals(record.getLoggerName()) && ! STDOUT.getName().equals(record.getLoggerName())){ return super.format(record); } StringBuffer sb = new StringBuffer(); sb.append(lineSeparator); String message = formatMessage(record); sb.append(record.getLevel().getLocalizedName()); sb.append(": "); sb.append(message); return sb.toString(); } } freemind-0.9.0/freemind/freemind/main/ExampleFileFilter.java0000644000000000000000000002107411527433212022525 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * -Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduct the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that Software is not designed, licensed or intended for * use in the design, construction, operation or maintenance of any nuclear * facility. */ /* * @(#)ExampleFileFilter.java 1.14 03/01/23 */ package freemind.main; import java.io.File; import java.util.Hashtable; import java.util.Enumeration; import javax.swing.*; import javax.swing.filechooser.*; /** * A convenience implementation of FileFilter that filters out * all files except for those type extensions that it knows about. * * Extensions are of the type ".foo", which is typically found on * Windows and Unix boxes, but not on Macinthosh. Case is ignored. * * Example - create a new filter that filerts out all files * but gif and jpg image files: * * JFileChooser chooser = new JFileChooser(); * ExampleFileFilter filter = new ExampleFileFilter( * new String{"gif", "jpg"}, "JPEG & GIF Images") * chooser.addChoosableFileFilter(filter); * chooser.showOpenDialog(this); * * @version 1.14 01/23/03 * @author Jeff Dinkins */ public class ExampleFileFilter extends FileFilter { private static String TYPE_UNKNOWN = "Type Unknown"; private static String HIDDEN_FILE = "Hidden File"; private Hashtable filters = null; private String description = null; private String fullDescription = null; private boolean useExtensionsInDescription = true; /** * Creates a file filter. If no filters are added, then all * files are accepted. * */ public ExampleFileFilter() { this.filters = new Hashtable(); } /** * Creates a file filter that accepts files with the given extension. * Example: new ExampleFileFilter("jpg"); * */ public ExampleFileFilter(String extension) { this(extension,null); } /** * Creates a file filter that accepts the given file type. * Example: new ExampleFileFilter("jpg", "JPEG Image Images"); * * Note that the "." before the extension is not needed. If * provided, it will be ignored. * */ public ExampleFileFilter(String extension, String description) { this(); if(extension!=null) addExtension(extension); if(description!=null) setDescription(description); } /** * Creates a file filter from the given string array. * Example: new ExampleFileFilter(String {"gif", "jpg"}); * * Note that the "." before the extension is not needed adn * will be ignored. * */ public ExampleFileFilter(String[] filters) { this(filters, null); } /** * Creates a file filter from the given string array and description. * Example: new ExampleFileFilter(String {"gif", "jpg"}, "Gif and JPG Images"); * * Note that the "." before the extension is not needed and will be ignored. * */ public ExampleFileFilter(String[] filters, String description) { this(); for (int i = 0; i < filters.length; i++) { // add filters one by one addExtension(filters[i]); } if(description!=null) setDescription(description); } /** * Return true if this file should be shown in the directory pane, * false if it shouldn't. * * Files that begin with "." are ignored. * */ public boolean accept(File f) { if(f != null) { if(f.isDirectory()) { return true; } String extension = getExtension(f); if(extension != null && filters.get(getExtension(f)) != null) { return true; }; } return false; } /** * Return the extension portion of the file's name . * */ public String getExtension(File f) { if(f != null) { String filename = f.getName(); int i = filename.lastIndexOf('.'); if(i>0 && i *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: IFreeMindSplash.java,v 1.1.2.1 2007/02/03 23:19:26 christianfoltin Exp $*/ package freemind.main; import javax.swing.ImageIcon; public interface IFreeMindSplash { public abstract FeedBack getFeedBack(); public abstract void close(); public abstract void setVisible(boolean pB); public abstract ImageIcon getWindowIcon(); } // private static java.util.logging.Logger logger = freemind.main.Resources.getInstance().getLogger(IFreeMindSplash.class.getName()); freemind-0.9.0/freemind/freemind/main/FreeMindStarter.java0000644000000000000000000001362011527433212022220 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Dimitri Polivaev, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 06.07.2006 */ /*$Id: FreeMindStarter.java,v 1.1.2.11 2009/03/29 19:37:23 christianfoltin Exp $*/ package freemind.main; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.lang.reflect.Method; import java.net.URL; import java.util.Locale; import java.util.Properties; import javax.swing.JOptionPane; /** * This class should check the java version and start freemind. * In order to be able to check, it must be startable with * java versions < 1.4. We have therefore a section in the * build.xml that explicitly compiles this class for java 1.1 * compatibility. Currently, it is unclear, if this works * as expected. But in any case, almost no dependencies to * other FreeMind sources should be used here. * @author foltin * */ public class FreeMindStarter { /** Doubled variable on purpose. See header of this class.*/ static final String JAVA_VERSION = System.getProperty("java.version"); public static void main(String[] args) { FreeMindStarter starter = new FreeMindStarter(); // First check version of Java starter.checkJavaVersion(); Properties defaultPreferences = starter.readDefaultPreferences(); starter.createUserDirectory(defaultPreferences); Properties userPreferences = starter.readUsersPreferences(defaultPreferences); starter.setDefaultLocale(userPreferences); //use reflection to call : // FreeMind.main(args, defaultPreferences, userPreferences, starter.getUserPreferencesFile(defaultPreferences)); try { Class mainClass = Class.forName("freemind.main.FreeMind"); Method mainMethod = mainClass.getMethod("main", new Class[]{String[].class, Properties.class, Properties.class, File.class}); mainMethod.invoke(null, new Object[]{args, defaultPreferences, userPreferences, starter.getUserPreferencesFile(defaultPreferences)}); } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "freemind.main.FreeMind can't be started", "Startup problem", JOptionPane.ERROR_MESSAGE); System.exit(1); } } private void checkJavaVersion() { System.out.println("Checking Java Version..."); if (JAVA_VERSION.compareTo("1.4.0") < 0) { String message = "Warning: FreeMind requires version Java 1.4.0 or higher (your version: " + JAVA_VERSION + ", installed in " + System.getProperty("java.home") + ")."; System.err.println(message); JOptionPane.showMessageDialog(null, message, "FreeMind", JOptionPane.WARNING_MESSAGE); System.exit(1); } } private void createUserDirectory(Properties pDefaultProperties) { File userPropertiesFolder = new File(getFreeMindDirectory(pDefaultProperties)); try { // create user directory: if (!userPropertiesFolder.exists()) { userPropertiesFolder.mkdir(); } } catch (Exception e) { // exception is logged to console as we don't have a logger e.printStackTrace(); System.err .println("Cannot create folder for user properties and logging: '" + userPropertiesFolder.getAbsolutePath() + "'"); } } /** * @param pProperties */ private void setDefaultLocale(Properties pProperties) { String lang = pProperties.getProperty(FreeMindCommon.RESOURCE_LANGUAGE); if(lang == null){ return; } Locale localeDef = null; switch(lang.length()){ case 2: localeDef = new Locale(lang); break; case 5: localeDef =new Locale(lang.substring(0, 1), lang.substring(3, 4)); break; default: return; } Locale.setDefault(localeDef); } private Properties readUsersPreferences(Properties defaultPreferences) { Properties auto = null; auto = new Properties(defaultPreferences); try { InputStream in = null; File autoPropertiesFile = getUserPreferencesFile(defaultPreferences); in = new FileInputStream(autoPropertiesFile); auto.load(in); in.close(); } catch (Exception ex) { ex.printStackTrace(); System.err .println("Panic! Error while loading default properties."); } return auto; } private File getUserPreferencesFile(Properties defaultPreferences) { if(defaultPreferences == null) { System.err .println("Panic! Error while loading default properties."); System.exit(1); } String freemindDirectory = getFreeMindDirectory(defaultPreferences); File userPropertiesFolder = new File(freemindDirectory); File autoPropertiesFile = new File(userPropertiesFolder, defaultPreferences.getProperty("autoproperties")); return autoPropertiesFile; } private String getFreeMindDirectory(Properties defaultPreferences) { return System.getProperty("user.home") + File.separator + defaultPreferences.getProperty("properties_folder"); } public Properties readDefaultPreferences() { String propsLoc = "freemind.properties"; URL defaultPropsURL = this.getClass().getClassLoader().getResource(propsLoc); Properties props = new Properties(); try { InputStream in = defaultPropsURL.openStream(); props.load(in); in.close(); } catch (Exception ex) { ex.printStackTrace(); System.err .println("Panic! Error while loading default properties."); } return props; } } freemind-0.9.0/freemind/freemind/main/FeedBack.java0000644000000000000000000000232011527433212020601 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 03.01.2006 */ /*$Id: FeedBack.java,v 1.1.2.1.2.2 2007/02/03 23:19:26 christianfoltin Exp $*/ package freemind.main; import java.awt.Image; import javax.swing.ImageIcon; public interface FeedBack { void progress(int act, String messageId); int getActualValue(); void setMaximumValue(int max); void increase(String messageId); }freemind-0.9.0/freemind/freemind/main/FreeMindSplashModern.java0000644000000000000000000002071411527433212023175 0ustar rootroot/*************************************************************************** * * FreeMindSplash, taken from GanttSplash.java. * * Copyright (C) 2002 by Thomas Alexandre (alexthomas(at)ganttproject.org) * Copyright (C) 2005-2008 by Christian Foltin and Daniel Polansky * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ package freemind.main; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Toolkit; import java.text.NumberFormat; import java.util.Set; import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.JRootPane; import javax.swing.SwingUtilities; /** * Class to put a splash during launching the application. */ public class FreeMindSplashModern extends JFrame implements IFreeMindSplash { private static final int SPLASH_FONT_SIZE = 16; private class FeedBackImpl implements FeedBack { private int mActualValue; private long mActualTimeStamp=System.currentTimeMillis(); private long mTotalTime = 0; private String lastTaskId=null; private JLabel mImageJLabel=null; public void progress(final int act, String messageId) { final String progressString = frame.getResourceString(messageId); logger.info(progressString); this.mActualValue = act; long timeDifference = System.currentTimeMillis()-mActualTimeStamp; mActualTimeStamp = System.currentTimeMillis(); mTotalTime += timeDifference; logger.info("Task: "+lastTaskId + " (" + act+") last " + (timeDifference)/1000.0 + " seconds.\nTotal: "+mTotalTime/1000.0+"\n"); SwingUtilities.invokeLater(new Runnable() { public void run() { mProgressBar.setValue(act); double percent = act*1.0/mProgressBar.getMaximum(); mProgressBar.setString(progressString); if (mImageJLabel!=null) { mImageJLabel.putClientProperty("progressString",progressString); mImageJLabel.putClientProperty("progressPercent",new Double(percent)); mImageJLabel.repaint(); } } }); logger.info("Beginnig task:" + messageId); lastTaskId = messageId; // make it the top most window. FreeMindSplashModern.this.toFront(); } public int getActualValue() { return mActualValue; } public void setMaximumValue(int max) { mProgressBar.setMaximum(max); mProgressBar.setIndeterminate(false); } public void increase(String messageId) { progress(getActualValue()+1, messageId); } public void setImageJLabel(JLabel imageJLabel) { mImageJLabel = imageJLabel; } } private final FreeMindMain frame; private final FeedBackImpl feedBack; //! private JProgressBar mProgressBar; private static Logger logger; private ImageIcon mIcon; public FeedBack getFeedBack() { return feedBack; } public FreeMindSplashModern(final FreeMindMain frame){ super("FreeMind"); this.frame = frame; if(logger == null) { logger = frame.getLogger(this.getClass().getName()); } this.feedBack = new FeedBackImpl(); //http://www.kde-look.org/content/show.php?content=76812 //License GPLV2+ mIcon = new ImageIcon(frame.getResource( "images/76812-freemind_v0.4.png")); setIconImage(mIcon.getImage()); //Set the icon setDefaultLookAndFeelDecorated(false); setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.NONE); // Set no border // lamentablemente since 1.5: setAlwaysOnTop(true); ImageIcon splashImage = new ImageIcon(frame.getResource("images/Freemind_Splash_Butterfly_Modern.png")); JLabel splashImageLabel = new JLabel(splashImage) { private Integer mWidth = null; private final Font progressFont = new Font("SansSerif", Font.PLAIN, 10); private Font versionTextFont = null; { Set availableFontFamilyNames = Tools.getAvailableFontFamilyNames(); versionTextFont = availableFontFamilyNames.contains("Century Gothic") ? new Font("Century Gothic", Font.BOLD, 14) : new Font("Arial", Font.BOLD, 12); } public void paint (Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setFont(versionTextFont); // Determine width of string to center it String freemindVersion = frame.getFreemindVersion().toString(); if (mWidth == null) { mWidth = new Integer(g2.getFontMetrics().stringWidth(freemindVersion)); } int yCoordinate = 58; int xCoordinate = (int)(getSize().getWidth()/2-mWidth.intValue()/2); g2.setColor(new Color(0x4d,0x63,0xb4)); g2.drawString(freemindVersion, xCoordinate , yCoordinate); // Draw progress bar String progressString = (String)getClientProperty("progressString"); if (progressString!=null) { Double percent = (Double)getClientProperty("progressPercent"); int xBase = 7; int yBase = 185; int width = 281; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); g2.setFont(progressFont); // g2.setColor(new Color(0x80,0x80,0x80)); g2.setColor(new Color(0xff,0xff,0xff)); g2.drawString(progressString, xBase+1, yBase-4); g2.setColor(new Color(0xc8,0xdf,0x8b)); g2.draw(new Rectangle(xBase+2, yBase, width, 3)); // g2.setColor(new Color(0xd0,0xd0,0xd0)); // g2.draw(new Rectangle(xBase+1, yBase+1, width, 2)); // g2.setColor(new Color(0xf4,0xf4,0xf4)); // g2.fill(new Rectangle(xBase+1, yBase+1, width-1, 2)); // g2.setColor(new Color(0x4d,0x63,0xb4)); g2.setColor(new Color(0xff,0xff,0xff)); g2.fill(new Rectangle(xBase+1, yBase+1, (int)(width*percent.doubleValue()), 2)); } } }; feedBack.setImageJLabel(splashImageLabel); getContentPane().add(splashImageLabel, BorderLayout.CENTER); mProgressBar = new JProgressBar(); mProgressBar.setIndeterminate(true); mProgressBar.setStringPainted(true); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension labelSize = splashImageLabel.getPreferredSize(); // Put image at the middle of the screen setLocation(screenSize.width/2 - (labelSize.width/2), screenSize.height/2 - (labelSize.height/2)); } public void close() { setVisible(false); dispose(); } public ImageIcon getWindowIcon() { return mIcon; } }freemind-0.9.0/freemind/freemind/main/XMLParseException.java0000644000000000000000000001140511527433212022473 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* XMLParseException.java * * $Revision: 1.7.34.3 $ * $Date: 2006/07/25 20:28:20 $ * $Name: fm_060405_integration $ * * This file is part of NanoXML 2 Lite. * Copyright (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from the * use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in * a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source distribution. *****************************************************************************/ // //package nanoxml; // // package freemind.main; // /** * An XMLParseException is thrown when an error occures while parsing an XML * string. *

* $Revision: 1.7.34.3 $
* $Date: 2006/07/25 20:28:20 $

* * @see XMLElement * * @author Marc De Scheemaecker * @version $Name: fm_060405_integration $, $Revision: 1.7.34.3 $ */ public class XMLParseException extends RuntimeException { /** * Indicates that no line number has been associated with this exception. */ public static final int NO_LINE = -1; /** * The line number in the source code where the error occurred, or * NO_LINE if the line number is unknown. * *

Invariants:
*
  • lineNr > 0 || lineNr == NO_LINE *
*/ private int lineNr; /** * Creates an exception. * * @param name The name of the element where the error is located. * @param message A message describing what went wrong. * *
Preconditions:
*
  • message != null *
* *
Postconditions:
*
  • getLineNr() => NO_LINE *
*/ public XMLParseException(String name, String message) { super("XML Parse Exception during parsing of " + ((name == null) ? "the XML definition" : ("a " + name + " element")) + ": " + message); this.lineNr = XMLParseException.NO_LINE; } /** * Creates an exception. * * @param name The name of the element where the error is located. * @param lineNr The number of the line in the input. * @param message A message describing what went wrong. * *
Preconditions:
*
  • message != null *
  • lineNr > 0 *
* *
Postconditions:
*
  • getLineNr() => lineNr *
*/ public XMLParseException(String name, int lineNr, String message) { super("XML Parse Exception during parsing of " + ((name == null) ? "the XML definition" : ("a " + name + " element")) + " at line " + lineNr + ": " + message); this.lineNr = lineNr; } /** * Where the error occurred, or NO_LINE if the line number is * unknown. * */ public int getLineNr() { return this.lineNr; } } freemind-0.9.0/freemind/freemind/main/FixedHTMLWriter.java0000644000000000000000000000643011527433212022104 0ustar rootrootpackage freemind.main; /* * XHTMLWriter -- A simple XHTML document writer * * (C) 2004 Richard "Shred" Koerber * http://www.shredzone.net/ * * This is free software. You can modify and use it at will. */ import java.io.*; import java.util.Enumeration; import javax.swing.text.*; import javax.swing.text.html.*; /** * Create a new XHTMLWriter which is able to save a HTMLDocument as XHTML. *

* The result will be a valid XML file, but it is not granted that the file * will really be XHTML 1.0 transitional conformous. The basic purpose of * this class is to give an XSL processor access to plain HTML files. * * @author Richard "Shred" K�rber */ public class FixedHTMLWriter extends HTMLWriter { final private MutableAttributeSet convAttr = new SimpleAttributeSet(); /** * Create a new XHTMLWriter that will write the entire HTMLDocument. * * @param writer Writer to write to * @param doc Source document */ public FixedHTMLWriter( Writer writer, HTMLDocument doc ) { this( writer, doc, 0, doc.getLength() ); } /** * Create a new XHTMLWriter that will write a part of a HTMLDocument. * * @param writer Writer to write to * @param doc Source document * @param pos Starting position * @param len Length */ public FixedHTMLWriter( Writer writer, HTMLDocument doc, int pos, int len ) { super( writer, doc, pos, len ); } /** * Create an older style of HTML attributes. This will * convert character level attributes that have a StyleConstants * mapping over to an HTML tag/attribute. Other CSS attributes * will be placed in an HTML style attribute. */ private static void convertToHTML(AttributeSet from, MutableAttributeSet to) { if (from == null) { return; } Enumeration keys = from.getAttributeNames(); String value = ""; while (keys.hasMoreElements()) { Object key = keys.nextElement(); if (key instanceof CSS.Attribute) { // default is to store in a HTML style attribute if (value.length() > 0) { value = value + "; "; } value = value + key + ": " + from.getAttribute(key); } else { to.addAttribute(key, from.getAttribute(key)); } } if (value.length() > 0) { to.addAttribute(HTML.Attribute.STYLE, value); } } /* (non-Javadoc) * @see javax.swing.text.html.HTMLWriter#writeAttributes(javax.swing.text.AttributeSet) */ protected void writeAttributes(AttributeSet attr) throws IOException { // translate css attributes to html if(attr instanceof Element){ Element elem = (Element) attr; if(elem.isLeaf() || elem.getName().equalsIgnoreCase("p-implied")){ super.writeAttributes(attr); return; } } convAttr.removeAttributes(convAttr); convertToHTML(attr, convAttr); Enumeration names = convAttr.getAttributeNames(); while (names.hasMoreElements()) { Object name = names.nextElement(); if (name instanceof HTML.Tag || name instanceof StyleConstants || name == HTML.Attribute.ENDTAG) { continue; } write(" " + name + "=\"" + convAttr.getAttribute(name) + "\""); } } }freemind-0.9.0/freemind/freemind/main/Tools.java0000644000000000000000000013215411527433212020266 0ustar rootroot/* * FreeMind - a program for creating and viewing mindmaps * Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * See COPYING for details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. */ /* $Id: Tools.java,v 1.17.18.9.2.58 2010/12/23 22:55:21 christianfoltin Exp $ */ package freemind.main; //maybe move this class to another package like tools or something... import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Point; import java.awt.RenderingHints; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PushbackInputStream; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.KeySpec; import java.util.Arrays; import java.util.Date; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Set; import java.util.StringTokenizer; import java.util.Vector; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.Inflater; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import javax.swing.AbstractAction; import javax.swing.AbstractButton; import javax.swing.Action; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import freemind.modes.MindMapNode; import freemind.view.mindmapview.NodeView; /** * @author foltin * */ public class Tools { private static java.util.logging.Logger logger = null; static { logger = freemind.main.Resources.getInstance().getLogger("Tools"); } //public static final Set executableExtensions = new HashSet ({ "exe", // "com", "vbs" }); //The Java programming language provides a shortcut syntax for creating and // initializing an array. Here's an example of this syntax: //boolean[] answers = { true, false, true, true, false }; public static final Set executableExtensions = new HashSet(Arrays .asList(new String[] { "exe", "com", "vbs", "bat", "lnk" })); private static Set availableFontFamilyNames = null; // Keep set of platform private static String sEnvFonts[] = null; // fonts public static boolean executableByExtension(String file) { return executableExtensions.contains(getExtension(file)); } public static String colorToXml(Color col) { // if (col == null) throw new IllegalArgumentException("Color was // null"); if (col == null) return null; String red = Integer.toHexString(col.getRed()); if (col.getRed() < 16) red = "0" + red; String green = Integer.toHexString(col.getGreen()); if (col.getGreen() < 16) green = "0" + green; String blue = Integer.toHexString(col.getBlue()); if (col.getBlue() < 16) blue = "0" + blue; return "#" + red + green + blue; } public static Color xmlToColor(String string) { if (string == null) return null; string = string.trim(); if (string.length() == 7) { int red = Integer.parseInt(string.substring(1, 3), 16); int green = Integer.parseInt(string.substring(3, 5), 16); int blue = Integer.parseInt(string.substring(5, 7), 16); return new Color(red, green, blue); } else { throw new IllegalArgumentException("No xml color given by '" + string + "'."); } } public static String PointToXml(Point col) { if (col == null) return null; //throw new IllegalArgumentException("Point was // null"); Vector l = new Vector(); l.add(Integer.toString(col.x)); l.add(Integer.toString(col.y)); return listToString((List) l); } public static Point xmlToPoint(String string) { if (string == null) return null; // fc, 3.11.2004: bug fix for alpha release of FM if (string.startsWith("java.awt.Point")) { string = string.replaceAll( "java\\.awt\\.Point\\[x=(-*[0-9]*),y=(-*[0-9]*)\\]", "$1;$2"); } List l = stringToList(string); ListIterator it = l.listIterator(0); if (l.size() != 2) throw new IllegalArgumentException( "A point must consist of two numbers (and not: '" + string + "')."); int x = Integer.parseInt((String) it.next()); int y = Integer.parseInt((String) it.next()); return new Point(x, y); } public static String BooleanToXml(boolean col) { return (col) ? "true" : "false"; } public static boolean xmlToBoolean(String string) { if(string == null) return false; if(string.equals("true")) return true; return false; } /** * Converts a String in the format "value;value;value" to a List with the * values (as strings) */ public static List stringToList(String string) { StringTokenizer tok = new StringTokenizer(string, ";"); List list = new LinkedList(); while (tok.hasMoreTokens()) { list.add(tok.nextToken()); } return list; } public static String listToString(List list) { ListIterator it = list.listIterator(0); String str = new String(); while (it.hasNext()) { str += it.next().toString() + ";"; } return str; } /** * Replaces a ~ in a filename with the users home directory */ public static String expandFileName(String file) { //replace ~ with the users home dir if (file.startsWith("~")) { file = System.getProperty("user.home") + file.substring(1); } return file; } public static Set getAvailableFontFamilyNames() { if (availableFontFamilyNames == null) { String[] envFonts = getAvailableFonts(); availableFontFamilyNames = new HashSet(); for (int i = 0; i < envFonts.length; i++) { availableFontFamilyNames.add(envFonts[i]); } // Add this one explicitly, Java defaults to it if the font is not availableFontFamilyNames.add("dialog"); } return availableFontFamilyNames; } /** */ private static String[] getAvailableFonts() { if (sEnvFonts == null) { GraphicsEnvironment gEnv = GraphicsEnvironment .getLocalGraphicsEnvironment(); sEnvFonts = gEnv.getAvailableFontFamilyNames(); } return sEnvFonts; } public static Vector getAvailableFontFamilyNamesAsVector() { String[] envFonts = getAvailableFonts(); Vector availableFontFamilyNames = new Vector(); for (int i = 0; i < envFonts.length; i++) { availableFontFamilyNames.add(envFonts[i]); } return availableFontFamilyNames; } public static boolean isAvailableFontFamily(String fontFamilyName) { return getAvailableFontFamilyNames().contains(fontFamilyName); } /** * Returns the lowercase of the extension of a file. Example: * getExtension("fork.pork.MM") == freemind.main.FreeMindCommon.FREEMIND_FILE_EXTENSION_WITHOUT_DOT */ public static String getExtension(File f) { return getExtension(f.toString()); } /** * Returns the lowercase of the extension of a file name. Example: * getExtension("fork.pork.MM") == freemind.main.FreeMindCommon.FREEMIND_FILE_EXTENSION_WITHOUT_DOT */ public static String getExtension(String s) { int i = s.lastIndexOf('.'); return (i > 0 && i < s.length() - 1) ? s.substring(i + 1).toLowerCase() .trim() : ""; } public static String removeExtension(String s) { int i = s.lastIndexOf('.'); return (i > 0 && i < s.length() - 1) ? s.substring(0, i) : ""; } public static boolean isAbsolutePath(String path) { // On Windows, we cannot just ask if the file name starts with file // separator. // If path contains ":" at the second position, then it is not relative, // I guess. // However, if it starts with separator, then it is absolute too. // Possible problems: Not tested on Macintosh, but should work. // Koh, 1.4.2004: Resolved problem: I tested on Mac OS X 10.3.3 and // worked. String osNameStart = System.getProperty("os.name").substring(0, 3); String fileSeparator = System.getProperty("file.separator"); if (osNameStart.equals("Win")) { return ((path.length() > 1) && path.substring(1, 2).equals(":")) || path.startsWith(fileSeparator); } else if (osNameStart.equals("Mac")) { //Koh:Panther (or Java 1.4.2) may change file path rule return path.startsWith(fileSeparator); } else { return path.startsWith(fileSeparator); } } /** * This is a correction of a method getFile of a class URL. Namely, on * Windows it returned file paths like /C: etc., which are not valid on * Windows. This correction is heuristic to a great extend. One of the * reasons is that file:// is basically no protocol at all, but rather * something every browser and every system uses slightly differently. */ public static String urlGetFile(URL url) { String osNameStart = System.getProperty("os.name").substring(0, 3); if (osNameStart.equals("Win") && url.getProtocol().equals("file")) { String fileName = url.toString().replaceFirst("^file:", "") .replace('/', '\\'); return (fileName.indexOf(':') >= 0) ? fileName.replaceFirst( "^\\\\*", "") : fileName; } // Network path else { return url.getFile(); } } /** * This method converts an absolute url to an url relative to a given * base-url. The algorithm is somewhat chaotic, but it works (Maybe rewrite * it). Be careful, the method is ".mm"-specific. Something like this should * be included in the librarys, but I couldn't find it. You can create a new * absolute url with "new URL(URL context, URL relative)". */ public static String toRelativeURL(URL base, URL target) { // Precondition: If URL is a path to folder, then it must end with '/' // character. if ((base.getProtocol().equals(target.getProtocol())) && (base.getHost().equals(target.getHost()))) { String baseString = base.getFile(); String targetString = target.getFile(); String result = ""; //remove filename from URL baseString = baseString.substring(0, baseString.lastIndexOf("/") + 1); //remove filename from URL targetString = targetString.substring(0, targetString .lastIndexOf("/") + 1); StringTokenizer baseTokens = new StringTokenizer(baseString, "/");//Maybe // this // causes // problems // under // windows StringTokenizer targetTokens = new StringTokenizer(targetString, "/");//Maybe this causes problems under windows String nextBaseToken = "", nextTargetToken = ""; //Algorithm while (baseTokens.hasMoreTokens() && targetTokens.hasMoreTokens()) { nextBaseToken = baseTokens.nextToken(); nextTargetToken = targetTokens.nextToken(); if (!(nextBaseToken.equals(nextTargetToken))) { while (true) { result = result.concat("../"); if (!baseTokens.hasMoreTokens()) { break; } nextBaseToken = baseTokens.nextToken(); } while (true) { result = result.concat(nextTargetToken + "/"); if (!targetTokens.hasMoreTokens()) { break; } nextTargetToken = targetTokens.nextToken(); } String temp = target.getFile(); result = result.concat(temp.substring( temp.lastIndexOf("/") + 1, temp.length())); return result; } } while (baseTokens.hasMoreTokens()) { result = result.concat("../"); baseTokens.nextToken(); } while (targetTokens.hasMoreTokens()) { nextTargetToken = targetTokens.nextToken(); result = result.concat(nextTargetToken + "/"); } String temp = target.getFile(); result = result.concat(temp.substring(temp.lastIndexOf("/") + 1, temp.length())); return result; } return target.toString(); } /** * Tests a string to be equals with "true". * @return true, iff the String is "true". */ public static boolean isPreferenceTrue(String option) { return Tools.safeEquals(option, "true"); } /** * @param string1 input (or null) * @param string2 input (or null) * @return true, if equal (that means: same text or both null) */ public static boolean safeEquals(String string1, String string2) { return (string1 != null && string2 != null && string1.equals(string2)) || (string1 == null && string2 == null); } public static boolean safeEquals(Object obj1, Object obj2) { return (obj1 != null && obj2 != null && obj1.equals(obj2)) || (obj1 == null && obj2 == null); } public static boolean safeEqualsIgnoreCase(String string1, String string2) { return (string1 != null && string2 != null && string1.toLowerCase() .equals(string2.toLowerCase())) || (string1 == null && string2 == null); } public static boolean safeEquals(Color color1, Color color2) { return (color1 != null && color2 != null && color1.equals(color2)) || (color1 == null && color2 == null); } public static String firstLetterCapitalized(String text) { if (text == null || text.length() == 0) { return text; } return text.substring(0, 1).toUpperCase() + text.substring(1, text.length()); } public static void setHidden(File file, boolean hidden, boolean synchronously) { // According to Web articles, UNIX systems do not have attribute hidden // in general, rather, they consider files starting with . as hidden. String osNameStart = System.getProperty("os.name").substring(0, 3); if (osNameStart.equals("Win")) { try { Runtime.getRuntime().exec( "attrib " + (hidden ? "+" : "-") + "H \"" + file.getAbsolutePath() + "\""); // Synchronize the effect, because it is asynchronous in // general. if (!synchronously) { return; } int timeOut = 10; while (file.isHidden() != hidden && timeOut > 0) { Thread.sleep(10/* miliseconds */); timeOut--; } } catch (Exception e) { freemind.main.Resources.getInstance().logException(e); } } } /** * Example: expandPlaceholders("Hello $1.","Dolly"); => "Hello Dolly." */ public static String expandPlaceholders(String message, String s1) { String result = message; if (s1 != null) { s1 = s1.replaceAll("\\\\", "\\\\\\\\"); // Replace \ with \\ result = result.replaceAll("\\$1", s1); } return result; } public static String expandPlaceholders(String message, String s1, String s2) { String result = message; if (s1 != null) { result = result.replaceAll("\\$1", s1); } if (s2 != null) { result = result.replaceAll("\\$2", s2); } return result; } public static String expandPlaceholders(String message, String s1, String s2, String s3) { String result = message; if (s1 != null) { result = result.replaceAll("\\$1", s1); } if (s2 != null) { result = result.replaceAll("\\$2", s2); } if (s3 != null) { result = result.replaceAll("\\$3", s3); } return result; } public static class IntHolder { private int value; public IntHolder() { } public IntHolder(int value) { this.value = value; } public void setValue(int value) { this.value = value; } public int getValue() { return value; } public String toString() { return new String("IntHolder(") + value + ")"; } } public static class BooleanHolder { private boolean value; public BooleanHolder() { } public BooleanHolder(boolean initialValue) { value = initialValue; } public void setValue(boolean value) { this.value = value; } public boolean getValue() { return value; } } public static class ObjectHolder { Object object; public ObjectHolder() { } public void setObject(Object object) { this.object = object; } public Object getObject() { return object; } } public static class Pair { Object first; Object second; public Pair(Object first, Object second) { this.first = first; this.second = second; } public Object getFirst() { return first; } public Object getSecond() { return second; } } /** from: http://javaalmanac.com/egs/javax.crypto/PassKey.html */ public static class DesEncrypter { private static final String SALT_PRESENT_INDICATOR = " "; private static final int SALT_LENGTH=8; Cipher ecipher; Cipher dcipher; // 8-byte default Salt byte[] salt = { (byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32, (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03 }; // Iteration count int iterationCount = 19; private final char[] passPhrase; private String mAlgorithm; public DesEncrypter(StringBuffer pPassPhrase, String pAlgorithm) { passPhrase = new char[pPassPhrase.length()]; pPassPhrase.getChars(0, passPhrase.length, passPhrase, 0); mAlgorithm = pAlgorithm; } /** */ private void init(byte[] mSalt) { if(mSalt!=null) { this.salt = mSalt; } if (ecipher==null) { try { // Create the key KeySpec keySpec = new PBEKeySpec(passPhrase, salt, iterationCount); SecretKey key = SecretKeyFactory.getInstance( mAlgorithm).generateSecret(keySpec); ecipher = Cipher.getInstance(mAlgorithm); dcipher = Cipher.getInstance(mAlgorithm); // Prepare the parameter to the ciphers AlgorithmParameterSpec paramSpec = new PBEParameterSpec( salt, iterationCount); // Create the ciphers ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec); } catch (java.security.InvalidAlgorithmParameterException e) { } catch (java.security.spec.InvalidKeySpecException e) { } catch (javax.crypto.NoSuchPaddingException e) { } catch (java.security.NoSuchAlgorithmException e) { } catch (java.security.InvalidKeyException e) { } } } public String encrypt(String str) { try { // Encode the string into bytes using utf-8 byte[] utf8 = str.getBytes("UTF8"); // determine salt by random: byte[] newSalt = new byte[SALT_LENGTH]; for (int i = 0; i < newSalt.length; i++) { newSalt[i] = (byte)(Math.random()*256l-128l); } init(newSalt); // Encrypt byte[] enc = ecipher.doFinal(utf8); // Encode bytes to base64 to get a string return Tools.toBase64(newSalt) + SALT_PRESENT_INDICATOR + Tools.toBase64(enc); } catch (javax.crypto.BadPaddingException e) { } catch (IllegalBlockSizeException e) { } catch (UnsupportedEncodingException e) { } return null; } public String decrypt(String str) { if(str == null) { return null; } try { byte[] salt = null; // test if salt exists: int indexOfSaltIndicator = str.indexOf(SALT_PRESENT_INDICATOR); if(indexOfSaltIndicator>=0) { String saltString = str.substring(0, indexOfSaltIndicator); str = str.substring(indexOfSaltIndicator+1); salt = Tools.fromBase64(saltString); } // Decode base64 to get bytes str = str.replaceAll("\\s", ""); byte[] dec = Tools.fromBase64(str); init(salt); // Decrypt byte[] utf8 = dcipher.doFinal(dec); // Decode using utf-8 return new String(utf8, "UTF8"); } catch (javax.crypto.BadPaddingException e) { } catch (IllegalBlockSizeException e) { } catch (UnsupportedEncodingException e) { } return null; } } public static class SingleDesEncrypter extends DesEncrypter { public SingleDesEncrypter(StringBuffer pPassPhrase) { super(pPassPhrase, "PBEWithMD5AndDES"); } } public static class TripleDesEncrypter extends DesEncrypter { public TripleDesEncrypter(StringBuffer pPassPhrase) { super(pPassPhrase, "PBEWithMD5AndTripleDES"); } } /** */ public static String toBase64(byte[] byteBuffer) { return new String(Base64Coding.encode64(byteBuffer)); } /** Method to be called from XSLT */ public static String toBase64(String text) { return toBase64(text.getBytes()); } /** * @throws IOException */ public static byte[] fromBase64(String base64String) { return Base64Coding.decode64(base64String); } public static String compress(String message) { byte[] input = uTF8StringToByteArray(message); // Create the compressor with highest level of compression Deflater compressor = new Deflater(); compressor.setLevel(Deflater.BEST_COMPRESSION); // Give the compressor the data to compress compressor.setInput(input); compressor.finish(); // Create an expandable byte array to hold the compressed data. // You cannot use an array that's the same size as the orginal because // there is no guarantee that the compressed data will be smaller than // the uncompressed data. ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length); // Compress the data byte[] buf = new byte[1024]; while (!compressor.finished()) { int count = compressor.deflate(buf); bos.write(buf, 0, count); } try { bos.close(); } catch (IOException e) { } // Get the compressed data byte[] compressedData = bos.toByteArray(); return toBase64(compressedData); } public static String decompress(String compressedMessage) { byte[] compressedData = fromBase64(compressedMessage); // Create the decompressor and give it the data to compress Inflater decompressor = new Inflater(); decompressor.setInput(compressedData); // Create an expandable byte array to hold the decompressed data ByteArrayOutputStream bos = new ByteArrayOutputStream( compressedData.length); // Decompress the data byte[] buf = new byte[1024]; while (!decompressor.finished()) { try { int count = decompressor.inflate(buf); bos.write(buf, 0, count); } catch (DataFormatException e) { } } try { bos.close(); } catch (IOException e) { } // Get the decompressed data byte[] decompressedData = bos.toByteArray(); return byteArrayToUTF8String(decompressedData); } /** */ public static String byteArrayToUTF8String(byte[] compressedData) { // Decode using utf-8 try { return new String(compressedData, "UTF8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException("UTF8 packing not allowed"); } } /** */ public static byte[] uTF8StringToByteArray(String uncompressedData) { // Code using utf-8 try { return uncompressedData.getBytes("UTF8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException("UTF8 packing not allowed"); } } /** Extracts a long from xml. Only useful for dates. */ public static Date xmlToDate(String xmlString) { try { return new Date(Long.valueOf(xmlString).longValue()); } catch (Exception e) { return new Date(System.currentTimeMillis()); } } public static String dateToString(Date date) { return Long.toString(date.getTime()); } public static boolean safeEquals(BooleanHolder holder, BooleanHolder holder2) { return (holder == null && holder2 == null) || (holder != null && holder2 != null && holder.getValue() == holder2 .getValue()); } public static void setDialogLocationRelativeTo(JDialog dialog, Component c) { if(c==null){ // perhaps, the component is not yet existing. return; } if(c instanceof NodeView){ final NodeView nodeView = (NodeView)c; nodeView.getMap().scrollNodeToVisible(nodeView); c = nodeView.getMainView(); } final Point compLocation = c.getLocationOnScreen(); final int cw = c.getWidth(); final int ch = c.getHeight(); final Container parent = dialog.getParent(); final Point parentLocation = parent.getLocationOnScreen(); final int pw = parent.getWidth(); final int ph = parent.getHeight(); final int dw = dialog.getWidth(); final int dh = dialog.getHeight(); final Toolkit defaultToolkit = Toolkit.getDefaultToolkit(); final Dimension screenSize = defaultToolkit.getScreenSize(); final Insets screenInsets = defaultToolkit.getScreenInsets(dialog.getGraphicsConfiguration()); final int minX = Math.max(parentLocation.x, screenInsets.left); final int minY = Math.max(parentLocation.y, screenInsets.top); final int maxX = Math.min(parentLocation.x + pw, screenSize.width - screenInsets.right); final int maxY = Math.min(parentLocation.y + ph, screenSize.height - screenInsets.bottom); int dx, dy; if (compLocation.x + cw < minX){ dx = minX; } else if(compLocation.x > maxX){ dx = maxX - dw; } else // component X on screen { final int leftSpace = compLocation.x - minX; final int rightSpace = maxX - (compLocation.x + cw); if(leftSpace > rightSpace){ if(leftSpace > dw){ dx = compLocation.x - dw; } else{ dx = minX; } } else{ if(rightSpace > dw){ dx = compLocation.x + cw; } else{ dx = maxX - dw; } } } if (compLocation.y + ch < minY){ dy = minY; } else if(compLocation.y > maxY){ dy = maxY - dh; } else // component Y on screen { final int topSpace = compLocation.y - minY; final int bottomSpace = maxY - (compLocation.y + ch); if(topSpace > bottomSpace){ if(topSpace > dh){ dy = compLocation.y - dh; } else{ dy = minY; } } else{ if(bottomSpace > dh){ dy = compLocation.y + ch; } else{ dy = maxY - dh; } } } dialog.setLocation(dx , dy ); } /** Creates a reader that pipes the input file through a XSLT-Script that * updates the version to the current. * @throws IOException */ public static Reader getUpdateReader(Reader pReader, String xsltScript, FreeMindMain frame) throws IOException { StringWriter writer = null; InputStream inputStream = null; java.util.logging.Logger logger = frame.getLogger(Tools.class.getName()); logger.info("Updating the reader "+pReader+" to the current version."); boolean successful = false; String errorMessage = null; try{ // try to convert map with xslt: URL updaterUrl=null; updaterUrl = frame.getResource(xsltScript); if(updaterUrl == null) { throw new IllegalArgumentException(xsltScript+" not found."); } inputStream = updaterUrl.openStream(); final Source xsltSource = new StreamSource(inputStream); // get output: writer = new StringWriter(); final Result result = new StreamResult(writer); String fileContents = getFile(pReader); if (fileContents.length() > 10) { logger.info("File start before UTF8 replacement: '" + fileContents.substring(0, 9) + "'"); } fileContents = replaceUtf8AndIllegalXmlChars(fileContents); if (fileContents.length() > 10) { logger.info("File start after UTF8 replacement: '" + fileContents.substring(0, 9) + "'"); } final StreamSource sr = new StreamSource(new StringReader(fileContents)); // Dimitry: to avoid a memory leak and properly release resources after the XSLT transformation // everything should run in own thread. Only after the thread dies the resources are released. class TransformerRunnable implements Runnable{ private boolean successful = false; private String errorMessage; public void run() { // create an instance of TransformerFactory TransformerFactory transFact = TransformerFactory.newInstance(); Transformer trans; try { trans = transFact.newTransformer(xsltSource); trans.transform(sr, result); successful = true; } catch (Exception ex) { freemind.main.Resources.getInstance().logException(ex); errorMessage = ex.toString(); } } public boolean isSuccessful() { return successful; } public String getErrorMessage() { return errorMessage; } } final TransformerRunnable transformer = new TransformerRunnable(); Thread transformerThread = new Thread(transformer, "XSLT"); transformerThread.start(); transformerThread.join(); logger.info("Updating the reader "+pReader+" to the current version. Done." ); //+ writer.getBuffer().toString()); successful = transformer.isSuccessful(); errorMessage = transformer.getErrorMessage(); } catch(Exception ex) { } finally { if(inputStream!= null) { inputStream.close(); } if(writer != null) { writer.close(); } } if(successful){ return new StringReader(writer.getBuffer().toString()); } else{ return new StringReader(""); } } public static String replaceUtf8AndIllegalXmlChars(String fileContents) { return HtmlTools.removeInvalidXmlCharacters(fileContents); } /** Creates a default reader that just reads the given file. * @throws FileNotFoundException */ public static Reader getActualReader(Reader pReader) throws FileNotFoundException { return new BufferedReader(pReader); } /** * In case of trouble, the method returns null. * @param pInputFile the file to read. * @return the complete content of the file. or null if an exception has occured. */ public static String getFile(File pInputFile) { try { return getFile(getReaderFromFile(pInputFile)); } catch (FileNotFoundException e) { freemind.main.Resources.getInstance().logException(e); return null; } } public static Reader getReaderFromFile(File pInputFile) throws FileNotFoundException { return new FileReader(pInputFile); } public static String getFile(Reader pReader) { StringBuffer lines = new StringBuffer(); BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(pReader); final String endLine = System.getProperty("line.separator"); String line; while ((line = bufferedReader.readLine()) != null) { lines.append(line).append(endLine); } bufferedReader.close(); } catch (Exception e) { freemind.main.Resources.getInstance().logException(e); if(bufferedReader != null) { try { bufferedReader.close(); } catch (Exception ex) { freemind.main.Resources.getInstance().logException(ex); } } return null; } return lines.toString(); } public static void logTransferable(Transferable t) { System.err.println(); System.err.println("BEGIN OF Transferable:\t"+t); DataFlavor[] dataFlavors = t.getTransferDataFlavors(); for (int i = 0; i < dataFlavors.length; i++) { System.out.println(" Flavor:\t"+dataFlavors[i]); System.out.println(" Supported:\t"+t.isDataFlavorSupported(dataFlavors[i])); try { System.out.println(" Content:\t"+t.getTransferData(dataFlavors[i])); } catch (Exception e) {}} System.err.println("END OF Transferable"); System.err.println(); } public static void addEscapeActionToDialog(final JDialog dialog) { class EscapeAction extends AbstractAction{ public void actionPerformed(ActionEvent e) { dialog.dispose(); }; } addEscapeActionToDialog(dialog, new EscapeAction()); } public static void addEscapeActionToDialog(JDialog dialog, Action action) { addKeyActionToDialog(dialog, action, "ESCAPE", "end_dialog"); } public static void addKeyActionToDialog(JDialog dialog, Action action, String keyStroke, String actionId) { action.putValue(Action.NAME, actionId); // Register keystroke dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) .put(KeyStroke.getKeyStroke(keyStroke), action.getValue(Action.NAME)); // Register action dialog.getRootPane().getActionMap().put(action.getValue(Action.NAME), action); } /** * Removes the "TranslateMe" sign from the end of not translated texts. */ public static String removeTranslateComment(String inputString) { if(inputString != null && inputString.endsWith(FreeMindCommon.POSTFIX_TRANSLATE_ME)) { // remove POSTFIX_TRANSLATE_ME: inputString = inputString.substring(0, inputString.length()-FreeMindCommon.POSTFIX_TRANSLATE_ME.length()); } return inputString; } /** * Returns the same URL as input with the addition, that the reference part "#..." is filtered out. * @throws MalformedURLException */ public static URL getURLWithoutReference(URL input) throws MalformedURLException { return new URL(input.toString().replaceFirst("#.*", "")); } public static void copyStream(InputStream in, OutputStream out, boolean pCloseOutput) throws IOException { byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); if (pCloseOutput) { out.close(); } } public static void convertPointToAncestor(Component c, Point p, Component destination){ int x,y; while(c != destination) { x = c.getX(); y = c.getY(); p.x += x; p.y += y; c = c.getParent(); } ; } public static void convertPointFromAncestor(Component source, Point p, Component c){ int x,y; while(c != source) { x = c.getX(); y = c.getY(); p.x -= x; p.y -= y; c = c.getParent(); } ; } public static void convertPointToAncestor(Component source, Point point, Class ancestorClass) { Component destination = SwingUtilities.getAncestorOfClass(ancestorClass, source); convertPointToAncestor(source, point, destination); } interface NameMnemonicHolder{ /** */ String getText(); /** */ void setText(String replaceAll); /** */ void setMnemonic(char charAfterMnemoSign); /** */ void setDisplayedMnemonicIndex(int mnemoSignIndex); } private static class ButtonHolder implements NameMnemonicHolder{ private AbstractButton btn; public ButtonHolder(AbstractButton btn) { super(); this.btn = btn; } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#getText() */ public String getText() { return btn.getText(); } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setDisplayedMnemonicIndex(int) */ public void setDisplayedMnemonicIndex(int mnemoSignIndex) { btn.setDisplayedMnemonicIndex(mnemoSignIndex); } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setMnemonic(char) */ public void setMnemonic(char charAfterMnemoSign) { btn.setMnemonic(charAfterMnemoSign); } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setText(java.lang.String) */ public void setText(String text) { btn.setText(text); } } private static class ActionHolder implements NameMnemonicHolder{ private Action action; public ActionHolder(Action action) { super(); this.action = action; } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#getText() */ public String getText() { return action.getValue(Action.NAME).toString(); } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setDisplayedMnemonicIndex(int) */ public void setDisplayedMnemonicIndex(int mnemoSignIndex) { } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setMnemonic(char) */ public void setMnemonic(char charAfterMnemoSign) { int vk = (int) charAfterMnemoSign; if(vk >= 'a' && vk <='z') vk -= ('a' - 'A'); action.putValue(Action.MNEMONIC_KEY, new Integer(vk)); } /* (non-Javadoc) * @see freemind.main.Tools.IAbstractButton#setText(java.lang.String) */ public void setText(String text) { action.putValue(Action.NAME, text); } } /** * Ampersand indicates that the character after it is a mnemo, unless the * character is a space. In "Find & Replace", ampersand does not label * mnemo, while in "&About", mnemo is "Alt + A". */ public static void setLabelAndMnemonic(AbstractButton btn, String inLabel) { setLabelAndMnemonic(new ButtonHolder(btn), inLabel); } /** * Ampersand indicates that the character after it is a mnemo, unless the * character is a space. In "Find & Replace", ampersand does not label * mnemo, while in "&About", mnemo is "Alt + A". */ public static void setLabelAndMnemonic(Action action, String inLabel) { setLabelAndMnemonic(new ActionHolder(action), inLabel); } private static void setLabelAndMnemonic(NameMnemonicHolder item, String inLabel) { String rawLabel = inLabel; if (rawLabel == null) rawLabel = item.getText(); if (rawLabel == null) return; item.setText(removeMnemonic(rawLabel)); int mnemoSignIndex = rawLabel.indexOf("&"); if (mnemoSignIndex >= 0 && mnemoSignIndex + 1 < rawLabel.length()) { char charAfterMnemoSign = rawLabel.charAt(mnemoSignIndex + 1); if (charAfterMnemoSign != ' '){ // no mnemonics under Mac OS: if(!isMacOsX()) { item.setMnemonic(charAfterMnemoSign); // sets the underline to exactly this character. item.setDisplayedMnemonicIndex(mnemoSignIndex); } } } } public static boolean isMacOsX() { boolean underMac = false; String osName = System.getProperty("os.name"); if (osName.startsWith("Mac OS")) { underMac = true; } return underMac; } public static String removeMnemonic(String rawLabel) { return rawLabel.replaceFirst("&([^ ])", "$1"); } public static KeyStroke getKeyStroke(final String keyStrokeDescription) { if(keyStrokeDescription == null){ return null; } final KeyStroke keyStroke = KeyStroke.getKeyStroke(keyStrokeDescription); if(keyStroke != null) return keyStroke; return KeyStroke.getKeyStroke("typed " + keyStrokeDescription); } public static final String JAVA_VERSION = System.getProperty("java.version"); public static URL fileToUrl(File pFile) throws MalformedURLException { // fix for java1.4 and java5 only. if (JAVA_VERSION.compareTo("1.6.0") < 0) { return pFile.toURL(); } return pFile.toURI().toURL(); } public static File urlToFile(URL pUrl) throws URISyntaxException{ // fix for java1.4 and java5 only. if (JAVA_VERSION.compareTo("1.6.0") < 0) { return new File (urlGetFile(pUrl)); } return new File(new URI (pUrl.toString())); } public static void restoreAntialiasing(Graphics2D g, Object renderingHint) { if(RenderingHints.KEY_ANTIALIASING.isCompatibleValue(renderingHint)){ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, renderingHint); } } public static String getFileNameProposal(MindMapNode node) { String rootText = node.getPlainTextContent(); rootText = rootText.replaceAll("[&:/\\\\\0%$#~\\?\\*]+", ""); return rootText; } public static void waitForEventQueue() { try { // wait until AWT thread starts if (!EventQueue.isDispatchThread()) { EventQueue.invokeAndWait(new Runnable() { public void run() { }; }); } } catch (Exception e) { freemind.main.Resources.getInstance().logException(e); } } /** * Logs the stacktrace via a dummy exception. */ public static void printStackTrace() { freemind.main.Resources.getInstance().logException( new IllegalArgumentException("HERE")); } /** * Adapts the font size inside of a component to the zoom * @param c component * @param zoom zoom factor * @param normalFontSize "unzoomed" normal font size. * @return a copy of the input font (if the size was effectively changed) * with the correct scale. */ public static Font updateFontSize(Font font, float zoom, int normalFontSize) { if (font != null) { float oldFontSize = font.getSize2D(); float newFontSize = normalFontSize * zoom; if(oldFontSize != newFontSize) { font = font.deriveFont(newFontSize); } } return font; } public static String compareText(String pText1, String pText2) { if(pText1 == null || pText2 == null){ return "One of the Strings is null " + pText1 + ", " + pText2; } StringBuffer b = new StringBuffer(); if(pText1.length() > pText2.length()) { b.append("First string is longer :" + pText1.substring(pText2.length()) + "\n"); } if(pText1.length() < pText2.length()) { b.append("Second string is longer :" + pText2.substring(pText1.length()) + "\n"); } for (int i = 0; i < Math.min(pText1.length(), pText2.length()); i++) { if(pText1.charAt(i) != pText2.charAt(i)) { b.append("Difference at " + i + ": " + pText1.charAt(i) + "!=" + pText2.charAt(i) + "\n"); } } return b.toString(); } } freemind-0.9.0/freemind/freemind/main/FreeMindApplet.java0000644000000000000000000002760611527433212022032 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: FreeMindApplet.java,v 1.18.14.13.2.25 2009/04/19 19:44:01 christianfoltin Exp $*/ package freemind.main; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Cursor; import java.awt.EventQueue; import java.io.File; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.util.Enumeration; import java.util.Properties; import java.util.ResourceBundle; import javax.swing.JApplet; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; import freemind.controller.Controller; import freemind.controller.MenuBar; import freemind.view.mindmapview.MapView; public class FreeMindApplet extends JApplet implements FreeMindMain { public static final VersionInformation version = FreeMind.VERSION; // public static final String defaultPropsURL; public URL defaultPropsURL; public static Properties defaultProps; public static Properties userProps; private JScrollPane scrollPane = new MapView.ScrollPane(); private MenuBar menuBar; private JLabel status; Controller c;//the one and only controller private FreeMindCommon mFreeMindCommon; private JPanel southPanel; private JComponent mComponentInSplitPane; public FreeMindApplet() { mFreeMindCommon = new FreeMindCommon(this); Resources.createInstance(this); }//Constructor public boolean isApplet() { return true; } public File getPatternsFile() { return null; } public Controller getController() { return c; } public MapView getView() { return c.getView(); } public void setView(MapView view) { scrollPane.setViewportView(view); } public MenuBar getFreeMindMenuBar() { return menuBar; } public Container getViewport() { return scrollPane.getViewport(); } public VersionInformation getFreemindVersion() { return version; } // "dummy" implementation of the interface (PN) public int getWinHeight() { return getRootPane().getHeight(); } public int getWinWidth() { return getRootPane().getWidth(); } public int getWinState() { return 6; } public int getWinX() { return 0; } public int getWinY() { return 0; } /** * Returns the ResourceBundle with the current language */ public ResourceBundle getResources() { return mFreeMindCommon.getResources(); } public String getResourceString(String resource) { return mFreeMindCommon.getResourceString(resource); } public String getResourceString(String key, String resource) { return mFreeMindCommon.getResourceString(key, resource); } public String getProperty(String key) { return userProps.getProperty(key); } public int getIntProperty(String key, int defaultValue){ try{ return Integer.parseInt(getProperty(key)); } catch(NumberFormatException nfe){ return defaultValue; } } public Properties getProperties() { return userProps; } public void setProperty(String key, String value) { } public void setDefaultProperty(String key, String value) { userProps.setProperty(key, value); } public String getFreemindDirectory() {return null;}; static int iMaxNodeWidth = 0; static public int getMaxNodeWidth(){ if (iMaxNodeWidth == 0){ try{ iMaxNodeWidth = Integer.parseInt(userProps.getProperty("max_node_width")); } catch (NumberFormatException nfe) { iMaxNodeWidth = Integer.parseInt(userProps.getProperty("el__max_default_window_width")); } } return iMaxNodeWidth; } public void saveProperties() { } public void setTitle(String title) { } public void out (String msg) { status.setText(msg); } public void err (String msg) { status.setText("ERROR: "+msg); } public void openDocument(URL doc) throws Exception { getAppletContext().showDocument(doc,"_blank"); } public void start() { // Make sure the map is centered at the very beginning. try { if (getView() != null) { getView().moveToRoot(); } else { System.err.println("View is null."); }} catch (Exception e) { freemind.main.Resources.getInstance().logException(e); } } public void setWaitingCursor(boolean waiting) { if (waiting) { getRootPane().getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); getRootPane().getGlassPane().setVisible(true); } else { getRootPane().getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); getRootPane().getGlassPane().setVisible(false); }} public URL getResource(String name) { final URL resourceURL = this.getClass().getResource("/"+name); if(resourceURL == null || ! resourceURL.getProtocol().equals("jar") && System.getProperty("freemind.debug", null)== null) return null; return resourceURL; } public java.util.logging.Logger getLogger(String forClass) { /* Applet logging is anonymous due to security reasons. (Calling a named logger is answered with a security exception).*/ return java.util.logging.Logger.getAnonymousLogger(); } public void init() { JRootPane rootPane = createRootPane(); //load properties defaultPropsURL = getResource("freemind.properties"); try { //load properties defaultProps = new Properties(); InputStream in = defaultPropsURL.openStream(); defaultProps.load(in); in.close(); userProps = defaultProps; } catch (Exception ex) { System.err.println("Could not load properties."); } updateLookAndFeel(); //try to overload some properties with given command-line (html tag) Arguments Enumeration allKeys = userProps.propertyNames(); while (allKeys.hasMoreElements()) { String key = (String)allKeys.nextElement(); setPropertyByParameter(key); } //Layout everything getContentPane().setLayout( new BorderLayout() ); c = new Controller(this) ; c.optionAntialiasAction.changeAntialias(getProperty(FreeMindCommon.RESOURCE_ANTIALIAS)); //Create the MenuBar menuBar = new MenuBar(c); //new MenuBar(c); setJMenuBar(menuBar); c.setToolbarVisible(false); c.setMenubarVisible(false); //Create the scroll pane. getContentPane().add( scrollPane, BorderLayout.CENTER ); // taken from Lukasz Pekacki, NodeText version: southPanel = new JPanel(new BorderLayout()); status = new JLabel(); southPanel.add( status, BorderLayout.SOUTH ); getContentPane().add( southPanel, BorderLayout.SOUTH ); // end taken. SwingUtilities.updateComponentTreeUI(this); // Propagate LookAndFeel to JComponents // wait until AWT thread starts Tools.waitForEventQueue(); c.createNewMode(getProperty("initial_mode")); String initialMapName = getProperty("browsemode_initial_map"); if (initialMapName != null && initialMapName.startsWith(".")) { /* new handling for relative urls. fc, 29.10.2003. */ try { URL documentBaseUrl = new URL(getDocumentBase(), initialMapName); initialMapName = documentBaseUrl.toString(); } catch (java.net.MalformedURLException e) { getController().errorMessage( "Could not open relative URL " + initialMapName + ". It is malformed."); System.err.println(e); return; } /* end: new handling for relative urls. fc, 29.10.2003. */ } if (initialMapName != "") { try { // get URL: URL mapUrl = new URL(initialMapName); getController().getModeController().load(mapUrl); } catch (Exception e) { freemind.main.Resources.getInstance().logException(e); } } } private void setPropertyByParameter(String key) { String val = getParameter(key); // System.out.println("Got prop:"+key+":"+val); if (val != null && val != "") { userProps.setProperty(key,val); } } private void updateLookAndFeel() { //set Look&Feel String lookAndFeel = ""; try { setPropertyByParameter("lookandfeel"); lookAndFeel = userProps.getProperty("lookandfeel"); if (lookAndFeel.equals("windows")) { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } else if (lookAndFeel.equals("motif")) { UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); } else if (lookAndFeel.equals("mac")) { //Only available on macOS UIManager.setLookAndFeel("javax.swing.plaf.mac.MacLookAndFeel"); } else if (lookAndFeel.equals("metal")) { UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); } else if (lookAndFeel.equals("gtk")) { UIManager .setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); } else if (lookAndFeel.equals("nothing")) { } else if (lookAndFeel.indexOf('.') != -1) { // string contains a // dot UIManager.setLookAndFeel(lookAndFeel); // we assume class name } else { // default. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } } catch (Exception ex) { System.err.println("Error while setting Look&Feel"+lookAndFeel); } mFreeMindCommon.loadUIProperties(userProps); userProps.put(FreeMind.RESOURCE_DRAW_RECTANGLE_FOR_SELECTION, Tools.BooleanToXml(true)); } /* (non-Javadoc) * @see freemind.main.FreeMindMain#getSouthPanel() */ public JPanel getSouthPanel() { return southPanel; } /* (non-Javadoc) * @see freemind.main.FreeMindMain#getJFrame() */ public JFrame getJFrame() { throw new IllegalArgumentException("The applet has no frames"); } public ClassLoader getFreeMindClassLoader() { return mFreeMindCommon.getFreeMindClassLoader(); } public String getFreemindBaseDir(){ return mFreeMindCommon.getFreemindBaseDir(); } public String getAdjustableProperty( String label) { return mFreeMindCommon.getAdjustableProperty(label); } public JSplitPane insertComponentIntoSplitPane(JComponent pMindMapComponent) { if(mComponentInSplitPane == pMindMapComponent){ return null; } removeSplitPane() ; mComponentInSplitPane = pMindMapComponent; southPanel.add(pMindMapComponent, BorderLayout.CENTER); southPanel.revalidate(); return null; } public void removeSplitPane() { if(mComponentInSplitPane != null){ southPanel.remove(mComponentInSplitPane); southPanel.revalidate(); mComponentInSplitPane = null; } } } freemind-0.9.0/freemind/freemind/main/FreeMind.java0000644000000000000000000011520711527433212020657 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: FreeMind.java,v 1.32.14.28.2.147 2011/01/09 21:03:13 christianfoltin Exp $*/ package freemind.main; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintStream; import java.net.URL; import java.text.MessageFormat; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.ResourceBundle; import java.util.StringTokenizer; import java.util.Vector; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.InputMap; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import freemind.controller.Controller; import freemind.controller.MapModuleManager; import freemind.controller.MenuBar; import freemind.controller.MapModuleManager.MapModuleChangeObserver; import freemind.modes.MindMap; import freemind.modes.MindMapNode; import freemind.modes.Mode; import freemind.modes.ModeController; import freemind.preferences.FreemindPropertyListener; import freemind.view.MapModule; import freemind.view.mindmapview.MapView; import freemind.view.mindmapview.NodeView; public class FreeMind extends JFrame implements FreeMindMain { private static final String SPLIT_PANE_POSITION = "split_pane_position"; private static final String SPLIT_PANE_LAST_POSITION = "split_pane_last_position"; public static final String RESOURCE_LOOKANDFEEL = "lookandfeel"; public static final String RESOURCES_SELECTION_METHOD = "selection_method"; public static final String RESOURCES_NODE_STYLE = "standardnodestyle"; public static final String RESOURCES_ROOT_NODE_STYLE = "standardrootnodestyle"; public static final String RESOURCES_NODE_TEXT_COLOR = "standardnodetextcolor"; public static final String RESOURCES_SELECTED_NODE_COLOR = "standardselectednodecolor"; public static final String RESOURCES_SELECTED_NODE_RECTANGLE_COLOR = "standardselectednoderectanglecolor"; public static final String RESOURCE_DRAW_RECTANGLE_FOR_SELECTION = "standarddrawrectangleforselection"; public static final String RESOURCES_EDGE_COLOR = "standardedgecolor"; public static final String RESOURCES_EDGE_STYLE = "standardedgestyle"; public static final String RESOURCES_CLOUD_COLOR = "standardcloudcolor"; public static final String RESOURCES_LINK_COLOR = "standardlinkcolor"; public static final String RESOURCES_BACKGROUND_COLOR = "standardbackgroundcolor"; public static final String RESOURCE_PRINT_ON_WHITE_BACKGROUND = "printonwhitebackground"; public static final String RESOURCES_WHEEL_VELOCITY = "wheel_velocity"; public static final String RESOURCES_USE_TABBED_PANE = "use_tabbed_pane"; public static final String RESOURCES_USE_SPLIT_PANE = "use_split_pane"; public static final String RESOURCES_DELETE_NODES_WITHOUT_QUESTION = "delete_nodes_without_question"; private Logger logger = null; protected static final VersionInformation VERSION = new VersionInformation("0.9.0"); public static final String XML_VERSION = "0.9.0"; public static final String RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_LONG_NODES = "remind_use_rich_text_in_new_long_nodes"; public static final String RESOURCES_EXECUTE_SCRIPTS_WITHOUT_ASKING = "resources_execute_scripts_without_asking"; public static final String RESOURCES_EXECUTE_SCRIPTS_WITHOUT_FILE_RESTRICTION = "resources_execute_scripts_without_file_restriction"; public static final String RESOURCES_EXECUTE_SCRIPTS_WITHOUT_NETWORK_RESTRICTION = "resources_execute_scripts_without_network_restriction"; public static final String RESOURCES_EXECUTE_SCRIPTS_WITHOUT_EXEC_RESTRICTION = "resources_execute_scripts_without_exec_restriction"; public static final String RESOURCES_SCRIPT_USER_KEY_NAME_FOR_SIGNING = "resources_script_user_key_name_for_signing"; public static final String RESOURCES_CONVERT_TO_CURRENT_VERSION = "resources_convert_to_current_version"; public static final String RESOURCES_CUT_NODES_WITHOUT_QUESTION = "resources_cut_nodes_without_question"; public static final String RESOURCES_DON_T_SHOW_NOTE_ICONS = "resources_don_t_show_note_icons"; public static final String RESOURCES_REMOVE_NOTES_WITHOUT_QUESTION = "resources_remove_notes_without_question"; public static final String RESOURCES_SAVE_FOLDING_STATE = "resources_save_folding_state"; public static final String RESOURCES_SIGNED_SCRIPT_ARE_TRUSTED = "resources_signed_script_are_trusted"; public static final String RESOURCES_USE_DEFAULT_FONT_FOR_NOTES_TOO = "resources_use_default_font_for_notes_too"; public static final String RESOURCES_USE_MARGIN_TOP_ZERO_FOR_NOTES = "resources_use_margin_top_zero_for_notes"; // public static final String defaultPropsURL = "freemind.properties"; // public static Properties defaultProps; public static Properties props; private static Properties defProps; private MenuBar menuBar; private JLabel status; private Map filetypes; // Hopefully obsolete. Used to store applications // used to open different file types private File autoPropertiesFile; private File patternsFile; Controller controller;// the one and only controller private FreeMindCommon mFreeMindCommon; private static FileHandler mFileHandler; private JScrollPane mScrollPane = null; private JSplitPane mSplitPane; private JComponent mContentComponent = null; private JTabbedPane mTabbedPane = null; private boolean mTabbedPaneSelectionUpdate = true; private ImageIcon mWindowIcon; private Vector mTabbedPaneMapModules; public FreeMind(Properties pDefaultPreferences, Properties pUserPreferences, File pAutoPropertiesFile) { super("FreeMind"); // Focus searcher // FocusSearch search = new FocusSearch(); // search.start(); System.setSecurityManager(new FreeMindSecurityManager()); defProps = pDefaultPreferences; props = pUserPreferences; autoPropertiesFile = pAutoPropertiesFile; if (logger == null) { logger = getLogger(FreeMind.class.getName()); StringBuffer info = new StringBuffer(); info.append("freemind_version = "); info.append(VERSION); info.append("; freemind_xml_version = "); info.append(XML_VERSION); try { String propsLoc = "version.properties"; URL versionUrl = this.getClass().getClassLoader().getResource(propsLoc); Properties buildNumberPros = new Properties(); InputStream stream = versionUrl.openStream(); buildNumberPros.load(stream); info.append("\nBuild: " + buildNumberPros.getProperty("build.number")+"\n"); stream.close(); } catch(Exception e){ info.append("Problems reading build number file: " +e); } info.append("\njava_version = "); info.append(System.getProperty("java.version")); info.append("; os_name = "); info.append(System.getProperty("os.name")); info.append("; os_version = "); info.append(System.getProperty("os.version")); logger.info(info.toString()); } mFreeMindCommon = new FreeMindCommon(this); Resources.createInstance(this); } void init(FeedBack feedback) { /* This is only for apple but does not harm for the others. */ System.setProperty("apple.laf.useScreenMenuBar", "true"); patternsFile = new File (getFreemindDirectory(),getDefaultProperty("patternsfile")); feedback.increase("FreeMind.progress.updateLookAndFeel"); updateLookAndFeel(); feedback.increase("FreeMind.progress.createController"); setIconImage(mWindowIcon.getImage()); // Layout everything getContentPane().setLayout(new BorderLayout()); controller = new Controller(this); feedback.increase("FreeMind.progress.settingPreferences"); // add a listener for the controller, resource bundle: Controller.addPropertyChangeListener(new FreemindPropertyListener() { public void propertyChanged(String propertyName, String newValue, String oldValue) { if (propertyName.equals(FreeMindCommon.RESOURCE_LANGUAGE)) { // re-read resources: mFreeMindCommon.clearLanguageResources(); getResources(); } } }); // fc, disabled with purpose (see java look and feel styleguides). // http://java.sun.com/products/jlf/ed2/book/index.html // // add a listener for the controller, look and feel: // Controller.addPropertyChangeListener(new FreemindPropertyListener() { // // public void propertyChanged(String propertyName, String newValue, // String oldValue) { // if (propertyName.equals(RESOURCE_LOOKANDFEEL)) { // updateLookAndFeel(); // } // } // }); controller.optionAntialiasAction .changeAntialias(getProperty(FreeMindCommon.RESOURCE_ANTIALIAS)); feedback.increase("FreeMind.progress.propageteLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); // Propagate LookAndFeel to feedback.increase("FreeMind.progress.buildScreen"); setScreenBounds(); // JComponents feedback.increase("FreeMind.progress.createInitialMode"); controller.createNewMode(getProperty("initial_mode")); }// Constructor /** * */ private void updateLookAndFeel() { // set Look&Feel try { String lookAndFeel = props.getProperty(RESOURCE_LOOKANDFEEL); if (lookAndFeel.equals("windows")) { UIManager .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } else if (lookAndFeel.equals("motif")) { UIManager .setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); } else if (lookAndFeel.equals("mac")) { // Only available on macOS UIManager.setLookAndFeel("javax.swing.plaf.mac.MacLookAndFeel"); } else if (lookAndFeel.equals("metal")) { UIManager .setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); } else if (lookAndFeel.equals("gtk")) { UIManager .setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); } else if (lookAndFeel.equals("nothing")) { } else if (lookAndFeel.indexOf('.') != -1) { // string contains a // dot UIManager.setLookAndFeel(lookAndFeel); // we assume class name } else { // default. logger.info("Default (System) Look & Feel: " + UIManager.getSystemLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName()); } } catch (Exception ex) { System.err.println("Unable to set Look & Feel."); } mFreeMindCommon.loadUIProperties(defProps); } public boolean isApplet() { return false; } public File getPatternsFile() { return patternsFile; } public Container getViewport() { return mScrollPane.getViewport(); } public VersionInformation getFreemindVersion() { return VERSION; } // maintain this methods to keep the last state/size of the window (PN) public int getWinHeight() { return getHeight(); } public int getWinWidth() { return getWidth(); } public int getWinX() { return getX(); } public int getWinY() { return getY(); } public int getWinState() { return getExtendedState(); } public URL getResource(String name) { return this.getClass().getClassLoader().getResource(name); } public String getProperty(String key) { return props.getProperty(key); } public int getIntProperty(String key, int defaultValue) { try { return Integer.parseInt(getProperty(key)); } catch (NumberFormatException nfe) { return defaultValue; } } public Properties getProperties() { return props; } public void setProperty(String key, String value) { props.setProperty(key, value); } public String getDefaultProperty(String key) { return defProps.getProperty(key); } public void setDefaultProperty(String key, String value) { defProps.setProperty(key, value); } public String getFreemindDirectory() { return System.getProperty("user.home") + File.separator + getProperty("properties_folder"); } public void saveProperties() { try { OutputStream out = new FileOutputStream(autoPropertiesFile); final OutputStreamWriter outputStreamWriter = new OutputStreamWriter(out, "8859_1"); outputStreamWriter.write("#FreeMind "); outputStreamWriter.write(VERSION.toString()); outputStreamWriter.write('\n'); outputStreamWriter.flush(); // auto.store(out,null);//to save as few props as possible. props.store(out, null); out.close(); } catch (Exception ex) { } getController().getFilterController().saveConditions(); } public MapView getView() { return controller.getView(); } public Controller getController() { return controller; } public void setView(MapView view) { mScrollPane.setViewportView(view); } public MenuBar getFreeMindMenuBar() { return menuBar; } public void out(String msg) { // TODO: Automatically remove old messages after a certain time. if (status != null) { status.setText(msg); // logger.info(msg); } } public void err(String msg) { if (status != null) { status.setText(msg); } // logger.info(msg); } /** * Open url in WWW browser. This method hides some differences between * operating systems. */ public void openDocument(URL url) throws Exception { // build string for default browser: String correctedUrl = new String(url.toExternalForm()); if (url.getProtocol().equals("file")) { correctedUrl = correctedUrl.replace('\\', '/').replaceAll(" ", "%20"); // ^ This is more of a heuristic than a "logical" code // and due to a java bug: // http://forum.java.sun.com/thread.jsp?forum=31&thread=363990 } // Originally, this method determined external application, with which // the document // should be opened. Which application should open which document type // was // configured in FreeMind properties file. As a result, FreeMind tried // to solve the // problem (of determining application for a file type), which should // better be // solved somewhere else. Indeed, on Windows, this problem is perfectly // solved by // Explorer. On KDE, this problem is solved by Konqueror default // browser. In // general, most WWW browsers have to solve this problem. // As a result, the only thing we do here, is to open URL in WWW // browser. String osName = System.getProperty("os.name"); if (osName.substring(0, 3).equals("Win")) { String propertyString = new String( "default_browser_command_windows"); if (osName.indexOf("9") != -1 || osName.indexOf("Me") != -1) { propertyString += "_9x"; } else { propertyString += "_nt"; } String browser_command = new String(); String command = new String(); // Here we introduce " around the parameter of explorer // command. This is not because of possible spaces in this // parameter - it is because of "=" character, which causes // problems. My understanding of MSDOS is not so good, but at // least I can say, that "=" is used in general for the purpose // of variable assignment. // String[] call = { browser_command, "\""+url.toString()+"\"" }; try { // This is working fine on Windows 2000 and NT as well // Below is a piece of code showing how to run executables // directly // without asking. However, we don't want to do that. Explorer // will run // executable, but ask before it actually runs it. // // Imagine you download a package of maps containing also nasty // executable. Let's say there is a map "index.mm". This map // contains a // link to that nasty executable, but the name of the link // appearing to the // user does not indicate at all that clicking the link leads to // execution // of a programm. This executable is located on your local // computer, so // asking before executing remote executable does not solve the // problem. You click the link and there you are running evil // executable. // build string for default browser: // ask for property about browser: fc, 26.11.2003. Object[] messageArguments = { url.toString() }; MessageFormat formatter = new MessageFormat( getProperty(propertyString)); browser_command = formatter.format(messageArguments); if (url.getProtocol().equals("file")) { // command = "rundll32 url.dll,FileProtocolHandler "+ Tools.urlGetFile(url); // bug fix by Dan: command = "rundll32 url.dll,FileProtocolHandler "+ url.toString(); // see http://rsb.info.nih.gov/ij/developer/source/ij/plugin/BrowserLauncher.java.html if (System.getProperty("os.name").startsWith("Windows 2000")) command = "rundll32 shell32.dll,ShellExec_RunDLL " + url.toString(); } else if (url.toString().startsWith("mailto:")) { command = "rundll32 url.dll,FileProtocolHandler " + url.toString(); } else { command = browser_command; } // logger.info("Starting browser with "+command); Runtime.getRuntime().exec(command); } catch (IOException x) { controller .errorMessage("Could not invoke browser.\n\nFreemind excecuted the following statement on a command line:\n\"" + command + "\".\n\nYou may look at the user or default property called '" + propertyString + "'."); System.err.println("Caught: " + x); } } else if (osName.startsWith("Mac OS")) { // logger.info("Opening URL "+urlString); String browser_command = new String(); try { // ask for property about browser: fc, 26.11.2003. Object[] messageArguments = { correctedUrl, url.toString() }; MessageFormat formatter = new MessageFormat( getProperty("default_browser_command_mac")); browser_command = formatter.format(messageArguments); Runtime.getRuntime().exec(browser_command); } catch (IOException ex2) { controller .errorMessage("Could not invoke browser.\n\nFreemind excecuted the following statement on a command line:\n\"" + browser_command + "\".\n\nYou may look at the user or default property called 'default_browser_command_mac'."); System.err.println("Caught: " + ex2); } } else { // There is no '"' character around url.toString (compare to Windows // code // above). Putting '"' around does not work on Linux - instead, the // '"' // becomes part of URL, which is malformed, as a result. String browser_command = new String(); try { // ask for property about browser: fc, 26.11.2003. Object[] messageArguments = { correctedUrl, url.toString() }; MessageFormat formatter = new MessageFormat( getProperty("default_browser_command_other_os")); browser_command = formatter.format(messageArguments); Runtime.getRuntime().exec(browser_command); } catch (IOException ex2) { controller .errorMessage("Could not invoke browser.\n\nFreemind excecuted the following statement on a command line:\n\"" + browser_command + "\".\n\nYou may look at the user or default property called 'default_browser_command_other_os'."); System.err.println("Caught: " + ex2); } } } private String transpose(String input, char findChar, String replaceString) { String res = new String(); for (int i = 0; i < input.length(); ++i) { char d = input.charAt(i); if (d == findChar) res += replaceString; else res += d; } return res; } public void setWaitingCursor(boolean waiting) { if (waiting) { getRootPane().getGlassPane().setCursor( Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); getRootPane().getGlassPane().setVisible(true); } else { getRootPane().getGlassPane().setCursor( Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); getRootPane().getGlassPane().setVisible(false); } } private String getProgramForFile(String type) { if (filetypes == null) { filetypes = new HashMap(); String raw = getProperty("filetypes"); if (raw == null || raw.equals("")) { return ""; } StringTokenizer tokens = new StringTokenizer(raw, ","); while (tokens.hasMoreTokens()) { StringTokenizer pair = new StringTokenizer(tokens.nextToken(), ":"); String key = pair.nextToken().trim().toLowerCase(); String value = pair.nextToken().trim(); filetypes.put(key, value); } } return (String) filetypes.get(type.trim().toLowerCase()); } /** Returns the ResourceBundle with the current language */ public ResourceBundle getResources() { return mFreeMindCommon.getResources(); } public String getResourceString(String resource) { return mFreeMindCommon.getResourceString(resource); } public String getResourceString(String key, String resource) { return mFreeMindCommon.getResourceString(key, resource); } public Logger getLogger(String forClass) { Logger loggerForClass = java.util.logging.Logger.getLogger(forClass); if (mFileHandler == null) { // initialize handlers using an old System.err: final Logger parentLogger = loggerForClass.getParent(); final Handler[] handlers = parentLogger.getHandlers(); for(int i = 0; i < handlers.length; i++){ final Handler handler = handlers[i]; if(handler instanceof ConsoleHandler){ parentLogger.removeHandler(handler); } } try { mFileHandler = new FileHandler(getFreemindDirectory() + File.separator + "log", 1400000, 5, false); mFileHandler.setFormatter(new StdFormatter()); mFileHandler.setLevel(Level.INFO); parentLogger.addHandler(mFileHandler); final ConsoleHandler stdConsoleHandler = new ConsoleHandler(); stdConsoleHandler.setFormatter(new StdFormatter()); stdConsoleHandler.setLevel(Level.WARNING); parentLogger.addHandler(stdConsoleHandler); LoggingOutputStream los; Logger logger = Logger.getLogger(StdFormatter.STDOUT.getName()); los = new LoggingOutputStream(logger, StdFormatter.STDOUT); System.setOut(new PrintStream(los, true)); logger = Logger.getLogger(StdFormatter.STDERR.getName()); los= new LoggingOutputStream(logger, StdFormatter.STDERR); System.setErr(new PrintStream(los, true)); } catch (Exception e) { System.err.println("Error creating logging File Handler"); e.printStackTrace(); // to avoid infinite recursion. // freemind.main.Resources.getInstance().logExecption(e); } } return loggerForClass; } public static void main(final String[] args, Properties pDefaultPreferences, Properties pUserPreferences, File pAutoPropertiesFile) { final FreeMind frame = new FreeMind(pDefaultPreferences, pUserPreferences, pAutoPropertiesFile); IFreeMindSplash splash = null; final FeedBack feedBack; // change here, if you don't like the splash if (true) { splash = new FreeMindSplashModern(frame); splash.setVisible(true); feedBack = splash.getFeedBack(); frame.mWindowIcon = splash.getWindowIcon(); } else { feedBack = new FeedBack() { int value = 0; public int getActualValue() { return value; } public void increase(String messageId) { progress(getActualValue() + 1, messageId); } public void progress(int act, String messageId) { frame.logger.info("Beginnig task:" + messageId); } public void setMaximumValue(int max) { } }; frame.mWindowIcon = new ImageIcon(frame .getResource("images/FreeMindWindowIcon.png")); } feedBack.setMaximumValue(9); frame.init(feedBack); feedBack.increase("FreeMind.progress.startCreateController"); final ModeController ctrl = frame.createModeController(args); feedBack.increase("FreeMind.progress.loadMaps"); // This could be improved. frame.loadMaps(args, ctrl); Tools.waitForEventQueue(); feedBack.increase("FreeMind.progress.endStartup"); // focus fix after startup. frame.addWindowFocusListener(new WindowFocusListener() { public void windowLostFocus(WindowEvent e) { } public void windowGainedFocus(WindowEvent e) { NodeView selectedView = ctrl.getSelectedView(); if (selectedView!=null) { selectedView.requestFocus(); MindMapNode selected = ctrl.getSelected(); if (selected!=null) { ctrl.centerNode(selected); } } frame.removeWindowFocusListener(this); } }); frame.setVisible(true); if (splash != null) { splash.setVisible(false); } } private void setScreenBounds() { // Create the MenuBar menuBar = new MenuBar(controller); setJMenuBar(menuBar); // Create the scroll pane mScrollPane = new MapView.ScrollPane(); if (Resources.getInstance().getBoolProperty("no_scrollbar")) { mScrollPane .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); mScrollPane .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); } else { mScrollPane .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); mScrollPane .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); } status = new JLabel("!"); status.setPreferredSize(status.getPreferredSize()); status.setText(""); mContentComponent = mScrollPane; boolean shouldUseTabbedPane = Resources.getInstance().getBoolProperty(RESOURCES_USE_TABBED_PANE); if (shouldUseTabbedPane) { // tabbed panes eat control up. This is corrected here. InputMap map; map = (InputMap) UIManager.get("TabbedPane.ancestorInputMap"); KeyStroke keyStrokeCtrlUp = KeyStroke.getKeyStroke( KeyEvent.VK_UP, InputEvent.CTRL_DOWN_MASK); map.remove(keyStrokeCtrlUp); mTabbedPane = new JTabbedPane(); mTabbedPane.setFocusable(false); mTabbedPaneMapModules = new Vector(); mTabbedPane.addChangeListener(new ChangeListener() { public synchronized void stateChanged(ChangeEvent pE) { tabSelectionChanged(); } }); controller.getMapModuleManager().addListener( new MapModuleChangeObserver() { public void afterMapModuleChange( MapModule pOldMapModule, Mode pOldMode, MapModule pNewMapModule, Mode pNewMode) { int selectedIndex = mTabbedPane.getSelectedIndex(); if (pNewMapModule == null) { return; } // search, if already present: for (int i = 0; i < mTabbedPaneMapModules.size(); ++i) { if (mTabbedPaneMapModules.get(i) == pNewMapModule) { if (selectedIndex != i) { mTabbedPane.setSelectedIndex(i); } return; } } // create new tab: mTabbedPaneMapModules.add(pNewMapModule); mTabbedPane.addTab(pNewMapModule.toString(), new JPanel()); mTabbedPane.setSelectedIndex(mTabbedPane .getTabCount() - 1); } public void beforeMapModuleChange( MapModule pOldMapModule, Mode pOldMode, MapModule pNewMapModule, Mode pNewMode) { } public boolean isMapModuleChangeAllowed( MapModule pOldMapModule, Mode pOldMode, MapModule pNewMapModule, Mode pNewMode) { return true; } public void numberOfOpenMapInformation(int pNumber) { } public void afterMapClose(MapModule pOldMapModule, Mode pOldMode) { for (int i = 0; i < mTabbedPaneMapModules.size(); ++i) { if (mTabbedPaneMapModules.get(i) == pOldMapModule) { logger.fine("Remove tab:" + i + " with title:" + mTabbedPane.getTitleAt(i)); mTabbedPaneSelectionUpdate = false; mTabbedPane.removeTabAt(i); mTabbedPaneMapModules.remove(i); mTabbedPaneSelectionUpdate = true; tabSelectionChanged(); return; } } } }); controller.registerMapTitleChangeListener(new MapModuleManager.MapTitleChangeListener(){ public void setMapTitle(String pNewMapTitle, MapModule pMapModule, MindMap pModel) { for (int i = 0; i < mTabbedPaneMapModules.size(); ++i) { if (mTabbedPaneMapModules.get(i) == pMapModule) { mTabbedPane.setTitleAt(i, pNewMapTitle + ((pModel.isSaved())?"":"*")); } } } }); getContentPane().add(mTabbedPane, BorderLayout.CENTER); } else { // don't use tabbed panes. getContentPane().add(mContentComponent, BorderLayout.CENTER); } getContentPane().add(status, BorderLayout.SOUTH); // Disable the default close button, instead use windowListener setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { controller.quit .actionPerformed(new ActionEvent(this, 0, "quit")); } /* fc, 14.3.2008: Completely removed, as it * damaged the focus if for example the note * window was active. */ // public void windowActivated(WindowEvent e) { // // This doesn't work the first time, it's called too early to // // get Focus // logger.info("windowActivated"); // if ((getView() != null) && (getView().getSelected() != null)) { // getView().getSelected().requestFocus(); // } // } }); if (Tools.safeEquals(getProperty("toolbarVisible"), "false")) { controller.setToolbarVisible(false); } if (Tools.safeEquals(getProperty("leftToolbarVisible"), "false")) { controller.setLeftToolbarVisible(false); } // first define the final layout of the screen: setFocusTraversalKeysEnabled(false); pack(); // and now, determine size, position and state. // set the default size (PN) int win_width = getIntProperty("appwindow_width", 0); int win_height =getIntProperty("appwindow_height", 0); int win_x = getIntProperty("appwindow_x", 0); int win_y = getIntProperty("appwindow_y", 0); win_width = (win_width > 0) ? win_width : 640; win_height = (win_height > 0) ? win_height : 440; final Toolkit defaultToolkit = Toolkit.getDefaultToolkit(); final Insets screenInsets = defaultToolkit.getScreenInsets(getGraphicsConfiguration()); Dimension screenSize = defaultToolkit.getScreenSize(); final int screenWidth = screenSize.width-screenInsets.left-screenInsets.right; win_width = Math.min(win_width, screenWidth); final int screenHeight = screenSize.height-screenInsets.top-screenInsets.bottom; win_height = Math.min(win_height, screenHeight); win_x = Math.max(screenInsets.left, win_x); win_x = Math.min(screenWidth+screenInsets.left-win_width, win_x); win_y = Math.max(screenInsets.top, win_y); win_y = Math.min(screenWidth+screenInsets.top-win_height, win_y); setBounds(win_x, win_y, win_width, win_height); // set the default state (normal/maximized) (PN) // (note: this must be done later when partucular // initalizations of the windows are ready, // perhaps after setVisible is it enough... :-? int win_state = Integer.parseInt(FreeMind.props .getProperty("appwindow_state", "0")); win_state = ((win_state & ICONIFIED) != 0) ? NORMAL : win_state; setExtendedState(win_state); } private ModeController createModeController(final String[] args) { ModeController ctrl = controller .getModeController(); // try to load mac module: try { Class macClass = Class .forName("accessories.plugins.MacChanges"); // lazy programming. the mac class has exactly one // constructor // with a modeController. macClass.getConstructors()[0] .newInstance(new Object[] { this }); } catch (Exception e1) { // freemind.main.Resources.getInstance().logExecption(e1); } return ctrl; } private void loadMaps(final String[] args, ModeController pModeController) { boolean fileLoaded = false; for (int i = 0; i < args.length; i++) { // JOptionPane.showMessageDialog(null,i+":"+args[i]); String fileArgument = args[i]; if (fileArgument .toLowerCase() .endsWith( freemind.main.FreeMindCommon.FREEMIND_FILE_EXTENSION)) { if (!Tools.isAbsolutePath(fileArgument)) { fileArgument = System .getProperty("user.dir") + System .getProperty("file.separator") + fileArgument; } // fin = ; try { pModeController.load(new File(fileArgument)); fileLoaded = true; // logger.info("Attempting to load: " + // args[i]); } catch (Exception ex) { System.err.println("File " + fileArgument + " not found error"); // System.exit(1); } } } if (!fileLoaded) { String restoreable = getProperty(FreeMindCommon.ON_START_IF_NOT_SPECIFIED); if (Tools.isPreferenceTrue(getProperty(FreeMindCommon.LOAD_LAST_MAP)) && restoreable != null && restoreable.length() > 0) { try { controller.getLastOpenedList().open( restoreable); fileLoaded = true; } catch (Exception e) { freemind.main.Resources.getInstance() .logException(e); out("An error occured on opening the file: " + restoreable + "."); } } } if (!fileLoaded && Tools.isPreferenceTrue(getProperty(FreeMindCommon.LOAD_NEW_MAP))) { /* nothing loaded so far. Perhaps, we should display a new map... * According to * Summary: On first start FreeMind should show new map to newbies * https://sourceforge.net/tracker/?func=detail&atid=107118&aid=1752516&group_id=7118 */ pModeController.newMap(); } } /* * (non-Javadoc) * * @see freemind.main.FreeMindMain#getJFrame() */ public JFrame getJFrame() { return this; } public ClassLoader getFreeMindClassLoader() { return mFreeMindCommon.getFreeMindClassLoader(); } public String getFreemindBaseDir() { return mFreeMindCommon.getFreemindBaseDir(); } public String getAdjustableProperty(String label) { return mFreeMindCommon.getAdjustableProperty(label); } private void tabSelectionChanged() { if(!mTabbedPaneSelectionUpdate) return; int selectedIndex = mTabbedPane.getSelectedIndex(); // display nothing on the other tabs: for(int j = 0 ; j < mTabbedPane.getTabCount(); j++) { if(j != selectedIndex) mTabbedPane.setComponentAt(j, new JPanel()); } if (selectedIndex < 0) { // nothing selected. probably, the last map was closed return; } MapModule module = (MapModule) mTabbedPaneMapModules.get(selectedIndex); logger.fine("Selected index of tab is now: " + selectedIndex + " with title:"+module.toString()); if (module != controller.getMapModule()) { // we have to change the active map actively: controller.getMapModuleManager().changeToMapModule(module.toString()); } // mScrollPane could be set invisible by JTabbedPane mScrollPane.setVisible(true); mTabbedPane.setComponentAt(selectedIndex, mContentComponent); } public JSplitPane insertComponentIntoSplitPane(JComponent pMindMapComponent) { if(mSplitPane != null) { // already present: return mSplitPane; } removeContentComponent(); mSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, mScrollPane, pMindMapComponent); mSplitPane.setContinuousLayout(true); mSplitPane.setOneTouchExpandable(false); /* This means that the mind map area gets all the space that * results from resizing the window.*/ mSplitPane.setResizeWeight(1.0d); // split panes eat F8 and F6. This is corrected here. InputMap map = (InputMap) UIManager.get("SplitPane.ancestorInputMap"); KeyStroke keyStrokeF6 = KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0); KeyStroke keyStrokeF8 = KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0); map.remove(keyStrokeF6); map.remove(keyStrokeF8); mContentComponent = mSplitPane; setContentComponent(); // set divider position: int splitPanePosition = getIntProperty(SPLIT_PANE_POSITION, -1); int lastSplitPanePosition = getIntProperty( SPLIT_PANE_LAST_POSITION, -1); if (splitPanePosition != -1 && lastSplitPanePosition != -1) { mSplitPane.setDividerLocation(splitPanePosition); mSplitPane.setLastDividerLocation(lastSplitPanePosition); // try { // throw new IllegalArgumentException(""); // } catch (Exception e) { // freemind.main.Resources.getInstance().logException(e); // // TODO: handle exception // } } return mSplitPane; } public void removeSplitPane() { if (mSplitPane != null) { setProperty(SPLIT_PANE_POSITION, "" + mSplitPane.getDividerLocation()); setProperty(SPLIT_PANE_LAST_POSITION, "" + mSplitPane.getLastDividerLocation()); removeContentComponent(); mContentComponent = mScrollPane; setContentComponent(); mSplitPane = null; } } private void removeContentComponent(){ if(mTabbedPane != null) { if (mTabbedPane.getSelectedIndex()>= 0) { mTabbedPane.setComponentAt(mTabbedPane.getSelectedIndex(), new JPanel()); } } else { getContentPane().remove(mContentComponent); getRootPane().revalidate(); } } private void setContentComponent() { if(mTabbedPane != null) { if (mTabbedPane.getSelectedIndex()>= 0) { mTabbedPane.setComponentAt(mTabbedPane.getSelectedIndex(), mContentComponent); } } else { getContentPane().add(mContentComponent, BorderLayout.CENTER); getRootPane().revalidate(); } } class FocusSearch extends Thread { Component lastFocussedC = null; FocusListener listener = new FocusListener() { public void focusGained(FocusEvent pE) { Tools.printStackTrace(); } public void focusLost(FocusEvent pE) { // TODO Auto-generated method stub } }; public void run() { super.run(); while (true) { searchFocus(FreeMind.this); try { sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block freemind.main.Resources.getInstance().logException(e); } } } private void searchFocus(Component pComponent) { // pComponent.removeFocusListener(listener); // pComponent.addFocusListener(listener); if(pComponent.hasFocus() && pComponent != lastFocussedC) { logger.info("Fokus has " + pComponent); lastFocussedC = pComponent; } if (pComponent instanceof Container) { Container container = (Container) pComponent; for (int i = 0; i < container.getComponents().length; i++) { Component child = container.getComponents()[i]; searchFocus(child); } } } } } freemind-0.9.0/freemind/freemind/main/Resources.java0000644000000000000000000001107111527433212021132 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 12.07.2005 * Copyright (C) 2005-2008 Dimitri Polivaev, Christian Foltin */ package freemind.main; import java.net.URL; import java.text.MessageFormat; import java.util.HashMap; import java.util.Properties; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import freemind.common.NamedObject; import freemind.common.TextTranslator; import freemind.main.FreeMindMain.VersionInformation; /** * @author Dimitri Polivaev * 12.07.2005 */ public class Resources implements TextTranslator { private FreeMindMain main; static Resources resourcesInstance = null; private HashMap countryMap; private Logger logger = null; private Resources(FreeMindMain frame) { this.main = frame; if (logger == null) logger = main.getLogger(this.getClass().getName()); } static public void createInstance(FreeMindMain frame){ if (resourcesInstance == null) resourcesInstance = new Resources(frame); } public URL getResource(String resource) { return main.getResource(resource); } public String getResourceString(String resource) { return main.getResourceString(resource); } public String getResourceString(String key, String resource) { return main.getResourceString(key, resource); } static public Resources getInstance(){ return resourcesInstance; } public String getFreemindDirectory() { return main.getFreemindDirectory(); } public VersionInformation getFreemindVersion() { return main.getFreemindVersion(); } public int getIntProperty(String key, int defaultValue) { return main.getIntProperty(key, defaultValue); } /** * @param key Property key * @return the boolean value of the property resp. the default. */ public boolean getBoolProperty(String key) { String boolProperty = getProperty(key); return Tools.safeEquals("true", boolProperty); } public Properties getProperties() { return main.getProperties(); } public String getProperty(String key) { return main.getProperty(key); } public ResourceBundle getResources() { return main.getResources(); } public HashMap getCountryMap() { if(countryMap == null){ String[] countryMapArray = new String[]{ "de", "DE", "en", "UK", "en", "US", "es", "ES", "es", "MX", "fi", "FI", "fr", "FR", "hu", "HU", "it", "CH", "it", "IT", "nl", "NL", "no", "NO", "pt", "PT", "ru", "RU", "sl", "SI", "uk", "UA", "zh", "CN" }; countryMap = new HashMap(); for (int i = 0; i < countryMapArray.length; i = i + 2) { countryMap.put(countryMapArray[i],countryMapArray[i+1]); } } return countryMap; } /* To obtain a logging element, ask here. */ public java.util.logging.Logger getLogger(String forClass){ return main.getLogger(forClass); } public void logException(Throwable e) { logException(e, ""); } public void logException(Throwable e, String comment) { logger.log(Level.SEVERE, "An exception occured: "+ comment, e); } public String format(String resourceKey, Object[] messageArguments) { MessageFormat formatter = new MessageFormat(getResourceString(resourceKey)); String stringResult = formatter.format(messageArguments); return stringResult; } public NamedObject createTranslatedString(String key){ String fs = getResourceString(key); return new NamedObject(key, fs); } public String getText(String pKey) { return getResourceString(pKey); } } freemind-0.9.0/freemind/freemind/main/HtmlTools.java0000644000000000000000000005516011527433212021114 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2006 Christian Foltin *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: HtmlTools.java,v 1.1.2.28 2010/12/04 21:07:23 christianfoltin Exp $*/ package freemind.main; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.text.BadLocationException; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; /** */ public class HtmlTools { public static final String NBSP = "\u00A0"; private static Logger logger; private static HtmlTools sInstance = new HtmlTools(); private static final Pattern HTML_PATTERN = Pattern.compile("(?s)^\\s*<\\s*html.*?>.*"); private static final Pattern FIND_TAGS_PATTERN = Pattern.compile("([^<]*)(<[^>]+>)"); private static final Pattern SLASHED_TAGS_PATTERN = Pattern.compile("<(("+ "br|area|base|basefont|"+ "bgsound|button|col|colgroup|embed|hr"+ "|img|input|isindex|keygen|link|meta"+ "|object|plaintext|spacer|wbr"+ ")(\\s[^>]*)?)/>"); private static final Pattern TAGS_PATTERN = Pattern.compile("(?s)<[^><]*>"); public static final String SP = " "; /** * */ private HtmlTools() { super(); logger = Resources.getInstance().getLogger(HtmlTools.class.getName()); } public static HtmlTools getInstance() { return sInstance; } public String toXhtml(String htmlText) { if(! isHtmlNode(htmlText)){ return null; } logger.fine("Enter toXhtml with " + htmlText); StringReader reader = new StringReader(htmlText); StringWriter writer = new StringWriter(); try { XHTMLWriter.html2xhtml(reader, writer); String resultXml = writer.toString(); // for safety: if(!isWellformedXml(resultXml)) { return toXMLEscapedText(htmlText); } logger.fine("Leave toXhtml with " + resultXml); return resultXml; } catch (IOException e) { freemind.main.Resources.getInstance().logException(e); } catch (BadLocationException e) { freemind.main.Resources.getInstance().logException(e); } // fallback: htmlText = htmlText.replaceAll("<", ">"); htmlText = htmlText.replaceAll(">", "<"); logger.fine("Leave toXhtml with fallback " + htmlText); return htmlText; } public String toHtml(String xhtmlText) { // Remove '/' from <.../> of elements that do not have '/' there in HTML return SLASHED_TAGS_PATTERN.matcher(xhtmlText).replaceAll("<$1>"); } public static class IndexPair { public int originalStart; public int originalEnd; public int replacedStart; public int replacedEnd; public boolean mIsTag; public boolean mIsAlreadyAppended = false; /** * @param pIsTag TODO */ public IndexPair(int pOriginalStart, int pOriginalEnd, int pReplacedStart, int pReplacedEnd, boolean pIsTag) { super(); originalStart = pOriginalStart; originalEnd = pOriginalEnd; replacedStart = pReplacedStart; replacedEnd = pReplacedEnd; mIsTag = pIsTag; } /** * generated by CodeSugar http://sourceforge.net/projects/codesugar */ public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("[IndexPair:"); buffer.append(" originalStart: "); buffer.append(originalStart); buffer.append(" originalEnd: "); buffer.append(originalEnd); buffer.append(" replacedStart: "); buffer.append(replacedStart); buffer.append(" replacedEnd: "); buffer.append(replacedEnd); buffer.append(" is a tag: "); buffer.append(mIsTag); buffer.append("]"); return buffer.toString(); } } /** Replaces text in node content without replacing tags. * fc, 19.12.06: This method is very difficult. If you have a simplier * method, please supply it. But look that it complies with FindTextTests!!! */ public String getReplaceResult(Pattern pattern, String replacement, String text) { ArrayList splittedStringList = new ArrayList(); String stringWithoutTags = null; // remove tags and denote their positions: { StringBuffer sb = new StringBuffer(); Matcher matcher = FIND_TAGS_PATTERN.matcher(text); int lastMatchEnd = 0; while (matcher.find()) { String textWithoutTag = matcher.group(1); // Append text without tags: int replStart = sb.length(); matcher.appendReplacement(sb, "$1"); IndexPair indexPair; if (textWithoutTag.length()>0) { indexPair = new IndexPair(lastMatchEnd, matcher.end(1), replStart, sb.length(), false); lastMatchEnd = matcher.end(1); // System.out.println(sb.toString() // + ", " // + input.substring(indexPair.originalStart, // indexPair.originalEnd) + ", " + indexPair); splittedStringList.add(indexPair); } // String tag = matcher.group(2); replStart = sb.length(); indexPair = new IndexPair(lastMatchEnd, matcher.end(2), replStart, sb.length(), true); lastMatchEnd = matcher.end(2); // System.out.println(sb.toString() + ", " + input.substring(indexPair.originalStart, indexPair.originalEnd)+ ", " + indexPair); splittedStringList.add(indexPair); } int replStart = sb.length(); matcher.appendTail(sb); // append tail only if there is a tail if (sb.length() != replStart) { IndexPair indexPair = new IndexPair(lastMatchEnd, text .length(), replStart, sb.length(), false); // System.out.println(sb.toString() + ", " + indexPair); splittedStringList.add(indexPair); } // System.out.println(sb.toString()); stringWithoutTags = sb.toString(); } // // give it out: // for (Iterator iter = splittedStringList.iterator(); iter.hasNext();) { // IndexPair pair = (IndexPair) iter.next(); // System.out.println(text.substring(pair.originalStart, pair.originalEnd) + ", " + pair); // } /** For each pair which is not a tag we find concurrences and replace * them, if pair is a tag then we just append */ StringBuffer sbResult = new StringBuffer(); for (Iterator iter = splittedStringList.iterator(); iter.hasNext();) { IndexPair pair = (IndexPair) iter.next(); if (pair.mIsTag) append(sbResult, text, pair.originalStart, pair.originalEnd); else { Matcher matcher = pattern.matcher(text.substring(pair.originalStart, pair.originalEnd)); int mStart = 0; int mEnd = 0; int mEndOld = 0; int mStartOld = 0; while (matcher.find()) { mStart = matcher.start(); mEnd = matcher.end(); append(sbResult, text, pair.originalStart + mEndOld, pair.originalStart + mStart); /** If it's a first iteration then we append text between start and first * concurrence, and when it's not first iteration (mEndOld != 0) we append * text between two concurrences */ // sbResult.append(text, pair.originalStart + mStart, pair.originalStart + mEnd); // original text sbResult.append(replacement); mEndOld = mEnd; mStartOld = mStart; } append(sbResult, text, pair.originalStart + mEndOld, pair.originalEnd); // append tail } } // System.out.println("Result:'"+sbResult.toString()+"'"); return sbResult.toString(); } /** * Need to program this, as the stringbuffer method * appears in java 1.5 first. * */ private void append(StringBuffer pSbResult, String pText, int pStart, int pEnd) { pSbResult.append(pText.substring(pStart, pEnd)); } public int getMinimalOriginalPosition(int pI, ArrayList pListOfIndices) { for (Iterator iter = pListOfIndices.iterator(); iter.hasNext();) { IndexPair pair = (IndexPair) iter.next(); if(pI >= pair.replacedStart && pI <= pair.replacedEnd) { return pair.originalStart + pI - pair.replacedStart; } } throw new IllegalArgumentException("Position "+pI+" not found."); } /** * @return the maximal index i such that pI is mapped to i by removing all * tags from the original input. */ public int getMaximalOriginalPosition(int pI, ArrayList pListOfIndices) { for(int i = pListOfIndices.size() -1 ; i >= 0; --i) { IndexPair pair = (IndexPair) pListOfIndices.get(i); if(pI >= pair.replacedStart) { if (!pair.mIsTag) { return pair.originalStart + pI - pair.replacedStart; } else { return pair.originalEnd; } } } throw new IllegalArgumentException("Position "+pI+" not found."); } /** */ public static boolean isHtmlNode(String text) { for(int i = 0; i < text.length(); i++){ final char ch = text.charAt(i); if(ch == '<'){ break; } if(! Character.isWhitespace(ch) || i == text.length()){ return false; } } return HTML_PATTERN.matcher(text.toLowerCase(Locale.ENGLISH)).matches(); } public static String unicodeToHTMLUnicodeEntity(String text) { /* * Heuristic reserve for expansion : factor 1.2 */ StringBuffer result = new StringBuffer((int) (text.length() * 1.2)); int intValue; char myChar; for (int i = 0; i < text.length(); ++i) { myChar = text.charAt(i); intValue = (int) text.charAt(i); if (intValue < 32 || intValue > 126) { result.append("&#x").append(Integer.toString(intValue, 16)) .append(';'); } else { result.append(myChar); } } return result.toString(); } /** * Converts XML unicode entity-encoded characters into plain Java unicode * characters; for example, ''&#xff;'' gets converted. Removes all * XML-invalid entity characters, such as &#xb;. * * @param text * input * @return the converted output. */ public static String unescapeHTMLUnicodeEntity(String text) { StringBuffer result = new StringBuffer(text.length()); StringBuffer entity = new StringBuffer(); boolean readingEntity = false; char myChar; char entityChar; for (int i = 0; i < text.length(); ++i) { myChar = text.charAt(i); if (readingEntity) { if (myChar == ';') { if (entity.charAt(0) == '#') { try { if (entity.charAt(1) == 'x') { // Hexadecimal entityChar = (char) Integer.parseInt( entity.substring(2), 16); } else { // Decimal entityChar = (char) Integer.parseInt( entity.substring(1), 10); } if (isXMLValidCharacter(entityChar)) result.append(entityChar); } catch (NumberFormatException e) { result.append('&').append(entity).append(';'); } } else { result.append('&').append(entity).append(';'); } entity.setLength(0); readingEntity = false; } else { if (isXMLValidCharacter(myChar)) entity.append(myChar); } } else { if (myChar == '&') { readingEntity = true; } else { if (isXMLValidCharacter(myChar)) result.append(myChar); } } } if (entity.length() > 0) { result.append('&').append(entity).append(';'); } return result.toString(); } /** Removes all tags (<..>) from a string if it starts with "..." to make it compareable. */ public static String removeHtmlTagsFromString(String text) { if (HtmlTools.isHtmlNode(text)) { return removeAllTagsFromString(text); // (?s) enables that . matches newline. } else { return text; } } public static String removeAllTagsFromString(String text) { return TAGS_PATTERN.matcher(text).replaceAll(""); } public static String htmlToPlain(String text) { return htmlToPlain(text, /*strictHTMLOnly=*/true); } public static String htmlToPlain(String text, boolean strictHTMLOnly) { // 0. remove all newlines // 1. replace newlines, paragraphs, and table rows // 2. remove XML tags // 3. replace HTML entities including   // 4. unescape unicode entities // This is a very basic conversion, fixing the most annoying // inconvenience. You can imagine much better conversion of // HTML to plain text. Most of HTML tags can be handled // sensibly, like web browsers do it. if (strictHTMLOnly && !isHtmlNode(text)) { return text; } //System.err.println("base:"+text); String intermediate = text. replaceAll("(?ims)[\n\t]",""). // Remove newlines replaceAll("(?ims) +"," "). // Condense spaces replaceAll("(?ims)","\n"). replaceAll("(?ims)","\n\n"). // Paragraph replaceAll("(?ims)","\n"). // Div - block replaceAll("(?ims)","\n"). replaceAll("(?ims)","\n"). // Defined term replaceAll("(?ims)","\n "). // Definition of defined term replaceAll("(?ims)"," "). replaceAll("(?ims)<[uo]l.*?>","\n"). // Beginning of a list replaceAll("(?ims)","\n * "). replaceAll("(?ims) *]*>",""). // Remaining closing HTML tags replaceAll("(?ims)<[^/][^>]*> *",""). // Remaining opening HTML tags // FIXME Dimitry: is removing of all new lines at the begin a good idea? replaceAll("^\n+", ""). // fc: to remove start and end spaces. trim(); intermediate = HtmlTools.unescapeHTMLUnicodeEntity(intermediate); // Entities, with the exception of &. intermediate = intermediate. replaceAll("(?ims)<", "<").replaceAll("(?ims)>", ">"). replaceAll("(?ims)"", "\""). replaceAll("(?ims) ", " "); //System.err.println("intermediate:"+intermediate); return intermediate.replaceAll("(?ims)&", "&"); } public static String plainToHTML(String text) { char myChar; String textTabsExpanded = text.replaceAll("\t"," "); // Use eight spaces as tab width. StringBuffer result = new StringBuffer(textTabsExpanded.length()); // Heuristic int lengthMinus1 = textTabsExpanded.length() - 1; result.append("

"); for (int i = 0; i < textTabsExpanded.length(); ++i) { myChar = textTabsExpanded.charAt(i); switch (myChar) { case '&': result.append("&"); break; case '<': result.append("<"); break; case '>': result.append(">"); break; case ' ': if ( i > 0 && i < lengthMinus1 && (int)textTabsExpanded.charAt(i-1) > 32 && (int)textTabsExpanded.charAt(i+1) > 32 ) { result.append(' '); } else { result.append(" "); } break; case '\n': result.append("
"); break; default: result.append(myChar); }} return result.toString(); } public static String toXMLUnescapedText(String text) { return text.replaceAll("<", "<").replaceAll(">", ">").replaceAll( """, "\"").replaceAll("&", "&"); } public static String toXMLEscapedTextExpandingWhitespace(String text) { // Spaces and tabs are handled text = text.replaceAll("\t"," "); // Use eight spaces as tab width. int len = text.length(); StringBuffer result = new StringBuffer(len); char myChar; for (int i = 0; i < len; ++i) { myChar = text.charAt(i); switch (myChar) { case '&': result.append("&"); break; case '<': result.append("<"); break; case '>': result.append(">"); break; case ' ': if ( i > 0 && i < len-1 && (int)text.charAt(i-1) > 32 && (int)text.charAt(i+1) > 32 ) { result.append(' '); } else { result.append(" "); } break; default: result.append(myChar); } } return result.toString(); } public static String toXMLEscapedText(String text) { return text.replaceAll("&", "&").replaceAll("<", "<") .replaceAll(">", ">").replaceAll("\"", """); } /** * @return true, if well formed XML. */ public boolean isWellformedXml(String xml) { try { // Create a builder factory SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(false); // Create the builder and parse the file factory.newSAXParser().parse(new InputSource(new StringReader(xml)), new DefaultHandler()); return true; } catch (SAXParseException e) { logger.log(Level.SEVERE, "XmlParseError on line " + e.getLineNumber() + " of " + xml, e); } catch (Exception e) { logger.log(Level.SEVERE, "XmlParseError", e); } return false; } public static String replaceIllegalXmlCharacters(String fileContents) { // replace &xa; by newline. fileContents = fileContents.replaceAll("�*[Aa];", "\n"); /* is illegal, but sometimes occurs in 0.8.x maps. * Thus, we exclude all from 0 - 1f and replace them by nothing. * TODO: Which more are illegal?? */ fileContents = fileContents.replaceAll("�*1?[0-9A-Fa-f];", ""); // decimal: 0-31 fileContents = fileContents.replaceAll("�*[1-2]?[0-9];", ""); fileContents = fileContents.replaceAll("�*3[0-1];", ""); return fileContents; } /** * Determines whether the character is valid in XML. Invalid characters * include most of the range x00-x1F, and more. * @see http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char. */ public static boolean isXMLValidCharacter(char character) { // Order the tests in such a sequence that the most probable // conditions are tested first. return character >= 0x20 && character <= 0xD7FF || character == 0x9 || character == 0xA || character == 0xD || character >= 0xE000 && character <= 0xFFFD || character >= 0x10000 && character <= 0x10FFFF; } public static String removeInvalidXmlCharacters(String text) { // Precondition: The input text contains XML unicode entities rather // than Java unicode text. // The algorithm: // Search the string for XML entities. For each XML entity inspect // whether it is valid. If valid, append it. To be on the safe side, // also inspect for no-entity unicode whether it is XML-valid, and // pass on only XML-valid characters. // This method uses the method isXMLValidCharacter, which makes use // of http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char. StringBuffer result = new StringBuffer(text.length()); StringBuffer entity = new StringBuffer(); boolean readingEntity = false; char myChar; char entityChar; for (int i = 0; i < text.length(); ++i) { myChar = text.charAt(i); if (readingEntity) { if (myChar == ';') { if (entity.charAt(0) == '#') { try { if (entity.charAt(1) == 'x') { // Hexadecimal entityChar = (char) Integer.parseInt( entity.substring(2), 16); } else { // Decimal entityChar = (char) Integer.parseInt( entity.substring(1), 10); } if (isXMLValidCharacter(entityChar)) result.append('&').append(entity).append(';'); } catch (NumberFormatException e) { result.append('&').append(entity).append(';'); } } else { result.append('&').append(entity).append(';'); } entity.setLength(0); readingEntity = false; } else { entity.append(myChar); } } else { if (myChar == '&') { readingEntity = true; } else { // The following test is superfluous under the assumption // that the string only contains unicode in XML entities. // Removing this test could significantly speed up this // method; maybe. if (isXMLValidCharacter(myChar)) result.append(myChar); } } } if (entity.length() > 0) { result.append('&').append(entity).append(';'); } return result.toString(); } public static String extractHtmlBody(String output) { if(output.startsWith("') + 1; } else{ start = output.indexOf('>', start+5) + 1; } int end = output.indexOf(""); if(end == -1){ end = output.indexOf(""); } if(end == -1){ end = output.length(); } output = output.substring(start, end); return output; } public static String replaceSpacesToNonbreakableSpaces(String input) { StringBuffer result = new StringBuffer(input.length()); boolean readingSpaces = false; char myChar; for (int i = 0; i < input.length(); ++i) { myChar = input.charAt(i); if(myChar==' ') { if(readingSpaces){ result.append(NBSP); } else { result.append(myChar); readingSpaces = true; } } else { readingSpaces = false; result.append(myChar); } } return result.toString(); } } freemind-0.9.0/freemind/freemind/main/LoggingOutputStream.java0000644000000000000000000000256411527433212023152 0ustar rootrootpackage freemind.main; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * An OutputStream that writes contents to a Logger upon each call to flush() * * See http://blogs.sun.com/nickstephen/entry/java_redirecting_system_out_and */ class LoggingOutputStream extends ByteArrayOutputStream { private String lineSeparator; private Logger logger; private Level level; /** * Constructor * @param logger Logger to write to * @param level Level at which to write the log message */ public LoggingOutputStream(Logger logger, Level level) { super(); this.logger = logger; this.level = level; lineSeparator = System.getProperty("line.separator"); } /** * upon flush() write the existing contents of the OutputStream to the logger as * a log record. * @throws java.io.IOException in case of error */ public void flush() throws IOException { String record; synchronized(this) { super.flush(); record = this.toString(); super.reset(); } if (record.length() == 0 || record.equals(lineSeparator)) { // avoid empty records return; } logger.logp(level, "", "", record); } }freemind-0.9.0/freemind/freemind/main/FreeMindSecurityManager.java0000644000000000000000000001500711527433212023677 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2008 Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 06.03.2008 */ /*$Id: FreeMindSecurityManager.java,v 1.1.2.1 2008/03/14 21:15:22 christianfoltin Exp $*/ package freemind.main; import java.io.FileDescriptor; import java.net.InetAddress; import java.security.Permission; /** * By default, everything is allowed. * But you can install a different security controller once, * until you install it again. Thus, the code executed in * between is securely controlled by that different security manager. * Moreover, only by double registering the manager is removed. So, no * malicious code can remove the active security manager. * * @author foltin * */ public final class FreeMindSecurityManager extends SecurityManager { private SecurityManager mFinalSecurityManager=null; public FreeMindSecurityManager() { } /** * @param pFinalSecurityManager set twice the same to remove it. * */ public void setFinalSecurityManager(SecurityManager pFinalSecurityManager) { if(pFinalSecurityManager == mFinalSecurityManager) { mFinalSecurityManager = null; return; } if(mFinalSecurityManager != null) { throw new SecurityException("There is a SecurityManager installed already."); } mFinalSecurityManager = pFinalSecurityManager; } public void checkAccept(String pHost, int pPort) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkAccept(pHost, pPort); } public void checkAccess(Thread pT) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkAccess(pT); } public void checkAccess(ThreadGroup pG) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkAccess(pG); } public void checkAwtEventQueueAccess() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkAwtEventQueueAccess(); } public void checkConnect(String pHost, int pPort, Object pContext) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkConnect(pHost, pPort, pContext); } public void checkConnect(String pHost, int pPort) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkConnect(pHost, pPort); } public void checkCreateClassLoader() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkCreateClassLoader(); } public void checkDelete(String pFile) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkDelete(pFile); } public void checkExec(String pCmd) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkExec(pCmd); } public void checkExit(int pStatus) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkExit(pStatus); } public void checkLink(String pLib) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkLink(pLib); } public void checkListen(int pPort) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkListen(pPort); } public void checkMemberAccess(Class arg0, int arg1) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkMemberAccess(arg0, arg1); } public void checkMulticast(InetAddress pMaddr, byte pTtl) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkMulticast(pMaddr, pTtl); } public void checkMulticast(InetAddress pMaddr) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkMulticast(pMaddr); } public void checkPackageAccess(String pPkg) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPackageAccess(pPkg); } public void checkPackageDefinition(String pPkg) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPackageDefinition(pPkg); } public void checkPermission(Permission pPerm, Object pContext) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPermission(pPerm, pContext); } public void checkPermission(Permission pPerm) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPermission(pPerm); } public void checkPrintJobAccess() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPrintJobAccess(); } public void checkPropertiesAccess() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPropertiesAccess(); } public void checkPropertyAccess(String pKey) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkPropertyAccess(pKey); } public void checkRead(FileDescriptor pFd) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkRead(pFd); } public void checkRead(String pFile, Object pContext) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkRead(pFile, pContext); } public void checkRead(String pFile) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkRead(pFile); } public void checkSecurityAccess(String pTarget) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkSecurityAccess(pTarget); } public void checkSetFactory() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkSetFactory(); } public void checkSystemClipboardAccess() { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkSystemClipboardAccess(); } public boolean checkTopLevelWindow(Object pWindow) { if(mFinalSecurityManager == null) return true; return mFinalSecurityManager.checkTopLevelWindow(pWindow); } public void checkWrite(FileDescriptor pFd) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkWrite(pFd); } public void checkWrite(String pFile) { if(mFinalSecurityManager == null) return; mFinalSecurityManager.checkWrite(pFile); } public Object getSecurityContext() { if(mFinalSecurityManager == null) return super.getSecurityContext(); return mFinalSecurityManager.getSecurityContext(); } } freemind-0.9.0/freemind/freemind/main/FreeMindCommon.java0000644000000000000000000003377111527433212022035 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 10.01.2006 */ /*$Id: FreeMindCommon.java,v 1.1.2.2.2.39 2009/05/18 19:47:57 christianfoltin Exp $*/ package freemind.main; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.net.URLDecoder; import java.util.Enumeration; import java.util.Locale; import java.util.Properties; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import java.util.logging.Logger; /** * @author foltin * */ public class FreeMindCommon { public static final String FREEMIND_FILE_EXTENSION_WITHOUT_DOT = "mm"; public static final String FREEMIND_FILE_EXTENSION = "."+FREEMIND_FILE_EXTENSION_WITHOUT_DOT; public static final String POSTFIX_TRANSLATE_ME = "[translate me]"; private class FreemindResourceBundle extends ResourceBundle{ private PropertyResourceBundle languageResources; private PropertyResourceBundle defaultResources; FreemindResourceBundle(){ try { String lang = getProperty(RESOURCE_LANGUAGE); if (lang == null || lang.equals("automatic")) { lang = Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry(); if (getLanguageResources(lang) == null) { lang = Locale.getDefault().getLanguage(); if (getLanguageResources(lang) == null) { // default is english. lang = DEFAULT_LANGUAGE; } } } if("no".equals(lang)){ //Bugs item #1935818 lang="nb"; } languageResources = getLanguageResources(lang); /* fc, 26.4.2008. the following line is a bug, as the defaultResources are used, * even, when a single string is missing inside a bundle and not only, * when the complete bundle is missing. */ // if(languageResources == null) defaultResources = getLanguageResources(DEFAULT_LANGUAGE); } catch (Exception ex) { freemind.main.Resources.getInstance().logException( ex); logger.severe("Error loading Resources"); } // printResourceTable(); } // /** This is useful, if you want to see all resource strings in a HTML table. // * Just rename the log file to log.0.html, open in a browser and set the // * coding to UTF-8 */ // private void printResourceTable() { // StringBuffer b = new StringBuffer(""); // Set keySet = languageResources.keySet(); // Vector keys = new Vector(keySet); // Collections.sort(keys); // for (Iterator iterator = keys.iterator(); iterator.hasNext();) { // String key = (String) iterator.next(); // b.append("\n"); // } // b.append("
" + key + "" + languageResources.getString(key)+"
"); // logger.info(b.toString()); // } /** * @throws IOException */ private PropertyResourceBundle getLanguageResources(String lang) throws IOException { URL systemResource = mFreeMindMain.getResource("Resources_" + lang + ".properties"); if (systemResource == null) { return null; } InputStream in = systemResource.openStream(); if (in == null) { return null; } PropertyResourceBundle bundle = new PropertyResourceBundle(in); in.close(); return bundle; } protected Object handleGetObject(String key) { try { return languageResources.getString(key); } catch (Exception ex) { logger.severe("Warning - resource string not found:" + key); return defaultResources.getString(key) + POSTFIX_TRANSLATE_ME; } } public Enumeration getKeys() { return defaultResources.getKeys(); } String getResourceString(String key) { try { return getString(key); } catch (Exception ex) { return key; } } String getResourceString(String key, String resource) { try { try { return languageResources.getString(key); } catch (Exception ex) { return defaultResources.getString(key) + POSTFIX_TRANSLATE_ME; } } catch (Exception e) { // logger.info(key+" not found."); return resource; } } } public static final String RESOURCE_LANGUAGE = "language"; public static final String RESOURCE_ANTIALIAS = "antialias"; public static final String DEFAULT_LANGUAGE = "en"; public static final String LOCAL_PROPERTIES = "LocalProperties."; private final FreeMindMain mFreeMindMain; private String baseDir; private FreemindResourceBundle resources; /** * Holds the last opened map. */ public static final String ON_START_IF_NOT_SPECIFIED = "onStartIfNotSpecified"; public static final String LOAD_LAST_MAP = "loadLastMap"; public static final String SAVE_ONLY_INTRISICALLY_NEEDED_IDS = "save_only_intrisically_needed_ids"; public static final String LOAD_NEW_MAP = "load_new_map_when_no_other_is_specified"; private static Logger logger = null; /** * */ public FreeMindCommon(FreeMindMain main) { super(); // TODO Auto-generated constructor stub this.mFreeMindMain = main; if (logger == null) logger = main.getLogger(this.getClass().getName()); } public String getProperty(String key) { return mFreeMindMain.getProperty(key); } private void setDefaultProperty(String key, String value){ mFreeMindMain.setDefaultProperty(key, value); } /** Returns the ResourceBundle with the current language */ public ResourceBundle getResources() { if (resources == null) { resources = new FreemindResourceBundle(); } return resources; } public String getResourceString(String key) { return ((FreemindResourceBundle)getResources()).getResourceString(key); } public String getResourceString(String key, String resource) { return ((FreemindResourceBundle)getResources()).getResourceString(key, resource); } public void clearLanguageResources() { resources = null; } public ClassLoader getFreeMindClassLoader() { ClassLoader classLoader = this.getClass().getClassLoader(); try { return new URLClassLoader(new URL[] { Tools.fileToUrl(new File(getFreemindBaseDir())) }, classLoader); } catch (MalformedURLException e) { freemind.main.Resources.getInstance().logException(e); return classLoader; } } /** * Old version using String manipulation out of the classpath to find the base dir. */ public String getFreemindBaseDirOld() { if(baseDir == null){ final String classPath = System.getProperty("java.class.path"); final String mainJarFile = "freemind.jar"; int lastpos = classPath.indexOf(mainJarFile); int firstpos = 0; // if freemind.jar is not found in the class path use user.dir as Basedir if(lastpos == -1){ baseDir = System.getProperty("user.dir"); logger.info("Basedir is user.dir: "+baseDir); return baseDir; } /* fc: Now, if freemind.jar is the first, firstpos == -1. * This results in bad results in the substring method, or not??*/ firstpos = classPath.lastIndexOf(File.pathSeparator, lastpos) + 1; lastpos -= 1; if (lastpos > firstpos) { logger.info("First " + firstpos + " and last " + lastpos + " and string " + classPath); baseDir = classPath.substring(firstpos, lastpos); } else baseDir = ""; final File basePath = new File(baseDir); baseDir = basePath.getAbsolutePath(); logger.info("First basedir is: "+baseDir); /* I suppose, that here, the freemind.jar is removed together with the last path. * Example: /home/foltin/freemindapp/lib/freemind.jar gives * /home/foltin/freemindapp */ lastpos = baseDir.lastIndexOf(File.separator); if (lastpos > -1) baseDir = baseDir.substring(0, lastpos); logger.info("Basedir is: "+baseDir); } return baseDir; } /* We define the base dir of FreeMind as the directory where accessories, * plugins and other things are to be found. * We expect it to be either the directory where the * main jar file is (freemind.jar), or the root of the class hierarchy * (if no jar file is used), after any 'lib' directory is removed. * One can overwrite this definition by setting the freemind.base.dir * property. */ public String getFreemindBaseDir() { if (baseDir == null) { try { File file; String dir = System.getProperty("freemind.base.dir"); if (dir == null) { // Property isn't set, we try to find the // base directory ourselves. // System.err.println("property not set"); // We locate first the current class. String classname = this.getClass().getName(); URL url = this.getClass().getResource( classname.replaceFirst("^" + this.getClass().getPackage().getName() + ".", "") + ".class"); // then we create a file out of it, after // removing file: and jar:, removing everything // after !, as well as the class name part. // Finally we decode everything (e.g. %20) // TODO: is UTF-8 always the right value? file = new File(URLDecoder.decode( url.getPath().replaceFirst("^(file:|jar:)+", "") .replaceFirst("!.*$", "").replaceFirst( classname.replace('.', '/') + ".class$", ""), "UTF-8")); // if it's a file, we take its parent, a dir if (file.isFile()) file = file.getParentFile(); /* Now, we remove the lib directory: * Example: /home/foltin/freemindapp/lib/freemind.jar gives * /home/foltin/freemindapp */ if (file.getName().equals("lib")) file = file.getParentFile(); } else { file = new File(dir); } // then we check if the directory exists and is really // a directory. if (!file.exists()) { throw new IllegalArgumentException("FreeMind base dir '" + file + "' does not exist."); } if (!file.isDirectory()) { throw new IllegalArgumentException( "FreeMind base dir (!) '" + file + "' is not a directory."); } // set the static variable baseDir = file.getCanonicalPath(); logger.info("Basedir is: "+baseDir); } catch (Exception e) { Resources.getInstance().logException(e); throw new IllegalArgumentException( "FreeMind base dir can't be determined."); } } // return the value of the static variable return baseDir; } public String getAdjustableProperty(final String label) { String value = getProperty(label); if(value == null){ return value; } if(value.startsWith("?") && ! value.equals("?")){ // try to look in the language specific properties String localValue = ((FreemindResourceBundle)getResources()).getResourceString(LOCAL_PROPERTIES + label, null); value = localValue == null ? value.substring(1).trim() : localValue; setDefaultProperty(label, value); } return value; } public void loadUIProperties(Properties props) { // props.put(FreeMind.RESOURCES_BACKGROUND_COLOR, Tools.colorToXml(UIManager.getColor("text"))); // props.put(FreeMind.RESOURCES_NODE_TEXT_COLOR, Tools.colorToXml(UIManager.getColor("textText"))); // props.put(FreeMind.RESOURCES_SELECTED_NODE_COLOR, Tools.colorToXml(UIManager.getColor("textHighlight"))); // props.put(FreeMind.RESOURCES_SELECTED_NODE_TEXT_COLOR, Tools.colorToXml(UIManager.getColor("textHighlightText"))); } } freemind-0.9.0/freemind/freemind/extensions/0000755000000000000000000000000011532143331017564 5ustar rootrootfreemind-0.9.0/freemind/freemind/extensions/NodeHookAdapter.java0000644000000000000000000000356411527433212023452 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: NodeHookAdapter.java,v 1.1.4.4.2.2 2007/04/21 15:11:20 dpolivaev Exp $*/ package freemind.extensions; import java.util.Collection; import java.util.Iterator; import java.util.List; import freemind.modes.MindMap; import freemind.modes.MindMapNode; /** * @author christianfoltin * * */ public abstract class NodeHookAdapter extends HookAdapter implements NodeHook { private boolean selfUpdateExpected; private MindMap map; private MindMapNode node; /** * */ public NodeHookAdapter() { super(); } /* (non-Javadoc) * @see freemind.modes.NodeHook#invoke() */ public void invoke(MindMapNode node) { logger.finest("invoke(node) called."); } /** */ protected MindMapNode getNode() { return node; } /** */ public void setNode(MindMapNode node) { this.node = node; } /** */ protected MindMap getMap() { return map; } /** */ protected void nodeChanged(MindMapNode node) { getController().nodeChanged(node); } /** */ public void setMap(MindMap map) { this.map = map; } } freemind-0.9.0/freemind/freemind/extensions/UndoEventReceiver.java0000644000000000000000000000271611527433212024035 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 21.09.2004 */ /*$Id: UndoEventReceiver.java,v 1.1.4.2 2005/02/13 22:39:56 christianfoltin Exp $*/ package freemind.extensions; /** This is a marker interface for hooks. If a PermanentNodeHook implements * this interface (which is easy), it receives onUpdateNodeHook, onUpdateChildrenHook, * even when the action issuing this update is caused by an undo action. * * Normally, on undo, no event are generated. * * The onAddChild, onAddChildren events are not implemented yet. They are generated in any case. * @author foltin * */ public interface UndoEventReceiver { } freemind-0.9.0/freemind/freemind/extensions/StatefulMindMapNodeHookAdapter.java0000644000000000000000000000116211527433212026420 0ustar rootrootpackage freemind.extensions; import freemind.modes.mindmapmode.hooks.PermanentMindMapNodeHookAdapter; abstract public class StatefulMindMapNodeHookAdapter extends PermanentMindMapNodeHookAdapter implements StatefulNodeHook { public String getContent() { return getContent(null); } public void setContent(String content) { setContent(null, content); } public void setContentUndoable(String content) { setContentUndoable(null, content); } public void setContentUndoable(String key, String content) { getMindMapController().undoableHookContentActor.performAction(getNode(), getName(), key, content); } } freemind-0.9.0/freemind/freemind/extensions/HookDescriptorPluginAction.java0000644000000000000000000001055511527433212025715 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 22.07.2004 */ /*$Id: HookDescriptorPluginAction.java,v 1.1.2.2 2008/01/13 20:55:34 christianfoltin Exp $*/ package freemind.extensions; import java.util.HashMap; import java.util.Iterator; import java.util.Properties; import java.util.Vector; import freemind.controller.actions.generated.instance.Plugin; import freemind.controller.actions.generated.instance.PluginAction; import freemind.controller.actions.generated.instance.PluginMenu; import freemind.controller.actions.generated.instance.PluginMode; import freemind.controller.actions.generated.instance.PluginProperty; import freemind.main.FreeMindMain; /** This is an information class that holds all outer properties * of a hook, i.e. all contents of the XML description file. * * Don't use this class for anything except for the implementation * of a HookFactory. * @author foltin * */ public class HookDescriptorPluginAction extends HookDescriptorBase { private Properties properties; public Vector menuPositions; private Vector modes; private PluginAction pluginAction; public HookDescriptorPluginAction(FreeMindMain frame, String xmlPluginFile, Plugin pluginBase, PluginAction pluginAction) { super(pluginBase, frame, xmlPluginFile); this.pluginAction = pluginAction; if (pluginAction.getName() == null) { pluginAction.setName(pluginAction.getLabel()); } menuPositions = new Vector(); properties = new Properties(); modes = new Vector(); for (Iterator i = pluginAction.getListChoiceList().iterator(); i.hasNext();) { Object obj = i.next(); if (obj instanceof PluginMenu) { PluginMenu menu = (PluginMenu) obj; menuPositions.add(menu.getLocation()); } if (obj instanceof PluginProperty) { PluginProperty property = (PluginProperty) obj; properties.put(property.getName(), property.getValue()); } if (obj instanceof PluginMode) { PluginMode mode = (PluginMode) obj; modes.add(mode.getClassName()); } } } public String toString() { return "[HookDescriptor props=" + properties + ", menu positions=" + menuPositions + "]"; } public HookInstanciationMethod getInstanciationMethod() { if (pluginAction.getInstanciation() != null) { HashMap allInstMethods = HookInstanciationMethod .getAllInstanciationMethods(); for (Iterator i = allInstMethods.keySet().iterator(); i.hasNext();) { String name = (String) i.next(); if (pluginAction.getInstanciation().equalsIgnoreCase(name)) { return (HookInstanciationMethod) allInstMethods.get(name); } } } // this is an error case? return HookInstanciationMethod.Other; } public Vector getModes() { return modes; } public String getBaseClass() { return pluginAction.getBase(); } public String getName() { return getFromResourceIfNecessary(pluginAction.getName()); } public String getClassName() { return pluginAction.getClassName(); } public String getDocumentation() { return getFromResourceIfNecessary(pluginAction.getDocumentation()); } public String getIconPath() { return pluginAction.getIconPath(); } public String getKeyStroke() { return getFromPropertiesIfNecessary(pluginAction.getKeyStroke()); } /** */ public Properties getProperties() { return properties; } /** * @return whether or not the plugin can be on/off and this * should be displayed in the menus. */ public boolean isSelectable() { return pluginAction.getIsSelectable(); } } freemind-0.9.0/freemind/freemind/extensions/StatefulNodeHook.java0000644000000000000000000000043211527433212023650 0ustar rootrootpackage freemind.extensions; public interface StatefulNodeHook extends PermanentNodeHook { void setContent(String key, String content); String getContent(String key); void setContent(String content); String getContent(); void setContentUndoable(String key, String content); } freemind-0.9.0/freemind/freemind/extensions/MindMapHook.java0000644000000000000000000000571611527433212022612 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: MindMapHook.java,v 1.1.4.4.2.2 2006/07/25 20:28:20 christianfoltin Exp $*/ package freemind.extensions; import java.util.Properties; import freemind.modes.ModeController; /** * @author foltin * */ public interface MindMapHook { /** * @return The name of the hook. In the xml description, this is the unique label. */ String getName(); void setName(String name); /** * @param properties the properties of the property file belonging to the hook are passed. */ void setProperties(Properties properties); /**looks for a property in the plugin properties file. */ String getResourceString(String property); void setController(ModeController controller); /** If a base class is specified in the plugin declaration * via a plugin_registration entry with isPluginBase==true, * this object is returned here. You can use it to realize something * like the state of a plugin (eg. is the plugin switched on or off?).
* * An example is the menu status of the encrypted nodes. If the node is not * encrypted, the encryption state cannot be toggled (see EncryptNode.java).
* * Another example arises from the collaboration mode. The state (connected, * wait for second party, map sharing etc.) can be stored in the plugin base.
* * Remember, that it is most likely that you havn't specified * the base class and that you get NULL here. * @return The object returned is of HookRegistration type but has to be * casted anyway. */ Object getPluginBaseClass(); /** This indirection is necessary, as * all stored PermanentNodeHooks are created during the map's creation time * but the registrations are underdone on ModeController's startup method later.*/ public interface PluginBaseClassSearcher { Object getPluginBaseObject(); } void setPluginBaseClass(PluginBaseClassSearcher baseClass); /* Hooks */ /** * This method is also called, if the hook is created in the map. */ void startupMapHook(); /** * This method is also called, if the node, this hook belongs to, is removed from the map. */ void shutdownMapHook(); } freemind-0.9.0/freemind/freemind/extensions/ModeControllerHookAdapter.java0000644000000000000000000000307211527433212025507 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 29.02.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package freemind.extensions; /** * @author foltin * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class ModeControllerHookAdapter extends HookAdapter implements ModeControllerHook { // Logging: // private static java.util.logging.Logger logger; /** */ public ModeControllerHookAdapter() { super(); // if(logger == null) // logger = ((ControllerAdapter)getController()).getFrame().getLogger(this.getClass().getName()); } } freemind-0.9.0/freemind/freemind/extensions/NodeHook.java0000644000000000000000000000240211527433212022137 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: NodeHook.java,v 1.1.4.1 2004/10/17 23:00:07 dpolivaev Exp $*/ package freemind.extensions; import java.util.Collection; import java.util.List; import freemind.modes.MindMap; import freemind.modes.MindMapNode; public interface NodeHook extends MindMapHook { void setMap(MindMap map); void setNode(MindMapNode node); /* hooks */ /** * Is called after creation: */ void invoke(MindMapNode node); } freemind-0.9.0/freemind/freemind/extensions/HookRegistration.java0000644000000000000000000000216311527433212023730 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 12.08.2004 */ /*$Id: HookRegistration.java,v 1.1.4.1 2004/10/17 23:00:07 dpolivaev Exp $*/ package freemind.extensions; /** * @author foltin * */ public interface HookRegistration { void register(); void deRegister(); } freemind-0.9.0/freemind/freemind/extensions/ImportWizard.java0000644000000000000000000001747411527433212023103 0ustar rootroot/* * ImportWizard.java * Copyright (C) 1999 Len Trigg (trigg@cs.waikato.ac.nz) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ // adapted to freemind by christianfoltin, 29.2.2004. // taken from /usr/share/xemacs/xemacs-packages/etc/jde/java/src/jde/wizards/ImportWizard.java // changed: package name, commented out the static method. // if (current.toLowerCase().endsWith(".properties")) { // // formerly ".class" // and related changes. // commented out: // For Java 2! ... package freemind.extensions; import java.io.File; import java.io.IOException; import java.util.Enumeration; import java.util.HashSet; import java.util.StringTokenizer; import java.util.Vector; import java.util.logging.Logger; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import freemind.main.FreeMindCommon; import freemind.main.FreeMindMain; /** * Converts an unqualified class name to import statements by scanning * through the classpath. * * @author Len Trigg (trigg@cs.waikato.ac.nz) * @version 1.0 - 6 May 1999 */ public class ImportWizard { public final String lookFor = ".xml"; /** Stores the list of all classes in the classpath */ public Vector CLASS_LIST = new Vector(500); private final FreeMindMain mFrame; private static Logger logger = null; public ImportWizard(FreeMindMain frame) { this.mFrame = frame; if(logger == null) { logger = frame.getLogger(this.getClass().getName()); } } /** Build the list of classes */ // static { // // // System.err.println("Making class list"); // buildClassList(); // // // System.err.println("Done (" + CLASS_LIST.size() + " classes)"); // // } public void buildClassList() { String classPath = System.getProperty("java.class.path"); String classPathSeparator = File.pathSeparator; // add the current dir to find more plugins classPath=mFrame.getFreemindBaseDir()+classPathSeparator+classPath; logger.info("Classpath for plugins:"+classPath); // to remove duplicates HashSet foundPlugins = new HashSet(); StringTokenizer st = new StringTokenizer(classPath, classPathSeparator); while (st.hasMoreTokens()) { String classPathEntry = st.nextToken(); File classPathFile = new File(classPathEntry); try { String key = classPathFile.getCanonicalPath(); if(foundPlugins.contains(key)) continue; logger.info("looking for plugins in " + key); foundPlugins.add(key); } catch (IOException e) { // TODO Auto-generated catch block freemind.main.Resources.getInstance().logException( e); } if (classPathFile.exists()) { String lowerCaseFileName = classPathEntry.toLowerCase(); if (lowerCaseFileName.endsWith(".jar")) { logger.info("searching for plugins in: "+ classPathEntry); addClassesFromZip(CLASS_LIST, classPathFile); } else if (lowerCaseFileName.endsWith(".zip")) { logger.info("searching for plugins in: "+ classPathEntry); addClassesFromZip(CLASS_LIST, classPathFile); } else if (classPathFile.isDirectory()) { logger.info("searching for plugins in: "+ classPathEntry); addClassesFromDir(CLASS_LIST, classPathFile, classPathFile, 0); } } } } /** * Adds the classes from the supplied Zip file to the class list. * * @param classList the Vector to add the classes to * @param classPathFile the File to scan as a zip file */ public void addClassesFromZip( Vector classList, File classPathFile) { // System.out.println("Processing jar/zip file: " + classPathFile); try { ZipFile zipFile = new ZipFile(classPathFile); Enumeration enumeration = zipFile.entries(); while (enumeration.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) enumeration.nextElement(); String current = zipEntry.getName(); if (isInteresting(current)) { current = current.substring( 0, current.length() - lookFor.length()); classList.addElement(current); } } } catch (Exception ex) { freemind.main.Resources.getInstance().logException(ex, "Problem opening " + classPathFile + " with zip."); } } /** */ private boolean isInteresting(String current) { int length = current.length(); if(length= 6){ // search only the first levels return; } String[] files = currentDir.list(); if(files != null) { for (int i = 0; i < files.length; i++) { String current = files[i]; logger.info("looking at: " + current); if (isInteresting(current)) { String rootPath = rootDir.getPath(); String currentPath = currentDir.getPath(); if (! currentPath.startsWith(rootPath)) { logger.severe( "currentPath doesn't start with rootPath!\n" + "rootPath: " + rootPath + "\n" + "currentPath: " + currentPath + "\n"); } else { current = current.substring( 0, current.length() - lookFor.length()); String packageName = currentPath.substring(rootPath.length()); String fileName; if (packageName.length() > 0) { // Not the current directory fileName = packageName.substring(1) + File.separator + current; } else { // The current directory fileName = current; } classList.addElement(fileName); logger.info("Found: " + fileName); } } else { // Check if it's a directory to recurse into File currentFile = new File(currentDir, current); if (currentFile.isDirectory()) { addClassesFromDir(classList, rootDir, currentFile, recursionLevel+1); } } } } } } // ImportWizard /* * $Log: ImportWizard.java,v $ * Revision 1.1.4.6.2.16 2008/07/28 03:06:01 christianfoltin * * Bug fix: B19 startup fails with "Mode not available: Mindmap" * https://sourceforge.net/tracker/?func=detail&atid=107118&aid=2025279&group_id=7118 * * FreeMind Starter: no more statics. * * Revision 1.1.4.6.2.15 2008/07/18 16:14:25 christianfoltin * * Renamed zh into zh_TW (patch from willyann * * Reverted changes to Tools. * * Revision 1.1.4.6.2.14 2006/12/14 16:45:00 christianfoltin * * Search & Replace Dialog with menu and nicer. Bug fixes... * * Revision 1.1.4.6.2.13 2006/11/28 08:25:01 dpolivaev * no message * * Revision 1.1.4.6.2.12 2006/11/26 10:20:40 dpolivaev * LocalProperties, TextResources for SHTML and Bug Fixes * * Revision 1.1.4.6.2.11 2006/11/12 21:07:06 christianfoltin * * Mac bug fixes (class path, error messages, directories) * * Revision 1.1.4.6.2.10 2006/09/05 21:17:58 dpolivaev * SimplyHTML * */ // End of ImportWizard.java freemind-0.9.0/freemind/freemind/extensions/HookFactory.java0000644000000000000000000000734111527433212022670 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2005 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 31.12.2005 */ /*$Id: HookFactory.java,v 1.1.4.9.2.1 2006/07/25 20:28:20 christianfoltin Exp $*/ package freemind.extensions; import java.util.List; import java.util.Vector; import javax.swing.AbstractAction; import freemind.controller.actions.generated.instance.Plugin; import freemind.modes.MindMapNode; public interface HookFactory { public static class RegistrationContainer { public Class hookRegistrationClass; public boolean isPluginBase; public Plugin correspondingPlugin; public RegistrationContainer() { } } /** * @return a string vector with representatives for plugins. */ public abstract Vector getPossibleNodeHooks(); /** * @return a string vector with representatives for plugins. */ public abstract Vector getPossibleModeControllerHooks(); public abstract ModeControllerHook createModeControllerHook(String hookName); /** * Do not call this method directly. Call ModeController.createNodeHook * instead. */ public abstract NodeHook createNodeHook(String hookName); /** * @return null if not present, the hook otherwise. */ public abstract PermanentNodeHook getHookInNode(MindMapNode node, String hookName); /** * @return returns a list of menu position strings for the * StructuredMenuHolder. */ public abstract List getHookMenuPositions(String hookName); /** */ public abstract HookInstanciationMethod getInstanciationMethod( String hookName); /** * Each Plugin can have a list of HookRegistrations that are called after * the corresponding mode is enabled. (Like singletons.) One of these can * operate as the pluginBase that is accessible to every normal * plugin_action via the getPluginBaseClass method. * * @return A list of RegistrationContainer elements. The field * hookRegistrationClass of RegistrationContainer is a class that is * (probably) of HookRegistration type. You have to register every * registration via the registerRegistrationContainer method when * instanciated (this is typically done in the ModeController). */ public abstract List getRegistrations(); /** See getRegistrations. The registration makes sense for the * factory, as the factory observes every object creation.
* Moreover, the factory can tell other hooks it creates, who is its * base plugin. * */ public abstract void registerRegistrationContainer( HookFactory.RegistrationContainer container, HookRegistration instanciatedRegistrationObject); public abstract void deregisterAllRegistrationContainer(); /** A plugin base class is a common registration class of multiple * plugins. It is useful to embrace several related plugins * (example: EncryptedNote -> Registration). * @return the base class if declared and successfully instanciated * or NULL. */ public abstract Object getPluginBaseClass(String hookName); } freemind-0.9.0/freemind/freemind/extensions/PermanentNodeHookSubstituteUnknown.java0000644000000000000000000000346411527433212027476 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: PermanentNodeHookSubstituteUnknown.java,v 1.1.2.1 2005/02/13 22:39:56 christianfoltin Exp $*/ package freemind.extensions; import java.util.Iterator; import freemind.main.XMLElement; /** Class saves xml data in case that the corresponding node hook is not present. */ public class PermanentNodeHookSubstituteUnknown extends PermanentNodeHookAdapter { private final String hookName; public PermanentNodeHookSubstituteUnknown(String name){ super(); hookName = name; } private XMLElement child; public void loadFrom(XMLElement child) { this.child = child; super.loadFrom(child); } public void save(XMLElement xml) { super.save(xml); for (Iterator i = child.getChildren().iterator(); i.hasNext();) { XMLElement childchild = (XMLElement) i.next(); xml.addChild(childchild); } } public String getName() { return hookName; } } freemind-0.9.0/freemind/freemind/extensions/PermanentNodeHook.java0000644000000000000000000000564411527433212024024 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 06.03.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package freemind.extensions; import freemind.main.XMLElement; import freemind.modes.MindMapNode; import freemind.view.mindmapview.NodeView; /** * @author foltin * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public interface PermanentNodeHook extends NodeHook { void onSelectHook(NodeView nodeView); /** * */ void onDeselectHook(NodeView nodeView); void onViewCreatedHook(NodeView nodeView); void onViewRemovedHook(NodeView nodeView); /** * If the node I belong to is changed, I get this notification. * */ void onUpdateNodeHook(); /** Is called if the addedChildNode is inserted as a direct child of the node, * this hook is attached to. * The cases in which this method is called contain new nodes, paste, move, etc. * * Ah, don't call propagate in this method, as paste introduces nodes with the * hook and you'll have them twice, ... * see onNewChild */ void onAddChild(MindMapNode addedChildNode); /** Is only called, if a new nodes is inserted as a child. * Remark: In this case onAddChild is called too and moreover *before* this method. * see onAddChild. */ void onNewChild(MindMapNode newChildNode); /** This method is called, if a child is added to me or to any of my children. * (See onUpdateChildrenHook) */ void onAddChildren(MindMapNode addedChild); void onRemoveChild(MindMapNode oldChildNode); /** This method is called, if a child is removed to me or to any of my children. * (See onUpdateChildrenHook) * @param oldDad TODO */ void onRemoveChildren(MindMapNode oldChildNode, MindMapNode oldDad); /** * If any of my children is updated, I get this notification. */ void onUpdateChildrenHook(MindMapNode updatedNode); /** */ void save(XMLElement hookElement); /** */ void loadFrom(XMLElement child); } freemind-0.9.0/freemind/freemind/extensions/HookAdapter.java0000644000000000000000000000632611527433212022643 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 29.02.2004 * */ package freemind.extensions; import java.net.URL; import java.util.Properties; import freemind.modes.ModeController; /** Implments MindMapHook as an Adapter class. * Implementation is straight forward. * * @author foltin * */ public class HookAdapter implements MindMapHook { private String name; private Properties properties; private ModeController controller; // Logging: protected java.util.logging.Logger logger; /** * Stores the plugin base class as declared by the plugin_registration/isBaseClass * attribute. */ private PluginBaseClassSearcher baseClass; /** */ public HookAdapter() { baseClass=null; } /* (non-Javadoc) * @see freemind.modes.NodeHook#getName() */ public String getName() { return this.name; } public void setName(String name) { this.name = name; } /* (non-Javadoc) * @see freemind.modes.NodeHook#startupMapHook(java.lang.String) */ public void startupMapHook() { // TODO Auto-generated method stub } /* (non-Javadoc) * @see freemind.modes.NodeHook#shutdownMapHook() */ public void shutdownMapHook() { controller = null; } /** */ protected ModeController getController() { return controller; } /** */ protected Properties getProperties() { return properties; } /** */ public void setProperties(Properties properties) { this.properties = properties; } /** */ public void setController(ModeController controller) { this.controller = controller; if(logger == null) logger = controller.getFrame().getLogger(this.getClass().getName()); } /* (non-Javadoc) * @see freemind.extensions.MindMapHook#getResourceString(java.lang.String) */ public String getResourceString(String property) { String result = properties.getProperty(property); if(result == null) { result = getController().getText(property); } if(result == null) { logger.warning("The following property was not found:"+property); } return result; } public URL getResource(String resourceName) { return this.getClass().getClassLoader().getResource(resourceName); } /* (non-Javadoc) * @see freemind.extensions.MindMapHook#getPluginBaseClass() */ public Object getPluginBaseClass() { return baseClass.getPluginBaseObject(); } public void setPluginBaseClass(PluginBaseClassSearcher baseClass) { this.baseClass = baseClass; } } freemind-0.9.0/freemind/freemind/extensions/ExportHook.java0000644000000000000000000001767511527433212022555 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 16.10.2004 */ /*$Id: ExportHook.java,v 1.1.4.7.2.12 2010/02/27 09:27:50 christianfoltin Exp $*/ package freemind.extensions; import java.awt.Container; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.text.MessageFormat; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; import freemind.main.Tools; import freemind.modes.NodeAdapter; import freemind.modes.mindmapmode.actions.RedoAction; import freemind.view.mindmapview.MapView; /** * @author foltin * */ public class ExportHook extends ModeControllerHookAdapter { private MapView view; /** * @param nameExtension TODO */ protected File chooseFile(String type, String description, String nameExtension) { Container component = getController().getFrame().getContentPane(); JFileChooser chooser = null; chooser = new JFileChooser(); File mmFile = getController().getMap().getFile(); if (mmFile!=null) { String proposedName = mmFile.getAbsolutePath().replaceFirst( "\\.[^.]*?$", "") + ((nameExtension != null)?nameExtension:"") + "." + type; chooser.setSelectedFile(new File(proposedName)); } if (getController().getLastCurrentDir()!= null) { chooser.setCurrentDirectory(getController().getLastCurrentDir()); } chooser.addChoosableFileFilter(new ImageFilter(type, description)); // chooser.setDialogTitle(label); int returnVal = chooser.showSaveDialog(component); if (returnVal != JFileChooser.APPROVE_OPTION) { // not ok pressed return null; } // |= Pressed O.K. File chosenFile = chooser.getSelectedFile(); getController().setLastCurrentDir(chosenFile.getParentFile()); String ext = Tools.getExtension(chosenFile.getName()); if (!Tools.safeEqualsIgnoreCase(ext, type)) { chosenFile = new File(chosenFile.getParent(), chosenFile.getName() + "." + type); } if (chosenFile.exists()) { // If file exists, ask before overwriting. String overwriteText= MessageFormat.format(getController().getText("file_already_exists"), new Object[] {chosenFile.toString()}); int overwriteMap = JOptionPane.showConfirmDialog(component, overwriteText, overwriteText, JOptionPane.YES_NO_OPTION); if (overwriteMap != JOptionPane.YES_OPTION) { return null; } } return chosenFile; } public static class ImageFilter extends FileFilter { private String type; private final String description; public ImageFilter(String type, String description) { this.type = type; this.description = description; } public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = Tools.getExtension(f.getName()); return Tools.safeEqualsIgnoreCase(extension, type); } public String getDescription() { return description==null?type:description; } } protected String getTranslatableResourceString(String resourceName) { String returnValue = getResourceString(resourceName); if(returnValue != null && returnValue.startsWith("%")) { return getController().getText(returnValue.substring(1)); } return returnValue; } public BufferedImage createBufferedImage() { view = getController().getView(); if (view == null) return null; //Determine which part of the view contains the nodes of the map: //(Needed to eliminate areas of whitespace around the actual rendering of the map) // NodeAdapter root = (NodeAdapter) getController().getMap().getRoot(); // call prepare printing to lay out for printing before getting the inner bounds view.preparePrinting(); Rectangle innerBounds = view.getInnerBounds(); //Create an image containing the map: BufferedImage myImage = (BufferedImage) view.createImage(view.getWidth(), view.getHeight() ); //Render the mind map nodes on the image: Graphics g = myImage.getGraphics(); g.clipRect(innerBounds.x, innerBounds.y, innerBounds.width, innerBounds.height); view.print(g); myImage = myImage.getSubimage(innerBounds.x, innerBounds.y, innerBounds.width, innerBounds.height); view.endPrinting(); return myImage; // NodeAdapter root = (NodeAdapter) getController().getMap().getRoot(); // Rectangle rect = view.getInnerBounds(root.getViewer()); // // BufferedImage image = // new BufferedImage( // rect.width, // rect.height, // BufferedImage.TYPE_INT_RGB); // Graphics2D g = (Graphics2D) image.createGraphics(); // g.translate(-rect.getMinX(), -rect.getMinY()); // view.update(g); // return image; } /** */ protected void copyFromResource(String prefix, String fileName, String destinationDirectory) { // adapted from http://javaalmanac.com/egs/java.io/CopyFile.html // Copies src file to dst file. // If the dst file does not exist, it is created try { logger.finest("searching for " + prefix + fileName); URL resource = getResource(prefix + fileName); if(resource==null){ logger.severe("Cannot find resource: "+ prefix+fileName); return; } InputStream in = resource.openStream(); OutputStream out = new FileOutputStream(destinationDirectory + "/" + fileName); // Transfer bytes from in to out Tools.copyStream(in, out, true); } catch (Exception e) { logger.severe("File not found or could not be copied. " + "Was earching for " + prefix + fileName + " and should go to "+destinationDirectory); freemind.main.Resources.getInstance().logException(e); } } /** */ protected void copyFromFile(String dir, String fileName, String destinationDirectory) { // adapted from http://javaalmanac.com/egs/java.io/CopyFile.html // Copies src file to dst file. // If the dst file does not exist, it is created try { logger.finest("searching for " + dir + fileName); File resource = new File(dir, fileName); if(resource==null){ logger.severe("Cannot find resource: "+ dir+fileName); return; } InputStream in = new FileInputStream(resource); OutputStream out = new FileOutputStream(destinationDirectory + "/" + fileName); // Transfer bytes from in to out Tools.copyStream(in, out, true); } catch (Exception e) { logger.severe("File not found or could not be copied. " + "Was earching for " + dir + fileName + " and should go to "+destinationDirectory); freemind.main.Resources.getInstance().logException(e); } } } freemind-0.9.0/freemind/freemind/extensions/HookInstanciationMethod.java0000644000000000000000000001343311527433212025224 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 22.07.2004 */ /*$Id: HookInstanciationMethod.java,v 1.1.4.1.16.3 2007/06/05 20:53:30 dpolivaev Exp $*/ package freemind.extensions; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; import freemind.modes.MindMapNode; import freemind.modes.ModeController; public class HookInstanciationMethod { private static interface DestinationNodesGetter { Collection getDestinationNodes(ModeController controller, MindMapNode focussed, List selecteds); MindMapNode getCenterNode(ModeController controller, MindMapNode focussed, List selecteds); } private static class DefaultDestinationNodesGetter implements DestinationNodesGetter { public Collection getDestinationNodes(ModeController controller, MindMapNode focussed, List selecteds) { return selecteds; } public MindMapNode getCenterNode(ModeController controller, MindMapNode focussed, List selecteds) { return focussed; } } private static class RootDestinationNodesGetter implements DestinationNodesGetter { public Collection getDestinationNodes(ModeController controller, MindMapNode focussed, List selecteds) { Vector returnValue = new Vector(); returnValue.add(controller.getMap().getRoot()); return returnValue; } public MindMapNode getCenterNode(ModeController controller, MindMapNode focussed, List selecteds) { return controller.getMap().getRootNode(); } } private static class AllDestinationNodesGetter implements DestinationNodesGetter { private void addChilds(MindMapNode node, Collection allNodeCollection) { allNodeCollection.add(node); for (Iterator i = node.childrenFolded(); i.hasNext();) { MindMapNode child = (MindMapNode) i.next(); addChilds(child, allNodeCollection); } } public Collection getDestinationNodes(ModeController controller, MindMapNode focussed, List selecteds) { Vector returnValue = new Vector(); addChilds(controller.getMap().getRootNode(), returnValue); return returnValue; } public MindMapNode getCenterNode(ModeController controller, MindMapNode focussed, List selecteds) { return focussed; } } private boolean isSingleton; private DestinationNodesGetter getter; private final boolean isPermanent; private final boolean isUndoable; public boolean isSingleton() { return isSingleton; } /** * @return Returns the isPermanent. */ public boolean isPermanent() { return isPermanent; } private HookInstanciationMethod(boolean isPermanent, boolean isSingleton, DestinationNodesGetter getter, boolean isUndoable){ this.isPermanent = isPermanent; this.isSingleton = isSingleton; this.getter = getter; this.isUndoable = isUndoable; } static final public HookInstanciationMethod Once = new HookInstanciationMethod(true, true, new DefaultDestinationNodesGetter(), true); /** The hook should only be added/removed to the root node. */ static final public HookInstanciationMethod OnceForRoot = new HookInstanciationMethod(true, true, new RootDestinationNodesGetter(), true); /** Each (or none) node should have the hook. */ static final public HookInstanciationMethod OnceForAllNodes = new HookInstanciationMethod(true, true, new AllDestinationNodesGetter(), true); /** This is for MindMapHooks in general. * Here, no undo- or redoaction are performed, the undo information is given by the actions * the hook performs.*/ static final public HookInstanciationMethod Other = new HookInstanciationMethod(false, false, new DefaultDestinationNodesGetter(), false); /** This is for MindMapHooks that wish to be applied to root, whereevery they are called from. * Here, no undo- or redoaction are performed, the undo information is given by the actions * the hook performs.*/ static final public HookInstanciationMethod ApplyToRoot = new HookInstanciationMethod(false, false, new RootDestinationNodesGetter(), false); static final public HashMap getAllInstanciationMethods() { HashMap res = new HashMap(); res.put("Once", Once); res.put("OnceForRoot", OnceForRoot); res.put("OnceForAllNodes", OnceForAllNodes); res.put("Other", Other); res.put("ApplyToRoot", ApplyToRoot); return res; } /** */ public Collection getDestinationNodes(ModeController controller, MindMapNode focussed, List selecteds) { return getter.getDestinationNodes(controller, focussed, selecteds); } /** */ public boolean isAlreadyPresent(ModeController controller, String hookName, MindMapNode focussed) { for (Iterator i = focussed.getActivatedHooks().iterator(); i.hasNext();) { PermanentNodeHook hook = (PermanentNodeHook) i.next(); if(hookName.equals(hook.getName())) { return true; } } return false; } /** */ public MindMapNode getCenterNode(ModeController controller, MindMapNode focussed, List selecteds) { return getter.getCenterNode(controller, focussed, selecteds); } /** */ public boolean isUndoable() { return isUndoable; } } freemind-0.9.0/freemind/freemind/extensions/PermanentNodeHookAdapter.java0000644000000000000000000001136211527433212025317 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 06.03.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package freemind.extensions; import java.util.HashMap; import java.util.Iterator; import freemind.main.XMLElement; import freemind.modes.MindMapNode; import freemind.view.mindmapview.NodeView; /** * @author foltin * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class PermanentNodeHookAdapter extends NodeHookAdapter implements PermanentNodeHook { // Logging: // private static java.util.logging.Logger logger; /** */ public PermanentNodeHookAdapter() { super(); // if(logger == null) // logger = ((ControllerAdapter)getController()).getFrame().getLogger(this.getClass().getName()); } /* * (non-Javadoc) * * @see freemind.modes.NodeHook#shutdownMapHook() */ public void shutdownMapHook() { logger.finest("shutdownMapHook"); setNode(null); setMap(null); super.shutdownMapHook(); } /* (non-Javadoc) * @see freemind.modes.NodeHook#onUpdateNodeHook() */ public void onUpdateNodeHook() { logger.finest("onUpdateNodeHook"); } /* (non-Javadoc) * @see freemind.modes.NodeHook#onUpdateChildrenHook() */ public void onUpdateChildrenHook(MindMapNode updatedNode) { logger.finest("onUpdateChildrenHook"); } /* (non-Javadoc) * @see freemind.modes.NodeHook#onAddChild(freemind.modes.MindMapNode) */ public void onAddChild(MindMapNode newChildNode) { logger.finest("onAddChild"); } public void onNewChild(MindMapNode newChildNode) { logger.finest("onNewChild"); } /* (non-Javadoc) * @see freemind.extensions.PermanentNodeHook#onRemoveChild(freemind.modes.MindMapNode) */ public void onRemoveChild(MindMapNode oldChildNode) { logger.finest("onRemoveChild"); } /* (non-Javadoc) * @see freemind.extensions.PermanentNodeHook#save(freemind.main.XMLElement) */ public void save(XMLElement xml) { String saveName = getName(); //saveName=saveName.replace(File.separatorChar, '/'); xml.setAttribute("name", saveName); } /* (non-Javadoc) * @see freemind.extensions.PermanentNodeHook#loadFrom(freemind.main.XMLElement) */ public void loadFrom(XMLElement child) { } /* (non-Javadoc) * @see freemind.modes.NodeHook#onSelectHook() */ public void onSelectHook(NodeView nodeView) { logger.finest("onSelectHook"); } /* (non-Javadoc) * @see freemind.extensions.PermanentNodeHook#onDeselectHook() */ public void onDeselectHook(NodeView nodeView) { logger.finest("onDeselectHook"); } /* (non-Javadoc) * @see freemind.extensions.PermanentNodeHook#onAddChildren(freemind.modes.MindMapNode) */ public void onAddChildren(MindMapNode addedChild) { logger.finest("onAddChildren"); } public static final String PARAMETERS = "Parameters"; /** */ protected HashMap loadNameValuePairs(XMLElement xml) { HashMap result = new HashMap(); XMLElement child = (XMLElement) xml.getChildren().get(0); if (child != null && PARAMETERS.equals(child.getName())) { for (Iterator i = child.enumerateAttributeNames(); i.hasNext();) { String name = (String) i.next(); result.put(name, child.getStringAttribute(name)); } } return result; } /** */ protected void saveNameValuePairs(HashMap nameValuePairs, XMLElement xml) { XMLElement child = new XMLElement(); child.setName(PARAMETERS); for (Iterator i = nameValuePairs.keySet().iterator(); i.hasNext();) { String key = (String) i.next(); Object value = nameValuePairs.get(key); child.setAttribute(key, value); } xml.addChild(child); } public void onRemoveChildren(MindMapNode oldChildNode, MindMapNode oldDad) { logger.finest("onRemoveChildren"); } public void onViewCreatedHook(NodeView nodeView) { } public void onViewRemovedHook(NodeView nodeView) { } } freemind-0.9.0/freemind/freemind/extensions/HookFactoryAdapter.java0000644000000000000000000000472011527433212024167 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2005 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 31.12.2005 */ /*$Id: HookFactoryAdapter.java,v 1.1.2.1.2.2 2006/07/25 20:28:20 christianfoltin Exp $*/ package freemind.extensions; import java.util.HashMap; import java.util.Iterator; import freemind.modes.MindMapNode; /** * @author foltin * */ public abstract class HookFactoryAdapter implements HookFactory { /** Contains PluginType -> Object (baseClass) relations. */ protected HashMap allRegistrationInstances; /** * */ protected HookFactoryAdapter() { super(); } /** * @return null if not present, the hook otherwise. */ public PermanentNodeHook getHookInNode(MindMapNode node, String hookName) { // search for already instanciated hooks of this type: for (Iterator i = node.getActivatedHooks().iterator(); i.hasNext();) { PermanentNodeHook otherHook = (PermanentNodeHook) i.next(); if (otherHook.getName().equals(hookName)) { // there is already one instance. return otherHook; } } return null; } /** See getRegistrations. The registration makes sense for the * factory, as the factory observes every object creation.
* Moreover, the factory can tell other hooks it creates, who is its * base plugin. * */ public void registerRegistrationContainer(HookFactory.RegistrationContainer container, HookRegistration instanciatedRegistrationObject) { // registration only for pluginBases. if (container.isPluginBase) { allRegistrationInstances.put(container.correspondingPlugin.getLabel(), instanciatedRegistrationObject); } } public void deregisterAllRegistrationContainer() { allRegistrationInstances.clear(); } } freemind-0.9.0/freemind/freemind/extensions/HookDescriptorRegistration.java0000644000000000000000000000363411527433212025773 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Dimitri Polivaev, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 18.08.2006 */ /*$Id: HookDescriptorRegistration.java,v 1.1.2.1 2006/08/20 19:34:25 christianfoltin Exp $*/ package freemind.extensions; import java.util.List; import freemind.controller.actions.generated.instance.Plugin; import freemind.controller.actions.generated.instance.PluginRegistration; import freemind.main.FreeMindMain; /** * @author foltin * */ public class HookDescriptorRegistration extends HookDescriptorBase { private final PluginRegistration mRegistration; public HookDescriptorRegistration(FreeMindMain frame, String xmlPluginFile, Plugin pluginBase, PluginRegistration pRegistration) { super(pluginBase, frame, xmlPluginFile); mRegistration = pRegistration; } // public PluginRegistration getPluginRegistration() { // return mRegistration; // } public String getClassName() { return mRegistration.getClassName(); } public boolean getIsPluginBase() { return mRegistration.getIsPluginBase(); } public List getListPluginModeList() { return mRegistration.getListPluginModeList(); } } freemind-0.9.0/freemind/freemind/extensions/ModeControllerHook.java0000644000000000000000000000246311527433212024211 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Created on 29.02.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package freemind.extensions; import javax.swing.JMenu; /** * @author foltin * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public interface ModeControllerHook extends MindMapHook { } freemind-0.9.0/freemind/freemind/extensions/HookDescriptorBase.java0000644000000000000000000001234011527433212024165 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Dimitri Polivaev, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 18.08.2006 */ /*$Id: HookDescriptorBase.java,v 1.1.2.7 2008/07/09 20:01:00 christianfoltin Exp $*/ package freemind.extensions; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; import freemind.controller.actions.generated.instance.Plugin; import freemind.controller.actions.generated.instance.PluginClasspath; import freemind.main.FreeMindCommon; import freemind.main.FreeMindMain; import freemind.main.Tools; /** * @author foltin * */ public class HookDescriptorBase { public static final String FREEMIND_BASE_DIR_STRING = "${freemind.base.dir}"; // Logging: private static java.util.logging.Logger logger = null; protected final Plugin pluginBase; protected final FreeMindMain frame; protected final String mXmlPluginFile; /** * @param pluginBase * @param frame * @param xmlPluginFile */ public HookDescriptorBase(final Plugin pluginBase, final FreeMindMain frame, final String xmlPluginFile) { super(); this.pluginBase = pluginBase; this.frame = frame; mXmlPluginFile = xmlPluginFile; if (logger == null) { logger = frame.getLogger(this.getClass().getName()); } } /** */ protected String getFromResourceIfNecessary(String string) { if (string == null) { return string; } if (string.startsWith("%")) { return frame.getController().getResourceString(string.substring(1)); } return string; } protected String getFromPropertiesIfNecessary(String string) { if (string == null) { return string; } if (string.startsWith("%")) { return frame.getProperty(string.substring(1)); } return string; } /** * @return the relative/absolute(?) position of the plugin xml file. */ private String getPluginDirectory() { return frame.getFreemindBaseDir() + "/" + new File(mXmlPluginFile).getParent(); } public Plugin getPluginBase() { return pluginBase; } public List getPluginClasspath() { Vector returnValue = new Vector(); for (Iterator i = pluginBase.getListChoiceList().iterator(); i .hasNext();) { Object obj = (Object) i.next(); if (obj instanceof PluginClasspath) { PluginClasspath pluginClasspath = (PluginClasspath) obj; returnValue.add(pluginClasspath); } } return returnValue; } public ClassLoader getPluginClassLoader() { // construct class loader: List pluginClasspathList = getPluginClasspath(); ClassLoader loader = getClassLoader(pluginClasspathList); return loader; } private static HashMap classLoaderCache = new HashMap(); /** * This string is used to identify known classloaders as they are cached. * */ private String createPluginClasspathString(List pluginClasspathList) { String result = ""; for (Iterator i = pluginClasspathList.iterator(); i.hasNext();) { PluginClasspath type = (PluginClasspath) i.next(); result += type.getJar() + ","; } return result; } /** * @throws MalformedURLException */ private ClassLoader getClassLoader(List pluginClasspathList) { String key = createPluginClasspathString(pluginClasspathList); if (classLoaderCache.containsKey(key)) return (ClassLoader) classLoaderCache.get(key); try { URL[] urls = new URL[pluginClasspathList.size()]; int j = 0; for (Iterator i = pluginClasspathList.iterator(); i.hasNext();) { PluginClasspath classPath = (PluginClasspath) i.next(); String jarString = classPath.getJar(); // if(jarString.startsWith(FREEMIND_BASE_DIR_STRING)){ // jarString = frame.getFreemindBaseDir() + jarString.substring(FREEMIND_BASE_DIR_STRING.length()); // } // new version of classpath resolution suggested by ewl under // patch [ 1154510 ] Be able to give absolute classpath entries // in plugin.xml File file = new File(jarString); if (!file.isAbsolute()) { file = new File(getPluginDirectory(), jarString); } // end new version by ewl. logger.info("file " + Tools.fileToUrl(file) + " exists = " + file.exists()); urls[j++] = Tools.fileToUrl(file); } ClassLoader loader = new URLClassLoader(urls, frame.getFreeMindClassLoader()); classLoaderCache.put(key, loader); return loader; } catch (MalformedURLException e) { freemind.main.Resources.getInstance().logException(e); return this.getClass().getClassLoader(); } } } freemind-0.9.0/freemind/freemind/modes/0000755000000000000000000000000011532143331016474 5ustar rootrootfreemind-0.9.0/freemind/freemind/modes/CloudAdapter.java0000644000000000000000000001115411527433212021714 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: CloudAdapter.java,v 1.1.16.3.4.3 2007/08/21 19:54:05 christianfoltin Exp $*/ package freemind.modes; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Stroke; import freemind.controller.Controller; import freemind.main.FreeMind; import freemind.main.FreeMindMain; import freemind.main.Tools; import freemind.main.XMLElement; import freemind.preferences.FreemindPropertyListener; public abstract class CloudAdapter extends LineAdapter implements MindMapCloud { public static final String RESOURCES_STANDARDCLOUDSTYLE = "standardcloudstyle"; private static Color standardColor = null; private static String standardStyle = null; private static CloudAdapterListener listener = null; static final Stroke DEF_STROKE = new BasicStroke(3); // // Constructors // public CloudAdapter(MindMapNode target,FreeMindMain frame) { super(target, frame); NORMAL_WIDTH = 3; iterativeLevel = -1; if(listener == null) { listener = new CloudAdapterListener(); Controller.addPropertyChangeListener(listener); } } /** * calculates the cloud iterative level which * is importent for the cloud size */ private void calcIterativeLevel(MindMapNode target) { iterativeLevel = 0; if (target != null) { for(MindMapNode parentNode = target.getParentNode(); parentNode != null; parentNode = parentNode.getParentNode()) { MindMapCloud cloud = parentNode.getCloud(); if (cloud != null) { iterativeLevel = cloud.getIterativeLevel() + 1; break; } } } } public void setTarget(MindMapNode target) { super.setTarget(target); } public Color getExteriorColor() { return getColor().darker(); } /** gets iterative level which is required for painting and layout. */ public int getIterativeLevel() { if (iterativeLevel == -1) { calcIterativeLevel(target); } return iterativeLevel; } /** changes the iterative level.*/ public void changeIterativeLevel(int deltaLevel) { if (iterativeLevel != -1) { iterativeLevel = iterativeLevel + deltaLevel; } } private int iterativeLevel; public XMLElement save() { XMLElement cloud = new XMLElement(); cloud.setName("cloud"); if (style != null) { cloud.setAttribute("STYLE",style); } if (color != null) { cloud.setAttribute("COLOR",Tools.colorToXml(color)); } if(width != DEFAULT_WIDTH) { cloud.setAttribute("WIDTH",Integer.toString(width)); } return cloud; } protected Color getStandardColor() { return standardColor; } protected void setStandardColor(Color standardColor) { CloudAdapter.standardColor = standardColor; } protected String getStandardStyle() { return standardStyle; } protected void setStandardStyle(String standardStyle) { CloudAdapter.standardStyle = standardStyle; } protected String getStandardColorPropertyString() { return FreeMind.RESOURCES_CLOUD_COLOR; } protected String getStandardStylePropertyString() { return RESOURCES_STANDARDCLOUDSTYLE; } protected static class CloudAdapterListener implements FreemindPropertyListener { public void propertyChanged(String propertyName, String newValue, String oldValue) { if (propertyName.equals(FreeMind.RESOURCES_CLOUD_COLOR)) { CloudAdapter.standardColor = Tools.xmlToColor(newValue); } if (propertyName.equals(RESOURCES_STANDARDCLOUDSTYLE)) { CloudAdapter.standardStyle = newValue; } } } } freemind-0.9.0/freemind/freemind/modes/IconInformation.java0000644000000000000000000000035211527433212022441 0ustar rootrootpackage freemind.modes; import javax.swing.ImageIcon; import javax.swing.KeyStroke; public interface IconInformation { String getDescription(); ImageIcon getIcon(); String getKeystrokeResourceName(); KeyStroke getKeyStroke(); } freemind-0.9.0/freemind/freemind/modes/MindIcon.java0000644000000000000000000001614211527433212021047 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* $Id: MindIcon.java,v 1.1.18.6.2.13 2008/07/09 20:01:08 christianfoltin Exp $ */ package freemind.modes; import java.io.File; import java.net.URL; import java.util.HashMap; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.KeyStroke; import freemind.main.Resources; import freemind.main.Tools; /** * This class represents a MindIcon than can be applied * to a node or a whole branch. */ public class MindIcon implements Comparable, IconInformation{ public static final String PROPERTY_STRING_ICONS_LIST = "icons.list"; private String name; private String description; private int number = UNKNOWN; /** * Stores the once created ImageIcon. */ private ImageIcon associatedIcon; private static Vector mAllIconNames; private static ImageIcon iconNotFound; /** * Set of all created icons. Name -> MindIcon */ private static HashMap createdIcons = new HashMap(); private static final int UNKNOWN = -1; public static final int LAST = UNKNOWN; static int nextNumber = UNKNOWN-1; private JComponent component = null; private MindIcon(String name) { setName(name); associatedIcon=null; } /** */ private MindIcon(String name, ImageIcon icon) { setName(name); associatedIcon=icon; } public String toString() { return "Icon_name: "+name; } /** * Get the value of name. * @return Value of name. */ public String getName() { // DanPolansky: it's essential that we do not return null // for saving of the map. return name == null ? "notfound" : name; } /** * Set the value of name. * @param name Value to assign to name. */ public void setName(String name) { this.name = name; return; /* here, we must check, whether the name is allowed.*/ // DanPolansky: I suggest to avoid any checking. If the icon with the name // does not exist, let's keep the name and save it again anyway. Let us // imagine the set of icons expanding and changing in the future. //Vector allIconNames = getAllIconNames(); //for(int i = 0; i < allIconNames.size(); ++i) { // if(((String) allIconNames.get(i)).equals(v)) { // //System.out.println("Icon name: " + v); // this.name = v; // return; // } //} // throw new IllegalArgumentException("'"+v+"' is not a known icon."); // DanPolansky: we want to parse the file though. Not existent icon is not // that a big tragedy. } public String getDescription() { String resource = new String("icon_"+getName()); return Resources.getInstance().getResourceString(resource, resource); } public String getIconFileName() { return getIconsPath()+getIconBaseFileName(); } public String getIconBaseFileName() { return getName()+".png"; } public static String getIconsPath() { return "images/icons/"; } public ImageIcon getIcon() { // We need the frame to be able to obtain the resource URL of the icon. if (iconNotFound == null) { iconNotFound = new ImageIcon(Resources.getInstance().getResource("images/IconNotFound.png")); } if (associatedIcon != null) return associatedIcon; if ( name != null ) { URL imageURL = Resources.getInstance().getResource( getIconFileName()); if (imageURL == null) { // As standard icon not found, try user's try { final File file = new File(Resources.getInstance() .getFreemindDirectory(), "icons/" + getName() + ".png"); if (file.canRead()) { imageURL = Tools.fileToUrl(file); } } catch (Exception e) { } } ImageIcon icon = imageURL == null ? iconNotFound : new ImageIcon( imageURL); setIcon(icon); return icon; } else { setIcon(iconNotFound); return iconNotFound; } } /** * Set the value of icon. * * @param _associatedIcon * Value to assign to icon. */ protected void setIcon(ImageIcon _associatedIcon) { this.associatedIcon = _associatedIcon; } public static Vector getAllIconNames () { if (mAllIconNames != null) return mAllIconNames; Vector mAllIconNames = new Vector(); String icons = Resources.getInstance().getProperty(PROPERTY_STRING_ICONS_LIST); StringTokenizer tokenizer = new StringTokenizer(icons, ";"); while(tokenizer.hasMoreTokens()){ mAllIconNames.add(tokenizer.nextToken()); } return mAllIconNames; } public static MindIcon factory(String iconName){ if(createdIcons.containsKey(iconName)){ return (MindIcon) createdIcons.get(iconName); } MindIcon icon = new MindIcon(iconName); createdIcons.put(iconName, icon); return icon; } /** */ public static MindIcon factory(String iconName, ImageIcon icon) { if(createdIcons.containsKey(iconName)){ return (MindIcon) createdIcons.get(iconName); } MindIcon mindIcon = new MindIcon(iconName, icon); getAllIconNames ().add(iconName); createdIcons.put(iconName, mindIcon); return mindIcon; } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(Object o) { if (o instanceof MindIcon){ MindIcon icon = (MindIcon)o; int i1 = getNumber(); int i2 = icon.getNumber(); return i1 < i2 ? -1 : i1 == i2 ? 0 : +1; } throw new ClassCastException() ; } private int getNumber() { if(number == UNKNOWN){ number = getAllIconNames ().indexOf(name); } if(number == UNKNOWN){ number = nextNumber--; } return number; } /** */ public JComponent getRendererComponent() { if(component == null){ component = new JLabel(getIcon()); } return component; } public String getKeystrokeResourceName() { return "keystroke_icon_" + name; } public KeyStroke getKeyStroke() { return null; } } freemind-0.9.0/freemind/freemind/modes/StylePatternFactory.java0000644000000000000000000002713711527433212023343 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2001 Joerg Mueller *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*$Id: StylePatternFactory.java,v 1.1.2.3.2.5 2007/09/13 20:33:07 christianfoltin Exp $*/ package freemind.modes; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.Reader; import java.io.Writer; import java.util.Iterator; import java.util.List; import freemind.common.TextTranslator; import freemind.common.XmlBindingTools; import freemind.controller.actions.generated.instance.Pattern; import freemind.controller.actions.generated.instance.PatternEdgeColor; import freemind.controller.actions.generated.instance.PatternEdgeStyle; import freemind.controller.actions.generated.instance.PatternEdgeWidth; import freemind.controller.actions.generated.instance.PatternIcon; import freemind.controller.actions.generated.instance.PatternNodeBackgroundColor; import freemind.controller.actions.generated.instance.PatternNodeColor; import freemind.controller.actions.generated.instance.PatternNodeFontBold; import freemind.controller.actions.generated.instance.PatternNodeFontItalic; import freemind.controller.actions.generated.instance.PatternNodeFontName; import freemind.controller.actions.generated.instance.PatternNodeFontSize; import freemind.controller.actions.generated.instance.PatternNodeStyle; import freemind.controller.actions.generated.instance.PatternPropertyBase; import freemind.controller.actions.generated.instance.Patterns; import freemind.main.Tools; /** * This class constructs patterns from files or from nodes and saves them back. */ public class StylePatternFactory { public static final String FALSE_VALUE = "false"; public static final String TRUE_VALUE = "true"; public static List loadPatterns(File file) throws Exception { return loadPatterns(new BufferedReader(new FileReader(file))); } /** * @return a List of Pattern elements. * @throws Exception */ public static List loadPatterns(Reader reader) throws Exception { Patterns patterns = (Patterns) XmlBindingTools.getInstance() .unMarshall(reader); return patterns.getListChoiceList(); } /** * the result is written to, and it is closed afterwards * List of Pattern elements. * @throws Exception */ public static void savePatterns(Writer writer, List listOfPatterns) throws Exception { Patterns patterns = new Patterns(); for (Iterator iter = listOfPatterns.iterator(); iter.hasNext();) { Pattern pattern = (Pattern) iter.next(); patterns.addChoice(pattern); } String marshalledResult = XmlBindingTools.getInstance().marshall( patterns); writer.write(marshalledResult); writer.close(); } public static Pattern createPatternFromNode(MindMapNode node) { Pattern pattern = new Pattern(); if (node.getColor() != null) { PatternNodeColor subPattern = new PatternNodeColor(); subPattern.setValue(Tools.colorToXml(node.getColor())); pattern.setPatternNodeColor(subPattern); } if (node.getBackgroundColor() != null) { PatternNodeBackgroundColor subPattern = new PatternNodeBackgroundColor(); subPattern.setValue(Tools.colorToXml(node.getBackgroundColor())); pattern.setPatternNodeBackgroundColor(subPattern); } if (node.getStyle() != null) { PatternNodeStyle subPattern = new PatternNodeStyle(); subPattern.setValue(node.getStyle()); pattern.setPatternNodeStyle(subPattern); } PatternNodeFontBold nodeFontBold = new PatternNodeFontBold(); nodeFontBold.setValue(node.isBold() ? TRUE_VALUE : FALSE_VALUE); pattern.setPatternNodeFontBold(nodeFontBold); PatternNodeFontItalic nodeFontItalic = new PatternNodeFontItalic(); nodeFontItalic.setValue(node.isItalic() ? TRUE_VALUE : FALSE_VALUE); pattern.setPatternNodeFontItalic(nodeFontItalic); if (node.getFontSize() != null) { PatternNodeFontSize nodeFontSize = new PatternNodeFontSize(); nodeFontSize.setValue(node.getFontSize()); pattern.setPatternNodeFontSize(nodeFontSize); } if (node.getFontFamilyName() != null) { PatternNodeFontName subPattern = new PatternNodeFontName(); subPattern.setValue(node.getFontFamilyName()); pattern.setPatternNodeFontName(subPattern); } if (node.getIcons().size() == 1) { PatternIcon iconPattern = new PatternIcon(); iconPattern.setValue(((MindIcon) node.getIcons().get(0)).getName()); pattern.setPatternIcon(iconPattern); } if (node.getEdge().getColor() != null) { PatternEdgeColor subPattern = new PatternEdgeColor(); subPattern.setValue(Tools.colorToXml(node.getEdge().getColor())); pattern.setPatternEdgeColor(subPattern); } if (node.getEdge().getStyle() != null) { PatternEdgeStyle subPattern = new PatternEdgeStyle(); subPattern.setValue(node.getEdge().getStyle()); pattern.setPatternEdgeStyle(subPattern); } if (node.getEdge().getWidth() != EdgeAdapter.DEFAULT_WIDTH) { PatternEdgeWidth subPattern = new PatternEdgeWidth(); subPattern.setValue("" + node.getEdge().getWidth()); pattern.setPatternEdgeWidth(subPattern); } return pattern; } public static String toString(Pattern pPattern, TextTranslator translator) { String result = ""; if (pPattern.getPatternNodeColor() != null) { result = addSeparatorIfNecessary(result); if (pPattern.getPatternNodeColor().getValue() == null) { result += "-" + translator.getText("PatternToString.color"); } else { result += "+" + translator.getText("PatternToString.color"); } } if (pPattern.getPatternNodeBackgroundColor() != null) { result = addSeparatorIfNecessary(result); if (pPattern.getPatternNodeBackgroundColor().getValue() == null) { result += "-" + translator.getText("PatternToString.backgroundColor"); } else { result += "+" + translator.getText("PatternToString.backgroundColor"); } } result = addSubPatternToString(translator, result, pPattern.getPatternNodeFontSize(), "PatternToString.NodeFontSize"); result = addSubPatternToString(translator, result, pPattern.getPatternNodeFontName(), "PatternToString.FontName"); result = addSubPatternToString(translator, result, pPattern.getPatternNodeFontBold(), "PatternToString.FontBold"); result = addSubPatternToString(translator, result, pPattern.getPatternNodeFontItalic(), "PatternToString.FontItalic"); result = addSubPatternToString(translator, result, pPattern.getPatternEdgeStyle(), "PatternToString.EdgeStyle"); result = addSubPatternToString(translator, result, pPattern.getPatternEdgeColor(), "PatternToString.EdgeColor"); result = addSubPatternToString(translator, result, pPattern.getPatternEdgeWidth(), "PatternToString.EdgeWidth"); result = addSubPatternToString(translator, result, pPattern.getPatternIcon(), "PatternToString.Icon"); result = addSubPatternToString(translator, result, pPattern.getPatternChild(), "PatternToString.Child"); return result; } private static String addSubPatternToString(TextTranslator translator, String result, PatternPropertyBase patternType, String patternString) { if (patternType != null) { result = addSeparatorIfNecessary(result); if (patternType.getValue() == null) { result += "-" + translator.getText(patternString); } else { result += "+" + translator.getText(patternString) + " " + patternType.getValue(); } } return result; } private static String addSeparatorIfNecessary(String result) { if (result.length() > 0) { result += ", "; } return result; } private static final String PATTERN_DUMMY = ""; public static Pattern getPatternFromString(String pattern) { String patternString = pattern; if (patternString == null) { patternString = PATTERN_DUMMY; } Pattern pat = (Pattern) XmlBindingTools.getInstance().unMarshall( patternString); return pat; } private static final String PATTERNS_DUMMY = ""; public static Patterns getPatternsFromString(String patterns) { String patternsString = patterns; if (patternsString == null) { patternsString = PATTERNS_DUMMY; } Patterns pat = (Patterns) XmlBindingTools.getInstance().unMarshall( patternsString); return pat; } /** Build the intersection of two patterns. Only, if the * property is the same, or both properties are * to be removed, it is kept, otherwise it is set to 'don't touch'. */ public static Pattern intersectPattern(Pattern p1, Pattern p2){ Pattern result = new Pattern(); result.setPatternEdgeColor((PatternEdgeColor) processPatternProperties(p1.getPatternEdgeColor(), p2.getPatternEdgeColor(), new PatternEdgeColor())); result.setPatternEdgeStyle((PatternEdgeStyle) processPatternProperties(p1.getPatternEdgeStyle(), p2.getPatternEdgeStyle(), new PatternEdgeStyle())); result.setPatternEdgeWidth((PatternEdgeWidth) processPatternProperties(p1.getPatternEdgeWidth(), p2.getPatternEdgeWidth(), new PatternEdgeWidth())); result.setPatternIcon((PatternIcon) processPatternProperties(p1.getPatternIcon(), p2.getPatternIcon(), new PatternIcon())); result.setPatternNodeBackgroundColor((PatternNodeBackgroundColor) processPatternProperties(p1.getPatternNodeBackgroundColor(), p2.getPatternNodeBackgroundColor(), new PatternNodeBackgroundColor())); result.setPatternNodeColor((PatternNodeColor) processPatternProperties(p1.getPatternNodeColor(), p2.getPatternNodeColor(), new PatternNodeColor())); result.setPatternNodeFontBold((PatternNodeFontBold) processPatternProperties(p1.getPatternNodeFontBold(), p2.getPatternNodeFontBold(), new PatternNodeFontBold())); result.setPatternNodeFontItalic((PatternNodeFontItalic) processPatternProperties(p1.getPatternNodeFontItalic(), p2.getPatternNodeFontItalic(), new PatternNodeFontItalic())); result.setPatternNodeFontName((PatternNodeFontName) processPatternProperties(p1.getPatternNodeFontName(), p2.getPatternNodeFontName(), new PatternNodeFontName())); result.setPatternNodeFontSize((PatternNodeFontSize) processPatternProperties(p1.getPatternNodeFontSize(), p2.getPatternNodeFontSize(), new PatternNodeFontSize())); result.setPatternNodeStyle((PatternNodeStyle) processPatternProperties(p1.getPatternNodeStyle(), p2.getPatternNodeStyle(), new PatternNodeStyle())); return result; } private static PatternPropertyBase processPatternProperties(PatternPropertyBase prop1, PatternPropertyBase prop2, PatternPropertyBase destination) { if(prop1 == null || prop2 == null){ return null; } // both delete the value or both have the same value: if(Tools.safeEquals(prop1.getValue(), prop2.getValue())){ destination.setValue(prop1.getValue()); return destination; } return null; } public static Pattern createPatternFromSelected(MindMapNode focussed, List selected) { Pattern nodePattern = createPatternFromNode(focussed); for (Iterator iter = selected.iterator(); iter.hasNext();) { MindMapNode node = (MindMapNode) iter.next(); Pattern tempNodePattern = createPatternFromNode(node); nodePattern = intersectPattern(nodePattern, tempNodePattern); } return nodePattern; } } freemind-0.9.0/freemind/freemind/modes/mindmapmode/0000755000000000000000000000000011532143331020766 5ustar rootrootfreemind-0.9.0/freemind/freemind/modes/mindmapmode/dialogs/0000755000000000000000000000000011532143331022410 5ustar rootrootfreemind-0.9.0/freemind/freemind/modes/mindmapmode/dialogs/StylePatternFrame.java0000644000000000000000000006176711527433212026711 0ustar rootroot/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Created on 25.02.2006 */ /* $Id: StylePatternFrame.java,v 1.1.2.10.2.9 2008/04/11 16:58:32 christianfoltin Exp $ */ package freemind.modes.mindmapmode.dialogs; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.HeadlessException; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.swing.JPanel; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.FormLayout; import freemind.common.BooleanProperty; import freemind.common.ColorProperty; import freemind.common.ComboProperty; import freemind.common.FontProperty; import freemind.common.IconProperty; import freemind.common.NextLineProperty; import freemind.common.PropertyBean; import freemind.common.PropertyControl; import freemind.common.ScriptEditorProperty; import freemind.common.SeparatorProperty; import freemind.common.StringProperty; import freemind.common.TextTranslator; import freemind.common.ThreeCheckBoxProperty; import freemind.controller.actions.generated.instance.Pattern; import freemind.controller.actions.generated.instance.PatternChild; import freemind.controller.actions.generated.instance.PatternEdgeColor; import freemind.controller.actions.generated.instance.PatternEdgeStyle; import freemind.controller.actions.generated.instance.PatternEdgeWidth; import freemind.controller.actions.generated.instance.PatternIcon; import freemind.controller.actions.generated.instance.PatternNodeBackgroundColor; import freemind.controller.actions.generated.instance.PatternNodeColor; import freemind.controller.actions.generated.instance.PatternNodeFontBold; import freemind.controller.actions.generated.instance.PatternNodeFontItalic; import freemind.controller.actions.generated.instance.PatternNodeFontName; import freemind.controller.actions.generated.instance.PatternNodeFontSize; import freemind.controller.actions.generated.instance.PatternNodeStyle; import freemind.controller.actions.generated.instance.PatternNodeText; import freemind.controller.actions.generated.instance.PatternPropertyBase; import freemind.controller.actions.generated.instance.PatternScript; import freemind.main.FreeMind; import freemind.modes.EdgeAdapter; import freemind.modes.MindIcon; import freemind.modes.MindMapNode; import freemind.modes.mindmapmode.MindMapController; import freemind.modes.mindmapmode.actions.ApplyPatternAction; import freemind.modes.mindmapmode.actions.IconAction; /** * @author foltin * */ public class StylePatternFrame extends JPanel implements TextTranslator, PropertyChangeListener { public static final class StylePatternFrameType { private StylePatternFrameType() { } public static StylePatternFrameType WITHOUT_NAME_AND_CHILDS = new StylePatternFrameType(); public static StylePatternFrameType WITH_NAME_AND_CHILDS = new StylePatternFrameType(); } private static final String[] EDGE_STYLES = new String[] { EdgeAdapter.EDGESTYLE_LINEAR, EdgeAdapter.EDGESTYLE_BEZIER, EdgeAdapter.EDGESTYLE_SHARP_LINEAR, EdgeAdapter.EDGESTYLE_SHARP_BEZIER }; private static final String[] EDGE_WIDTHS = new String[] { "EdgeWidth_parent", "EdgeWidth_thin", "EdgeWidth_1", "EdgeWidth_2", "EdgeWidth_4", "EdgeWidth_8" }; private static final String NODE_BACKGROUND_COLOR = "nodebackgroundcolor"; private static final String SET_RESOURCE = "set_property_text"; private static final String SET_NODE_BACKGROUND_COLOR= SET_RESOURCE; private static final String NODE_COLOR = "nodecolor"; private static final String SET_NODE_COLOR= SET_RESOURCE; private static final String SET_NODE_STYLE= SET_RESOURCE; private static final String NODE_STYLE = "nodestyle"; private static final String NODE_FONT_NAME = "nodefontname"; private static final String SET_NODE_FONT_NAME= SET_RESOURCE; private static final String NODE_FONT_SIZE = "nodefontsize"; private static final String SET_NODE_FONT_SIZE= SET_RESOURCE; private static final String NODE_FONT_BOLD = "nodefontbold"; private static final String SET_NODE_FONT_BOLD= SET_RESOURCE; private static final String NODE_FONT_ITALIC = "nodefontitalic"; private static final String SET_NODE_FONT_ITALIC= SET_RESOURCE; private static final String SET_NODE_TEXT= SET_RESOURCE; private static final String NODE_TEXT = "nodetext"; private static final String SET_EDGE_WIDTH= SET_RESOURCE; private static final String EDGE_WIDTH = "edgewidth"; private static final String SET_EDGE_STYLE= SET_RESOURCE; private static final String EDGE_STYLE = "edgestyle"; private static final String SET_EDGE_COLOR= SET_RESOURCE; private static final String EDGE_COLOR = "edgecolor"; private static final String CLEAR_ALL_SETTERS = "clear_all_setters"; private static final String SET_ICON= SET_RESOURCE; private static final String ICON = "icon"; private static final String NODE_NAME = "patternname"; private static final String SET_CHILD_PATTERN= SET_RESOURCE; private static final String CHILD_PATTERN = "childpattern"; private static final String SET_SCRIPT = "setscript"; private static final String SCRIPT = "script"; private final TextTranslator mTranslator; private Vector mControls; private ThreeCheckBoxProperty mSetNodeColor; private ColorProperty mNodeColor; private ThreeCheckBoxProperty mSetNodeBackgroundColor; private ColorProperty mNodeBackgroundColor; private ThreeCheckBoxProperty mSetNodeStyle; private ComboProperty mNodeStyle; private ThreeCheckBoxProperty mSetNodeFontName; private FontProperty mNodeFontName; private ThreeCheckBoxProperty mSetNodeFontBold; private BooleanProperty mNodeFontBold; private ThreeCheckBoxProperty mSetNodeFontItalic; private BooleanProperty mNodeFontItalic; private ThreeCheckBoxProperty mSetNodeFontSize; private ComboProperty mNodeFontSize; private ThreeCheckBoxProperty mSetNodeText; private StringProperty mNodeText; private ThreeCheckBoxProperty mSetEdgeWidth; private ComboProperty mEdgeWidth; private ThreeCheckBoxProperty mSetEdgeStyle; private ComboProperty mEdgeStyle; private ThreeCheckBoxProperty mSetEdgeColor; private ColorProperty mEdgeColor; private ThreeCheckBoxProperty mSetIcon; private IconProperty mIcon; private ThreeCheckBoxProperty mSetChildPattern; private ComboProperty mChildPattern; private ThreeCheckBoxProperty mSetScriptPattern; private ScriptEditorProperty mScriptPattern; private StringProperty mName; private Vector mIconInformationVector; /** * Denotes pairs property -> ThreeCheckBoxProperty such that the boolean * property can be set, when the format property is changed. */ private HashMap mPropertyChangePropagation = new HashMap(); private ThreeCheckBoxProperty mClearSetters; private final MindMapController mMindMapController; private final StylePatternFrameType mType; /** * @throws HeadlessException */ public StylePatternFrame(TextTranslator pTranslator, MindMapController pMindMapController, StylePatternFrameType pType) throws HeadlessException { super(); mTranslator = pTranslator; mMindMapController = pMindMapController; mType = pType; } /** * Creates all controls and adds them to the frame. */ public void init() { CardLayout cardLayout = new CardLayout(); JPanel rightStack = new JPanel(cardLayout); String form = "right:max(40dlu;p), 4dlu, 20dlu, 7dlu,right:max(40dlu;p), 4dlu, 80dlu, 7dlu"; FormLayout rightLayout = new FormLayout(form, ""); DefaultFormBuilder rightBuilder = new DefaultFormBuilder(rightLayout); rightBuilder.setDefaultDialogBorder(); mControls = getControls(); for (Iterator i = mControls.iterator(); i.hasNext();) { PropertyControl control = (PropertyControl) i.next(); control.layout(rightBuilder, this); } // add the last one, too rightStack.add(rightBuilder.getPanel(), "testTab"); add(rightStack, BorderLayout.CENTER); } public void addListeners() { // add listeners: for (Iterator iter = mControls.iterator(); iter.hasNext();) { PropertyControl control = (PropertyControl) iter.next(); if (control instanceof PropertyBean) { PropertyBean bean = (PropertyBean) control; bean.addPropertyChangeListener(this); } } mClearSetters.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent pEvt) { for (Iterator iter = mPropertyChangePropagation.keySet() .iterator(); iter.hasNext();) { ThreeCheckBoxProperty booleanProp = (ThreeCheckBoxProperty) iter .next(); booleanProp.setValue(mClearSetters.getValue()); } } }); } private String[] sizes = new String[] { "2", "4", "6", "8", "10", "12", "14", "16", "18", "20", "22", "24", "30", "36", "48", "72" }; private List mPatternList; private Vector getControls() { Vector controls = new Vector(); controls.add(new SeparatorProperty("General")); mClearSetters = new ThreeCheckBoxProperty(CLEAR_ALL_SETTERS + ".tooltip", CLEAR_ALL_SETTERS); mClearSetters.setValue(ThreeCheckBoxProperty.TRUE_VALUE); controls.add(mClearSetters); if (StylePatternFrameType.WITH_NAME_AND_CHILDS.equals(mType)) { mName = new StringProperty(NODE_NAME + ".tooltip", NODE_NAME); controls.add(mName); // child pattern mSetChildPattern = new ThreeCheckBoxProperty(SET_CHILD_PATTERN + ".tooltip", SET_CHILD_PATTERN); controls.add(mSetChildPattern); Vector childNames = new Vector(); mChildPattern = new ComboProperty(CHILD_PATTERN + ".tooltip", CHILD_PATTERN, childNames, childNames); controls.add(mChildPattern); } controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("NodeColors")); mSetNodeColor = new ThreeCheckBoxProperty(SET_NODE_COLOR + ".tooltip", SET_NODE_COLOR); controls.add(mSetNodeColor); FreeMind fmMain = (FreeMind)mMindMapController.getFrame(); mNodeColor = new ColorProperty(NODE_COLOR + ".tooltip", NODE_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_NODE_TEXT_COLOR), this); controls.add(mNodeColor); mSetNodeBackgroundColor = new ThreeCheckBoxProperty( SET_NODE_BACKGROUND_COLOR + ".tooltip", SET_NODE_BACKGROUND_COLOR); controls.add(mSetNodeBackgroundColor); mNodeBackgroundColor = new ColorProperty(NODE_BACKGROUND_COLOR + ".tooltip", NODE_BACKGROUND_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_BACKGROUND_COLOR), this); controls.add(mNodeBackgroundColor); controls.add(new SeparatorProperty("NodeStyles")); mSetNodeStyle = new ThreeCheckBoxProperty(SET_NODE_STYLE + ".tooltip", SET_NODE_STYLE); controls.add(mSetNodeStyle); mNodeStyle = new ComboProperty(NODE_STYLE + ".tooltip", NODE_STYLE, MindMapNode.NODE_STYLES, this); controls.add(mNodeStyle); mIconInformationVector = new Vector(); MindMapController controller = mMindMapController; Vector iconActions = controller.iconActions; for (Enumeration e = iconActions.elements(); e.hasMoreElements();) { IconAction action = ((IconAction) e.nextElement()); MindIcon info = action.getMindIcon(); mIconInformationVector.add(info); } mSetIcon = new ThreeCheckBoxProperty(SET_ICON + ".tooltip", SET_ICON); controls.add(mSetIcon); mIcon = new IconProperty(ICON + ".tooltip", ICON, mMindMapController .getFrame(), mIconInformationVector); controls.add(mIcon); controls.add(new NextLineProperty()); controls.add(new SeparatorProperty("NodeFont")); mSetNodeFontName = new ThreeCheckBoxProperty(SET_NODE_FONT_NAME + ".tooltip", SET_NODE_FONT_NAME); controls.add(mSetNodeFontName); mNodeFontName = new FontProperty(NODE_FONT_NAME + ".tooltip", NODE_FONT_NAME, this); controls.add(mNodeFontName); mSetNodeFontSize = new ThreeCheckBoxProperty(SET_NODE_FONT_SIZE + ".tooltip", SET_NODE_FONT_SIZE); controls.add(mSetNodeFontSize); Vector sizesVector = new Vector(); for (int i = 0; i < sizes.length; i++) { sizesVector.add(sizes[i]); } mNodeFontSize = new ComboProperty(NODE_FONT_SIZE + ".tooltip", NODE_FONT_SIZE, sizes, sizesVector); controls.add(mNodeFontSize); mSetNodeFontBold = new ThreeCheckBoxProperty(SET_NODE_FONT_BOLD + ".tooltip", SET_NODE_FONT_BOLD); controls.add(mSetNodeFontBold); mNodeFontBold = new BooleanProperty(NODE_FONT_BOLD + ".tooltip", NODE_FONT_BOLD); controls.add(mNodeFontBold); mSetNodeFontItalic = new ThreeCheckBoxProperty(SET_NODE_FONT_ITALIC + ".tooltip", SET_NODE_FONT_ITALIC); controls.add(mSetNodeFontItalic); mNodeFontItalic = new BooleanProperty(NODE_FONT_ITALIC + ".tooltip", NODE_FONT_ITALIC); controls.add(mNodeFontItalic); /* **** */ mSetNodeText = new ThreeCheckBoxProperty(SET_NODE_TEXT + ".tooltip", SET_NODE_TEXT); controls.add(mSetNodeText); mNodeText = new StringProperty(NODE_TEXT + ".tooltip", NODE_TEXT); controls.add(mNodeText); /* **** */ controls.add(new SeparatorProperty("EdgeControls")); mSetEdgeWidth = new ThreeCheckBoxProperty(SET_EDGE_WIDTH + ".tooltip", SET_EDGE_WIDTH); controls.add(mSetEdgeWidth); mEdgeWidth = new ComboProperty(EDGE_WIDTH + ".tooltip", EDGE_WIDTH, EDGE_WIDTHS, this); controls.add(mEdgeWidth); /* **** */ mSetEdgeStyle = new ThreeCheckBoxProperty(SET_EDGE_STYLE + ".tooltip", SET_EDGE_STYLE); controls.add(mSetEdgeStyle); mEdgeStyle = new ComboProperty(EDGE_STYLE + ".tooltip", EDGE_STYLE, EDGE_STYLES, this); controls.add(mEdgeStyle); /* **** */ mSetEdgeColor = new ThreeCheckBoxProperty(SET_EDGE_COLOR + ".tooltip", SET_EDGE_COLOR); controls.add(mSetEdgeColor); mEdgeColor = new ColorProperty(EDGE_COLOR + ".tooltip", EDGE_COLOR, fmMain.getDefaultProperty(FreeMind.RESOURCES_EDGE_COLOR), this); controls.add(mEdgeColor); /* **** */ controls.add(new SeparatorProperty("ScriptingControl")); mSetScriptPattern = new ThreeCheckBoxProperty(SET_SCRIPT + ".tooltip", SET_SCRIPT); controls.add(mSetScriptPattern); mScriptPattern = new ScriptEditorProperty(SCRIPT + ".tooltip", SCRIPT, mMindMapController); controls.add(mScriptPattern); // fill map; mPropertyChangePropagation.put(mSetNodeColor, mNodeColor); mPropertyChangePropagation.put(mSetNodeBackgroundColor, mNodeBackgroundColor); mPropertyChangePropagation.put(mSetNodeStyle, mNodeStyle); mPropertyChangePropagation.put(mSetNodeFontName, mNodeFontName); mPropertyChangePropagation.put(mSetNodeFontSize, mNodeFontSize); mPropertyChangePropagation.put(mSetNodeFontBold, mNodeFontBold); mPropertyChangePropagation.put(mSetNodeFontItalic, mNodeFontItalic); mPropertyChangePropagation.put(mSetNodeText, mNodeText); mPropertyChangePropagation.put(mSetEdgeColor, mEdgeColor); mPropertyChangePropagation.put(mSetEdgeStyle, mEdgeStyle); mPropertyChangePropagation.put(mSetEdgeWidth, mEdgeWidth); mPropertyChangePropagation.put(mSetIcon, mIcon); mPropertyChangePropagation.put(mSetScriptPattern, mScriptPattern); if (StylePatternFrameType.WITH_NAME_AND_CHILDS.equals(mType)) { // child pattern mPropertyChangePropagation.put(mSetChildPattern, mChildPattern); } return controls; } private Vector getPatternNames() { Vector childNames = new Vector(); for (Iterator iter = mPatternList.iterator(); iter.hasNext();) { Pattern pattern = (Pattern) iter.next(); childNames.add(pattern.getName()); } return childNames; } public String getText(String pKey) { return mTranslator.getText("PatternDialog." + pKey); } public void setPattern(Pattern pattern) { FreeMind fmMain = (FreeMind)mMindMapController.getFrame(); setPatternControls(pattern.getPatternNodeColor(), mSetNodeColor, mNodeColor, fmMain.getDefaultProperty(FreeMind.RESOURCES_NODE_TEXT_COLOR)); setPatternControls(pattern.getPatternNodeBackgroundColor(), mSetNodeBackgroundColor, mNodeBackgroundColor, fmMain.getDefaultProperty(FreeMind.RESOURCES_BACKGROUND_COLOR)); setPatternControls(pattern.getPatternNodeStyle(), mSetNodeStyle, mNodeStyle, MindMapNode.STYLE_AS_PARENT); setPatternControls(pattern.getPatternNodeText(), mSetNodeText, mNodeText, ""); setPatternControls(pattern.getPatternEdgeColor(), mSetEdgeColor, mEdgeColor, fmMain.getDefaultProperty(FreeMind.RESOURCES_EDGE_COLOR)); setPatternControls(pattern.getPatternEdgeStyle(), mSetEdgeStyle, mEdgeStyle, EDGE_STYLES[0]); setPatternControls(pattern.getPatternEdgeWidth(), mSetEdgeWidth, mEdgeWidth, EDGE_WIDTHS[0], new EdgeWidthTransformer()); setPatternControls(pattern.getPatternNodeFontName(), mSetNodeFontName, mNodeFontName, mMindMapController.getController().getDefaultFontFamilyName()); setPatternControls(pattern.getPatternNodeFontSize(), mSetNodeFontSize, mNodeFontSize, sizes[0]); setPatternControls(pattern.getPatternNodeFontBold(), mSetNodeFontBold, mNodeFontBold, BooleanProperty.TRUE_VALUE); setPatternControls(pattern.getPatternNodeFontItalic(), mSetNodeFontItalic, mNodeFontItalic, BooleanProperty.TRUE_VALUE); MindIcon firstInfo = (MindIcon) mIconInformationVector .get(0); setPatternControls(pattern.getPatternIcon(), mSetIcon, mIcon, firstInfo.getName()); setPatternControls(pattern.getPatternScript(), mSetScriptPattern, mScriptPattern, ""); if (StylePatternFrameType.WITH_NAME_AND_CHILDS.equals(mType)) { mName.setValue(pattern.getName()); setPatternControls(pattern.getPatternChild(), mSetChildPattern, mChildPattern, (mPatternList.size() > 0) ? ((Pattern) mPatternList.get(0)) .getName() : null); } for (Iterator iter = mPropertyChangePropagation.keySet().iterator(); iter .hasNext();) { ThreeCheckBoxProperty prop = (ThreeCheckBoxProperty) iter.next(); propertyChange(new PropertyChangeEvent(prop, prop.getLabel(), null, prop.getValue())); } } private interface ValueTransformator { String transform(String value); } private final class IdentityTransformer implements ValueTransformator { public String transform(String value) { return value; } } private final class EdgeWidthTransformer implements ValueTransformator { public String transform(String value) { return transformEdgeWidth(value); } } private final class EdgeWidthBackTransformer implements ValueTransformator { public String transform(String value) { return transformStringToWidth(value); } } private void setPatternControls(PatternPropertyBase patternProperty, PropertyBean threeCheckBoxProperty, PropertyBean property, String defaultValue) { setPatternControls(patternProperty, threeCheckBoxProperty, property, defaultValue, new IdentityTransformer()); } /** */ private void setPatternControls(PatternPropertyBase patternProperty, PropertyBean threeCheckBoxProperty, PropertyBean property, String defaultValue, ValueTransformator transformer) { if (patternProperty == null) { // value is not set: property.setValue(defaultValue); threeCheckBoxProperty .setValue(ThreeCheckBoxProperty.DON_T_TOUCH_VALUE); return; } if (patternProperty.getValue() == null) { // remove prop: property.setValue(defaultValue); threeCheckBoxProperty.setValue(ThreeCheckBoxProperty.FALSE_VALUE); return; } property.setValue(transformer.transform(patternProperty.getValue())); threeCheckBoxProperty.setValue(ThreeCheckBoxProperty.TRUE_VALUE); } private String transformEdgeWidth(String pEdgeWidth) { if (pEdgeWidth == null) return null; int edgeWidth = ApplyPatternAction.edgeWidthStringToInt(pEdgeWidth); HashMap transformator = getEdgeWidthTransformation(); for (Iterator iter = transformator.keySet().iterator(); iter.hasNext();) { String widthString = (String) iter.next(); Integer width = (Integer) transformator.get(widthString); if (edgeWidth == width.intValue()) { return widthString; } } // not found: return null; } private String transformStringToWidth(String value) { HashMap transformator = getEdgeWidthTransformation(); int intWidth = ((Integer) transformator.get(value)).intValue(); return ApplyPatternAction.edgeWidthIntToString(intWidth); } private HashMap getEdgeWidthTransformation() { HashMap transformator = new HashMap(); transformator .put(EDGE_WIDTHS[0], new Integer(EdgeAdapter.WIDTH_PARENT)); transformator.put(EDGE_WIDTHS[1], new Integer(EdgeAdapter.WIDTH_THIN)); transformator.put(EDGE_WIDTHS[2], new Integer(1)); transformator.put(EDGE_WIDTHS[3], new Integer(2)); transformator.put(EDGE_WIDTHS[4], new Integer(4)); transformator.put(EDGE_WIDTHS[5], new Integer(8)); return transformator; } public Pattern getResultPattern() { Pattern pattern = new Pattern(); return getResultPattern(pattern); } public Pattern getResultPattern(Pattern pattern) { pattern.setPatternNodeColor((PatternNodeColor) getPatternResult( new PatternNodeColor(), mSetNodeColor, mNodeColor)); pattern .setPatternNodeBackgroundColor((PatternNodeBackgroundColor) getPatternResult( new PatternNodeBackgroundColor(), mSetNodeBackgroundColor, mNodeBackgroundColor)); pattern.setPatternNodeStyle((PatternNodeStyle) getPatternResult( new PatternNodeStyle(), mSetNodeStyle, mNodeStyle)); pattern.setPatternNodeText((PatternNodeText) getPatternResult( new PatternNodeText(), mSetNodeText, mNodeText)); /* edges */ pattern.setPatternEdgeColor((PatternEdgeColor) getPatternResult( new PatternEdgeColor(), mSetEdgeColor, mEdgeColor)); pattern.setPatternEdgeStyle((PatternEdgeStyle) getPatternResult( new PatternEdgeStyle(), mSetEdgeStyle, mEdgeStyle)); pattern.setPatternEdgeWidth((PatternEdgeWidth) getPatternResult( new PatternEdgeWidth(), mSetEdgeWidth, mEdgeWidth, new EdgeWidthBackTransformer())); /* font */ pattern.setPatternNodeFontName((PatternNodeFontName) getPatternResult( new PatternNodeFontName(), mSetNodeFontName, mNodeFontName)); pattern.setPatternNodeFontSize((PatternNodeFontSize) getPatternResult( new PatternNodeFontSize(), mSetNodeFontSize, mNodeFontSize)); pattern.setPatternNodeFontBold((PatternNodeFontBold) getPatternResult( new PatternNodeFontBold(), mSetNodeFontBold, mNodeFontBold)); pattern .setPatternNodeFontItalic((PatternNodeFontItalic) getPatternResult( new PatternNodeFontItalic(), mSetNodeFontItalic, mNodeFontItalic)); pattern.setPatternIcon((PatternIcon) getPatternResult( new PatternIcon(), mSetIcon, mIcon)); pattern.setPatternScript((PatternScript) getPatternResult( new PatternScript(), mSetScriptPattern, mScriptPattern)); if (StylePatternFrameType.WITH_NAME_AND_CHILDS.equals(mType)) { pattern.setName(mName.getValue()); pattern.setPatternChild((PatternChild) getPatternResult( new PatternChild(), mSetChildPattern, mChildPattern)); } return pattern; } private PatternPropertyBase getPatternResult( PatternPropertyBase baseProperty, ThreeCheckBoxProperty threeCheckBoxProperty, PropertyBean property) { ValueTransformator transformer = new IdentityTransformer(); return getPatternResult(baseProperty, threeCheckBoxProperty, property, transformer); } /** */ private PatternPropertyBase getPatternResult( PatternPropertyBase baseProperty, ThreeCheckBoxProperty threeCheckBoxProperty, PropertyBean property, ValueTransformator transformer) { String checkboxResult = threeCheckBoxProperty.getValue(); if (checkboxResult == null) { return null; } if (checkboxResult.equals(ThreeCheckBoxProperty.DON_T_TOUCH_VALUE)) { return null; } if (checkboxResult.equals(ThreeCheckBoxProperty.FALSE_VALUE)) { // remove property: return baseProperty; } baseProperty.setValue(transformer.transform(property.getValue())); return baseProperty; } /** * Used to enable/disable the attribute controls, * if the check boxes are changed. */ public void propertyChange(PropertyChangeEvent pEvt) { // System.out.println("Propagation of "+ pEvt.getPropertyName() // + " with value " + pEvt.getNewValue() + " and source " + // pEvt.getSource()); if (mPropertyChangePropagation.containsKey(pEvt.getSource())) { ThreeCheckBoxProperty booleanProp = (ThreeCheckBoxProperty) pEvt .getSource(); // enable only when set: PropertyControl bean = (PropertyControl) mPropertyChangePropagation .get(booleanProp); bean.setEnabled(ThreeCheckBoxProperty.TRUE_VALUE.equals(booleanProp .getValue())); return; } } /** * For the child pattern box, the list is set here. * */ public void setPatternList(List patternList) { this.mPatternList = patternList; Vector childNames = getPatternNames(); mChildPattern.updateComboBoxEntries(childNames, childNames); } } freemind-0.9.0/freemind/freemind/modes/mindmapmode/freemind_version_updater.xslt0000644000000000000000000002264311527433212026777 0ustar rootroot 07100000800001080001008001000800200080030008004000800500080100008010040810010081002008100300900050090006009000800901000-1 -1 NOTE

-1  
 
freemind-0.9.0/freemind/freemind/modes/mindmapmode/MindMapPopupMenu.java0000644000000000000000000000352511527433212025040 0ustar rootroot/* * FreeMind - A Program for creating and viewing Mindmaps Copyright (C) * 2000-2001 Joerg Mueller See COPYING for Details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * $Id: MindMapPopupMenu.java,v 1.12.18.2 2005/01/04 10:39:41 christianfoltin * Exp $ */ package freemind.modes.mindmapmode; import java.util.HashSet; import java.util.Iterator; import java.util.logging.Logger; import javax.swing.JPopupMenu; import javax.swing.event.MenuListener; import freemind.controller.FreeMindPopupMenu; import freemind.controller.StructuredMenuHolder; public class MindMapPopupMenu extends FreeMindPopupMenu { private static final String MINDMAPMODE_POPUP = "mindmapmode_popup/"; private static Logger logger = null; private MindMapController c; public MindMapPopupMenu(MindMapController c) { super(); this.c = c; if (logger == null) { logger = c.getFrame().getLogger(this.getClass().getName()); } } /** */ public void update(StructuredMenuHolder holder) { this.removeAll(); c.createPatternSubMenu(holder, MINDMAPMODE_POPUP); c.addIconsToMenu(holder, MINDMAPMODE_POPUP+"icons/"); holder.updateMenus(this, MINDMAPMODE_POPUP); } } freemind-0.9.0/freemind/freemind/modes/mindmapmode/EncryptedMindMapNode.java0000644000000000000000000003037211527433212025653 0ustar rootroot/* * FreeMind - A Program for creating and viewing Mindmaps Copyright (C) * 2000-2001 Joerg Mueller See COPYING for Details * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. */ /* $Id: EncryptedMindMapNode.java,v 1.1.2.11.2.18 2011/01/09 21:03:13 christianfoltin Exp $ */ package freemind.modes.mindmapmode; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.HashMap; import java.util.ListIterator; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.tree.MutableTreeNode; import freemind.main.FreeMindMain; import freemind.main.HtmlTools; import freemind.main.XMLElement; import freemind.main.Tools.SingleDesEncrypter; import freemind.modes.MindIcon; import freemind.modes.MindMap; import freemind.modes.MindMapLinkRegistry; import freemind.modes.MindMapNode; import freemind.modes.ModeController; public class EncryptedMindMapNode extends MindMapNodeModel { /** * Is used to hide all children (when false) */ private boolean isAccessible = true; /** * Is used to store the child nodes (when true). */ private boolean isStoringEncryptedContent = false; /** * is only set to false by the load mechanism. * If the node is generated or it is decrypted once, this is always true. */ private boolean isDecrypted = true; /** * password have to be stored in a StringBuffer as Strings cannot be deleted * or overwritten. */ private StringBuffer password = null; private String encryptedContent; private static ImageIcon encryptedIcon; private static ImageIcon decryptedIcon; private boolean isShuttingDown=false; /** */ public EncryptedMindMapNode(Object userObject, FreeMindMain frame, MindMap map) { super(userObject, frame, map); if (encryptedIcon == null) { encryptedIcon = MindIcon.factory("encrypted").getIcon(); } if (decryptedIcon == null) { decryptedIcon = MindIcon.factory("decrypted").getIcon(); } if(map != null){ updateIcon(); } } public void setMap(MindMap map) { super.setMap(map); updateIcon(); } /** * @return true, if the password was correct. */ public boolean decrypt(StringBuffer givenPassword) { if (!checkPassword(givenPassword)) { return false; } setAccessible(true); if (!isDecrypted) { try { MindMapNode node = null; String childXml = decryptXml(encryptedContent, password); // is it a map at all? if(childXml.startsWith(MindMapMapModel.MAP_INITIAL_START)){ node = getNodeFromXml(childXml); } else { // old handling up to version 0.9.0_rc8: String[] childs = childXml.split(ModeController.NODESEPARATOR); // and now? paste it: // make a 0.8.0 map out of it: String mapContent = MindMapMapModel.MAP_INITIAL_START+"0.8.0\">"; for (int j = 0; j < childs.length; j++) { String nodeContent = childs[j]; mapContent += nodeContent; } mapContent += ""; node = getNodeFromXml(mapContent); } int index=0; for (ListIterator i = node.childrenUnfolded(); i.hasNext();) { MindMapNodeModel importNode = (MindMapNodeModel) i .next(); ((MindMapController)getModeController()).insertNodeInto(importNode,this,index++); } isDecrypted = true; } catch(Exception e){ freemind.main.Resources.getInstance().logException(e); setAccessible(false); } } setFolded(false); getMap().getRegistry().registrySubtree(this, false); return true; } private void paste(MindMapNodeModel importNode) { ((MindMapController)getModeController()).paste(importNode, this); } private MindMapNodeModel getNodeFromXml(String childXml) throws IOException { // the loadTree method performs an automatical version update. MindMapNodeModel node = getMindMapMapModel() .loadTree(new MindMapMapModel.StringReaderCreator(childXml), false); return node; } private MindMapMapModel getMindMapMapModel() { return ((MindMapMapModel) getMap()); } /** */ public boolean checkPassword(StringBuffer givenPassword) { if (password != null) { if (!equals(givenPassword, password)) { logger.warning("Wrong password supplied (cached!=given)."); return false; } return true; } // new password: String decryptedNode = decryptXml(encryptedContent, givenPassword); // FIXME: Better test needed. if (decryptedNode == null) { logger.warning("Wrong password supplied (deciphered text is null)."); return false; } if (!decryptedNode.startsWith(" *See COPYING for Details * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* $Id: MindMapMode.java,v 1.17.18.2.2.8 2008/08/27 19:05:39 christianfoltin Exp $ */ package freemind.modes.mindmapmode; import freemind.controller.Controller; import freemind.controller.StructuredMenuHolder; import freemind.main.Tools; import freemind.main.XMLParseException; import freemind.modes.Mode; import freemind.modes.ModeController; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.util.logging.Logger; import javax.swing.JMenu; import javax.swing.JToolBar; public class MindMapMode extends Mode { private Controller c; private MindMapController modecontroller; private final String MODENAME = "MindMap"; private boolean isRunning = false; private static Logger logger = null; public MindMapMode() { } public void init (Controller c) { this.c = c; if (logger == null) { logger = c.getFrame().getLogger(this.getClass().getName()); } modecontroller = (MindMapController) createModeController(); } public ModeController createModeController() { logger.finest("Creating new MindMapController..." ); MindMapController mindMapController = new MindMapController(this); logger.finest("Creating new MindMapController. Done:"+mindMapController ); return mindMapController; } public String toString() { return MODENAME; } /** * Called whenever this mode is chosen in the program. * (updates Actions etc.) */ public void activate() { if(isRunning) { c.getMapModuleManager().changeToMapOfMode(this); } else { isRunning = true; } } public void restore(String restoreable) throws FileNotFoundException, XMLParseException, MalformedURLException, IOException, URISyntaxException { getDefaultModeController().load(new File(restoreable)); } public Controller getController() { return c; } public ModeController getDefaultModeController() { return modecontroller; } } freemind-0.9.0/freemind/freemind/modes/mindmapmode/MindMapHTMLWriter.java0000644000000000000000000005772511527433212025064 0ustar rootroot/* * Created on 04.02.2007 * Copyright (C) 2006 Dimitri Polivaev */ package freemind.modes.mindmapmode; import java.awt.Font; import java.io.IOException; import java.io.Writer; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import freemind.main.HtmlTools; import freemind.main.Resources; import freemind.main.Tools; import freemind.modes.MindIcon; class MindMapHTMLWriter { private Writer fileout; private static String el = System.getProperty("line.separator"); private boolean writeFoldingCode; private boolean basedOnHeadings; private boolean exportIcons; MindMapHTMLWriter(Writer fileout) { this.fileout = fileout; exportIcons = false; writeFoldingCode = false; basedOnHeadings = (getProperty("html_export_folding").equals("html_export_based_on_headings")); } private static String convertSpecialChar(char c) { String cvt; // try { // // Create the encoder and decoder for ISO-8859-1 // Charset ansi = Charset.forName("windows-1252"); // CharsetDecoder decoder = ansi.newDecoder(); // // Charset utf8 = Charset.forName("UTF-8"); // CharsetEncoder encoder = utf8.newEncoder(); // // // The new ByteBuffer is ready to be read. // ByteBuffer bb = ByteBuffer.allocate(2); // bb.putChar(c); // CharBuffer cb = decoder.decode(bb); // // cvt = cvt + cb.toString(); // } catch (Exception e) { // //cvt = "CHAR ENC FAILED " + e.getMessage(); // cvt = cvt + "&#" + Character.toString(c) + ";"; // } switch ((int) c) { case 0xe4: cvt = "ä"; break; case 0xf6: cvt = "ö"; break; case 0xfc: cvt = "ü"; break; case 0xc4: cvt = "Ä"; break; case 0xd6: cvt = "Ö"; break; case 0xdc: cvt = "Ü"; break; case 0xdf: cvt = "ß"; break; default: cvt = "&#" + Integer.toString((int) c) + ";"; break; } return cvt; } private static String saveHTML_escapeUnicodeAndSpecialCharacters(String text) { int len = text.length(); StringBuffer result = new StringBuffer(len); int intValue; char myChar; boolean previousSpace = false; boolean spaceOccured = false; for (int i = 0; i < len; ++i) { myChar = text.charAt(i); intValue = (int) text.charAt(i); if (intValue >= 128) { result.append(convertSpecialChar(myChar)); } else { spaceOccured = false; switch (myChar) { case '&': result.append("&"); break; case '<': result.append("<"); break; case '>': result.append(">"); break; case ' ': spaceOccured = true; if (previousSpace) { result.append(" "); } else { result.append(" "); } break; case '\n': result.append("\n
\n"); break; default: result.append(myChar); } previousSpace = spaceOccured; } } return result.toString(); } void saveHTML(List mindMapNodes) throws IOException { fileout.write("" + el + "" + el); writeStyle(); fileout.write(el + "" + el + "" + el); Iterator iterator = mindMapNodes.iterator(); while (iterator.hasNext()) { MindMapNodeModel node = (MindMapNodeModel) iterator.next(); saveHTML(node, "1", 0, /* isRoot */true, true, /* depth */1); } fileout.write("" + el); fileout.write("" + el); fileout.close(); } void saveHTML(MindMapNodeModel rootNodeOfBranch) throws IOException { // When isRoot is true, rootNodeOfBranch will be exported as folded // regardless his isFolded state in the mindmap. // We do all the HTML saving using just ordinary output. String htmlExportFoldingOption = getProperty("html_export_folding"); writeFoldingCode = (htmlExportFoldingOption .equals("html_export_fold_currently_folded") && rootNodeOfBranch .hasFoldedStrictDescendant()) || htmlExportFoldingOption.equals("html_export_fold_all"); exportIcons = Resources.getInstance().getBoolProperty("export_icons_in_html"); fileout.write("" +el + "" + el + "" + el); fileout.write("" + saveHTML_escapeUnicodeAndSpecialCharacters( rootNodeOfBranch.getPlainTextContent().replace('\n', ' ')) + "" + el); writeStyle(); fileout.write(el + "" + el + "" + el); if (writeFoldingCode) { writeBodyWithFolding(rootNodeOfBranch); } else { saveHTML(rootNodeOfBranch, "1", 0, /* isRoot */true, true, /* depth */1); } fileout.write("" + el); fileout.write("" + el); fileout.close(); } private void writeBodyWithFolding(MindMapNodeModel rootNodeOfBranch) throws IOException { writeJavaScript(); fileout .write("All +" + el); fileout .write("All -" + el); // fileout.write("
    "); saveHTML(rootNodeOfBranch, "1", 0, /* isRoot */true, true, /* depth */1); // fileout.write("
"); fileout.write("" + el); } private void writeJavaScript() throws IOException { fileout .write("" + el + "" + el); } private void writeStyle() throws IOException { fileout.write("" + el + ""); } private int saveHTML(MindMapNodeModel model, String parentID, int lastChildNumber, boolean isRoot, boolean treatAsParagraph, int depth) throws IOException { // return lastChildNumber // Not very beautiful solution, but working at least and logical too. boolean createFolding = model.isFolded(); if (getProperty("html_export_folding").equals("html_export_fold_all")) { createFolding = model.hasChildren(); } if (getProperty("html_export_folding").equals("html_export_no_folding") || basedOnHeadings || isRoot) { createFolding = false; } final boolean heading = isHeading(model, depth); if (!treatAsParagraph && !basedOnHeadings) fileout.write("
  • "); else { if (heading){ fileout.write(""); } else if(!hasHtml(model)){ fileout.write("

    "); } } String localParentID = parentID; if (createFolding) { // lastChildNumber = new Integer lastChildNumber.intValue() + 1; // Change value of an integer lastChildNumber++; localParentID = parentID + "_" + lastChildNumber; writeFoldingButtons(localParentID); } String link = model.getLink(); if (link != null) { if (link.endsWith(".mm")) { link += ".html"; } fileout.write("~ "); } String fontStyle = fontStyle(model); if (!fontStyle.equals("")) { fileout.write(""); } if (Resources.getInstance().getBoolProperty("export_icons_in_html")) { writeIcons(model); } writeModelContent(model); if (fontStyle != "") { fileout.write(""); } fileout.write(el); if (link != null) { fileout.write("" + el); } if (heading) { fileout.write("" + el); } // Are the children to be treated as paragraphs? boolean treatChildrenAsParagraph = false; for (ListIterator e = model.childrenUnfolded(); e.hasNext();) { if (((MindMapNodeModel) e.next()).toString().length() > 100) { // TODO: // replace // heuristic // constant treatChildrenAsParagraph = true; break; } } // Write the children // Export based on headings if (getProperty("html_export_folding").equals( "html_export_based_on_headings")) { for (ListIterator e = model.childrenUnfolded(); e.hasNext();) { MindMapNodeModel child = (MindMapNodeModel) e.next(); lastChildNumber = saveHTML(child, parentID, lastChildNumber,/* isRoot= */ false, treatChildrenAsParagraph, depth + 1); } return lastChildNumber; } // Export not based on headings if (model.hasChildren()) { if (getProperty("html_export_folding").equals( "html_export_based_on_headings")) { for (ListIterator e = model.childrenUnfolded(); e.hasNext();) { MindMapNodeModel child = (MindMapNodeModel) e.next(); lastChildNumber = saveHTML(child, parentID, lastChildNumber,/* isRoot= */false, treatChildrenAsParagraph, depth + 1); } } else if (createFolding) { fileout .write("

  • 訳注)一部に未訳箇所があります。翻訳:FreeMind使おう会