Added more Wikipedia configurations
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / editor / WikiEditorPlugin.java
index ee2c4ab..41afec5 100644 (file)
@@ -1,15 +1,19 @@
 package net.sourceforge.phpeclipse.wiki.editor;
 
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.sql.SQLException;
 import java.text.MessageFormat;
+import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+import net.sourceforge.phpeclipse.wiki.actions.mediawiki.config.IWikipedia;
 import net.sourceforge.phpeclipse.wiki.internal.ConfigurationManager;
 import net.sourceforge.phpeclipse.wiki.internal.IConfigurationWorkingCopy;
 import net.sourceforge.phpeclipse.wiki.sql.WikipediaDB;
@@ -41,17 +45,37 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
 
   public static final String HTTP_QUERY = "HTTP Query";
 
-  public static final String WIKIPEDIA_GET_TEXT = "Wikipedia-Load Text";
-
-  public static final String WIKIPEDIA_SET_TEXT = "Wikipedia-Store Text";
-  
+  //  public static final String WIKIPEDIA_GET_TEXT = "Load WikipediaEN";
+  //
+  //  public static final String WIKIPEDIA_SET_TEXT = "Store WikipediaEN";
   public static final String WIKIPEDIA_SQL = "Wikipedia SQL access";
-  
+
   public static final String BLOG_A_WIKI = "Blog as Wiki Text";
 
   public static final String BLOG_A_HTML = "Blog as HTML Text";
 
-  public static final String[] CONFIGURATION_TYPES = { HTTP_QUERY, WIKIPEDIA_GET_TEXT, WIKIPEDIA_SET_TEXT, WIKIPEDIA_SQL, BLOG_A_WIKI, BLOG_A_HTML };
+  public static final String[] PREDEFINED_TYPES = { HTTP_QUERY, WIKIPEDIA_SQL, BLOG_A_WIKI, BLOG_A_HTML };
+
+  public static final String[] PREDEFINED_WIKIS = {
+      "WikibooksDE",
+      "WikibooksEN",
+      "WikinewsDE",
+      "WikinewsEN",
+      "WikipediaAR",
+      "WikipediaCA",
+      "WikipediaDE",
+      "WikipediaEN",
+      "WikipediaEO",
+      "WikipediaES",
+      "WikipediaET",
+      "WikipediaFI",
+      "WikipediaFR" };
+
+  public static final String PREFIX_LOAD = "Load ";
+
+  public static final String PREFIX_STORE = "Store ";
+
+  public static final ArrayList CONFIGURATION_TYPES = new ArrayList();
 
   //image paths
   public static final String ICON_PATH = "icons/full/"; //$NON-NLS-1$
@@ -70,15 +94,17 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
 
   public final static String EXPORT_CSS_URL = "__export_css_url";
 
-  public final static String PREF_STRING_CONFIGURATIONS = "__configurations1";
+  public final static String PREF_STRING_CONFIGURATIONS = "__configurations2";
 
   public final static String CONFIG_MEMENTO = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
       + "<configurations>"
       + "<config name=\"Google Search\" type-id=\"HTTP Query\" url=\"http://www.google.com/search?q=$text.selection\"/>"
       + "<config name=\"Koders.com Search\" type-id=\"HTTP Query\" url=\"http://koders.com/?s=$text.selection\"/>"
       + "<config name=\"Leo.org Translation\" type-id=\"HTTP Query\" url=\"http://dict.leo.org/?search=$text.selection\"/>"
