1
0
Fork 0

Main gui prototype

This commit is contained in:
Tergel TSAGAAN 2021-01-03 17:32:05 +01:00
parent 54d76581f3
commit cb1ba75d4a
5 changed files with 217 additions and 110 deletions

View file

@ -0,0 +1,79 @@
package GUI;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
public class Agenda extends JPanel {
private JPanel agendaPanel;
private String headers[];
private int totalDay;
private int currentPage;
public Agenda(JPanel agendaPanel, String headers[], int totalDay, int currentPage) {
this.agendaPanel = agendaPanel;
this.headers = headers;
this.totalDay = totalDay;
this.currentPage = currentPage;
this.agendaPanel.removeAll();
System.out.println("lolilol");
int totalPages[] = dayToPage(9);
JScrollPane scroll = constructAgenda(totalPages[this.currentPage]);
agendaPanel.add(scroll);
}
private int[] dayToPage(int totalDay) {
int day = totalDay;
int count = 0;
while (day >= 5) {
day = day-5;
count++;
}
int rest = totalDay - 5*count;
int totalPages = rest < 5 ? count+1:count;
int pages[] = new int[totalPages];
Arrays.fill(pages, 5);
if (rest < 5) pages[totalPages-1] = rest;
return pages;
}
private JScrollPane constructAgenda(int day) {
ListModel lm = new AbstractListModel() {
public int getSize() {
return headers.length;
}
public Object getElementAt(int index) {
return headers[index];
}
};
MyTableModel dm = new MyTableModel(day, currentPage);
JTable table = new JTable(dm) {
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(super.getPreferredSize().width, getRowHeight()*(getRowCount()-1)-20);
}
};
table.setCellSelectionEnabled(true);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setRowHeight(100);
TableColumnModel columnModel = table.getColumnModel();
int columnCount = columnModel.getColumnCount();
for (int i = 0; i < columnCount; i++) {
table.getColumnModel().getColumn(i).setPreferredWidth(200);
}
JList rowHeader = new JList(lm);
rowHeader.setFixedCellWidth(100);
rowHeader.setFixedCellHeight(100);
rowHeader.setCellRenderer(new RowHeaderRenderer(table));
JScrollPane scroll = new JScrollPane(table);
scroll.setRowHeaderView(rowHeader);
scroll.setBorder(BorderFactory.createEmptyBorder());
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
return scroll;
}
}

View file

