public MetaStructurePanel(ICustomCategoryMediaLibrary library)
	{
        GridBagConstraints constraints;
        GridBagLayout layout = new GridBagLayout();
        setLayout(layout);
        
		// Build the meta category structure.
	    DefaultMutableTreeNode rootFolder = new DefaultMutableTreeNode(CcmlRootFolderListener.ROOT_FOLDER_NAME);
	    buildTree(library, rootFolder);
        
        // Create the tree to render the meta structure.
        JTree rootFolderTree = new JTree(rootFolder);
        JScrollPane rootFolderTreeScroller = new JScrollPane(rootFolderTree);

		constraints = new GridBagConstraints();
		constraints.anchor = GridBagConstraints.CENTER;
		constraints.fill = GridBagConstraints.BOTH;
		constraints.weightx = 1;
		constraints.weighty = 1;
		add(rootFolderTreeScroller, constraints);
		
		// Support a double-click operation to open a resource path using the systems file manager.
		rootFolderTree.addMouseListener(new MouseAdapter()
		{
			@Override
			public void mouseClicked(MouseEvent event)
			{
				// Only listen for double-clicks.
				if (event.getClickCount() != 2)
				{
					return;
				}
				
				// Attempt to find the file resource for this node.
				MediaResource resource = null;
				JTree tree = (JTree) event.getSource();
				TreePath treePath = tree.getPathForLocation(event.getX(), event.getY());
				if (treePath != null)
				{
					Object lastComponent = treePath.getLastPathComponent();
					if (lastComponent instanceof DefaultMutableTreeNode)
					{
						DefaultMutableTreeNode node = (DefaultMutableTreeNode) lastComponent;
						Object o = node.getUserObject();
						if (o instanceof MediaResource)
						{
							resource = (MediaResource) o;
						}
					}
				}
				
				// No resource? Ignore.
				if (resource == null)
				{
					return;
				}

				// Attempt to find an open action for this OS.
				String openAction;
				String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
				     if (osName.contains("win") == true) openAction = "explorer /select," + resource.getResourcePath(); //$NON-NLS-1$ //$NON-NLS-2$
				else if (osName.contains("mac") == true) openAction = "open -R "          + resource.getResourcePath(); //$NON-NLS-1$ //$NON-NLS-2$
				else if (osName.contains("nix") == true) openAction = "nautilus "         + resource.getResourcePath(); //$NON-NLS-1$ //$NON-NLS-2$ // May not always work.
				else
				{
					return;
				}
				
				try
				{
					_logger.debug("[CCML] Attempting to open path: " + resource.getResourcePath()); //$NON-NLS-1$
					Runtime.getRuntime().exec(openAction);
				}
				catch (IOException e)
				{
					// Ignore if the file could not be explored to.
				}
			}
		});
	}