package gui;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.border.*;
import annotation.Menu;
import java.util.*;
import chargementDynamique.Repository;
import java.awt.event.*;
import java.io.File;
import java.lang.reflect.Method;
import java.util.List;
public class FrameWithMenu extends JFrame {
private JPanel contentPane;
private JMenuBar menuBarre;
private JMenu plugin;
// Construceur de la classe
public FrameWithMenu(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
menuBarre = new JMenuBar();
plugin = new JMenu("plugin");
menuBarre.add(plugin);
setContentPane(contentPane);
setVisible(true);
try {
buildMenu();
setJMenuBar(menuBarre);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@SuppressWarnings("serial")
void buildMenu() throws ClassNotFoundException {
File f = new File("D:\\workspace\\AnnotationPlugin\\bin\\");
if (!f.exists()) {
System.err.println(f+" does not exist");
System.exit(1);
}
Repository<Object> rep = new Repository<Object>(f, Object.class);
List<Object> l = rep.load();
System.out.println(l.size()+" classe(s) loaded");
Iterator<Object> i=l.iterator();
while(i.hasNext())
{
//Class c = Class.forName(((Class)i.next()).getName());
//try {
Class c= (Class)(i.next());
//c = (Class) c.newInstance();
Method[] m = c.getDeclaredMethods();
for(int j=0; j<m.length ; j++)
{
System.out.println("Methode : "+m[j].getName());
Menu menu = m[j].getAnnotation(Menu.class);
if(menu != null)
{
JMenuItem item;
if(menu.libelle() == null)
{
item = new JMenuItem(m[j].getName());
}
else
{
item = new JMenuItem(menu.libelle());
}
plugin.add(item);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "plugin charg�");
}
});
}
}
/*} /*catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
public static void main(String[] args) {
new FrameWithMenu();
}
}