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.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import jeql.engine.EngineContext;
import jeql.engine.FunctionRegistry;
import jeql.workbench.WorkbenchSettings;
import jeql.workbench.model.ScriptFile;
public class CodeAssistPanel extends JPanel
{
JTabbedPane tabPane = new JTabbedPane();
JTextArea docText;
public CodeAssistPanel()
{
try {
initUI();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void initUI() throws Exception
{
//----------- Doc panel
JPanel docPanel = new JPanel();
docText = new JTextArea();
docText.setFont(new java.awt.Font("Sanserif", 0, 11));
docText.setEditable(false);
docText.setBackground(WorkbenchSettings.HELP_BACKGROUND_CLR);
docText.setLineWrap(true);
docPanel.setLayout(new BorderLayout());
docPanel.add(new JScrollPane(docText), BorderLayout.CENTER);
tabPane.setTabPlacement(JTabbedPane.LEFT);
CommandAssistPanel cmdPanel = new CommandAssistPanel(this);
tabPane.add(cmdPanel, "Commands");
FunctionAssistPanel funcPanel = new FunctionAssistPanel(this);
tabPane.add(funcPanel, "Functions");
SelectAssistPanel selectPanel = new SelectAssistPanel(this);
tabPane.add(selectPanel, "Select");
OperatorAssistPanel opPanel = new OperatorAssistPanel(this);
tabPane.add(opPanel, "Operators");
RegExAssistPanel rePanel = new RegExAssistPanel(this);
tabPane.add(rePanel, "RegEx");
// Main split pane
JSplitPane splitPane = new JSplitPane();
splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPane.add(tabPane, JSplitPane.LEFT);
splitPane.add(docPanel, JSplitPane.RIGHT);
splitPane.setBorder(new EmptyBorder(2, 2, 2, 2));
splitPane.setResizeWeight(0.6);
//---------- Main panel
setMinimumSize(new Dimension(400, 50));
setPreferredSize(new Dimension(900, 300));
setLayout(new BorderLayout());
add(splitPane, BorderLayout.CENTER);
tabPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
showDoc("");
}
});
}
public void showDoc(String displayText) {
docText.setText(displayText);
}
}