Tab Strip, Menu & Tool Bars

The main content panel in Figure Composer's application window manages the set of currently open figures. While it looks much like a standard tabbed pane, in reality it is not. A narrow tab strip lies along the top of a panel containing the figure canvas, figure navigator, and property editor. The currently selected figure is loaded for display into these three components, and the currently selected tab -- which is highlighted by a steel blue gradient background -- displays the file name for that figure (if the figure has never been saved, the tab title reads "<New figure>" instead). Whenever you open a figure, a new tab is appended to the strip to represent that figure; the tab is selected, and the figure is loaded into the canvas, navigator, and property editor components. Similarly, when you click on an unselected tab, the currently displayed figure is unloaded, the clicked tab is selected, and the corresponding figure is loaded for display.

Figure Composer lets you open as many figures as you want. Once there are more open figure tabs than will fit horizontally in a single row along the tab strip, a small black downward arrow will appear after the last visible tab. Click on this arrow to raise a menu listing the file names for any hidden figure tabs. If you select any item from this "hidden tabs" menu, that tab appears in the tab strip and the corresponding figure is displayed; other tabs, of course, will be hidden. Any single tab may be closed by clicking the small "x" button that appear near the tab's right edge; if the figure has any unsaved changes, you will be prompted to save the figure before it is closed. Alternatively, right-click anywhere along the strip to raise a context menu that lets you close various subsets of the open tabs. This context menu is the same as the File|Close submenu -- see its description below.

You can also rearrange the order of the visible tabs in the strip. Simply drag any tab from its current location and drop it over a different spot along the strip; the drag gesture is animated, so it's fairly intuitive. If there are hidden tabs at the front of the list, drag past the left edge of the strip to scroll those hidden tabs into view; likewise, if there are hidden tabs at the tail end, drag past the strip's right edge to bring them into view.

Figure Composer's menu bar includes File, Edit and View menus. Many of the menu commands are also accessible via a toolbar docked along the top edge of the application frame window. The File menu includes commands that operate on an entire FypML figure file, as well as the typical "About", "Preferences", and "Exit" commands. Edit menu commands are used to insert, copy, paste, cut and delete graphic objects in the currently displayed figure. Finally, the View menu collects those actions that affect the current state of the Figure Canvas (zoom mode, display mode, rulers) and the visibility of selected components of the user interface. Selected commands in the Edit and View menus may also be invoked through a context menu raised when you right-click somewhere on the canvas.

A menu item (and its related toolbar button, if there is one) is disabled if the corresponding command action is not currently possible. If you're unsure what happens if you click a particular toolbar button or select a menu item, simply hold the mouse over that button or menu item and a brief explanatory tooltip will appear. The application toolbar can be configured in one of three states via the View|Toolbar menu: Hidden (if you prefer to use the menus instead), Compact (icons only; the default), or Full (labelled icons). Figure Composer remembers the toolbar state so that you do not have to set it each time you start the application.

Listed below are all of the action commands available in the File, Edit or View menus. If there is a keyboard shortcut for a particular menu item, that shortcut appears in parentheses after the item name. If the action is exposed as a push button or check box on the toolbar, the button's icon is also included.

Mac OS X specific

To conform to Apple's user interface guidelines, the menu bar is somewhat different in appearance on Mac OS X than what is described here. It is located along the top of the screen rather than inside the application window, and the Command key (rather than the Ctrl key) is used as the modifier key for most menu keyboard shortcuts. In addition, Figure Composer supports the Mac OS X application menu ("Apple" menu) items About, Preferences, and Quit; as a consequence, the equivalent commands File|About DataNav, File|Preferences, and File|Exit are omitted from Figure Composer's own menu bar when running on the Mac platform.

The File Menu

File|About DataNav : Raises a standard "about this application" dialog. You can check the application version number here.

File|Preferences : Raises a modal dialog by which the user can adjust a variety of application settings, including the screen resolution ("dots per inch") -- which affects the screen size of rendered figures -- and default values for a variety of FypML graphic node properties.

File|Exit : Quits the application. 

