GrxPluginLoader.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3  * All rights reserved. This program is made available under the terms of the
4  * Eclipse Public License v1.0 which accompanies this distribution, and is
5  * available at http://www.eclipse.org/legal/epl-v10.html
6  * Contributors:
7  * General Robotix Inc.
8  * National Institute of Advanced Industrial Science and Technology (AIST)
9  */
10 /*
11  * GrxPluginLoader.java
12  *
13  * Copyright (C) 2007 GeneralRobotix, Inc.
14  * All Rights Reserved
15  *
16  * @author Yuichiro Kawasumi (General Robotix, Inc.)
17  */
18 
19 package com.generalrobotix.ui.util;
20 
21 import java.io.File;
22 import java.io.FilenameFilter;
23 import java.lang.reflect.Constructor;
24 import java.net.MalformedURLException;
25 import java.net.URL;
26 import java.net.URLClassLoader;
27 
31 
36 public class GrxPluginLoader extends URLClassLoader {
37  public GrxPluginLoader(String pluginDir, ClassLoader parent) {
38  super(new URL[0], parent);
39  }
40 
41  public GrxPluginLoader(String pluginDir) {
42  this(pluginDir, null);
43  }
44 
48  @SuppressWarnings("deprecation")
49  public void addURL(String path) {
50  File f = new File(path);
51  if ( f.isDirectory() || (path.endsWith(".jar")&&f.exists())){
52  URL[] urls=getURLs();
53  for(URL url : urls){
54  if(url.equals(path))
55  return;
56  }
57  try{
58  super.addURL(f.toURL());
59  System.out.println("classpath added: "+f.toString());
60  } catch (MalformedURLException e) {
61  e.printStackTrace();
62  }
63  }else
64  return;
65  }
66 
67  public Class<?> loadClass(String cname){
68  try {
69  return super.loadClass(cname, true);
70  } catch (ClassNotFoundException e) {
71  GrxDebugUtil.println("ClassNotFound "+cname);
72  }
73  return null;
74  }
75 
76  public boolean existClass(String cname) {
77  try{
78  super.loadClass(cname, true);
79  return true;
80  }catch(ClassNotFoundException e){
81  return false;
82  }
83  }
84 
85  // ビューの作成。クラスの作成はGrxUIでは行わず、パースペクティブに任せることにしたので消した。
86  /*
87  public GrxBaseView createView( Class<? extends GrxBaseView> cls ) {
88  String viewId = cls.getName();
89 
90  IWorkbench workbench = PlatformUI.getWorkbench();
91  IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
92  IWorkbenchPage page = window.getActivePage();
93  IViewPart view = page.findView(viewId);
94  // はじめて使われるビューの場合
95  if(view==null) {
96  System.out.println("[PERSPECTIVE] "+viewId+" is not Existence");
97  try {
98  // これやると現在の(これから作るのではない)パースペクティブに表示されてしまうよ。だめじゃん。
99  view = page.showView(viewId);
100  }catch( PartInitException e ) {
101  e.printStackTrace();
102  }
103  }
104 
105  if( view instanceof GrxBaseView ) {
106  System.out.println("[PERSPECTIVE] create "+viewId);
107  return (GrxBaseView)view;
108  }
109  System.out.println("[PERSPECTIVE] create "+cls.getName()+" fault.");
110  return null;
111  }
112  */
113 
114  // 指定されたプラグインのコンストラクタを実行、インスタンスを返す
115  public GrxBasePlugin createPlugin(Class cls, String name, GrxPluginManager manager) {
116  try {
117  // TODO: ビューの管理はEclipseにやらせている。以下は実際には不要
118  if( GrxBaseView.class.isAssignableFrom(cls) ) {
119  //GrxDebugUtil.println("[PM] "+cls+" is view");
120  //GrxBaseView vPlugin = createView( (Class<? extends GrxBaseView>) cls );
121  //vPlugin.setName(name);
122  //vPlugin.setManager(manager);
123  return null;//vPlugin;
124  }else{
125  //GrxDebugUtil.println("[PM] "+cls+" is item");
126  Constructor c = cls.getConstructor(new Class[] { String.class, GrxPluginManager.class });
127  return (GrxBasePlugin) c.newInstance(new Object[] { name, manager});
128  }
129  } catch (Exception e) {
130  e.printStackTrace();
131  }
132  return null;
133  }
134 }
int c
Definition: autoplay.py:16
GrxPluginLoader(String pluginDir, ClassLoader parent)
#define null
our own NULL pointer
Definition: IceTypes.h:57
png_infop png_charpp name
Definition: png.h:2382
GrxBasePlugin createPlugin(Class cls, String name, GrxPluginManager manager)
プラグイン管理クラス GrxUIの核になるクラス。プラグインのロード等の、初期化を実行する。 プラグインとそ...


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Sat May 8 2021 02:42:38