-      + "<config name=\"Wikipedia-en\" type-id=\"Wikipedia-Load Text\" url=\"http://en.wikipedia.org/w/index.php?title=$text.wikiname&amp;action=raw\"/>"
-      + "<config name=\"Wikibooks-en\" type-id=\"Wikipedia-Load Text\" url=\"http://en.wikibooks.org/w/index.php?title=$text.wikiname&amp;action=raw\"/>"
+      + "<config name=\"WikipediaEN Dwonload\" type-id=\"Load WikipediaEN\" url=\"http://en.wikipedia.org/w/index.php?title=$text.wikiname&amp;action=raw\"/>"
+      + "<config name=\"WikibooksEN Download\" type-id=\"Load WikibooksEN\" url=\"http://en.wikibooks.org/w/index.php?title=$text.wikiname&amp;action=raw\"/>"
+      + "<config name=\"WikipediaEN Upload\" type-id=\"Store WikipediaEN\" url=\"http://en.wikipedia.org/w/index.php\"/>"
+      + "<config name=\"WikibooksEN Upload\" type-id=\"Store WikibooksEN\" url=\"http://en.wikibooks.org/w/index.php\"/>"
       + "<config name=\"Wikipedia-SQL\" type-id=\"Wikipedia SQL access\" user=\"root\" url=\"jdbc:mysql://localhost/wikidb\"/>"
       + "</configurations>";
 
@@ -174,6 +200,16 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
     super(descriptor);
     initializeImages();
     fgPlugin = this;
+    for (int i = 0; i < PREDEFINED_TYPES.length; i++) {
+      CONFIGURATION_TYPES.add(PREDEFINED_TYPES[i]);
+    }
+
+    for (int i = 0; i < PREDEFINED_WIKIS.length; i++) {
+      CONFIGURATION_TYPES.add(PREFIX_LOAD + PREDEFINED_WIKIS[i]);
+    }
+    for (int i = 0; i < PREDEFINED_WIKIS.length; i++) {
+      CONFIGURATION_TYPES.add(PREFIX_STORE + PREDEFINED_WIKIS[i]);
+    }
     manager = ConfigurationManager.getInstance();
     try {
       fResourceBundle = ResourceBundle.getBundle("net.sourceforge.phpeclipse.wiki.editor.WikiEditorMessages");
@@ -376,10 +412,14 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
     return manager.createConfiguration();
   }
 
-  public static String[] getTypes() {
+  public static ArrayList getTypes() {
     return CONFIGURATION_TYPES;
   }
 
+  public static void addType(String type) {
+    CONFIGURATION_TYPES.add(type);
+  }
+
   /*
    * (non-Javadoc)
    * 
@@ -394,7 +434,7 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
     }
     super.shutdown();
   }
-  
+
   public static void log(int severity, String message) {
     Status status = new Status(severity, PLUGIN_ID, IStatus.OK, message, null);
     log(status);
@@ -408,4 +448,41 @@ public class WikiEditorPlugin extends AbstractUIPlugin {
     log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "PHPeclipsePlugin.internalErrorOccurred", e)); //$NON-NLS-1$
   }
 
+  /**
+   * Get a IWikpedia singleton instance through reflection (i.e. Method#invoke() )
+   * 
+   * @param wikiLocale
+   * @return
+   * @throws NoSuchMethodException
+   * @throws IllegalAccessException
+   * @throws ClassNotFoundException
+   * @throws InvocationTargetException
+   */
+  public static IWikipedia getWikiInstance(String wikiLocale) throws NoSuchMethodException, IllegalAccessException,
+      ClassNotFoundException, InvocationTargetException {
+    String className = "net.sourceforge.phpeclipse.wiki.actions.mediawiki.config." + wikiLocale;
+    Class cls = Class.forName(className);
+    Method method = cls.getMethod("getInstance", new Class[0]);
+    return (IWikipedia) method.invoke(null, new Object[0]);
+  }
+
+  // test code
+  //  public static void main(String[] args) {
+  //    try {
+  //      getWikiInstance("WikipediaEN");
+  //    } catch (NoSuchMethodException e) {
+  //      // TODO Auto-generated catch block
+  //      e.printStackTrace();
+  //    } catch (IllegalAccessException e) {
+  //      // TODO Auto-generated catch block
+  //      e.printStackTrace();
+  //    } catch (ClassNotFoundException e) {
+  //      // TODO Auto-generated catch block
+  //      e.printStackTrace();
+  //    } catch (InvocationTargetException e) {
+  //      // TODO Auto-generated catch block
+  //      e.printStackTrace();
+  //    }
+  //  }
+
 }
\ No newline at end of file