File|New (Ctrl-N) : Create a new figure. Figure Composer opens a new tab with a 16x16 figure icon labelled <New figure> and makes it the current tab. The new figure is completely empty, so the Figure Canvas will be blank.

File|Open (Ctrl-O): Open an existing FypML figure file, or a Matlab FIG file. This command raises a custom "file chooser" dialog by which the user can browse the host file system for FypML or Matlab figure files (extensions .fyp or .fig, respectively). Using the file chooser is straightforward, except that it does not include a tree-like representation of the file system hierarchy. To switch to a parent directory, use the dropdown list of the combo box that displays the current directory. The dropdown list shows the current directory's immediate parent first, then its parent, and so on, down to a file system root. Also, to open a subdirectory, double-click on the appropriate item in the list immediately below the current directory combo box. The dialog includes a thumbnail preview of the selected file's contents.

Any number of figures may be open at the same time in Figure Composer (but expect performance to degrade if too many are open!). A narrow tab strip control along the top of the main content panel, immediately above the Figure Canvas, displays a tab for each open figure (see the screenshot below). Once you confirm a selection in the file chooser dialog, Figure Composer opens a new tab on the tab strip, displaying the name of the corresponding file along with a FypML figure icon or a Matlab icon, depending on which type of figure file was selected. The new tab becomes the current tab, and the FypML figure loaded from the .fyp file (or imported from the Matlab FIG file) is displayed in the Figure Canvas. The source file is read and processed on a background thread to avoid "blocking" the user interface. If the file is very large/complex, or if the host machine is relatively slow, there may be a noticeable delay before the figure appears. In this case, the canvas will be blank, and the corresponding tab will read "LOADING..." as a cue that the figure is being loaded in the background.

[Note that if you happen to select a file that is already open in Figure Composer, the application does NOT open another copy of that figure; instead, it simply switches to the tab displaying the open figure.]

While the tab strip gives the main content area the appearance of a traditional tabbed pane, with a separate tab page for each figure, there are no such tab pages in reality. The tab strip lets the user choose which of the currently open figures is selected for display and editing within Figure Composer. Simply click on a tab to display the corresponding figure, i.e., to bring it to the front. To close the figure, click on the tab's "close" button 

 ; if the figure has been modified -- in which case an asterisk (*) precedes the file name on the tab -- , you will be prompted to save the changes first.

While you can open compatible Matlab FIG files in Figure Composer, you cannot make changes to the figure and save it back to the FIG file. For this reason, when you initially open a FIG file, Figure Composer will mark it as modified to emphasize that the figure needs to be saved to the FypML file format. When you elect to save the figure, Figure Composer will raise the "Save as" dialog initialized to save the file in the same folder and with the same name as the original Matlab FIG file, but with the .fig extension replaced by .fyp. Once saved, the file name and icon are updated accordingly in the figure's tab.

The ability to open compatible Matlab FIG files was first formally introduced in Version 4.3.0. This feature is the most convenient and powerful conduit for getting data prepared and analyzed in Matlab into a Figure Composer FypML figure. Of course, not every Matlab figure can be converted to FypML, since Matlab offers a myriad of specialized plots and other features not supported in FypML. If a FIG file cannot be converted, then it will fail to load in Figure Composer. For a further discussion on translating Matlab figures to FypML, see the description of the utility function matfig2fyp(), which performs the same conversion on an open figure in the Matlab environment.

File|Open Recent : This command raises a pop-up menu displaying the names of the twenty FypML figure files you have most recently opened (if a file cannot be found, it is automatically removed from the list). Matlab FIG files are not included in this list. The chosen figure is "loaded" into a new tab as described for the File|Open command.

File|Close : This submenu is useful when you have a lot of open figure tabs and you want to close a bunch of them in one go. It includes eight different menu items that select different subsets of tabs to close:

If any tab to be closed contains a modified figure, Figure Composer will ask you whether or not you want to save the changes prior to closing. You'll have the options to "Save all" or "Save None" -- so that you don't have to repeat yourself for each individual figure that needs to be saved. Of course, if you choose to save any modified figure that has never been saved to file, the application will ask you for a destination path.

File|Revert : Discard all changes to the currently selected figure and restore it to its last saved state. This is merely a convenient shortcut for closing a figure without saving changes, and then reopening it.

