Import Import Import Import Import Import Import Import Import Public Class Static New

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

/*

Done:
Accurate Month Calendar with changing year
Rooster GUI pop up next to calendar

In progress:
buttons for Roster GUI [Add, Remove, Edit [input name/ lunch/ email *possibly use XML*]
Editable Day cells that trigger program to generate names for schedule--each day of the
week will have 'A', 'B', and 'H' and will either generate three names to work that lunch or
return "Holiday"
*/

import java.util.List;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;

import java.util.ArrayList;
public class RotatingSchedule {

static DefaultListModel dList = new DefaultListModel();

//this method alls for the addition of new names to the Roster List
private void addname()
{
dList.addElement("strig");
dList.addElement("fml");
dList.addElement("Cakes");
dList.addElement("flfebndpg");
dList.addElement("strig");
dList.addElement("fml");
dList.addElement("yCakes");
dList.addElement("flfebndpg");
dList.addElement("strig");
dList.addElement("fml");
dList.addElement("CodyCakes");
dList.addElement("flfebndpg");
dList.addElement("strig");
dList.addElement("fml");
dList.addElement("yCakes");
dList.addElement("flfebndpg");

names.setVisibleRowCount(-1);
names.setLayoutOrientation(JList.VERTICAL_WRAP);
}
//
static JList names = new JList(dList);
static JLabel lblMonth, lblYear;
static JButton btnPrev, btnNext;
static JTable tblCalendar;
static JComboBox cmbYear;
static JFrame frmMain;
static Container pane, paneList;
static DefaultTableModel mtblCalendar; //Table model
static JScrollPane stblCalendar, nrl; //The scrollpane
static JPanel pnlCalendar;
static int realYear, realMonth, realDay, currentYear, currentMonth;

static JButton btnRoster;


static JButton btnAdd, btnRemove, btnEdit;
static JLabel lblLunch, lblEmail;
static JComboBox cmbLunch;
static JFrame frmList;
static JButton btnBack;
static JPanel pnlRoster;

public static void main (String args[]){


try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (ClassNotFoundException e) {}
catch (InstantiationException e) {}
catch (IllegalAccessException e) {}
catch (UnsupportedLookAndFeelException e) {}

//for funzies
RotatingSchedule s = new RotatingSchedule();
s.addname();
//

//Prepare frame
frmMain = new JFrame ("Calendar"); //Create frame
frmMain.setSize(830, 675); //Set size to 400x400 pixels CHANGED From 330,375
pane = frmMain.getContentPane(); //Get content pane
pane.setLayout(null); //Apply null layout
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Close when X is clicked

frmList = new JFrame("Employee Roster");


frmList.setVisible(false);
paneList = frmList.getContentPane();
paneList.setLayout(null);

//Create controls
lblMonth = new JLabel ("January");
lblYear = new JLabel ("Change year:");
cmbYear = new JComboBox();
btnPrev = new JButton ("<<");
btnNext = new JButton (">>");
mtblCalendar = new DefaultTableModel(){public boolean isCellEditable(int rowIndex,
int mColIndex){return false;}};
tblCalendar = new JTable(mtblCalendar);
stblCalendar = new JScrollPane(tblCalendar);
pnlCalendar = new JPanel(null);
btnRoster = new JButton ("Roster");
btnBack = new JButton ("Back");
pnlRoster = new JPanel(null);
btnAdd = new JButton("Add");
btnEdit = new JButton("Edit");

//creates scroll panel for names


nrl = new JScrollPane(names);
nrl.setPreferredSize(new Dimension(250,80));
//

//Set border
pnlCalendar.setBorder(BorderFactory.createTitledBorder("Calendar"));
pnlRoster.setBorder(BorderFactory.createTitledBorder(""));//adds a border is currently
blank

//Register action listeners


btnPrev.addActionListener(new btnPrev_Action());
btnNext.addActionListener(new btnNext_Action());
cmbYear.addActionListener(new cmbYear_Action());

btnRoster.addActionListener(new btnRoster_Action());
btnAdd.addActionListener(new btnAdd_Action());
btnEdit.addActionListener(new btnEdit_Action());

//Add controls to pane


pane.add(pnlCalendar);
pnlCalendar.add(lblMonth);
pnlCalendar.add(lblYear);
pnlCalendar.add(cmbYear);
pnlCalendar.add(btnPrev);
pnlCalendar.add(btnNext);
pnlCalendar.add(stblCalendar);
pnlCalendar.add(btnRoster);

paneList.add(pnlRoster);
pnlRoster.add(btnBack);//remove later
pnlRoster.add(btnAdd);
pnlRoster.add(btnEdit);

//adds names to pnlroster and nrl(scroll panel) to names


pnlRoster.add(names);
pnlRoster.add(nrl);
names.add(nrl);

//

//Set bounds
pnlCalendar.setBounds(0, 0, 820, 635); // +500, +300
lblMonth.setBounds(160-lblMonth.getPreferredSize().width/2, 25, 100, 25);
lblYear.setBounds(10, 585, 80, 20);//
cmbYear.setBounds(10, 605, 80, 20);
btnPrev.setBounds(10, 25, 50, 25);
btnNext.setBounds(760, 25, 50, 25); //changed 260 - 760
stblCalendar.setBounds(10, 50, 800, 530);
btnRoster.setBounds(100, 605, 80, 20);

//list bounds::
names.setBounds(0, 30,526, 200);
nrl.setBounds(450, 50, 30, 20);//appears on the screen but currently does not work
//

//Roster bounds 833,0,500,675


pnlRoster.setBounds(0, 0, 820, 635);
btnAdd.setBounds(340, 0, 170, 30);
btnEdit.setBounds(170, 0, 170, 30);
btnBack.setBounds(0,0,170, 30);
//

//creates new colors


Color Gold = new Color(255,140,0);
Color Blue = new Color(0,0,139);
//

//changes colors of button background and of words


btnBack.setBackground(Gold);//changes the border to gold of the back button
btnBack.setForeground(Blue);//Changes the colors of the words of the back button
btnAdd.setBackground(Gold);
btnAdd.setForeground(Blue);
btnEdit.setBackground(Gold);
btnEdit.setForeground(Blue);
//

//Make frame visible


frmMain.setResizable(false);
frmMain.setVisible(true);
//
GregorianCalendar cal = new GregorianCalendar();

realDay = cal.get(GregorianCalendar.DAY_OF_MONTH); //Get day


realMonth = cal.get(GregorianCalendar.MONTH); //Get month
realYear = cal.get(GregorianCalendar.YEAR); //Get year
currentMonth = realMonth; //Match month and year
currentYear = realYear;

//Add headers
String[] headers = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; //All headers
for (int i=0; i<7; i++){
mtblCalendar.addColumn(headers[i]);
}

tblCalendar.getParent().setBackground(tblCalendar.getBackground()); //Set background

//No resize/reorder
tblCalendar.getTableHeader().setResizingAllowed(false);
tblCalendar.getTableHeader().setReorderingAllowed(false);

//Single cell selection


tblCalendar.setColumnSelectionAllowed(true);
tblCalendar.setRowSelectionAllowed(true);
tblCalendar.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

//Set row/column count


tblCalendar.setRowHeight(88);
mtblCalendar.setColumnCount(7);
mtblCalendar.setRowCount(6);

//Populate table
for (int i=realYear-100; i<=realYear+100; i++){
cmbYear.addItem(String.valueOf(i));
}

//Refresh calendar
refreshCalendar (realMonth, realYear); //Refresh calendar

public static void refreshCalendar(int month, int year){


//Variables
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August",
"September", "October", "November", "December"};
int nod, som; //Number Of Days, Start Of Month

//Allow/disallow buttons
btnPrev.setEnabled(true);
btnNext.setEnabled(true);
btnRoster.setEnabled(true);
btnAdd.setEnabled(true);
btnEdit.setEnabled(true);

if(frmList.isVisible()) {btnRoster.setEnabled(false);}
if (month == 0 && year <= realYear-10){btnPrev.setEnabled(false);} //Too early
if (month == 11 && year >= realYear+100){btnNext.setEnabled(false);} //Too late
lblMonth.setText(months[month]); //Refresh the month label (at the top)
lblMonth.setBounds(160-lblMonth.getPreferredSize().width/2, 25, 180, 25); //Re-align label
with calendar
cmbYear.setSelectedItem(String.valueOf(year)); //Select the correct year in the combo box

//Clear table
for (int i=0; i<5; i++){
for (int j=0; j<7; j++){
mtblCalendar.setValueAt(null, i, j);
}
}

//Get first day of month and number of days


GregorianCalendar cal = new GregorianCalendar(year, month, 1);
nod = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
som = cal.get(GregorianCalendar.DAY_OF_WEEK);

//Draw calendar
for (int i=1; i<=nod; i++){
int row = new Integer((i+som-2)/7);
int column = (i+som-2)%7;
mtblCalendar.setValueAt(i, row, column);
}

//Apply renderers
tblCalendar.setDefaultRenderer(tblCalendar.getColumnClass(0), new
tblCalendarRenderer());
}

static class tblCalendarRenderer extends DefaultTableCellRenderer{


public Component getTableCellRendererComponent (JTable table, Object value, boolean
selected, boolean focused, int row, int column){
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
if (column == 0 || column == 6){ //Week-end
setBackground(new Color(255, 220, 220));
}
else{ //Week
setBackground(new Color(255, 255, 255));
}
if (value != null){
if (Integer.parseInt(value.toString()) == realDay && currentMonth == realMonth &&
currentYear == realYear){ //Today
setBackground(new Color(220, 220, 255));
}
}
setBorder(null);
setForeground(Color.black);
return this;
}
}

static class btnPrev_Action implements ActionListener{


public void actionPerformed (ActionEvent e){
if (currentMonth == 0){ //Back one year
currentMonth = 11;
currentYear -= 1;
}
else{ //Back one month
currentMonth -= 1;
}
refreshCalendar(currentMonth, currentYear);
}
}
static class btnNext_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (currentMonth == 11){ //Foward one year
currentMonth = 0;
currentYear += 1;
}
else{ //Foward one month
currentMonth += 1;
}
refreshCalendar(currentMonth, currentYear);
}
}
static class btnBack_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
frmMain.setVisible(true);
frmList.setVisible(false);
}
}
static class cmbYear_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (cmbYear.getSelectedItem() != null){
String b = cmbYear.getSelectedItem().toString();
currentYear = Integer.parseInt(b);
refreshCalendar(currentMonth, currentYear);
}
}
}
static class btnRoster_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
frmList.setVisible(true);
frmList.setBounds(780,0,526,675);//x = 500 (833, 0, 500, 675) //changed at
12:13 may 8
pane = frmList.getContentPane();
pane.setLayout(null);
frmList.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
static class btnAdd_Action implements ActionListener{
public void actionPerformed(ActionEvent e) {

}
}

static class btnEdit_Action implements ActionListener{


public void actionPerformed(ActionEvent e) {

}
}

You might also like