private static final char DEFAULT_SEPARATOR = ',';
private static final char DEFAULT_QUOTE = '"';
- public static List<String> parseLine(String cvsLine) {
- return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE);
+ public static List<String> parseLine(String csvLine) {
+ return parseLine(csvLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE);
}
- public static List<String> parseLine(String cvsLine, char separators) {
- return parseLine(cvsLine, separators, DEFAULT_QUOTE);
+ public static List<String> parseLine(String csvLine, char separators) {
+ return parseLine(csvLine, separators, DEFAULT_QUOTE);
}
- public static List<String> parseLine(String cvsLine, char separators, char customQuote) {
+ public static List<String> parseLine(String csvLine, char separators, char customQuote) {
List<String> result = new ArrayList<>();
//if empty, return!
- if (cvsLine == null && cvsLine.isEmpty()) {
+ if (csvLine == null && csvLine.isEmpty()) {
return result;
}
boolean startCollectChar = false;
boolean doubleQuotesInColumn = false;
- char[] chars = cvsLine.toCharArray();
+ char[] chars = csvLine.toCharArray();
for (char ch : chars) {
private String[] colorsList = {"black", "blue", "brown", "green"};
Eye() {
+ //this.color = Color.white;
sortColorList();
}
import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
import java.util.Arrays;
-public class EyeView extends JPanel {
+public class EyeView extends JPanel implements ListSelectionListener {
private Eye eyeObj;
private JLabel label;
private JList colorsList;
this.colorsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.colorsList.setLayoutOrientation(JList.VERTICAL);
this.colorsList.setSelectedIndex(Arrays.asList(this.getEyeObj().getColorsList()).indexOf(this.getEyeObj().getStrColor()));
+ this.colorsList.setCellRenderer(new EyeCellRenderer());
+ this.colorsList.addListSelectionListener(this);
add(label);
add(colorsList);
}
public JList getColorsList() {
return colorsList;
}
+
+ @Override
+ public void valueChanged(ListSelectionEvent listSelectionEvent) {
+ Eye currentEye = new Eye((String) getColorsList().getSelectedValue());
+ PersonLeftPanel personLeftPanel = MainWindowsView.getInstance().getCurrentPersonView().getPersonPanel().getLeftPanel();
+ personLeftPanel.drawEyes(currentEye.getColor());
+ }
+
+ private static class EyeCellRenderer extends DefaultListCellRenderer {
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+ Eye currentEye = new Eye((String) list.getModel().getElementAt(index));
+ c.setBackground(currentEye.getColor());
+ c.setForeground(Color.WHITE);
+ if (isSelected) {
+ setBackground(getBackground().darker());
+ }
+ return c;
+ }
+ }
}
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
- MainWindowsView mainWindows = new MainWindowsView(programName, emptyPersonView);
+ MainWindowsView mainWindows = MainWindowsView.getInstance();
+ mainWindows.setMainWindowsView(programName, emptyPersonView);
mainWindows.showGUI();
}
});
import java.util.ArrayList;
public class MainWindowsView extends JFrame {
+ private static MainWindowsView ourInstance = new MainWindowsView();
+ private PersonView currentPersonView;
- MainWindowsView(String title, PersonView view) {
+ private MainWindowsView() {
+ }
+
+ public void setMainWindowsView(String title, PersonView personView) {
+ this.currentPersonView = personView;
Container panel = getContentPane();
//Create and set up the window.
setTitle(title);
- setSize(view.getDimension());
+ setSize(getCurrentPersonView().getDimension());
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.add(component);
}
- panel.add(view.getNorthPanel(), BorderLayout.NORTH);
- panel.add(view.getSouthPanel(), BorderLayout.SOUTH);
- panel.add(view.getEastPanel(), BorderLayout.EAST);
- panel.add(view.getWestPanel(), BorderLayout.WEST);
- panel.add(view.getPersonPanel(), BorderLayout.CENTER);
+ panel.add(getCurrentPersonView().getNorthPanel(), BorderLayout.NORTH);
+ panel.add(getCurrentPersonView().getSouthPanel(), BorderLayout.SOUTH);
+ panel.add(getCurrentPersonView().getEastPanel(), BorderLayout.EAST);
+ panel.add(getCurrentPersonView().getWestPanel(), BorderLayout.WEST);
+ panel.add(getCurrentPersonView().getPersonPanel(), BorderLayout.CENTER);
+ }
+
+ public static MainWindowsView getInstance() {
+ return ourInstance;
+ }
+
+ public PersonView getCurrentPersonView() {
+ return currentPersonView;
}
/**
System.out.println("Created GUI on EDT? " +
SwingUtilities.isEventDispatchThread());
//Display the window.
- //this.pack();
+ this.pack();
this.setVisible(true);
}
}
\ No newline at end of file
--- /dev/null
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
+public class PersonLeftPanel extends JPanel {
+ private JLabel leftLabel = new JLabel();
+ private Image personImage;
+
+ PersonLeftPanel() {
+ leftLabel.setText("Current person");
+ add(leftLabel);
+ try {
+ this.personImage = ImageIO.read(new File("data/personImage.png"));
+ } catch (IOException e) {
+ System.out.println(e.getStackTrace());
+ }
+ }
+
+ private void draw(Graphics g) {
+ // Draw
+ Graphics2D g2d = (Graphics2D) g;
+ int imageWidth = 120;
+ int imageHeight = 180;
+ g2d.drawImage(this.personImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_SMOOTH), imageWidth / 4, imageHeight / 4, this);
+ }
+
+ @Override
+ public void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ draw(g);
+ }
+
+ //FIXME: redraw on resizing
+ /*@Override
+ public void paint(Graphics g) {
+ super.paint(g);
+ draw(g);
+ }*/
+
+ public void drawEyes(Color color) {
+ Graphics g = this.getGraphics();
+ g.setColor(color);
+ g.fillOval(50, 50, 6, 3);
+ g.fillOval(62, 50, 6, 3);
+ }
+}
-import javax.imageio.ImageIO;
import javax.swing.*;
-import java.awt.*;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.Point2D;
-import java.io.File;
-import java.io.IOException;
public class PersonPanel extends JPanel {
- private boolean debug = true;
- private String titleText = new String();
- private JLabel personLabel = new JLabel();
- private String contentText = new String();
- private Image personImage;
+ private PersonLeftPanel leftPanel = new PersonLeftPanel();
+ private PersonRightPanel rightPanel = new PersonRightPanel();
- public PersonPanel(String title) {
- setTitleText(title);
- personLabel.setText(this.getTitleText());
- add(personLabel);
- try {
- this.personImage = ImageIO.read(new File("data/personImage.png"));
- } catch (IOException e) {
- System.out.println(e.getStackTrace());
- }
+ public PersonPanel() {
+ setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
+ add(leftPanel);
+ add(rightPanel);
}
- public void setTitleText(String titleText) {
- this.titleText = titleText;
+ public void setRightContentText(String rightContentText) {
+ this.rightPanel.setContentText(rightContentText);
}
- public String getTitleText() {
- return titleText;
+ public PersonLeftPanel getLeftPanel() {
+ return leftPanel;
}
- public void setContentText(String contentText) {
- this.contentText = contentText;
- }
-
- public String getContentText() {
- return contentText;
- }
-
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
-
- // Draw
- g.setColor(Color.black);
- if (debug)
- // Below the JLabel
- g.drawString(this.getContentText(), 5, 35);
- Graphics2D g2d = (Graphics2D) g;
- g2d.drawImage(this.personImage.getScaledInstance(getWidth() / 2, getHeight() / 2, Image.SCALE_SMOOTH), getWidth() / 4, getHeight() / 4, this);
- }
-
- private static Ellipse2D getCircleByCenter(Point2D center, double radius) {
- Ellipse2D.Double myCircle = new Ellipse2D.Double(center.getX() - radius, center.getY() - radius, 2 * radius, 2 * radius);
- return myCircle;
+ public PersonRightPanel getRightPanel() {
+ return rightPanel;
}
}
--- /dev/null
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
+public class PersonRightPanel extends JPanel {
+ private JLabel rightLabel = new JLabel();
+ private String contentText = new String();
+ private Image personImage;
+
+ PersonRightPanel() {
+ rightLabel.setText("Closest person found");
+ add(rightLabel);
+ try {
+ this.personImage = ImageIO.read(new File("data/personImage.png"));
+ } catch (IOException e) {
+ System.out.println(e.getStackTrace());
+ }
+ }
+
+ public void setContentText(String contentText) {
+ this.contentText = contentText;
+ }
+
+ public String getContentText() {
+ return contentText;
+ }
+
+ //FIXME: redraw on resizing
+ /*@Override
+ public void paint(Graphics g) {
+ super.paint(g);
+ drawPerson();
+ }*/
+
+ public void drawPerson(Person personObj) {
+ Graphics g = this.getGraphics();
+ g.clearRect(0, 25, getWidth(), getHeight());
+
+ // Draw
+ g.drawString(getContentText(), 12, 35);
+ Graphics2D g2d = (Graphics2D) g;
+ int imageWidth = 120;
+ int imageHeight = 180;
+ g2d.drawImage(this.personImage.getScaledInstance(imageWidth / 2, imageHeight / 2, Image.SCALE_SMOOTH), imageWidth / 4, imageHeight / 4, this);
+ g2d.setColor(personObj.getEye().getColor());
+ g2d.fillOval(50, 50, 6, 3);
+ g2d.fillOval(62, 50, 6, 3);
+ }
+}
import java.util.ArrayList;
public class PersonView extends JComponent implements ActionListener {
- private int width = 800;
- private int height = 500;
+ private int width = 600;
+ private int height = 600;
private Person personObj;
private ArrayList<Person> personArrayList;
private FirstnameView firstnameView;
private JPanel southPanel = new JPanel();
private JPanel eastPanel = new JPanel();
private JPanel westPanel = new JPanel();
- private PersonPanel personPanel = new PersonPanel("Person comparison");
+ private PersonPanel personPanel = new PersonPanel();
private JButton compareButton = new JButton("Compare");
PersonView(Person personObj, ArrayList<Person> personArrayList) {
setPersonObj(personObj);
- setFirstnameView(new FirstnameView(15, this.personObj.getFirstname()));
+ setFirstnameView(new FirstnameView(14, this.personObj.getFirstname()));
setOriginView(new OriginView(this.personObj.getOrigin()));
setSizeView(new SizeView(this.personObj.getPersonSize()));
setWeightView(new WeightView(this.personObj.getWeight()));
northPanel.add(firstnameView);
southPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
southPanel.add(compareButton);
- eastPanel.setLayout(new BoxLayout(this.eastPanel, BoxLayout.Y_AXIS));
+ eastPanel.setLayout(new BoxLayout(this.eastPanel, BoxLayout.PAGE_AXIS));
eastPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
eastPanel.add(sizeView);
eastPanel.add(weightView);
eastPanel.add(eyeView);
- westPanel.setLayout(new BoxLayout(this.westPanel, BoxLayout.Y_AXIS));
+ westPanel.setLayout(new BoxLayout(this.westPanel, BoxLayout.PAGE_AXIS));
westPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
westPanel.add(originView);
}
personArrayList.sort(getPersonObj());
//Utils.displayArrayList(personArrayList);
Person closestPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) + 1);
- personPanel.setContentText(closestPerson.toString());
+ personPanel.setRightContentText(closestPerson.getFirstname().getFirstname() + " at distance " + closestPerson.getDistanceFromReference());
+ personPanel.getRightPanel().drawPerson(closestPerson);
}
}
}