@ -1,27 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="GUI.GUI"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="GUI.GUI">
<grid id="27dc6" binding="mainPanel" layout-manager="GridBagLayout"> <grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="4" column-count="5" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<constraints>
<xy x="20" y="20" width="500" height="695"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="7954c" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/> <margin top="0" left="0" bottom="0" right="0"/>
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/> <xy x="50" y="20" width="1325" height="348"/>
<gridbag weightx="1.0" weighty="0.0"/>
</constraints> </constraints>
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<vspacer id="668e3"> <grid id="6e52f" binding="agendaPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="1" column="0" row-span="1" col-span="5" vsize-policy="7" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false">
<minimum-size width="1000" height="-1"/>
<preferred-size width="1000" height="-1"/>
</grid>
</constraints>
<properties/>
<border type="empty">
<size top="0" left="50" bottom="0" right="0"/>
</border>
<children/>
</grid>
<hspacer id="82bd">
<constraints>
<grid row="0" column="3" row-span="1" col-span="2" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<grid id="5ab4e" binding="arrowPanel" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="4" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="ea5a" class="javax.swing.JButton" binding="previousButton">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="1" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="←"/>
</properties>
</component>
<component id="ddc41" class="javax.swing.JButton" binding="nextButton">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="1" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="→"/>
</properties>
</component>
</children>
</grid>
<vspacer id="b0c71">
<constraints>
<grid row="3" column="4" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<grid id="41fdc" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<vspacer id="fbe38">
<constraints> <constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/> <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
</vspacer> </vspacer>
<grid id="7f894" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="f1379" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/> <margin top="0" left="0" bottom="0" right="0"/>
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
@ -29,7 +78,7 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<grid id="fc703" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="b1c37" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="25" left="50" bottom="0" right="0"/> <margin top="25" left="50" bottom="0" right="0"/>
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false">
@ -39,7 +88,7 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<component id="a4e5" class="javax.swing.JButton" binding="LMButton" default-binding="true"> <component id="2dfdc" class="javax.swing.JButton" binding="LMButton" default-binding="true">
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<minimum-size width="75" height="-1"/> <minimum-size width="75" height="-1"/>
@ -49,7 +98,7 @@
<text value="LM"/> <text value="LM"/>
</properties> </properties>
</component> </component>
<component id="b3aec" class="javax.swing.JButton" binding="HCButton" default-binding="true"> <component id="9869d" class="javax.swing.JButton" binding="HCButton" default-binding="true">
<constraints> <constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"> <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<minimum-size width="75" height="-1"/> <minimum-size width="75" height="-1"/>
@ -59,7 +108,7 @@
<text value="HC"/> <text value="HC"/>
</properties> </properties>
</component> </component>
<component id="e290e" class="javax.swing.JButton" binding="UCRButton" default-binding="true"> <component id="bc004" class="javax.swing.JButton" binding="UCRButton" default-binding="true">
<constraints> <constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"> <grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
<minimum-size width="75" height="-1"/> <minimum-size width="75" height="-1"/>
@ -71,14 +120,14 @@
</component> </component>
</children> </children>
</grid> </grid>
<hspacer id="4ab95"> <hspacer id="975cc">
<constraints> <constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"> <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false">
<preferred-size width="14" height="61"/> <preferred-size width="14" height="61"/>
</grid> </grid>
</constraints> </constraints>
</hspacer> </hspacer>
<grid id="4fa1" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="edbdc" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="50" bottom="0" right="0"/> <margin top="0" left="50" bottom="0" right="0"/>
<constraints> <constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
@ -86,13 +135,12 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<component id="8afcf" class="javax.swing.JLabel"> <component id="f0690" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties> <properties>
<font size="22"/> <font size="22"/>
<labelFor value="c1d0a"/>
<text value="Agenda"/> <text value="Agenda"/>
</properties> </properties>
</component> </component>
@ -102,67 +150,6 @@
</grid> </grid>
</children> </children>
</grid> </grid>
<grid id="8ead9" layout-manager="GridBagLayout">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false">
<maximum-size width="-1" height="750"/>
</grid>
<gridbag weightx="1.0" weighty="1.0"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<scrollpane id="c1d0a" binding="scrollPane">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="7" anchor="0" fill="3" indent="1" use-parent-layout="false"/>
<gridbag weightx="1.0" weighty="1.0"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="e6114" class="javax.swing.JTable" binding="table1" default-binding="true">
<constraints/>
<properties>
<cellSelectionEnabled value="true"/>
<gridColor color="-13105660"/>
<intercellSpacing width="1" height="1"/>
<rowHeight value="100"/>
<rowMargin value="1"/>
</properties>
</component>
</children>
</scrollpane>
</children>
</grid>
<grid id="7e556" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
<gridbag weightx="0.0" weighty="0.0"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="37e85" class="javax.swing.JLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Label"/>
</properties>
</component>
<hspacer id="6580f">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<vspacer id="2dd31">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
</children>
</grid>
</children> </children>
</grid> </grid>
</form> </form>

View file

