Compare commits

..

1 Commits

Author SHA1 Message Date
60718d7c35 small polish 2022-05-19 09:35:06 +02:00
21 changed files with 61 additions and 110 deletions

38
.vscode/launch.json vendored
View File

@ -1,35 +1,5 @@
{ {
"configurations": [ "configurations": [
{
"type": "java",
"name": "Launch CompleteBankController",
"request": "launch",
"mainClass": "bank.CompleteBankController",
"projectName": "Lab15_OOP_90898795",
"vmArgs": "-enableassertions"
},
{
"type": "java",
"name": "Launch BankController",
"request": "launch",
"mainClass": "bank.CompleteBankController",
"projectName": "Lab15_OOP_fc166bd2",
"vmArgs": "-enableassertions"
},
{
"type": "java",
"name": "Launch GUI2",
"request": "launch",
"mainClass": "GUI.GUI2",
"projectName": "Lab15_OOP_79fdc875"
},
{
"type": "java",
"name": "Launch GUI1",
"request": "launch",
"mainClass": "GUI.GUI1",
"projectName": "Lab15_OOP_79fdc875"
},
{ {
"type": "java", "type": "java",
"name": "Launch HesSoGarage", "name": "Launch HesSoGarage",
@ -65,6 +35,14 @@
"mainClass": "GUI.GUI1", "mainClass": "GUI.GUI1",
"projectName": "Lab15_OOP_90898795", "projectName": "Lab15_OOP_90898795",
"liveshare.allowGuestDebugControl": true "liveshare.allowGuestDebugControl": true
},
{
"type": "java",
"name": "Launch BankController",
"request": "launch",
"mainClass": "bank.BankController",
"projectName": "Lab15_OOP_90898795",
"vmArgs": "-enableassertions"
} }
] ]
} }

View File

