package gui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.util.Vector; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextPane; import javax.swing.KeyStroke; import container.ContainerAttribute; import container.ContainerObject; import container.ContainerType; import database.Db; public class PreviewPanel extends JPanel { private static final long serialVersionUID = 1L; private JScrollPane previewScroll; private JTextPane previewPane; private TabPanel inTab; private ContainerObject previewObject; private GridBagConstraints cons = new GridBagConstraints(); PreviewPanel(final TabPanel inTab, ContainerObject previewObject) { this.setLayout(new GridBagLayout()); this.inTab = inTab; this.previewObject = previewObject; // Close dialog when pressing ESC inTab.registerKeyboardAction(new ActionListener() { public void actionPerformed(ActionEvent e) { inTab.removeBottomComponentofSplitPane(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); previewPane = new JTextPane(); previewPane.setEditable(false); previewPane.setContentType("text/html"); previewPane.setText(setPreviewText()); previewScroll = new JScrollPane(previewPane); cons.gridx = 0; cons.gridy = 0; cons.anchor = GridBagConstraints.CENTER; cons.weightx = 1.0; cons.weighty = 1.0; cons.fill = GridBagConstraints.BOTH; this.add(previewScroll, cons); } public String setPreviewText() { String text = ""; Db db = ((Model)inTab.getTheModel()).getEntity().getDb(); String objectType = db.convTypeIdToTypeName(previewObject.getTypeId()); ContainerType type = db.getType(objectType); text = text + "<span style=\"font-size: 18pt\"><i>" + objectType + "</i></span><br>"; if (objectType.compareToIgnoreCase("article") == 0) { text += getAttribute(previewObject, "author") + "<br>"; text += getAttribute(previewObject, "title") + "<br>"; text += "<i>" + getAttribute(previewObject, "journal") + "</i> "; text += getAttribute(previewObject, "publisher") + " "; text += "<b>" + getAttribute(previewObject, "year") + "</b> "; text += getAttribute(previewObject, "pages") + " "; text += getAttribute(previewObject, "doi"); } else if (objectType.compareToIgnoreCase("inproceedings") == 0) { text += getAttribute(previewObject, "author") + "<br>"; text += getAttribute(previewObject, "title") + "<br>"; text += "<i>" + getAttribute(previewObject, "conference") + "</i> "; text += getAttribute(previewObject, "series") + " "; text += "<i>" + getAttribute(previewObject, "volume") + "</i> "; text += "<i>" + getAttribute(previewObject, "publisher") + "</i> "; text += "<b>" + getAttribute(previewObject, "year") + "</b> "; text += getAttribute(previewObject, "doi"); } else { for (int i = 0; i < type.getRequiredFields().size(); i++) { for (int j = 0; j < previewObject.getAttributes().size(); j++) { String attributeType = db.convTypeIdToTypeName(previewObject.getAttributes().get(j).getObjectTypeId()); if (type.getRequiredFields().get(i).compareTo(attributeType) == 0) { text += previewObject.getAttributes().get(i).getValue() + "<br>"; } } } for (int i = 0; i < type.getOptionalFields().size(); i++) { for (int j = 0; j < previewObject.getAttributes().size(); j++) { String attributeType = db.convTypeIdToTypeName(previewObject.getAttributes().get(j).getObjectTypeId()); if (type.getOptionalFields().get(i).compareTo(attributeType) == 0) { text += previewObject.getAttributes().get(j).getValue() + "<br>"; } } } } return text; } /** * Checks all attributes for a given type and returns the fitting attribute * * @param attributeType * @return the attribute with the fitting type */ public String getAttribute(ContainerObject object, String attributeType) { Db db = ((Model)inTab.getTheModel()).getEntity().getDb(); Vector<ContainerAttribute> attributes = object.getAttributes(); String result = ""; for (int i = 0; i < object.getAttributes().size(); i++) { if (db.convTypeIdToTypeName((attributes.get(i).getObjectTypeId())).compareToIgnoreCase(attributeType) == 0) { result = attributes.get(i).getValue(); } } return result; } }