Compare commits

..

9 Commits

Author SHA1 Message Date
2f45a5a342 Co-authored-by: Fastium <Fastium@users.noreply.github.com> 2022-05-19 16:23:25 +02:00
Fastium
9d4c6ecc7d modification pour que les asserts du bankcontroller fonctionne 2022-05-19 15:18:07 +02:00
Fastium
3a01bb88d4
Merge pull request #10 from Klagarge/comment-ys
Comment ys
2022-05-19 11:53:28 +01:00
Fastium
354ea04dff comment on BillGUI 2022-05-19 12:51:26 +02:00
Fastium
91320444a5 comment on BillGUI 2022-05-19 12:51:06 +02:00
Fastium
e245dcba52 comment in hessoGarage and biullGui 2022-05-19 12:35:53 +02:00
Fastium
21070c07be comment on managerGui 2022-05-19 11:34:04 +02:00
Fastium
095fa60a3d
Merge pull request #9 from Klagarge/Yann
comment on GUI exercice
2022-05-19 08:40:07 +01:00
Fastium
5fb795df73 comment on GUI exercice 2022-05-19 09:36:10 +02:00
21 changed files with 110 additions and 61 deletions

38
.vscode/launch.json vendored
View File

@ -1,5 +1,35 @@
{
"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",
"name": "Launch HesSoGarage",
@ -35,14 +65,6 @@
"mainClass": "GUI.GUI1",
"projectName": "Lab15_OOP_90898795",
"liveshare.allowGuestDebugControl": true
},
{
"type": "java",
"name": "Launch BankController",
"request": "launch",
"mainClass": "bank.BankController",
"projectName": "Lab15_OOP_90898795",
"vmArgs": "-enableassertions"
}
]
}

View File

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

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,10 +6,17 @@ import javax.swing.*;
import java.awt.print.*;
import java.awt.image.BufferedImage;
/**
* generate the bill in a window
*/
public class BillGui extends JFrame{
String bill;
JPanel jP;
/**
* initialize the bill in a window
* @param bill string who contains the bill
*/
BillGui(String bill){
this.bill = bill;
@ -20,23 +27,26 @@ public class BillGui extends JFrame{
FlowLayout fl = new FlowLayout();
this.setLayout(fl);
//Create the label who contain the label with the bill
jP = new JPanel();
JLabel jBill = new JLabel(bill);
jP.add(jBill);
this.add(jP);
//Create the button for print the bill
JButton buttonPrint = new JButton("Print");
buttonPrint.addActionListener(
buttonPrint.addActionListener(new ButtonListenerBill() {
new ButtonListenerBill(this) {
@Override
public void actionPerformed(ActionEvent e){
// Create a new printer Job
PrinterJob pj = PrinterJob.getPrinterJob();
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() {
public int print(Graphics pg, PageFormat pf, int pageNum){
if (pageNum > 0) return Printable.NO_SUCH_PAGE;
@ -54,40 +64,39 @@ public class BillGui extends JFrame{
}
};
// Create and set a A4 paper
Paper paper = new Paper();
paper.setImageableArea(0, 0,2480,3508);
paper.setSize(2480,3508);
PageFormat format = new PageFormat();
format.setPaper(paper);
format.setOrientation(PageFormat.PORTRAIT);
// Set all settings about the printing function
pj.setPrintable (printable, format);
// Launch the printer dialog for printing.
if (pj.printDialog() == false) return;
try {
pj.print();
} catch (PrinterException ex) {}
}
});
this.add(buttonPrint);
}
}
/**
*
* listener to detect the button to print the bill
*/
class ButtonListenerBill implements ActionListener {
JFrame Jf;
ButtonListenerBill(JFrame Jf){
this.Jf = Jf;
}
@Override
public void actionPerformed(ActionEvent e){ };
public void actionPerformed(ActionEvent e){};
}

View File

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

View File

@ -6,7 +6,7 @@ import java.util.Vector;
import javax.swing.*;
/**
*
* HMI for calculate the bill
*/
public class ManagerGui extends JFrame {
GridLayout grid;
@ -15,6 +15,7 @@ public class ManagerGui extends JFrame {
ImageIcon logo;
String buttonNameQuit = "Quit";
String buttonNameBill = "Show bill";
double ratio = 207.0 / 163.0;
Vector<Row> prestations = new Vector<>();
@ -22,13 +23,17 @@ 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){
//set up the window with the layout
this.setSize(400,600);
this.setLocation(600,200);
this.setVisible(true);
grid = new GridLayout(prestationsName.length + 2,2);
this.setLayout(grid);
@ -37,8 +42,11 @@ public class ManagerGui extends JFrame {
Jlogo = new JLabel(logo);
Jname = new JLabel(name);
this.add(Jname);
this.add(Jlogo);
//logo = new ImageIcon(new ImageIcon(logoFilePath).getImage().getScaledInstance(207, 163, Image.SCALE_DEFAULT));
//Jlogo = new JLabel(logo);
Jlogo = resize(Jname, logoFilePath);
this.add(Jlogo);
//Create rows for prestations
for(String s : prestationsName){
@ -54,7 +62,7 @@ public class ManagerGui extends JFrame {
JButton buttonBill = new JButton(buttonNameBill);
buttonBill.addActionListener(new ButtonListenerManager(valuePrestations, prestations, garageManager){
/**
*
* add the number of prestations when it is used
*/
@Override
public void actionPerformed(ActionEvent e){
@ -66,7 +74,7 @@ public class ManagerGui extends JFrame {
}
System.out.println(value);
}
//Create the bill
new BillGui(garageManager.generateHTMLBill(valuePrestations));
};
});
@ -74,29 +82,38 @@ public class ManagerGui extends JFrame {
JButton buttonQuit = new JButton(buttonNameQuit);
buttonQuit.addActionListener(new ButtonListenerManager(this){
/**
*
* quit the window
*/
@Override
public void actionPerformed(ActionEvent e){
Jf.dispose();
System.exit(0);
};
});
this.add(buttonBill);
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 {
JLabel label;
JSpinner spinner;
Row(String title){
label = new JLabel(title);
spinner = new JSpinner();
@ -104,7 +121,7 @@ class Row {
}
/**
*
* listener for detect the button
*/
class ButtonListenerManager implements ActionListener {
JFrame Jf;

View File

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

View File

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