File|Save (Ctrl-S), Save as... (Ctrl-Shift-S) : Once you're done making changes to the current figure, save those changes via the Save command, or use Save as... to save the updated figure to a new file. If the current figure has never been saved, the Save command has the same effect as Save as. While the save operation occurs on a background thread, the user interface is blocked by a modal dialog; if the operation should fail, this dialog will display an error message for the user. For most figures you won't even notice this dialog because the save operation takes much less than a second.

File|Inject Data : (as of version 4.4.0) This command lets you copy raw data sets from one figure and paste them into another. First select the tab displaying the figure into which you want to paste the data, then select Inject Data from the File menu. Using the chooser dialog, find the "source" figure file -- it can be a FypML figure or a Matlab FIG file. A new dialog replaces the chooser, as shown in the screenshot below. The source figure appears in the left-hand canvas; the destination figure, on the right.

Observe that a data presentation node is highlighted by a translucent blue rectangle in each figure. The title of that presentation node, plus the ID and data format of the underlying raw data set, are listed beneath the corresponding figure canvas. You can use the mouse to highlight a different data node in each figure. However, if the presentation nodes overlap significantly, you may prefer to use the green arrow buttons to scroll through the nodes (only data presentation nodes can be highlighted, since the focus here is on data).

Once you've selected the desired source and target nodes in each figure, press the Inject >> button to inject the underlying raw data set from the presentation node highlighted in the source figure into the target node in the destination figure. The destination figure will be redrawn to reflect the change. Remember that what you're copying and pasting is the underlying raw data set, NOT the presentation node itself. Thus, you will not change how the data is rendered in the target figure -- except to the extent that the raw data itself has changed.