@ -9,6 +9,7 @@
"cSpell.words": [ "cSpell.words": [
"Jframe", "Jframe",
"Jlogo", "Jlogo",
"Jname" "Jname",
"Mudry"
] ]
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,17 +6,10 @@ import javax.swing.*;
import java.awt.print.*; import java.awt.print.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
/**
* generate the bill in a window
*/
public class BillGui extends JFrame{ public class BillGui extends JFrame{
String bill; String bill;
JPanel jP; JPanel jP;
/**
* initialize the bill in a window
* @param bill string who contains the bill
*/
BillGui(String bill){ BillGui(String bill){
this.bill = bill; this.bill = bill;
@ -27,26 +20,23 @@ public class BillGui extends JFrame{
FlowLayout fl = new FlowLayout(); FlowLayout fl = new FlowLayout();
this.setLayout(fl); this.setLayout(fl);
//Create the label who contain the label with the bill
jP = new JPanel(); jP = new JPanel();
JLabel jBill = new JLabel(bill); JLabel jBill = new JLabel(bill);
jP.add(jBill); jP.add(jBill);
this.add(jP); this.add(jP);
//Create the button for print the bill
JButton buttonPrint = new JButton("Print"); JButton buttonPrint = new JButton("Print");
buttonPrint.addActionListener(new ButtonListenerBill() { buttonPrint.addActionListener(
new ButtonListenerBill(this) {
@Override @Override
public void actionPerformed(ActionEvent e){ public void actionPerformed(ActionEvent e){
// Create a new printer Job
PrinterJob pj = PrinterJob.getPrinterJob(); PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("Bill"); pj.setJobName("Bill");
// Create a printable element from a JPanel. This method is just a copy, it resize but isn't perfect.
// It's just a first test. Should be improved
// TODO : improve this method
Printable printable = new Printable() { Printable printable = new Printable() {
public int print(Graphics pg, PageFormat pf, int pageNum){ public int print(Graphics pg, PageFormat pf, int pageNum){
if (pageNum > 0) return Printable.NO_SUCH_PAGE; if (pageNum > 0) return Printable.NO_SUCH_PAGE;
@ -64,37 +54,38 @@ public class BillGui extends JFrame{
} }
}; };
// Create and set a A4 paper
Paper paper = new Paper(); Paper paper = new Paper();
paper.setImageableArea(0, 0,2480,3508); paper.setImageableArea(0, 0,2480,3508);
paper.setSize(2480,3508); paper.setSize(2480,3508);
PageFormat format = new PageFormat(); PageFormat format = new PageFormat();
format.setPaper(paper); format.setPaper(paper);
format.setOrientation(PageFormat.PORTRAIT); format.setOrientation(PageFormat.PORTRAIT);
// Set all settings about the printing function
pj.setPrintable (printable, format); pj.setPrintable (printable, format);
// Launch the printer dialog for printing.
if (pj.printDialog() == false) return; if (pj.printDialog() == false) return;
try { try {
pj.print(); pj.print();
} catch (PrinterException ex) {} } catch (PrinterException ex) {}
} }
}); });
this.add(buttonPrint); this.add(buttonPrint);
} }
} }
/** /**
* listener to detect the button to print the bill *
*/ */
class ButtonListenerBill implements ActionListener { class ButtonListenerBill implements ActionListener {
JFrame Jf;
ButtonListenerBill(JFrame Jf){
this.Jf = Jf;
}
@Override @Override
public void actionPerformed(ActionEvent e){ }; public void actionPerformed(ActionEvent e){ };
} }

View File

@ -2,12 +2,10 @@ package BillGUI;
public class HesSoGarage { public class HesSoGarage {
public static void main(String[] args) { public static void main(String[] args) {
//Create a new garage
GarageManager garageManager = new GarageManager(); GarageManager garageManager = new GarageManager();
String name = "<html><body><i>Garage manager</i><br>Prestations</body></html>"; String name = "<html><body><i>Garage manager</i><br>Prestations</body></html>";
String logoFilePath = "src/logo_garage.png"; String logoFilePath = "src/logo_garage.png"; //TODO redimensionnement automatique
//Create a new HMI for calculate and print the bill new ManagerGui(name, logoFilePath, garageManager.getServices(), garageManager); //TODO affichage sans redimensionnement
new ManagerGui(name, logoFilePath, garageManager.getServices(), garageManager);
} }
} }

View File

@ -6,7 +6,7 @@ import java.util.Vector;
import javax.swing.*; import javax.swing.*;
/** /**
* HMI for calculate the bill *
*/ */
public class ManagerGui extends JFrame { public class ManagerGui extends JFrame {
GridLayout grid; GridLayout grid;
@ -15,7 +15,6 @@ public class ManagerGui extends JFrame {
ImageIcon logo; ImageIcon logo;
String buttonNameQuit = "Quit"; String buttonNameQuit = "Quit";
String buttonNameBill = "Show bill"; String buttonNameBill = "Show bill";
double ratio = 207.0 / 163.0;
Vector<Row> prestations = new Vector<>(); Vector<Row> prestations = new Vector<>();
@ -23,17 +22,13 @@ public class ManagerGui extends JFrame {
/** /**
* initialize the window *
* @param name name of the garage
* @param logoFilePath file of the garage's logo
* @param prestationsName array with the name of the prestations
* @param garageManager a new garage application
*/ */
public ManagerGui(String name, String logoFilePath, String[] prestationsName, GarageManager garageManager){ public ManagerGui(String name, String logoFilePath, String[] prestationsName, GarageManager garageManager){
//set up the window with the layout
this.setSize(400,600); this.setSize(400,600);
this.setLocation(600,200); this.setLocation(600,200);
this.setVisible(true); this.setVisible(true);
grid = new GridLayout(prestationsName.length + 2,2); grid = new GridLayout(prestationsName.length + 2,2);
this.setLayout(grid); this.setLayout(grid);
@ -42,12 +37,9 @@ public class ManagerGui extends JFrame {
Jlogo = new JLabel(logo); Jlogo = new JLabel(logo);
Jname = new JLabel(name); Jname = new JLabel(name);
this.add(Jname); this.add(Jname);
//logo = new ImageIcon(new ImageIcon(logoFilePath).getImage().getScaledInstance(207, 163, Image.SCALE_DEFAULT));
//Jlogo = new JLabel(logo);
Jlogo = resize(Jname, logoFilePath);
this.add(Jlogo); this.add(Jlogo);
//Create rows for prestations //Create rows for prestations
for(String s : prestationsName){ for(String s : prestationsName){
prestations.add(new Row(s)); prestations.add(new Row(s));
@ -62,7 +54,7 @@ public class ManagerGui extends JFrame {
JButton buttonBill = new JButton(buttonNameBill); JButton buttonBill = new JButton(buttonNameBill);
buttonBill.addActionListener(new ButtonListenerManager(valuePrestations, prestations, garageManager){ buttonBill.addActionListener(new ButtonListenerManager(valuePrestations, prestations, garageManager){
/** /**
* add the number of prestations when it is used *
*/ */
@Override @Override
public void actionPerformed(ActionEvent e){ public void actionPerformed(ActionEvent e){
@ -74,7 +66,7 @@ public class ManagerGui extends JFrame {
} }
System.out.println(value); System.out.println(value);
} }
//Create the bill
new BillGui(garageManager.generateHTMLBill(valuePrestations)); new BillGui(garageManager.generateHTMLBill(valuePrestations));
}; };
}); });
@ -82,38 +74,29 @@ public class ManagerGui extends JFrame {
JButton buttonQuit = new JButton(buttonNameQuit); JButton buttonQuit = new JButton(buttonNameQuit);
buttonQuit.addActionListener(new ButtonListenerManager(this){ buttonQuit.addActionListener(new ButtonListenerManager(this){
/** /**
* quit the window *
*/ */
@Override @Override
public void actionPerformed(ActionEvent e){ public void actionPerformed(ActionEvent e){
Jf.dispose(); Jf.dispose();
System.exit(0);
}; };
}); });
this.add(buttonBill); this.add(buttonBill);
this.add(buttonQuit); this.add(buttonQuit);
this.setVisible(true);
}
private JLabel resize(JLabel Jlogo, String logoFilePath){
//TODO put in listener for resize when frame is resized.
int width = (int)Jlogo.getSize().getWidth();
int height = (int)Jlogo.getSize().getHeight();
height = height > 0 ? height:65;
System.out.println(width + "x"+ height);
ImageIcon logo = new ImageIcon(new ImageIcon(logoFilePath).getImage().getScaledInstance((int) (height*ratio), height, Image.SCALE_DEFAULT));
return new JLabel(logo);
} }
} }
/** /**
* Create a row in the windows with a label and a spinner *
*/ */
class Row { class Row {
JLabel label; JLabel label;
JSpinner spinner; JSpinner spinner;
Row(String title){ Row(String title){
label = new JLabel(title); label = new JLabel(title);
spinner = new JSpinner(); spinner = new JSpinner();
@ -121,7 +104,7 @@ class Row {
} }
/** /**
* listener for detect the button *
*/ */
class ButtonListenerManager implements ActionListener { class ButtonListenerManager implements ActionListener {
JFrame Jf; JFrame Jf;

View File

@ -1,4 +1,5 @@
package GUI; package GUI;
//TODO mettre commentaire
import javax.swing.*; import javax.swing.*;
@ -7,43 +8,36 @@ import java.awt.FlowLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
/**
* main class for create the window
*/
public class GUI1 extends JFrame { public class GUI1 extends JFrame {
public static void main(String[] args) { public static void main(String[] args) {
new GUI1(); new GUI1();
} }
GUI1(){ GUI1(){
//set up the window
setTitle("Me"); setTitle("Me");
setSize(200,200); setSize(200,200);
setLocation(600,200); setLocation(600,200);
this.getContentPane().setBackground(Color.GREEN);
//set the layout for the window
FlowLayout fl = new FlowLayout(); FlowLayout fl = new FlowLayout();
this.setLayout(fl); this.setLayout(fl);
//create and add component on the window this.getContentPane().setBackground(Color.GREEN);
JButton jb1 = new JButton("Foo"); JButton jb1 = new JButton("Foo");
JButton jb2 = new JButton("bar"); JButton jb2 = new JButton("bar");
ButtonListener bl = new ButtonListener(this); ButtonListener bl = new ButtonListener(this);
jb1.addActionListener(bl); jb1.addActionListener(bl);
jb2.addActionListener(bl); jb2.addActionListener(bl);
this.add(jb1); this.add(jb1);
this.add(jb2); this.add(jb2);
this.setVisible(true); this.setVisible(true);
} }
} }
/**
* set up the class for detect button
*/
class ButtonListener implements ActionListener{ class ButtonListener implements ActionListener{
JFrame f1; JFrame f1;

View File

@ -1,4 +1,5 @@
package GUI; package GUI;
//TODO mettre commentaire
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
@ -6,53 +7,57 @@ import javax.swing.event.ChangeListener;
import java.awt.Container; import java.awt.Container;
/** /**
* main class for create the window *
*/ */
public class GUI2 extends JFrame{ public class GUI2 extends JFrame{
int number; int number;
public static void main(String[] args) { public static void main(String[] args) {
new GUI2(); new GUI2();
} }
/**
*
*/
GUI2(){ GUI2(){
//set up the window with the layout
setSize(200,200); setSize(200,200);
setLocation(600,200); setLocation(600,200);
Container c = this.getContentPane(); Container c = this.getContentPane();
BoxLayout fl = new BoxLayout(c, BoxLayout.Y_AXIS); BoxLayout fl = new BoxLayout(c, BoxLayout.Y_AXIS);
c.setLayout(fl); c.setLayout(fl);
//create component on the window
JSlider js1 = new JSlider(0, 100); JSlider js1 = new JSlider(0, 100);
js1.setValue(0); js1.setValue(0);
JProgressBar jp1 = new JProgressBar(0, 100); JProgressBar jp1 = new JProgressBar(0, 100);
JLabel jl1 = new JLabel("waiting"); JLabel jl1 = new JLabel("waiting");
//create the listener for the slider
Listener l = new Listener(jp1, jl1, js1); Listener l = new Listener(jp1, jl1, js1);
js1.addChangeListener(l); js1.addChangeListener(l);
//addd component on the window
c.add(js1); c.add(js1);
c.add(jp1); c.add(jp1);
c.add(jl1); c.add(jl1);
this.setVisible(true); this.setVisible(true);
} }
} }
/** /**
* class for detect slider mouvement *
*/ */
class Listener implements ChangeListener { class Listener implements ChangeListener {
JProgressBar jp1; JProgressBar jp1;
JLabel jl1; JLabel jl1;
JSlider js1; JSlider js1;
int number = 0; int number = 0;
/** /**
* initialize the instance with parameters *
* @param jp1 progress bar who display the number of the slider * @param jp1
* @param jl1 label progress bar who display the number of the slider * @param jl1
* @param js1 slider who modify the label and the progress bar * @param js1
*/ */
Listener(JProgressBar jp1, JLabel jl1, JSlider js1){ Listener(JProgressBar jp1, JLabel jl1, JSlider js1){
this.jp1 = jp1; this.jp1 = jp1;
@ -61,7 +66,8 @@ class Listener implements ChangeListener {
} }
/** /**
* modify the value of the label and the progress bar with the slider *
* @param e
*/ */
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {