📄 graphtemplatecell.java
字号:
/**
*
*/
package flow.graph.gui.graph.lua;
import java.io.ByteArrayOutputStream;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import org.jgraph.JGraph;
import org.jgraph.graph.DefaultEdge;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultPort;
import flow.graph.gui.graph.FlowGraphConstants;
import flow.graph.gui.graph.cell.ui.ModelForm;
import flow.graph.gui.graph.encoder.XMLEncoder;
import flow.graph.gui.graph.lua.gui.BlankForm;
import flow.graph.gui.graph.lua.gui.InvokeForm;
import flow.graph.gui.graph.lua.gui.WhileForm;
import flow.graph.gui.graph.lua.xml.InputParameter;
import flow.graph.gui.graph.lua.xml.InputParameters;
import flow.graph.gui.graph.lua.xml.Parameter;
import flow.graph.gui.graph.lua.xml.Parameters;
import flow.graph.gui.graph.lua.xml.TemplateConstants;
/**
* @author Administrator
*
*/
public class GraphTemplateCell extends DefaultGraphCell implements GraphTemplateEdit{
public GraphTemplateCell(){
super();
}
public GraphTemplateCell(String s){
super(s);
}
public void EditCell(JGraph graph) {
// TODO Auto-generated method stub
if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.INVOKE_TEMPLATE)){
new InvokeForm(this, graph);
}
else if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.CASE_TEMPLATE)){
new WhileForm(this, graph);
}
else if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.SWITCH_TEMPLATE)){
//函数模板操作
new InvokeForm(this, graph);
}
else if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.WHILE_TEMPLATE)){
//函数调用操作
new WhileForm(this, graph);
}
else if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.MODEL_TEMPLATE)){
//函数调用操作
new ModelForm(this, graph);
}
else if(FlowGraphConstants.getTemplateType(getAttributes()).toString().equals(TemplateConstants.BLANK_TEMPLATE)){
//函数调用操作
new BlankForm(this, graph);
}
}
public static int loop = 0;
//获取选中节点的所有前面节点的返回值
public static Vector getResponseParameters(DefaultGraphCell cell){
Vector cacheV = new Vector();
//cacheV.addElement("");
//if(loop >= 100)
// return cacheV;
//loop++;
//System.out.println("class:"+cell.getClass());
if(cell != null){
if(cell instanceof DefaultEdge){
//System.out.println("edge..........1:"+cell);
DefaultEdge edge = (DefaultEdge)cell;
if(edge.getSource()!=null){
//System.out.println("edge..........2");
DefaultPort port = (DefaultPort)edge.getSource();
if(port.getParent() != null){
//System.out.println("edge..........3");
Vector v = getResponseParameters(port);
if(v != null){
//System.out.println("edge..........4");
for(int i=0;i<v.size();i++){
cacheV.add(v.get(i));
}
}
}
}
}
else if(cell instanceof DefaultPort){
//System.out.println("port1===========");
if(cell.getParent() != null){
//System.out.println("port2===========");
DefaultGraphCell parent = (DefaultGraphCell)cell.getParent();
Vector v = getResponseParameters(parent);
if(v != null){
//System.out.println("port3===========");
for(int i=0;i<v.size();i++){
cacheV.add(v.get(i));
}
}
}
}
else if(cell instanceof GraphTemplateCell){
//System.out.println("cell0-------------------"+cell);
if(FlowGraphConstants.getOutputTemplate(cell.getAttributes()) != null){
//System.out.println("cell1===========");
Parameters ps = (Parameters)FlowGraphConstants.getOutputTemplate(cell.getAttributes());
if(ps != null && FlowGraphConstants.getCellID(cell.getAttributes()) != null){
// System.out.println("cell2===========");
for(int i=0;i<ps.getParameters().size();i++){
Parameter p = (Parameter)ps.getParameters().get(i);
//System.out.println(FlowGraphConstants.getCellID(cell.getAttributes()).toString()+"."+p.getName());
cacheV.add(FlowGraphConstants.getCellID(cell.getAttributes()).toString()+"."+p.getName());
}
}
}
if(FlowGraphConstants.getTemplateType(cell.getAttributes()) != null){
if(FlowGraphConstants.getTemplateType(cell.getAttributes()).toString().equals(TemplateConstants.GROUP_TEMPLATE)){
//当是组的时候
//找父节点
if(cell.getChildCount() > 0){
//System.out.println("cell3-------------------");
for(int i=0;i<cell.getChildCount();i++){
if(cell.getChildAt(i) instanceof DefaultPort){
DefaultPort port = (DefaultPort)cell.getChildAt(i);
if(port != null){
// System.out.println("cell4-------------------");
Set set = port.getEdges();
if(set != null){
// System.out.println("cell5-------------------");
Iterator iter = set.iterator();
while(iter.hasNext()){
// System.out.println("cell6-------------------");
DefaultEdge edge = (DefaultEdge)iter.next();
if(edge.getSource()==null) continue;
if(((DefaultPort)edge.getSource()).getParent()==null) continue;
if(((DefaultPort)edge.getSource()).getParent().equals(cell)){
continue;
}
//System.out.println("cell7-------------------");
Vector v = getResponseParameters(edge);
if(v != null){
//System.out.println("cell8-------------------");
for(int j=0;j<v.size();j++){
// System.out.println("cell9-------------------");
cacheV.add(v.get(j));
}
}
}
}
}
}
}
}
}
else{
//非组的时候
if(cell.getParent() == null){
//组外节点
if(cell.getChildCount() > 0){
//System.out.println("cell3-------------------");
DefaultPort port = (DefaultPort)cell.getChildAt(0);
if(port != null){
// System.out.println("cell4-------------------");
Set set = port.getEdges();
if(set != null){
// System.out.println("cell5-------------------");
Iterator iter = set.iterator();
while(iter.hasNext()){
// System.out.println("cell6-------------------");
DefaultEdge edge = (DefaultEdge)iter.next();
if(edge.getSource()==null) continue;
if(((DefaultPort)edge.getSource()).getParent()==null) continue;
if(((DefaultPort)edge.getSource()).getParent().equals(cell)){
continue;
}
//System.out.println("cell7-------------------");
Vector v = getResponseParameters(edge);
if(v != null){
//System.out.println("cell8-------------------");
for(int j=0;j<v.size();j++){
// System.out.println("cell9-------------------");
cacheV.add(v.get(j));
}
}
}
}
}
}
}
else{
//组内节点
Vector v = getGroupParameters(cell);
if(v != null){
//System.out.println("cell8-------------------");
for(int j=0;j<v.size();j++){
// System.out.println("cell9-------------------");
cacheV.add(v.get(j));
}
}
Vector v1 = getResponseParameters((DefaultGraphCell)cell.getParent());
if(v1 != null){
//System.out.println("cell8-------------------");
for(int j=0;j<v1.size();j++){
// System.out.println("cell9-------------------");
cacheV.add(v1.get(j));
}
}
}
}
}
}
}
return cacheV;
}
public static Vector getGroupParameters(DefaultGraphCell cell){
Vector cacheV = new Vector();
if(cell != null){
if(cell instanceof DefaultEdge){
//System.out.println("edge..........1:"+cell);
DefaultEdge edge = (DefaultEdge)cell;
if(edge.getSource()!=null){
//System.out.println("edge..........2");
DefaultPort port = (DefaultPort)edge.getSource();
if(port.getParent() != null){
//System.out.println("edge..........3");
Vector v = getResponseParameters(port);
if(v != null){
//System.out.println("edge..........4");
for(int i=0;i<v.size();i++){
cacheV.add(v.get(i));
}
}
}
}
}
else if(cell instanceof DefaultPort){
//System.out.println("port1===========");
if(cell.getParent() != null){
//System.out.println("port2===========");
DefaultGraphCell parent = (DefaultGraphCell)cell.getParent();
Vector v = getResponseParameters(parent);
if(v != null){
//System.out.println("port3===========");
for(int i=0;i<v.size();i++){
cacheV.add(v.get(i));
}
}
}
}
else if(cell instanceof GraphTemplateCell){
//System.out.println("cell0-------------------"+cell);
if(FlowGraphConstants.getOutputTemplate(cell.getAttributes()) != null){
//System.out.println("cell1===========");
Parameters ps = (Parameters)FlowGraphConstants.getOutputTemplate(cell.getAttributes());
if(ps != null && FlowGraphConstants.getCellID(cell.getAttributes()) != null){
// System.out.println("cell2===========");
for(int i=0;i<ps.getParameters().size();i++){
Parameter p = (Parameter)ps.getParameters().get(i);
//System.out.println(FlowGraphConstants.getCellID(cell.getAttributes()).toString()+"."+p.getName());
cacheV.add(FlowGraphConstants.getCellID(cell.getAttributes()).toString()+"."+p.getName());
}
}
}
if(cell.getChildCount() > 0){
//System.out.println("cell3-------------------");
DefaultPort port = (DefaultPort)cell.getChildAt(0);
if(port != null){
// System.out.println("cell4-------------------");
Set set = port.getEdges();
if(set != null){
// System.out.println("cell5-------------------");
Iterator iter = set.iterator();
while(iter.hasNext()){
// System.out.println("cell6-------------------");
DefaultEdge edge = (DefaultEdge)iter.next();
if(edge.getSource()==null) continue;
if(((DefaultPort)edge.getSource()).getParent()==null) continue;
if(((DefaultPort)edge.getSource()).getParent().equals(cell)){
continue;
}
//System.out.println("cell7-------------------");
Vector v = getResponseParameters(edge);
if(v != null){
//System.out.println("cell8-------------------");
for(int j=0;j<v.size();j++){
// System.out.println("cell9-------------------");
cacheV.add(v.get(j));
}
}
}
}
}
}
}
}
return cacheV;
}
public static Vector getParameters(DefaultGraphCell cell){
//PrintGraphCell(cell);
Vector cacheV = new Vector();
System.out.println("cell:"+cell.getClass()+", name="+cell);
if(cell != null){
if(cell instanceof GraphTemplateCell){
DefaultPort port = (DefaultPort)cell.getChildAt(0);
Set set = port.getEdges();
Iterator iter = set.iterator();
//System.out.println("cell="+cell);
while(iter.hasNext()){
DefaultEdge edge = (DefaultEdge)iter.next();
//System.out.println("null================0:"+edge);
if(edge.getSource() == null){
// System.out.println("null================1");
continue;
}
if(((DefaultPort)edge.getSource()).getParent() == null){
// System.out.println("null================2");
continue;
}
if(((DefaultPort)edge.getSource()).getParent().equals(cell)){
//iter.next();
continue;
}
Vector v = (Vector)GraphTemplateCell.getResponseParameters((DefaultGraphCell)edge);
for(int i=0;i<v.size();i++){
cacheV.add(v.get(i));
}
}
}
}
return cacheV;
}
//==============================================================
//找参数入口函数
public static Vector getSourceParameter(DefaultGraphCell cell){
Vector cacheV = new Vector();
if(cell != null){
if(cell instanceof DefaultEdge){
DefaultEdge edge1 = (DefaultEdge)cell;
if(edge1.getSource() != null){
if(((DefaultPort)edge1.getSource()).getParent() != null){
DefaultGraphCell cell1 = (DefaultGraphCell)(((DefaultPort)edge1.getSource()).getParent());
if(cell1.getParent() == null){
//System.out.println("1-----------------");
//组外成员
for(int k=0;k<cell1.getChildCount();k++){
if(cell1.getChildAt(k) instanceof DefaultPort){
DefaultPort port = (DefaultPort)cell1.getChildAt(k);
Set set = port.getEdges();
Iterator iter = set.iterator();
//System.out.println("cell="+cell);
while(iter.hasNext()){
DefaultEdge edge = (DefaultEdge)iter.next();
//System.out.println("null================0:"+edge);
if(edge.getSource() == null){
// System.out.println("null================1");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -