/** * Method to return an array list containing plugins of a certain editor type and category * * @param editorType The editor type * @param category The category * @return An array list of any plugins found */ public ArrayList<ATPlugin> getEmbeddedEditorPlugins(String editorType, String category) { ArrayList<ATPlugin> foundPlugins = new ArrayList<ATPlugin>(); try { Iterator it = pluginManager.getRegistry().getPluginDescriptors().iterator(); while (it.hasNext()) { PluginDescriptor pluginDescriptor = (PluginDescriptor) it.next(); String id = pluginDescriptor.getId(); ATPlugin plugin = (org.archiviststoolkit.plugin.ATPlugin) pluginManager.getPlugin(id); String cat = plugin.getCategory(); String et = plugin.getEditorType(); // check to make sure that the plugin is of the right category and // editor type and that it has a panel that can be embedded into // the resource editor panel if (cat.indexOf(category) != -1 && et.indexOf(editorType) != -1 && plugin.getEmbeddedPanels() != null) { foundPlugins.add(plugin); } } } catch (Exception e) { e.printStackTrace(); } return foundPlugins; }
/** Method set the model for any plugins loaded */ private void setPluginModel() { if (plugins != null) { for (ATPlugin plugin : plugins) { plugin.setModel(getModel(), null); } } }
/** * Method to return the ATPlugin for a particular and domain object * * @param domainObject The domain object to find a plugin for * @param category The category to find a domain object for * @return The plugin found or null if none can be located. */ private ATPlugin getATPlugin(DomainObject domainObject, String category) { String editorType = getEditorTypeForDomainObject(domainObject); if (editorType != null) { ATPlugin foundPlugin = null; try { Iterator it = pluginManager.getRegistry().getPluginDescriptors().iterator(); while (it.hasNext()) { PluginDescriptor pluginDescriptor = (PluginDescriptor) it.next(); String id = pluginDescriptor.getId(); ATPlugin plugin = (org.archiviststoolkit.plugin.ATPlugin) pluginManager.getPlugin(id); String cat = plugin.getCategory(); String et = plugin.getEditorType(); if (cat.indexOf(category) != -1 && et.indexOf(editorType) != -1) { foundPlugin = plugin; break; } } } catch (Exception e) { e.printStackTrace(); } return foundPlugin; } else { return null; } }
/** * Method to return the name of all plugins in a particular category. It is used to add plugins to * plugin menu in the main application frame * * @return HashMap containing the names and ids of all the plugins found */ public HashMap getPluginNamesByCategory(String inCategory) { HashMap<String, String> pluginNames = new HashMap<String, String>(); try { Iterator it = pluginManager.getRegistry().getPluginDescriptors().iterator(); while (it.hasNext()) { PluginDescriptor pluginDescriptor = (PluginDescriptor) it.next(); String id = pluginDescriptor.getId(); ATPlugin plugin = (org.archiviststoolkit.plugin.ATPlugin) pluginManager.getPlugin(id); String name = plugin.getName(); String category = plugin.getCategory(); if (category.indexOf(inCategory) != -1) { if (plugin.getTaskList() == null) { // no list of task so just return the id and name pluginNames.put(id, name); } else { // list of task so return the name::task1::task2::task3 etc ... String nameWithTask = getNameWithTask(name, plugin.getTaskList()); pluginNames.put(id, nameWithTask); } } } } catch (Exception e) { e.printStackTrace(); } if (pluginNames.size() == 0) { return null; // no plugins in this category so return null } else { return pluginNames; } }
/** Method that initializes any embedded plugins that would add an editor */ private void initPlugins() { plugins = ATPluginFactory.getInstance().getEmbeddedNameEditorPlugins(); if (plugins != null) { for (ATPlugin plugin : plugins) { plugin.setEditorField(this); HashMap pluginPanels = plugin.getEmbeddedPanels(); for (Object key : pluginPanels.keySet()) { String panelName = (String) key; JPanel pluginPanel = (JPanel) pluginPanels.get(key); tabbedPane.addTab(panelName, pluginPanel); } } } }
/** * Method to load a custom plugin domain editor for viewing the record. Usefull if someone want to * implemment an editor that is more suited for their workflow or to load a read only viewer for * the record. * * @param domainObject The record to edit * @return Whether any plugin editors where found */ protected boolean usePluginDomainEditor( boolean newInstance, DomainObject domainObject, DomainSortableTable callingTable) { ATPlugin plugin = ATPluginFactory.getInstance().getEditorPlugin(domainObject); if (plugin == null) { // just return false and so that the built in domain object can be used return false; } // set the calling table and editor plugin.setEditorField(this); plugin.setCallingTable(callingTable); if (!newInstance) { // this means that it is a record being edited, so may have to do something // special plugin.setModel(domainObject, null); } else { // its a new record to just set the model plugin.setModel(domainObject, null); } // set the main program application frame and display it plugin.setApplicationFrame(ApplicationFrame.getInstance()); plugin.showPlugin(getParentEditor()); return true; }
/** * Method to return an list of all the plugin names and ids in a hasmap * * @return HashMap containing the names and ids of all the plugins found */ public HashMap getPluginNames() { HashMap<String, String> pluginNames = new HashMap<String, String>(); try { Iterator it = pluginManager.getRegistry().getPluginDescriptors().iterator(); while (it.hasNext()) { PluginDescriptor pluginDescriptor = (PluginDescriptor) it.next(); String id = pluginDescriptor.getId(); ATPlugin plugin = (org.archiviststoolkit.plugin.ATPlugin) pluginManager.getPlugin(id); String name = plugin.getName(); pluginNames.put(id, name); } } catch (Exception e) { e.printStackTrace(); } if (pluginNames.size() == 0) { return null; // no plugins found so return null } else { return pluginNames; } }