@ -1,23 +1,30 @@
package GUI; package GUI;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableModel; import javax.swing.table.TableModel;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GUI extends JFrame { public class GUI extends JFrame implements ActionListener {
private JPanel mainPanel; private JPanel mainPanel;
private JPanel agendaPanel;
private JPanel arrowPanel;
private JButton previousButton;
private JButton nextButton;
private JButton LMButton; private JButton LMButton;
private JButton HCButton; private JButton HCButton;
private JButton UCRButton; private JButton UCRButton;
private JTable table1;
private JScrollPane scrollPane;
private JTable table2;
private JMenuBar menuBar = new JMenuBar(); private JMenuBar menuBar = new JMenuBar();
private JMenu menuFichier = new JMenu("File"); private JMenu menuFichier = new JMenu("File");
private JMenuItem menuItemAddProj = new JMenuItem("Add projection"); private JMenuItem menuItemAddProj = new JMenuItem("Add projection");
private JMenuItem menuItemEditProj = new JMenuItem("Edit projection"); private JMenuItem menuItemEditProj = new JMenuItem("Edit projection");
private JMenuItem menuItemRemoveProj = new JMenuItem("Remove projection"); private JMenuItem menuItemRemoveProj = new JMenuItem("Remove projection");
private int currentPage;
String headers[] = {"Matin", "Midi", "<html>Milieu<br/>Après-midi</html>", "<html>Fin<br/>Après-midi</html>", "Soirée"};
public GUI() { public GUI() {
super(); super();
construct(); construct();
@ -29,35 +36,9 @@ public class GUI extends JFrame {
menuFichier.add(menuItemRemoveProj); menuFichier.add(menuItemRemoveProj);
setJMenuBar(menuBar); setJMenuBar(menuBar);
} }
private void renderTable() {
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
TableModel dataTest = new MyTableModel();
table1.setModel(dataTest);
for (int columnIndex = 0; columnIndex < dataTest.getColumnCount(); columnIndex++)
{
table1.getColumnModel().getColumn(columnIndex).setCellRenderer(centerRenderer);
}
scrollPane.setViewportView(table1);
JList rowHeader = new JList(new AbstractListModel() {
String headers[] = { "Matin", "Midi", "Milieu A", "Fin Aprem", "Soirée"};
@Override
public int getSize() {
return headers.length;
}
@Override
public Object getElementAt(int index) {
return headers[index];
}
});
rowHeader.setFixedCellHeight(100);
rowHeader.setFixedCellWidth(60);
scrollPane.setRowHeaderView(rowHeader);
}
private void construct() { private void construct() {
this.currentPage = 1;
setTitle("Projection Planning"); setTitle("Projection Planning");
setContentPane(mainPanel); setContentPane(mainPanel);
setSize(1280,800); setSize(1280,800);
@ -65,7 +46,28 @@ public class GUI extends JFrame {
setResizable(false); setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.renderMenu(); this.renderMenu();
this.renderTable();
new Agenda(agendaPanel, headers, 8, this.currentPage);
System.out.println("agenda");
previousButton.addActionListener(this);
nextButton.addActionListener(this);
setVisible(true); setVisible(true);
} }
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == previousButton) {
this.currentPage--;
new Agenda(agendaPanel, headers, 8, this.currentPage);
this.repaint();
this.revalidate();
}
else if (source == nextButton) {
this.currentPage++;
new Agenda(agendaPanel, headers, 8, this.currentPage);
this.repaint();
this.revalidate();
}
}
} }

View file

@ -1,10 +1,24 @@
package GUI; package GUI;
import javax.swing.table.AbstractTableModel; import javax.swing.table.AbstractTableModel;
import java.util.Arrays;
public class MyTableModel extends AbstractTableModel { public class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"Jour 1", "Jour 2", "Jour 3", "Jour 4", "Jour 5"}; private String[] columnNames;
private Object[][] data = {{"","Film 1","Film 2","",""}, {"","Film 4","","",""}, {"","","","",""}, {"","","","",""}, {"","","","",""}}; private Object[][] data;
private int day;
public MyTableModel(int day, int currentPage) {
this.day = day;
columnNames = new String[this.day];
data = new Object[5][this.day];
for (int i = 0; i < this.day; i++) {
this.columnNames[i] = "Jour " + ((i+1)+(5*(currentPage)));
}
for (int i = 0; i < 5 ; i++) {
Arrays.fill(data[i], "");
}
System.out.println(Arrays.toString(this.columnNames));
}
@Override @Override
public int getRowCount() { public int getRowCount() {
return data.length; return data.length;
@ -24,4 +38,5 @@ public class MyTableModel extends AbstractTableModel {
public Object getValueAt(int rowIndex, int columnIndex) { public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex]; return data[rowIndex][columnIndex];
} }
} }

View file

@ -0,0 +1,24 @@
package GUI;
import javax.swing.*;
import javax.swing.table.JTableHeader;
import java.awt.*;
class RowHeaderRenderer extends JLabel implements ListCellRenderer {
RowHeaderRenderer(JTable table) {
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText((value == null) ? "" : value.toString());
return this;
}
}