⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abchrpanel.java

📁 Java version of ABC/HR comparator v0.5. by schnofler. Runs on Sun JRE 1.5 or later
💻 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 + -