}
} catch (Exception exp) {}
	protected void initAssetMap() {		// get a swing worker to call init in AssetManager		// when it returns set the root node to all trees		MatrixStatusBar.setStatus(Matrix.translate("asset_map_status_bar_init"));		SwingWorker worker = new SwingWorker() {			public Object construct() {				MatrixTreeNode root = null;				try {					root = AssetManager.init();					GUIUtilities.getAssetMapIcon(MatrixMenus.DEFAULT_ASSET_ICON);				} catch (IOException ioe) {					return ioe;				}				return root;			}			public void finished() {				Object get = get();				// success				if (get instanceof MatrixTreeNode) {					// Check if root folder asset is the actual root node for this user					// if not use the specified asset as the root node					String newRoot = Matrix.getProperty("parameter.rootlineage");					MatrixTreeModelBus.setRoot((MatrixTreeNode) get());					if (newRoot.length() > 0) {						// root folder asset is not the root node						String[] info = newRoot.split("~");						String[] assetIds = info[0].split("\\|");						String[] sort_orders = info[1].split("\\|");						// update tree root nodes						Iterator trees = MatrixTreeBus.getTrees();						while (trees.hasNext()) {							MatrixTree tree = (MatrixTree) trees.next();							// collapse the current root so we dont see its kids while switching root nodes							tree.collapsePath(tree.getPathToRoot((MatrixTreeNode)tree.getModel().getRoot()));							// find the specified asset/link and switch root node							tree.loadChildAssets(assetIds, sort_orders, false, true);						}					}					// if we have an initial lineage selected (i.e. from /_admin) then expand the tree					String initial_lineage = Matrix.getProperty("parameter.initialselection");					if (initial_lineage.length() > 0) {						String[] init_info = initial_lineage.split("~");						String[] init_assetIds = init_info[0].split("\\|");						String[] init_sort_orders = init_info[1].split("\\|");						Iterator trees = MatrixTreeBus.getTrees();						while (trees.hasNext()) {							MatrixTree tree = (MatrixTree) trees.next();							tree.loadChildAssets(init_assetIds, init_sort_orders, true, false);						}					}					MatrixStatusBar.setStatusAndClear(Matrix.translate("asset_map_status_bar_success"), 1000);				// error				} else if (get instanceof IOException) {					IOException ioe = (IOException) get;					GUIUtilities.error(						AssetMap.this, ioe.getMessage(), Matrix.translate("asset_map_dialog_title_init_failed"));					MatrixStatusBar.setStatusAndClear(Matrix.translate("asset_map_status_bar_init_failed"), 1000);					Log.log("Could not initialise the asset map", AssetMap.class, ioe);				}			}		};		worker.start();	}