Note that the Inject button will be disabled if the target presentation node does not support the format of the source data set (you can't inject raster1d data into a Heat Map node, for instance).

Repeat these steps to inject all of the data you need. If you need to inject data located in several different figure files, simply click the Change... button to change the source figure file. Once you're satisfied with your revised figure, click OK to save the changes and extinguish the dialog. Alternatively, you can Start Over or Cancel if you're not happy with the end result.

Use case. The File|Inject Data dialog may not be very useful when you're constructing a new figure from scratch. However, suppose you've spent several hours designing a complex, carefully formatted figure displaying many different data sets. Suppose further that this finished figure is based on the content of several rough-and-ready Matlab figures that your analysis code generates automatically. Then you realize you made a mistake in your analysis that slightly alters much of the data. You adjust your code and regenerate the rough Matlab figures. In this case, rather than rebuilding the publication-ready FypML figure from scratch, use File|Inject Data to copy and paste the revised raw data from the Matlab source figures into the existing FypML figure.

If you only need to inject one or two data sets, then it may be just as easy to open both source and destination figures in Figure Composer and use the Extract/Inject raw data commands from the Edit menu. These are discussed later in the chapter.

File|Export..., Export all to EPS/PDF/JPEG/PNG: Use the File|Export... command to export the currently selected figure as an image (JPEG or PNG format), an Encapsulated Postscript (EPS) document, or a Portable Document Format (PDF) file. EPS and PDF files can be imported into other desktop publishing applications, such as the popular Adobe Illustrator™. If you are working with multiple figures at once and would like to export all of them in one go, use one of the File|Export All  commands instead. The image file formats are exported at a relatively high resolution of 300 dpi to preserve detail in the rasterized image (a future release may give the user some control over the exported image resolution). The export operation happens on a background thread, but the user interface is again blocked by a modal progress dialog; again, you may not notice the dialog if the export does not take very long.

Figure Composer employs a custom Postscript generator to export a figure as an EPS file, rather than rely on Java native services that vectorize Java2D graphics into Postscript form. Figure Composer-generated EPS files use some Level 2 language features and conform to Adobe's Document Structuring Conventions, 3.0.

Authors should be mindful that the EPS file generated by the Export command does not replicate the display fonts used to render the figure onscreen. Postscript font support is a difficult issue, given the plethora of screen and printer fonts in existence. All TrueType fonts on the system may be downloaded onto Postscript printers that are Level 2 or higher. However, font downloading is an arduous undertaking. To avoid this complication, all DataNav graphic nodes specify both a screen font and a Postscript font. The set of supported Postscript fonts is limited to Latin typefaces from the well-known and well-supported "Standard 35" set: Times, Courier, Helvetica, Helvetica Narrow, Avant Garde, Bookman, New Century Schoolbook, and Palatino. DataNav's Postscript generator assumes that all of these font families will be available -- in plain, bold, italic, and bold-italic faces -- on any Postscript interpreter to which the Postscript document is sent. By and large, this is a safe assumption for modern-day printers (and for applications that can read a Postscript document, like Adobe Illustrator). However, the "Standard 35" is not a requirement for any Postscript device, so it is always possible that a DataNav-generated PS file will not print or import properly. 

Unicode character support is another thorny issue. A Postscript font is limited to 255 characters at any one time, although the glyphs to which the character codes 0-255 map can be changed by altering the font's encoding vector. Even with re-encoding, the number of unique glyphs supported by the common Postscript fonts is much smaller than the set of glyphs supported onscreen. We've found that Adobe's pervasive Postscript 5 driver avoids the problem of font downloading and character support by rendering characters via character paths, consulting the font file for the necessary information. This again is beyond the scope of the DataNav suite, and it has the added disadvantage of creating bloated Postscript files. The approach taken in DataNav is to restrict the allowed set of Unicode characters to a portion of two common character sets supported in most Postscript environments: the Standard Latin and Symbol character sets. DataNav-generated PS uses composite fonts (a Level 2 language feature) to cover all the possible characters in these sets. 

Similar issues apply when exporting to PDF. Figure Composer relies on the iText PDF library to export figures to the PDF format. Unlike PS, the exported PDF file will embed the host fonts used to render any text in the figure, so long as the font file is licensed as embeddable. Thus, there's a better chance that the exported PDF will exactly replicate the onscreen figure than the exported PS file. However, If the host font file is not embeddable or cannot be parsed by the iText library, then one of the standard 14 PDF Type 1 fonts (Courier + style variants, Times + style variant, Helvetica + style variants, Symbol) will be substituted for the problem font. Similarly, if the host font does not have a glyph for a given Unicode character in FC's supported character set, then that character will be rendered in one of the built-in fonts. (Note that iText supports most TrueType and OpenType fonts, plus Adobe Type 1 and Type 3 fonts. However, it cannot handle all fonts, particularly on Mac OS X.)

Exporting figures with translucent color

As of Version 5.0.2, Figure Composer supports the use of translucent colors in figures. For example, translucency is particularly useful when two overlapping histograms appear in the same graph. Translucent colors can also be applied to error band fills, symbols, and many other aspects of a figure.

However, it is important to remember that translucency is NOT supported in the Postscript (PS) document format. When FC exports a figure to Postscript, any translucent colors will be mapped to their opaque counterparts.

Therefore, if you need to import a FypML figure into an application like Adobe Illustrator, you must export the figure in Portable Document Format (PDF), which does preserve translucency.

File|Page Setup... (Ctrl-Shift-P) : This command raises a custom Page Setup dialog, as shown in the screenshot. At the top is a "thumbnail" canvas in which the currently selected figure is rendered as it will appear on the printed page. Margins are grayed out. As the user changes the paper size, orientation, and margins, the thumbnail preview is updated to reflect how the figure will appear on the newly formatted page. Figure Composer maintains the notion of a current printer. At start-up, this will initially be the user's default printer. Assuming that Java printing services are working well on the host platform, the program constructs a list of all installed printers on the system. The Printer combo box displays the name of the currently selected printer resource. It appears in the Page Setup dialog because it is possible that different printers may support different paper sizes. To choose a different target printer from the list of available printers, simply make a selection from the combo box's dropdown list; your selection immediately becomes the "current printer" for all future printing jobs. Note that there may be a sluggish response when you switch printers, as the print service queries the just-selected printer for information. 

The application also maintains the notion of a current page format, which is reflected in the remaining controls on the Page Setup dialog. The page format is NOT part of the description of a FypML figure; a figure is always positioned relative to the bottom-left corner of the "printable rectangle" (i.e., inside the margins) on the page. At start-up, the default format is an 8.5-by-11 page in portrait landscape, with 0.5-in margins all around. To change the paper size, choose from a list of available media in the dropdown list of the Size combo box. This list will include only those media supported by the current target printer. Of course, the user is responsible for ensuring that the appropriate paper has been loaded into the printer; there's no guarantee that the native platform will notify Java printing services when a print job "hangs" because the printer lacks the required paper! 

Once you've selected the paper size, use the pair of mutually exclusive radio buttons to choose between Portrait or Landscape orientation. Then adjust the margins with the four edit controls near the bottom of the dialog. Once you are satisfied with the new page layout, click the OK button to save it. If the Figure Canvas is in print-preview display mode, its content will be repainted in accordance with the new page format. 

Note

Figure Composer constructs the list of available printers at startup and does not update it dynamically as printers are added or removed by the operating system. If you add a printer while the application is running, you will need to restart it in order to access the new printer

File|Print... (Ctrl-P), Print all... : Once you've adjusted the page layout as desired, select the File|Print... command to print the figure (if this menu item is disabled, then no print services were found on your computer when Figure Composer started). A simple print dialog lets you change the target printer and start the print job. 

The Name combo box reflects the name of the current printer; to change it, simply make a selection from the box's drop-down list. Below the combo box are two status indicators. If the Accepting jobs label is checked, then the selected printer is online and accepting print jobs. Take this indicator with a grain of salt -- it is not an iron-clad guarantee that the printer is really working! If the Postscript-compatible label is checked, then the print service can process Postscript page descriptions. This does not necessarily mean that the printer itself can process Postscript; it could be that the print service can transform Postscript code to a format (PCL, raster, etc.) the device can understand.  In any case, when the target printer is Postscript-compatible, the checkbox Use native Java2D->PS converter? is enabled. If checked, the program will deliver the printed page(s) to the underlying print service as Java2D graphics, relying on the host operating system to convert these graphics to Postscript code. Results may vary with operating system, target printer, and so on. In our experience, the native conversion from Java2D to Postscript results in large (and slow) print jobs, particularly if there's a lot of text in the output. [Technically, this is because each character glyph is rendered individually as a complex closed path, rather than downloading the required font resource to the target printer and using that font directly.] On the other hand, text content in the printed output will more faithfully reflect what you see on screen ("what you see is what you get"). 

Alternatively, if the box is unchecked (the default), the application generates its own custom Postscript page descriptions, which (as mentioned earlier) are more compact and print much faster at the expense of accurate text reproduction. If you prefer the smaller, faster Figure Composer-generated PS output but want printouts to reflect what you see on the screen as accurately as possible, be sure to use only screen fonts that match the PS fonts supported by the application's Postscript generator (Times, Courier, Helvetica, Helvetica Narrow, AvantGarde, Bookman, Palatino, and New Century Schoolbook). 

To initiate the print job, press the OK button. Although the job is prepared and queued in a background thread, a modal "progress dialog" blocks the GUI and displays progress messages as the print job proceeds. Typical status messages include "Starting print job...", "Building page description...", and "Sending print data...." If the job completes successfully, the progress dialog disappears; if the job failed, dismiss the dialog at your leisure, after reading the error message displayed therein. While the print job is in progress, the dialog includes a Cancel button; if the job gets "stuck" for whatever reason, you may be able to cancel it by clicking this button. Whether or not the job is successfully removed from the print service's queue likely depends upon how well the native platform supports Java printing. However, hitting the Cancel button should at least kill the background thread and extinguish the progress dialog so that you may resume normal GUI interactions. 

The Print command only prints the currently selected figure. If you'd like to print all open figures in one go, use the Print all command instead. This command will send a print job to the target printer for each open figure; it can be a time-saver if you routinely work with multiple figures and want to print all of them.

The Edit Menu

Edit|Insert : This menu item raises a sub-menu listing all the types of FypML graphic objects that may be added to a figure. The toolbar includes a corresponding button for each type of object, and most have a keyboard shortcut. The "insert object" commands are organized into three groups, and there are submenus for the 2D and 3D groups:

Each of these "insert graphic" menu commands will create a new instance of the relevant FypML node (with default property values) and append it to the child list of the currently selected node. If that is not possible because the selected node does not allow children, Figure Composer will instead insert it as a sibling of the selected node, just before it in the parent's child list. The Figure Canvas and Figure Navigator are updated to show the newly inserted node, which is also selected so that you can immediately view and edit its definition in the Property Editor.

Each "insert graphic" command is enabled only if it corresponds to a node type that can be added as a child or sibling of the currently selected node. For example, the figure node cannot "parent" a trace node; thus, if the selection is on the root figure node, the Edit|Insert>2D>Trace command is disabled. If the new node is valid both as a child or as a sibling of the selected node, then Figure Composer will raise a dialog to ask you where it should be inserted. If there is no ambiguity (for example, a trace node can only appear as the child of a graph), then the dialog does not appear.

None of the "insert graphic" commands are enabled if multiple nodes are currently selected in the figure.

Insert bar plot
Insert scatter plot

Edit|Copy (Ctrl-C), Cut (Ctrl-X), Paste (Ctrl-V), Delete : These common edit operations apply to the currently selected node in the figure. The Copy operation puts an independent copy of that node in an internal "graphic object clipboard". The Cut operation does the same, then removes the selected node from the figure; Delete removes the selected node without making a copy. The Paste operation makes a copy of the FypML graphic object in the clipboard and inserts it as a child or sibling of the current selected node; the operation is enabled only if that insertion is possible. The tooltip for the Paste menu item or toolbar button will indicate the type of node currently in the object clipboard.

The many text field widgets in the Property Editor support these common operations as well. When the keyboard focus is on a text field, then the keyboard shortcuts are "intercepted" by that field -- which might cause some confusion. Therefore, whenever the user puts the focus on a text control, Figure Composer disables the menu items and corresponding toolbar buttons for Edit|Copy, Cut, Paste, Delete.

Multi-node copy/cut, and paste. It is possible to copy or cut and paste a multiple-object selection in one command. Simply select the nodes of interest in the figure, and choose Edit|Copy or Edit|Cut. All of the selected nodes are cloned, and the list of copied nodes are placed in the graphic object clipboard. Observe that the Edit|Paste command's tooltip is modified to reflect the fact that the clipboard currently hold a list of two or more nodes instead of a single node: "Paste up to N nodes from clipboard." The paste action is also slightly different in the multi-node case. If you select a target parent node in the current figure or another figure and choose Edit|Paste (the command is never enabled when multiple nodes are selected), then all of the nodes in the clipboard will be inserted as children of the selected node, NOT as siblings. If any node in the clipboard cannot be added as a child of the selected node, it is ignored.

Edit|Select like elements (Ctrl-A) : This is a convenience command that helps you quickly select all elements in the figure that are like the currently selected element. For example, suppose your figure has 8 graphs and you want to make the X-axis range the same for all of them. Simply select the X-axis on one of the graphs and hit Ctrl-A to select the rest.

Edit|Align : Use the commands in this submenu to align two or more objects in the figure. Obviously, the alignment commands are enabled only when at least two relocatable nodes are selected in the figure. The following objects are all relocatable: graphs, text labels, images, text boxes, shapes, line segments, calibration bars, and graph legends. Alignment operations are always defined with respect to the current anchor node in the selection. This node is distinguished from the others by a bright blue outline in both the Figure Navigator and the Figure Canvas. There are six alignment options:

The objects are typically aligned by updating the X- or Y-coordinate of their current location appropriately; the coordinate's unit of measure is preserved.  In the case of a label node, the label's horizontal or vertical text alignment may also be changed.

Like all other multi-node operations, the alignment commands can be undone and redone as a single, atomic operation.

Hint

If you want to center several objects within the figure, or align them all along one edge of the figure, simply include the figure node in the selection and make it the anchor node. The figure itself won't be affected by the alignment operation, because it cannot be repositioned -- it is the container for all other graphic nodes!

Edit|Undo (Ctrl-Z), Redo (Ctrl-Shift-Z) : Almost any change you make in Figure Composer can be undone and subsequently reapplied by invoking these commands -- from simple property changes, to graphic object insertions and deletions, to changes in the content of a data set. If you hover the mouse over the Undo menu item or toolbar button, a tooltip will appear that describes the action that will be taken to undo the most recent change made in the current figure. Similarly, the tooltip for the Redo button will describe the action taken to reapply the last change that was undone. 

Figure Composer maintains a private edit history for each open figure. A figure's edit history can be up to 30 operations long; once the history is full, the first (oldest) entry is discarded each time a new change is posted. Also, any undone changes at the end of the history must be discarded when a new change is posted; thus, the Redo command is always disabled after you make a change to the figure that does not involve Undo or Redo. Whenever a change is made that is irreversible, or if an Undo or Redo action should fail for some reason, the edit history is wiped clean, and both Undo and Redo commands are disabled.

Edit|Extract raw data (Ctrl-1), Inject raw data (Ctrl-2) : (as of version 4.4.0) Use these commands to extract and copy the raw data set backing a data presentation node in one figure and then inject that data set into a different presentation node in the same figure, or some other figure. These commands only work with the raw data set, NOT the data presentation node "container" that defines how the data is rendered. Thus, they offer a means to copy data from one figure to another without changing the appearance of the data in the target figure.

Use case. Since the Matlab FIG-to-FypML import feature was introduced in version 4.2.3, Matlab users have found that an easy way to get their data into Figure Composer is to generate a Matlab figure first, then import the FIG file directly in FC. However, a figure created this way is typically "rough around the edges", not suitable for publication. You may spend an hour or two refining a figure's appearance, and you might use data located in several different Matlab-generated source figures. If you have to later revise the data, you will not want to go through the laborious process of rebuilding the finished figure again. Instead, use the Extract/Inject raw data commands to inject the revised data from your updated source figures into the original publication-ready figure. If you have to inject many data sets from several different sources, you may prefer to use the File|Inject Data command, discussed earlier in this chapter.

Edit|Copy styling (Ctrl-3), Paste styling (Ctrl-4) : (as of version 4.4.1) Like Extract/Inject raw data, this pair of commands is essentially a specialized copy and paste. In this case, rather than copying and pasting an entire node or only its raw data, these commands copy and paste only the set of properties that govern a node's appearance -- the node's style set. The generic text- and draw-related styles (font, font size, stroke width, etcetera) are part of a node's style set, as are any node type-specific attributes that would be reasonably applied to similar nodes to achieve a "consistent" look (for example, the display mode and marker symbol characteristics of a trace node). Any property that represents or is related to the specific content, location, or dimensions of the node are generally NOT included in the style set. The Copy styling command is disabled if the currently selected node does not support style sets. The Paste styling command will be disabled if there is no style set to apply, or if applying that style set to the currently selected node(s) would not change it in any way.

Note that the Paste styling command works even if multiple objects are selected in the figure -- so you can make the same styling changes to multiple nodes in one go; and if you don't like the result, you can simply Undo it! 

Use case. Your figure contains six graphs of similar data, and you want to change the color, stroke width, and marker symbols used to render a trace in each of the six plots. Rather than editing each and every trace node separately, you make the necessary changes on one node. Then copy its styling, multi-select the other five traces, and apply the copied style set to all of those traces at once. The rendered appearance of the traces are updated without affecting the trace data.

*** As of V4.7.0, the style palette has been removed. The below description of the style palette dialog will be removed from the online guide in the near future.  ***

Figure Composer maintains a history of the graphic node style sets you've copied most recently via the Copy styling command. This collection, called the style palette, is up to 20 entries deep and is preserved in your local workspace directory between application sessions. To view the current state of your style palette, select the Style Palette item in the View menu.

A modeless, non-focusable dialog appears, floating on top of the main frame window. You can move and resize the dialog as you wish. It contains a listing of the style sets comprising the palette, with the most recently copied style set at the top of the list and the oldest at the bottom. The left-hand icon in each list entry reflects the type of node from which the style set was originally copied. More importantly, each list entry summarizes those properties in the style set that are applicable to the graphic node that is currently selected on the figure canvas. If you select a different node in the canvas, the contents of the dialog are updated accordingly. Take a closer look at the two screenshots of the palette dialog. The right-hand image shows the state of the dialog when a label node was selected, while the left-hand image shows its state when a trace node was selected. The style set derived from a trace node clearly includes many more relevant styling properties when applied to another trace node than when applied to a label

To apply any style set in the palette to the currently selected node, simply double-click on the corresponding entry in the palette dialog. The figure canvas is updated to reflect the changes. If you don't like the result, simply Undo (Ctrl-Z).

[NOTE: The style palette is a new, experimental feature. It's a lot simpler to just copy one node's styling and then immediately apply it to one or more target nodes. It's not clear whether it is truly useful to maintain a collection of recently copied style sets. Any feedback on this new feature would be appreciated. If it proves not to be useful, it may be removed in a future release.]

The View Menu

View | Tree view (Ctrl-T) : This command toggles the visibility of the Figure Navigator panel on the left-hand side of the application frame window -- which includes the Property Editor. Again, if the menu item is checked, the Navigator is visible; otherwise it is hidden. Normally you will want to keep the Navigator visible so that you can make changes to your figure; however, if you merely want to show some figures to a colleague, you can hide both the Navigator and the Workspace Browser to maximize the screen real estate available to the Figure Canvas. (NOTE: Figure Composer "remembers" the visibility state of the Figure Navigator when it shuts down and will restore that state the next time the application is started.)

View|Rulers : This command controls the visibility of the horizontal and vertical rulers along the bottom and left edges of the Figure Canvas. They are turned on by default. Again, you might want to hide them if you're using Figure Composer to show some figures to a colleague.

View|Special Characters : This command controls the visibility of the character map tool panel, a floating non-focusable dialog which allows you to select characters that are not easily accessible from the keyboard. Its use is described in more detail in the chapter on the Property Editor.

View|Workspace Figures : This command controls the visibility of the Workspace Browser, which is docked along the right edge of the application frame window. Users may find the browser very useful, since it provides a compact view of all the folders on the host machine that contain FypML (.fyp) or Matlab (.fig) figure files. You can open any figure by double-clicking on the file name in the browser. However, if you need more space for the Figure Canvas or just want to clean things up to show a few figures to a colleague, use this command to hide the browser. (NOTE: Figure Composer "remembers" the visibility state of the Workspace Browser when it shuts down and will restore that state the next time the application is started.)

View|Scale-to-fit : This command toggles the Figure Canvas in and out of the "scale-to-fit" display mode. When "scale-to-fit" is enabled, the figure grows or shrinks as the canvas is resized, filling the available space while still preserving the figure's aspect ratio. When "scale-to-fit" is disabled, the figure is drawn at its actual size. In this case, a portion of the figure may lie beyond the canvas bounds, and you must "drag" it with the right mouse button to "pan" that portion into view. Note that "scale-to-fit" mode is automatically turned off whenever you zoom in or out on the figure.

View|Print preview : This command toggles the Figure Canvas in and out of the print preview display mode, which is turned off by default. When it is enabled, the canvas renders the figure on the printed page, which is shown as a white rectangle with margins represented by gray borders. Note that the print preview and scale-to-fit display modes are independent of each other.

View|Actual size : After zooming in on a portion of the displayed figure, at some point you'll want to restore the figure to its normal size. Selecting this menu command (or clicking the relevant button in the bottom toolbar) will reset the Figure Canvas's scale factor to 1. The command is disabled in "scale-to-fit" mode.

View|Refresh : Figure Composer tries to be as efficient as possible when updating the Figure Canvas. Every time you make a small change to the figure -- such as moving an object, deleting an object or changing one attribute of a selected element -- it only repaints the rectangular region or regions impacted by the change, rather than re-rendering the entire graphic. This minimizes the amount of time the user has to wait to see the effect of any particular change. When you make repeated changes to a small portion of the figure, you may notice a degradation in the appearance of graphic elements nearby. This is an artifact of the restricted repaints and antialiasing. At any time you can use the View|Refresh command to trigger a complete, clean rendering of the entire figure.