FreeMind 0.9.0: The New Features: Difference between revisions
A2zindiajobs (talk | contribs) No edit summary |
m (remove spam) |
||
Line 1: | Line 1: | ||
< | <table><tr> | ||
<td valign=top> | |||
{{Navigation_bar}} | |||
<td> | |||
<td width=600> | |||
A great release is to come. We have many exciting new features: WYSIWYG-Editing for nodes and notes, scripting, filter, attributes and many more. | |||
But all these new features still need a lot of testing and documentation. To start this, please have a look at the newest version [http://freemind.sourceforge.net/testversions/ here] and [http://sourceforge.net/forum/forum.php?thread_id=1568670&forum_id=22101 tell us your opinions]. | |||
Use this wiki page for documenting the new features. | |||
But: Don't use this version for productive maps. It is not stable enough! | |||
* Further warning: If you create a map with Attributes, it will open as a "New Map" with no data in version 0.8. Your data is not lost, just not readable by 0.8. | |||
= Attributes = | |||
== Quick Attribute creation == | |||
* select node | |||
* Edit Attribute: Alt-F9 or, Rt-click>Edit attributes | |||
* type in an Attribute name | |||
* then add a value if desired | |||
* edit with the Attribute Manager later if necessary | |||
== Using Attribute Manager == | |||
* open the attribute manager with attribute icon on toolbar or, Tools>Attribute Manager | |||
Create Attribute | |||
* Click the "Edit" button in the "All Attributes" row | |||
* Type in your Attribute name, then press add | |||
* Repeat to add multiple attributes | |||
* Press "Close" to close the Attribute Edit dialog | |||
* NOTE: This is also the place to delete Attributes | |||
Create Attribute values | |||
* After adding Attributes, you should see them listed under the "Attributes" column heading | |||
* Click on the "Edit" button in the row of your new Attribute and add the values | |||
* type the value name, then press "Add" | |||
* It's a good idea to add a blank value to the list. It helps when assigning attributes later | |||
* Close the Attribute value dialog by pressing the "Close button" | |||
* NOTE: this is the place to delete Attribute values | |||
Every Attribute can have multiple values | |||
* eg. I use an Attribute called "Staff" and the values are the staff person's name | |||
* eg. I use an Attribute called "Priority" and the values are #'s 1 to 5 | |||
== Assign Attributes to nodes == | |||
assigning only a few nodes | |||
* Choose the node, press Alt-F9 or, Rt-Click the node and choose "Edit Attributes" | |||
* To add more attribute per node, use TAB key (if View>Attributes>Show all attributes is selected), or use the following. | |||
* got to: Tools>"Assign attributes..." | |||
* choose "Selected Nodes" or "Visible Nodes" | |||
* from the drop down list, choose the Attribute you want to assign. (Here it helps when there's a blank value. You can assign an Attribute to all nodes needing it, and then set the value later, on a node by node basis) | |||
* press the "Add" button to assign the Attribute to the node/s | |||
* add more than one attribute to a node if necessary | |||
* delete attributes from multiple nodes with this dialog | |||
== Viewing/Hiding Attributes == | |||
to see an icon on nodes with attributes | |||
* Tools>Preferences>Appearance>Show icon for attributes | |||
show all attributes | |||
* Alt-s or, View>Attributes>Show all attributes | |||
show no attributes | |||
* Alt-h or, View>Attributes>Show no attributes | |||
show selected attributes | |||
* in the Attribute Manager, select desired Attributes in the "Selected Visible" column | |||
* then, View>Attributes>Show selected Attributes | |||
optimize the width of the Attribute/value table | |||
* Rt-click on the Attribute and choose optimal width | |||
== User feedback == | |||
Report on potential bugs. With FreeMind 0.9.0 beta 8, | |||
* Duplicated attributes added; when add an attribute to node which already has the attribute, the attribute will be showed as many times as added. However, when deleting the attribute from node, all instances of the attribute would be deleted.--[[User:Yubrshen|yushen]] 02:23, 25 Nov 2006 (PST) | |||
* The key bindings of alt-s and alt-s do not work as expected of showing or hiding attributes.--[[User:Yubrshen|yushen]] 02:23, 25 Nov 2006 (PST) | |||
* Really wish for a feature to only selectively show the attribute of the node in focus. The current options of "show all attributes", "show the selected attributes" all apply to all the nodes visible. With all nodes showing attributes, it occupy too much space. I wish that it only shows all the attributes for the current node being selected, i.e. in focus. This would be often enough for normal use.--[[User:Yubrshen|yushen]] 20:36, 1 Dec 2006 (PST) | |||
* It is not possible to delete an attribute from the List of attributes. If one is created, it lives forever ... | |||
= Filter = | |||
== Create filters to view and print the data more effectively == | |||
click on the little funnel to the left of the zoom size toggles on and off | |||
default values are useful | |||
* no filtering | |||
* Currently Selected Nodes | |||
create filter for one Attribute | |||
* to the right of the filter status, click "Edit" | |||
* in the drop down menu at the top right, select your attribute | |||
* the expression drop changes to "exists" | |||
* press "Add", then "OK" at the bottom | |||
* all nodes with the selected Attribute will be shown | |||
create filter for one Attribute and its value | |||
* after step two above select the second drop down where "exists" is showing | |||
* choose "Is equal to". Your values should now be available in the third drop down | |||
* press "Add", then OK | |||
== use multiple filters at once == | |||
create two filter sets by the method above | |||
select the filter sets you want | |||
* Shift-click for multiple, continuous sets | |||
* Ctrl-click for non-contiguous selection | |||
press the "and" button on the right => a new set is created which combines your selected sets | |||
== filter on an icon == | |||
* add an icon to a node by highlighting the node, click on the icon on the left or Rt-click>Icons | |||
* in the filtering "edit" dialog, choose "Icon" in the drop-down list at the top left, the second drop-down grays out, and the third contains the list of currently used icons | |||
* click "Add" | |||
== user feedback == | |||
Write your feedback on use of filters here. | |||
* when in filtering mode, a node is selected. Then when the filter is removed, the selected node remains selected, yet not in center of screen, a search through the map is required to locate it again. Could the selected node be centered after removing the filter?--[[User:Neanderlander|Neanderlander]] 08:16, 11 Sep 2006 (PDT) | |||
* I find that it freezes up a lot when using folding and unfolding while applying filters. It is, however, a really powerful feature. To complete its power would it be possible to have a way to copy only selected or filtered nodes? Sometimes you want to select these nodes and put them in another application, but when I filter, select all and then copy-paste, I get lots of other nodes included. | |||
* Worked well for me. Especially like the filter on icon - no muss, no fuss. One suggestion: is there any thought being given to saving filters (or did I miss something)? The addition of notes in this version seems to break backward compatibility, so that shouldn't be an issue. -- [[User:RichardForster|RichardForster]]10:40 20 Sep 2006 (EST) | |||
* Great feature. But filtering on an icon ist restricted to "=", no possibility to filter on "is not"? For example if you have "OK" icons on some nodes and want to see all other nodes (= not OK). | |||
= WYSIWYG-Editing for nodes and notes = | |||
Yet to be documented | |||
==== User Feedback ==== | |||
</ | Love this feature, especially the way that the notes export to javascript enabled html. Couple of observations. | ||
* The popup notes in the Javascript export don't seem to work in IE (care factor 0?). | |||
* It would be good to be able to view the note in the main mindmap window, maybe as a popup. | |||
* It would also be helpful if there was some sort of visual indicator of the existence of a popup note in the exported html - at present the note just magically appears as a rollover. | |||
* Don't know if it is due to this feature, but "edit long node" now introduced an extra line feed if the enter key is used (confirm on enter turned off). | |||
--[[User:RichardForster|RichardForster]] 18:04, 19 Sep 2006 (PDT) | |||
I'd like to have the option to collapse the WYSIWYG editing area to free up more screen real-estate. | |||
--[[User:Marko|Marko]] 21:45, 23 Sep 2006 (PDT) | |||
* The WYSIWYG screen estate seems a good place to do all 'richer' content editing: e.g. if freemind would let me edit the multiline text nodes there, and, manage the attributes, i'd find that very usefull. | |||
--[[User:Neanderlander|Neanderlander]] 22:01, 24 Sep 2006 (PDT) | |||
* Some way to change the width of nodes would be great, so free form text can be flowed into thinner columns. Also a way to insert <br> easily without resorting to the html view. | |||
--[[User:pedron|pedron]] 1:02pm, 10 October 2006 (EST) | |||
* In version 0.8 the note attached to a node was very discrete in the sense that it would only show when the mouse is on that node. This new version has many editing features but it's "in your face" (so to speak) until you physically minimize it. I wish there was a way to configure it so that it would act like the previous version while keeping it's editing extras. Or at least have the option of toggling editing toolbar... | |||
--[[User:Cichutki75|Cichutki75]] 8:09pm, 19 October 2006 (GMT) | |||
* In version 0.9 max node width function does not work properly. At least not all nodes for the map created in version 0.8 keep the set width. I did not discover the rule. Some keep some don't. | |||
--[[User:VincentD|VincentD]] 02:30, 9 Nov 2006 (PST) | |||
* Export to Flash does not support Rich Formatted nodes. | |||
--[[User:CautiousChaos|CautiousChaos]] 02:22, 12 Nov 2006 (EST) | |||
* The editing panel is intrusive when it is not needed. A hotkey to open/close it would be helpful. Clicking on the note icon resulting in the panel appearing could also be very helpful. | |||
* It seems that word-wrapping does not work in plain-text mode for nodes, making the node to be of single line extending far too long. I had to change the mode of each node to make it word-wrapping. Only using rich-text mode, the wrapping would work. I wish that word-wrapping would still work as in 0.80. --[[User:Yubrshen|yushen]] 15:03, 5 Dec 2006 (PST) | |||
* It seems that in editing long node, the splitting function would only work with word on different line, while in 0.80, the function works even for words on the same line. --[[User:Yubrshen|yushen]] 15:03, 5 Dec 2006 (PST) | |||
= Scripting via Groovy = | |||
[http://en.wikipedia.org/wiki/Groovy_programming_language Groovy] scripts may be attached to individual nodes in the map. When "evaluate" is selected via the menu or keypress (Alt-F8), all nodes in the map are searched (depth-first) for one or more attributes named "script". If such an attribute is found, the value of the attached attribute is passed to the Groovy engine to execute. | |||
Only nodes are evaluated, which attribute keys start with "script". However, there is nothing preventing a script on one node from acting on other nodes via normal operations (e.g. node.getChildren or similar) as far as I can tell from the code. | |||
=== Assignment vs. Operation === | |||
If the value of the script attribute starts with the equals sign ("="), then the node text will be replaced by the RESULT of the script evaluation. Be careful not to overwrite your nodes! See the example for using the "node.getText()" in an assignment script. | |||
If the value of the script attribute does not begin with the equals sign, then the script will run and may affect the map, but the expression result is not assigned to the node text. | |||
=== Available Operations === | |||
When the Groovy binding is created, two variables are set: | |||
* "c" is set to the MindMapController | |||
* "node" is set to the MindMapNode being evaluated | |||
You will have to examine the FreeMind source code for operations on the interfaces. See the examples for a few operations such as setting the node text, node color and background color. | |||
=== Examples === | |||
I have only played with the engine for five minutes, and spent about the same amount of time on the Groovy home page. The following examples work for me: | |||
'''Prepend the node text with an integer representing the node depth.''' Note that the script starts with '=' so the result is assigned back to the node text. | |||
<nowiki>=node.getNodeLevel() + " " + node.getText()</nowiki> | |||
'''Set the text color of a node:''' | |||
<nowiki>node.setColor(java.awt.Color.RED)</nowiki> | |||
'''Set the background color of a node:''' | |||
<nowiki>node.setBackgroundColor(java.awt.Color.BLUE)</nowiki> | |||
'''Project Manager: Don't do this; use methods of the controller c instead.''' If you manipulate the node model directly, you'll miss the undo and flow control capabilities of FreeMind. Please, consult methods from the interface MindMapActions only. | |||
=== Advanced Examples=== | |||
'''WARNING! I have now played with Groovy for 30 minutes and I am unsure of the side effects to FreeMind of using these examples, as they modify children of a node. - Dave Torok''' | |||
'''Prepend the modified date at the beginning of the node text''' This is an example of using some more Node methods. | |||
<nowiki>=(new java.text.SimpleDateFormat("M/d/yyyy")).format(node.getHistoryInformation().getLastModifiedAt()) + " " + node.getText()</nowiki> | |||
'''Set the color for all children''' This is an example of iteration over child nodes. Also, a call to c.nodeStructureChanged(node) is necessary to force a refresh to paint the new color. | |||
<nowiki> | |||
def i = node.childrenUnfolded(); while (i.hasNext()) { d = i.next(); d.setColor(java.awt.Color.BLUE); }; c.nodeStructureChanged();</nowiki> | |||
'''Swap two CHILD nodes. This works. My goal is to get a foundation for a SORT script, to sort children by alphabet, by created date, etc. until the functionality is added to the software. WARNING WARNING WARNING this is just an example to swap the 2nd and 4th child nodes.''' | |||
<nowiki>def swap (a,b) { | |||
na = node.getChildAt(a); | |||
nb = node.getChildAt(b); | |||
node.remove(a); | |||
node.remove(b - 1); | |||
node.insert(nb,a); | |||
node.insert(na,b); | |||
c.nodeStructureChanged(node); | |||
}; | |||
swap(1,3);</nowiki> | |||
'''Add/Replace today''' | |||
<nowiki> | |||
=nt=node.toString(); pos=nt.indexOf(" / "); return ((pos>=0)?nt.substring(0,pos):nt) + " / " + (new java.text.SimpleDateFormat("yyyy-M-d")).format(new Date()) | |||
</nowiki> | |||
== About Groovy == | |||
For people unfamiliar with Groovy scripting, it's [http://groovy.codehaus.org home page], an [http://www.onjava.com/pub/a/onjava/2004/09/29/groovy.html introduction], a review on [http://ask.slashdot.org/article.pl?sid=06/04/18/2223237 slashdot]. | |||
== How to get started == | |||
# Create an attribute for a node. The attribute must be named "script" | |||
# Create the Groovy script and set as the value of the attribute | |||
# Press Alt-F8 or select "Evaluate" from the Tools menu. | |||
= TaskJuggler Integration = | |||
[http://taskjuggler.org/ TaskJuggler] is a opensource project management tool for linux. It covers the complete spectrum of project management tasks from the first idea to the completion of the project. It assists you during project scoping, resource assignment, cost and revenue planing, risk and communication management. | |||
=== Idea === | |||
The idea is to have special task and resource nodes on the mindmap. These node's attributes contain information needed for generating taskjuggler include files through xslt transformation. You can find more info about these attribs in [http://taskjuggler.org/manual-2.3.0/c1376.html TaskJuggler documentation] | |||
Tasks are defined as subnodes of TASKS node, similarly resources are defined as subnodes of RESOURCES node. | |||
=== Project file (TJP) === | |||
We generate only includes with FreeMind, so we must write simple TaskJuggler main project file: | |||
<pre>project simple "Simple Project" "1.0" 2005-06-06 2005-06-26 | |||
taskreport "Gantt" { | |||
columns start {title "Start"},name, end {title "End"}, duration, chart | |||
#loadunit days | |||
#hideresource 1 | |||
} | |||
include "example.resources.tji" | |||
include "example.tasks.tji" | |||
taskreport "My Tasks"</pre> | |||
=== Include Files (TJI) === | |||
Mindmap with defined TASKS and RESOURCES nodes can look like this: | |||
{| cellpadding="20" cellspacing="0" border="0" | |||
|[http://bazyl.koprin.com.pl/download/freemind/tji_example/example_freemind.png http://bazyl.koprin.com.pl/download/freemind/tji_example/example_freemind_maly.png] | |||
|} | |||
We can export include files which we have defined in our project file directly from FreeMind mindmap: | |||
example.resources.tji - from RESOURCES node (File->Export->Resources from RESOURCES node to TJI file..) | |||
example.tasks.tji - from TASKS node (File->Export->Task from TASKS node to TJI file..) | |||
In TaskJuggler our project will look like this: | |||
{| cellpadding="20" cellspacing="0" border="0" | |||
|[http://bazyl.koprin.com.pl/download/freemind/tji_example/example_taskjuggler.png http://bazyl.koprin.com.pl/download/freemind/tji_example/example_taskjuggler_maly.png] | |||
|} | |||
=== Download === | |||
[http://bazyl.koprin.com.pl/download/freemind/tji_example/example.zip Here] you can download full example. | |||
=== Freemind version info === | |||
You have to compile FreeMind from CVS to use this functionality (FreeMind ver. 0.9.0 beta 9, CVS tag: fm_060405_integration) | |||
= The rest new features = | |||
To Do | |||
*) Moving a branch from one side of the root to the other - the text and child branches should "flip" to enable this |
Revision as of 13:34, 31 December 2006
A great release is to come. We have many exciting new features: WYSIWYG-Editing for nodes and notes, scripting, filter, attributes and many more. But all these new features still need a lot of testing and documentation. To start this, please have a look at the newest version here and tell us your opinions. Use this wiki page for documenting the new features. But: Don't use this version for productive maps. It is not stable enough!
AttributesQuick Attribute creation
Using Attribute Manager
Create Attribute
Create Attribute values
Every Attribute can have multiple values
Assign Attributes to nodesassigning only a few nodes
Viewing/Hiding Attributesto see an icon on nodes with attributes
show all attributes
show no attributes
show selected attributes
optimize the width of the Attribute/value table
User feedbackReport on potential bugs. With FreeMind 0.9.0 beta 8,
FilterCreate filters to view and print the data more effectivelyclick on the little funnel to the left of the zoom size toggles on and off default values are useful
create filter for one Attribute
create filter for one Attribute and its value
use multiple filters at oncecreate two filter sets by the method above select the filter sets you want
press the "and" button on the right => a new set is created which combines your selected sets filter on an icon
user feedbackWrite your feedback on use of filters here.
WYSIWYG-Editing for nodes and notesYet to be documented User FeedbackLove this feature, especially the way that the notes export to javascript enabled html. Couple of observations.
--RichardForster 18:04, 19 Sep 2006 (PDT) I'd like to have the option to collapse the WYSIWYG editing area to free up more screen real-estate. --Marko 21:45, 23 Sep 2006 (PDT)
--Neanderlander 22:01, 24 Sep 2006 (PDT)
--pedron 1:02pm, 10 October 2006 (EST)
--Cichutki75 8:09pm, 19 October 2006 (GMT)
--VincentD 02:30, 9 Nov 2006 (PST)
Scripting via GroovyGroovy scripts may be attached to individual nodes in the map. When "evaluate" is selected via the menu or keypress (Alt-F8), all nodes in the map are searched (depth-first) for one or more attributes named "script". If such an attribute is found, the value of the attached attribute is passed to the Groovy engine to execute. Only nodes are evaluated, which attribute keys start with "script". However, there is nothing preventing a script on one node from acting on other nodes via normal operations (e.g. node.getChildren or similar) as far as I can tell from the code. Assignment vs. OperationIf the value of the script attribute starts with the equals sign ("="), then the node text will be replaced by the RESULT of the script evaluation. Be careful not to overwrite your nodes! See the example for using the "node.getText()" in an assignment script. If the value of the script attribute does not begin with the equals sign, then the script will run and may affect the map, but the expression result is not assigned to the node text. Available OperationsWhen the Groovy binding is created, two variables are set:
You will have to examine the FreeMind source code for operations on the interfaces. See the examples for a few operations such as setting the node text, node color and background color. ExamplesI have only played with the engine for five minutes, and spent about the same amount of time on the Groovy home page. The following examples work for me: Prepend the node text with an integer representing the node depth. Note that the script starts with '=' so the result is assigned back to the node text. =node.getNodeLevel() + " " + node.getText() Set the text color of a node: node.setColor(java.awt.Color.RED) Set the background color of a node: node.setBackgroundColor(java.awt.Color.BLUE) Project Manager: Don't do this; use methods of the controller c instead. If you manipulate the node model directly, you'll miss the undo and flow control capabilities of FreeMind. Please, consult methods from the interface MindMapActions only. Advanced ExamplesWARNING! I have now played with Groovy for 30 minutes and I am unsure of the side effects to FreeMind of using these examples, as they modify children of a node. - Dave Torok Prepend the modified date at the beginning of the node text This is an example of using some more Node methods. =(new java.text.SimpleDateFormat("M/d/yyyy")).format(node.getHistoryInformation().getLastModifiedAt()) + " " + node.getText() Set the color for all children This is an example of iteration over child nodes. Also, a call to c.nodeStructureChanged(node) is necessary to force a refresh to paint the new color. def i = node.childrenUnfolded(); while (i.hasNext()) { d = i.next(); d.setColor(java.awt.Color.BLUE); }; c.nodeStructureChanged();
def swap (a,b) { na = node.getChildAt(a); nb = node.getChildAt(b); node.remove(a); node.remove(b - 1); node.insert(nb,a); node.insert(na,b); c.nodeStructureChanged(node); }; swap(1,3);
=nt=node.toString(); pos=nt.indexOf(" / "); return ((pos>=0)?nt.substring(0,pos):nt) + " / " + (new java.text.SimpleDateFormat("yyyy-M-d")).format(new Date())
About GroovyFor people unfamiliar with Groovy scripting, it's home page, an introduction, a review on slashdot. How to get started
TaskJuggler IntegrationTaskJuggler is a opensource project management tool for linux. It covers the complete spectrum of project management tasks from the first idea to the completion of the project. It assists you during project scoping, resource assignment, cost and revenue planing, risk and communication management. IdeaThe idea is to have special task and resource nodes on the mindmap. These node's attributes contain information needed for generating taskjuggler include files through xslt transformation. You can find more info about these attribs in TaskJuggler documentation Tasks are defined as subnodes of TASKS node, similarly resources are defined as subnodes of RESOURCES node. Project file (TJP)We generate only includes with FreeMind, so we must write simple TaskJuggler main project file: project simple "Simple Project" "1.0" 2005-06-06 2005-06-26 taskreport "Gantt" { columns start {title "Start"},name, end {title "End"}, duration, chart #loadunit days #hideresource 1 } include "example.resources.tji" include "example.tasks.tji" taskreport "My Tasks" Include Files (TJI)Mindmap with defined TASKS and RESOURCES nodes can look like this: We can export include files which we have defined in our project file directly from FreeMind mindmap: example.resources.tji - from RESOURCES node (File->Export->Resources from RESOURCES node to TJI file..) example.tasks.tji - from TASKS node (File->Export->Task from TASKS node to TJI file..) In TaskJuggler our project will look like this: DownloadHere you can download full example. Freemind version infoYou have to compile FreeMind from CVS to use this functionality (FreeMind ver. 0.9.0 beta 9, CVS tag: fm_060405_integration) The rest new featuresTo Do
|