📄 clientinfopane.java
字号:
package net.robin.crm.ui;
import java.awt.Component;
import java.io.IOException;
import java.io.StringWriter;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.stream.StreamSource;
import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
import org.dom4j.io.HTMLWriter;
import org.dom4j.io.OutputFormat;
import sun.print.resources.serviceui;
import net.robin.crm.service.CRMServiceEvent;
import net.robin.crm.service.CRMServiceObserver;
import net.robin.crm.service.Client;
import net.robin.crm.service.ConfigException;
import net.robin.crm.service.InstanceExeption;
import net.robin.crm.service.ServiceException;
import net.robin.crm.util.Util;
public class ClientInfoPane extends JScrollPane implements CRMServiceObserver {
private JTextPane clientInfoTextPane = null;
private Client client;
private static final String TO_HTML_XSLT = "/net/robin/crm/ui/showclient.xslt";
public ClientInfoPane() {
super();
// TODO 自动生成构造函数存根
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setViewportView(getClientInfoTextPane());
try {
ServiceHandeler.getInstance().getService().addCRMServiceObserver(this);
} catch (Exception e) {
e.printStackTrace();
Util.error(e.getMessage());
}
}
/**
* This method initializes clientInfoTextPane
*
* @return javax.swing.JTextPane
*/
private JTextPane getClientInfoTextPane() {
if (clientInfoTextPane == null) {
clientInfoTextPane = new JTextPane();
clientInfoTextPane.setContentType("text/html");
clientInfoTextPane.setEditable(false);
}
return clientInfoTextPane;
}
public Client getClient() {
return client;
}
public void setClient(Client client) throws FormatException {
if(client==null){
getClientInfoTextPane().setText("");
return;
}
this.client = client;
try {
getClientInfoTextPane().setText( toHtml(toXML(client)));
} catch (Exception e) {
e.printStackTrace();
throw new FormatException(e);
}
}
private String toHtml(Document doc) throws TransformerFactoryConfigurationError, TransformerException, IOException {
Transformer transformer = TransformerFactory
.newInstance().newTransformer(new StreamSource(getClass().getResourceAsStream(TO_HTML_XSLT)));
DocumentSource source = new DocumentSource(doc);
DocumentResult result = new DocumentResult();
transformer.transform(source, result);
Document document = result.getDocument();
return formatHtml(document);
}
private String formatHtml(Document doc) throws IOException{
StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setNewlines(true);
format.setTrimText(true);
format.setIndent("");
format.setXHTML(false);
format.setExpandEmptyElements(false);
format.setNewLineAfterNTags(20);
org.dom4j.io.HTMLWriter writer = new HTMLWriter(sw, format);
writer.write(doc);
writer.flush();
writer.close();
return sw.toString();
}
private Document toXML(Client client) {
Document doc = DocumentFactory.getInstance().createDocument();
Element root = doc.addElement("client");
root.addAttribute("id", client.getId());
root.addAttribute("birthday", client.getBirthdayString());
root.addAttribute("email", client.getEmail());
root.addAttribute("mobile", client.getMobile());
root.addAttribute("name", client.getName());
root.addAttribute("phone", client.getPhone());
root.addAttribute("photo", Util.getPhotoURL(client.getPhoto()).toString());
root.addAttribute("qq", client.getQq());
root.addAttribute("sex", client.getSex());
Element category = root.addElement("category");
category.addAttribute("id", client.getCategory().getId());
category.addAttribute("name", client.getCategory().getName());
Element company = root.addElement("company");
company.addAttribute("id", client.getCompany().getId());
company.addAttribute("address", client.getCompany().getAddress());
company.addAttribute("name", client.getCompany().getName());
return doc;
}
public void companyAdded(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void companyChanged(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void companyRemoved(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void categoryAdded(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void categoryChanged(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void categoryRemoved(CRMServiceEvent event) {
// TODO 自动生成方法存根
}
public void clientAdded(CRMServiceEvent event) {
Client client = (Client) event.getNewValue();
try {
setClient(client);
} catch (FormatException e) {
e.printStackTrace();
Util.message(e.getMessage());
}
}
public void clientChanged(CRMServiceEvent event) {
if(this.client == null)
return;
Client client = (Client) event.getNewValue();
if(client.equals(this.client)){
try {
setClient(client);
} catch (FormatException e) {
e.printStackTrace();
Util.message(e.getMessage());
}
}
}
public void clientRemoved(CRMServiceEvent event) {
Client client = (Client) event.getOldValue();
if(client.equals(this.client)){
try {
setClient(null);
} catch (FormatException e) {
e.printStackTrace();
Util.message(e.getMessage());
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -