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;
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$
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&action=raw\"/>"
- + "<config name=\"Wikibooks-en\" type-id=\"Wikipedia-Load Text\" url=\"http://en.wikibooks.org/w/index.php?title=$text.wikiname&action=raw\"/>"
+ + "<config name=\"WikipediaEN Dwonload\" type-id=\"Load WikipediaEN\" url=\"http://en.wikipedia.org/w/index.php?title=$text.wikiname&action=raw\"/>"
+ + "<config name=\"WikibooksEN Download\" type-id=\"Load WikibooksEN\" url=\"http://en.wikibooks.org/w/index.php?title=$text.wikiname&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>";
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");
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)
*
}
super.shutdown();
}
-
+
public static void log(int severity, String message) {
Status status = new Status(severity, PLUGIN_ID, IStatus.OK, message, null);
log(status);
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