📄 abchrpanel.java
字号:
package abchr.gui;
import abchr.ProjectModule;
import abchr.TestProject;
import abchr.gui.modulecontrols.ModuleControl;
import abchr.gui.modulecontrols.ModuleControlFactory;
import guiutils.LineLayout;
import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.List;
public class AbchrPanel extends JPanel {
private TestProject project=null;
private static final Map moduleToComponentListMap=new HashMap();
private static ModuleControlFactory[] controls;
private static ControlPosition[] positions;
private ModuleControl[] moduleControls;
public AbchrPanel(TestProject project) {
setLayout(new BorderLayout());
JPanel topPanel=new JPanel(new LineLayout(LineLayout.CENTER,true));
topPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
moduleControls=new ModuleControl[controls.length];
JComponent component;
Class[] modules;
ControlPosition position;
for(int i=0;i<controls.length;i++) {
if(controls[i]==null && positions[i]==ControlPosition.TOP) {
topPanel.add(LineLayout.lineBreak());
continue;
}
moduleControls[i]=controls[i].createControl();
component=(JComponent)moduleControls[i];
modules=controls[i].getModules();
for(int j=0;j<modules.length;j++) {
List list=(List)moduleToComponentListMap.get(modules[j]);
if(list==null){list=new LinkedList();}
list.add(component);
moduleToComponentListMap.put(modules[j],list);
}
position=positions[i];
if(position==ControlPosition.CENTER) {
add(component,BorderLayout.CENTER);
} else if(position==ControlPosition.BOTTOM) {
add(component,BorderLayout.SOUTH);
} else if(position==ControlPosition.RIGHT) {
add(component,BorderLayout.EAST);
} else if(position==ControlPosition.LEFT) {
add(component,BorderLayout.WEST);
} else if(position==ControlPosition.TOP) {
topPanel.add(component);
}
}
add(topPanel,BorderLayout.NORTH);
load(project);
}
public void shutdown() {
this.project=null;
for(int i=0;i<moduleControls.length;i++) {
if(moduleControls[i]!=null){moduleControls[i].setModule(null);}
}
}
public void load(TestProject project) {
this.project=project;
initComponents();
}
private void initComponents() {
//System.out.println("project!=null : "+(project!=null));
List modules=project.getModules();
ProjectModule module;
List controlList;
//System.out.println("modules!=null : "+(modules!=null));
//System.out.println("moduleToComponentListMap!=null : "+(moduleToComponentListMap!=null));
for(Iterator it=modules.iterator();it.hasNext();) {
module=(ProjectModule)it.next();
//System.out.println("module!=null : "+(module!=null));
if((controlList=(List)moduleToComponentListMap.get(module.getClass()))!=null) {
for(Iterator jt=controlList.iterator();jt.hasNext();) {
((ModuleControl)jt.next()).setModule(module);
}
}
//System.out.println("controlList!=null : "+(controlList!=null));
}
}
private static ControlPosition translatePosition(String s) {
return s.equals("top")?ControlPosition.TOP:
s.equals("center")?ControlPosition.CENTER:
s.equals("left")?ControlPosition.LEFT:
s.equals("right")?ControlPosition.RIGHT:
s.equals("bottom")?ControlPosition.BOTTOM:null;
}
static {
BufferedReader reader=null;
try {
reader=new BufferedReader(new InputStreamReader(ClassLoader.getSystemResourceAsStream("controls.cfg")));
String line;
List factories=new ArrayList();
List positions=new ArrayList();
while(reader.ready()) {
line=reader.readLine();
if(line.equals("")){continue;}
String[] split=line.split(",");
factories.add((!split[0].equals("BREAK"))?Class.forName(split[0]).newInstance():null);
positions.add(translatePosition(split[1]));
}
controls=new ModuleControlFactory[factories.size()];
factories.toArray(controls);
AbchrPanel.positions=new ControlPosition[positions.size()];
positions.toArray(AbchrPanel.positions);
reader.close();
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch(InstantiationException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
} finally {
try{if(reader!=null){reader.close();}}catch(IOException e){}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -