package jeql.workbench.ui.assist;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import jeql.engine.CommandInvoker;
import jeql.engine.CommandRegistry;
import jeql.engine.EngineContext;
import jeql.engine.FunctionRegistry;
import jeql.man.ManUtil;
import jeql.workbench.Workbench;
import jeql.workbench.model.ScriptFile;
public abstract class Column2AssistPanel extends JPanel
{
private DefaultListModel listModel = new DefaultListModel();
private JList list = new JList(listModel);
private CodeAssistPanel codeAssistPanel;
public Column2AssistPanel(CodeAssistPanel codeAssistPanel)
{
this.codeAssistPanel = codeAssistPanel;
try {
initUI();
listModel.clear();
populateList();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void initUI() throws Exception
{
//setSize(100, 250);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setSelectionBackground(Color.GRAY);
list.setSize(100, 250);
list.setBorder(new EmptyBorder(2, 2, 2, 2));
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
CodeSnippet snip = (CodeSnippet) list.getSelectedValue();
codeAssistPanel.showDoc(snip.getDoc());
if (e.getClickCount() == 2) {
Workbench.controller().insertCodeSnippet(snip);
}
}
};
list.addMouseListener(mouseListener);
JScrollPane jScrollPane1 = new JScrollPane();
jScrollPane1.getViewport().add(list, null);
setLayout(new BorderLayout());
setPreferredSize(new Dimension(150, 250));
add(jScrollPane1, BorderLayout.CENTER);
}
public abstract void populateList();
protected void add(CodeSnippet codeSnip)
{
listModel.addElement(codeSnip);
}
protected void add(String displayText)
{
listModel.addElement(CodeSnippet.doc(displayText));
}
protected void add(String displayText, String codeText)
{
listModel.addElement(CodeSnippet.code(displayText, codeText));
}
}