
jive3.TreePanelClass Maven / Gradle / Ivy
The newest version!
package jive3;
import fr.esrf.Tango.DevFailed;
import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import fr.esrf.Tango.DevVarLongStringArray;
import fr.esrf.TangoApi.*;
import jive.JiveUtils;
/**
* A panel for selecting tango classes
*/
public class TreePanelClass extends TreePanel {
// Filtering stuff
String classFilterString="*";
Pattern classPattern=null;
String[] classList;
public TreePanelClass() {
this.self = this;
setLayout(new BorderLayout());
}
public TangoNode createRoot() {
return new RootNode(this);
}
void addAttribute(TangoNode attNode,String className,String attName) {
if(searchNode(attNode,attName)!=null) {
JOptionPane.showMessageDialog(null,"Attribute already exists","Error",JOptionPane.ERROR_MESSAGE);
return;
}
treeModel.insertNodeInto(new TaskClassAttributePropertyNode(self,db,className,attName), attNode, 0);
}
public void applyFilter(String filter) {
classFilterString = filter;
if( filter.equals("*") ) {
classPattern = null;
} else if (filter.length()==0) {
classPattern = null;
} else {
try {
String f = filterToRegExp(classFilterString);
classPattern = Pattern.compile(f);
} catch (PatternSyntaxException e) {
JOptionPane.showMessageDialog(invoker,e.getMessage());
}
}
}
public String getFilter() {
return classFilterString;
}
public String[] getClassList() {
return classList;
}
public TangoNode selectClass(String className) {
// Search class
TangoNode classNode = searchNode(root,className);
if(classNode==null) return null;
TreePath selPath = new TreePath(root);
selPath = selPath.pathByAddingChild(classNode);
tree.setSelectionPath(selPath);
return classNode;
}
// ---------------------------------------------------------------
class RootNode extends TangoNode {
RootNode(TreePanel parentPanel) {
this.parentPanel = parentPanel;
}
void populateNode() throws DevFailed {
classList = db.get_class_list("*");
for (int i = 0; i < classList.length; i++) {
if( classPattern!=null ) {
Matcher matcher = classPattern.matcher(classList[i].toLowerCase());
if( matcher.find() && matcher.start()==0 && matcher.end()==classList[i].length() ) {
add(new ClassNode(classList[i],parentPanel));
}
} else {
add(new ClassNode(classList[i],parentPanel));
}
}
}
public String toString() {
return "Class:";
}
void execAction(int number,boolean multipleCall) {
}
}
// ---------------------------------------------------------------
class ClassNode extends TangoNode {
private String className;
ClassNode(String className,TreePanel parentPanel) { this.className = className; this.parentPanel =parentPanel; }
Action[] getAction() {
if(JiveUtils.readOnly)
return new Action[0];
else
return new Action[] {
TreePanel.getAction(ACTION_SAVE_PROP)
};
}
void execAction(int actionNumber,boolean multipleCall) {
switch(actionNumber) {
// ----------------------------------------------------------------------------
case ACTION_SAVE_PROP:
try {
DbFileWriter.SaveAllClassProperties(className);
} catch (DevFailed e) {
JiveUtils.showTangoError(e);
} catch (IOException e2) {
JiveUtils.showJiveError(e2.getMessage());
}
break;
}
}
void populateNode() throws DevFailed {
add(new TaskClassPropertyNode(self,db,className));
add(new ClassAttributeNode(className));
add(new DevicesNode(className,parentPanel));
}
public String toString() {
return className;
}
}
// ---------------------------------------------------------------
class ClassAttributeNode extends TangoNode {
private String className;
ClassAttributeNode(String className) {
this.className = className;
}
void populateNode() throws DevFailed {
String[] list = db.get_class_attribute_list(getParent().toString(), "*");
for(int i=0;i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy