package jas2.util.pluginmanager;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.net.*;
import jas2.util.*;
import java.io.*;
import jas2.util.xml.*;
import org.w3c.dom.*;

public class PluginManager {
	
	private Vector availablelist;
	private Vector pluginsloadedatstartup = new Vector();
	private PluginXMLReader xmlreader;
	private static final String jaspluginfile = "jasplugin.xml";
	private static final String jasdtdfile = "jasplugin.dtd";
	private String userdir;
	private String systemdir;
	private boolean readpluginXMLOK;
	
	/**The plugin manager class is used to manage all of the plugins in jas. The pluginmanagerui,
	 *  installpluginsui and updatepluginsui classes receive and report their information from
	 * this class.  
	 */
	public PluginManager(String system, String user){
		userdir = user;
		systemdir = system;
	}	
	
	/**This method will return either of the two possible install directory paths. If the argument
	 * is true then the system path will be returned, if false then the user path will be returned.
	 */
	public String getSystemDirectory(){
		return systemdir;
	}
	
	public String getUserDirectory(){
		return userdir;
	}
	
	private void addAvailablePluginList(String path, String name, String author, String currversion, String description, String latestversion,  String requires, URL[] urldownloads, int state, String[] files, String minJASversion, boolean removeable, boolean installable){
	  	PluginProperties plugin = new PluginProperties(path, name, author, currversion, description, latestversion, requires, urldownloads, state,files, minJASversion, removeable, installable);
	    availablelist.addElement(plugin);
	}
	
	private void addAvailablePluginList(PluginProperties plugin){
	    availablelist.addElement(plugin);
	}
	
		
	/**Called when a plugin is loaded at startup*/
	public void setPluginLoadedAtStart(String pluginname, String version, String path, String file){//file neccessary for pluins not found in xml file
		String[] plugininfo = {pluginname,version,path,file};
		pluginsloadedatstartup.addElement(plugininfo);
	}
		
	
	
	protected void removeAvailablePluginList(PluginProperties removeplugin){
	    availablelist.removeElement(removeplugin);
	}
	
			
	/**Returns list of loaded plugins properties*/
	protected Vector getLoadedPluginList(){
		Vector loadedplugins = new Vector();
		
		if(!availablelist.isEmpty()){
			for(int i=0;i 

Ads help maintain this website.