Gui/View extensive changes
This commit is contained in:
		
							parent
							
								
									7b3ddf17e0
								
							
						
					
					
						commit
						adbdfd3b99
					
				
					 7 changed files with 101 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -3,9 +3,21 @@ package xl.gui;
 | 
			
		|||
import java.awt.Color;
 | 
			
		||||
import javax.swing.JTextField;
 | 
			
		||||
 | 
			
		||||
public class Editor extends JTextField {
 | 
			
		||||
import xl.controller.EditorController;
 | 
			
		||||
import java.awt.event.ActionListener;
 | 
			
		||||
import java.awt.event.ActionEvent;
 | 
			
		||||
 | 
			
		||||
    public Editor() {
 | 
			
		||||
public class Editor extends JTextField  {
 | 
			
		||||
 | 
			
		||||
    public Editor(EditorController editorController) {
 | 
			
		||||
        setBackground(Color.WHITE);
 | 
			
		||||
        
 | 
			
		||||
        // Listen for changes in the text
 | 
			
		||||
        addActionListener(new ActionListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void actionPerformed(ActionEvent ae) {
 | 
			
		||||
                editorController.handleEditorAction();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,10 +3,15 @@ package xl.gui;
 | 
			
		|||
import static java.awt.BorderLayout.CENTER;
 | 
			
		||||
import static java.awt.BorderLayout.WEST;
 | 
			
		||||
 | 
			
		||||
import xl.controller.EditorController;
 | 
			
		||||
import xl.controller.SlotLabelController;
 | 
			
		||||
import xl.model.XLModel;
 | 
			
		||||
 | 
			
		||||
public class SheetPanel extends BorderPanel {
 | 
			
		||||
 | 
			
		||||
    public SheetPanel(int rows, int columns) {
 | 
			
		||||
    public SheetPanel(int rows, int columns, XLModel xlModel, SlotLabelController slotLabelController,
 | 
			
		||||
            EditorController editorController) {
 | 
			
		||||
        add(WEST, new RowLabels(rows));
 | 
			
		||||
        add(CENTER, new SlotLabels(rows, columns));
 | 
			
		||||
        add(CENTER, new SlotLabels(rows, columns, xlModel, slotLabelController, editorController));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,45 @@
 | 
			
		|||
package xl.gui;
 | 
			
		||||
 | 
			
		||||
import java.awt.Color;
 | 
			
		||||
import java.awt.event.MouseAdapter;
 | 
			
		||||
import java.awt.event.MouseEvent;
 | 
			
		||||
import xl.controller.SlotLabelController;
 | 
			
		||||
import java.util.Observer;
 | 
			
		||||
import java.util.Observable;
 | 
			
		||||
import xl.model.XLModel;
 | 
			
		||||
 | 
			
		||||
public class SlotLabel extends ColoredLabel {
 | 
			
		||||
public class SlotLabel extends ColoredLabel implements Observer {
 | 
			
		||||
    private String address;
 | 
			
		||||
 | 
			
		||||
    public SlotLabel() {
 | 
			
		||||
    public SlotLabel(SlotLabelController slotLabelController, int row, char column) {
 | 
			
		||||
        super("                    ", Color.WHITE, RIGHT);
 | 
			
		||||
        this.address = "" + column + row;
 | 
			
		||||
 | 
			
		||||
        // MouseListener for mouse clicks
 | 
			
		||||
        addMouseListener(new MouseAdapter() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void mouseClicked(MouseEvent e) {
 | 
			
		||||
                slotLabelController.handleSlotClick(SlotLabel.this);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    public String getAddress() {
 | 
			
		||||
        return address;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void update(Observable o, Object arg) {
 | 
			
		||||
        if (o instanceof XLModel) {
 | 
			
		||||
            XLModel xlModel = (XLModel) o;
 | 
			
		||||
            if (xlModel.containsKey(address)) {
 | 
			
		||||
                String tempCurrentAdress = xlModel.getAddressContent(address);
 | 
			
		||||
                xlModel.setCurrentAddress(address);
 | 
			
		||||
                String content = xlModel.getAddressValue(address);
 | 
			
		||||
                setText(content);
 | 
			
		||||
                xlModel.setCurrentAddress(tempCurrentAdress);
 | 
			
		||||
            } else {
 | 
			
		||||
                setText("");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -4,25 +4,35 @@ import java.awt.Color;
 | 
			
		|||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import javax.swing.SwingConstants;
 | 
			
		||||
import xl.model.XLModel;
 | 
			
		||||
import xl.controller.EditorController;
 | 
			
		||||
import xl.controller.SlotLabelController;
 | 
			
		||||
 | 
			
		||||
public class SlotLabels extends GridPanel {
 | 
			
		||||
 | 
			
		||||
    private List<SlotLabel> labelList;
 | 
			
		||||
 | 
			
		||||
    public SlotLabels(int rows, int cols) {
 | 
			
		||||
    public SlotLabels(int rows, int cols, XLModel xlModel, SlotLabelController slotLabelController,
 | 
			
		||||
            EditorController editorController) {
 | 
			
		||||
        super(rows + 1, cols);
 | 
			
		||||
        labelList = new ArrayList<SlotLabel>(rows * cols);
 | 
			
		||||
        for (char ch = 'A'; ch < 'A' + cols; ch++) {
 | 
			
		||||
            add(new ColoredLabel(Character.toString(ch), Color.LIGHT_GRAY, SwingConstants.CENTER));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (int row = 1; row <= rows; row++) {
 | 
			
		||||
            for (char ch = 'A'; ch < 'A' + cols; ch++) {
 | 
			
		||||
                SlotLabel label = new SlotLabel();
 | 
			
		||||
                SlotLabel label = new SlotLabel(slotLabelController, row, ch);
 | 
			
		||||
                xlModel.addObserver(label);
 | 
			
		||||
                add(label);
 | 
			
		||||
                labelList.add(label);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SlotLabel firstLabel = labelList.get(0);
 | 
			
		||||
        firstLabel.setBackground(Color.YELLOW);
 | 
			
		||||
        xlModel.setCurrentAddress("A1");
 | 
			
		||||
        slotLabelController.setCurrentSlot(firstLabel);
 | 
			
		||||
        editorController.setCurrentSlot(firstLabel);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,16 +1,10 @@
 | 
			
		|||
package xl.gui;
 | 
			
		||||
 | 
			
		||||
import java.awt.Color;
 | 
			
		||||
import java.util.Observable;
 | 
			
		||||
import java.util.Observer;
 | 
			
		||||
 | 
			
		||||
public class StatusLabel extends ColoredLabel implements Observer {
 | 
			
		||||
public class StatusLabel extends ColoredLabel {
 | 
			
		||||
 | 
			
		||||
    public StatusLabel() {
 | 
			
		||||
        super("", Color.WHITE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void update(Observable observable, Object object) {
 | 
			
		||||
        setText("");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,10 +3,15 @@ package xl.gui;
 | 
			
		|||
import static java.awt.BorderLayout.CENTER;
 | 
			
		||||
import static java.awt.BorderLayout.WEST;
 | 
			
		||||
 | 
			
		||||
import xl.controller.SlotLabelController;
 | 
			
		||||
import xl.model.XLModel;
 | 
			
		||||
 | 
			
		||||
public class StatusPanel extends BorderPanel {
 | 
			
		||||
 | 
			
		||||
    protected StatusPanel(StatusLabel statusLabel) {
 | 
			
		||||
        add(WEST, new CurrentLabel());
 | 
			
		||||
    protected StatusPanel(StatusLabel statusLabel, XLModel solver, SlotLabelController slotLabelController) {
 | 
			
		||||
        CurrentLabel currentLabel = new CurrentLabel();
 | 
			
		||||
        slotLabelController.setCurrentLabel(currentLabel);
 | 
			
		||||
        add(WEST, currentLabel);
 | 
			
		||||
        add(CENTER, statusLabel);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -6,7 +6,11 @@ import static java.awt.BorderLayout.SOUTH;
 | 
			
		|||
 | 
			
		||||
import javax.swing.JFrame;
 | 
			
		||||
import javax.swing.JPanel;
 | 
			
		||||
 | 
			
		||||
import xl.controller.EditorController;
 | 
			
		||||
import xl.controller.SlotLabelController;
 | 
			
		||||
import xl.gui.menu.XLMenuBar;
 | 
			
		||||
import xl.model.XLModel;
 | 
			
		||||
 | 
			
		||||
public class XL extends JFrame {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -15,23 +19,31 @@ public class XL extends JFrame {
 | 
			
		|||
    private StatusLabel statusLabel = new StatusLabel();
 | 
			
		||||
    private XLList xlList;
 | 
			
		||||
 | 
			
		||||
    public XL(XL oldXL) {
 | 
			
		||||
        this(oldXL.xlList, oldXL.counter);
 | 
			
		||||
    public XL(XL oldXL, XLModel XLModel) {
 | 
			
		||||
        this(oldXL.xlList, oldXL.counter, XLModel);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public XL(XLList xlList, XLCounter counter) {
 | 
			
		||||
        super("Untitled-" + counter);
 | 
			
		||||
    public XL(XLList xlList, XLCounter counter, XLModel XLModel) {
 | 
			
		||||
        super("Window " + counter);
 | 
			
		||||
        this.xlList = xlList;
 | 
			
		||||
        this.counter = counter;
 | 
			
		||||
        xlList.add(this);
 | 
			
		||||
        counter.increment();
 | 
			
		||||
        JPanel statusPanel = new StatusPanel(statusLabel);
 | 
			
		||||
        JPanel sheetPanel = new SheetPanel(ROWS, COLUMNS);
 | 
			
		||||
        Editor editor = new Editor();
 | 
			
		||||
 | 
			
		||||
        EditorController editorController = new EditorController(XLModel, statusLabel);
 | 
			
		||||
        Editor editor = new Editor(editorController);
 | 
			
		||||
        editorController.setEditor(editor);
 | 
			
		||||
 | 
			
		||||
        SlotLabelController slotLabelController = new SlotLabelController(XLModel, editor, statusLabel);
 | 
			
		||||
        slotLabelController.setEditorController(editorController);
 | 
			
		||||
 | 
			
		||||
        JPanel statusPanel = new StatusPanel(statusLabel, XLModel, slotLabelController);
 | 
			
		||||
        JPanel sheetPanel = new SheetPanel(ROWS, COLUMNS, XLModel, slotLabelController, editorController);
 | 
			
		||||
 | 
			
		||||
        add(NORTH, statusPanel);
 | 
			
		||||
        add(CENTER, editor);
 | 
			
		||||
        add(SOUTH, sheetPanel);
 | 
			
		||||
        setJMenuBar(new XLMenuBar(this, xlList, statusLabel));
 | 
			
		||||
        setJMenuBar(new XLMenuBar(this, xlList, statusLabel, XLModel));
 | 
			
		||||
        pack();
 | 
			
		||||
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 | 
			
		||||
        setResizable(false);
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +56,6 @@ public class XL extends JFrame {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        new XL(new XLList(), new XLCounter());
 | 
			
		||||
        new XL(new XLList(), new XLCounter(), new XLModel());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue