/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Main.java
*
* Created on 03/10/2009, 01:29:49 م
*/
package orgainzer;
import java.io.*;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;
import orgainzer.Tasks;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author AHMED
*/
public class Main extends javax.swing.JFrame {
/** Creates new form Main */
public Main() {
//Map<int,string> m = new
initComponents();
T = new Tasks[50];
Task_Number = 0;
Read_From_File();
}
int Edit_Row = -1;
Tasks[] T;
int Task_Number;
NewTask N = new NewTask(this);
int Row = -1;
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
Button_NewTask = new javax.swing.JButton();
Button_Edit = new javax.swing.JButton();
Button_View = new javax.swing.JButton();
Button_Delete = new javax.swing.JButton();
Button_Organizer = new javax.swing.JButton();
Button_Exit = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
Table_TaskList = new javax.swing.JTable();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem3 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("OrGainzar");
Button_NewTask.setText("New Task");
Button_NewTask.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_NewTaskActionPerformed(evt);
}
});
Button_Edit.setText("Edit");
Button_Edit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_EditActionPerformed(evt);
}
});
Button_View.setText("View");
Button_View.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_ViewActionPerformed(evt);
}
});
Button_Delete.setText("Delete");
Button_Delete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_DeleteActionPerformed(evt);
}
});
Button_Organizer.setText("Organize");
Button_Organizer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_OrganizerActionPerformed(evt);
}
});
Button_Exit.setText("Exit");
Button_Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Button_ExitActionPerformed(evt);
}
});
Table_TaskList.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "Description", "Periodically", "Once", "Alarm Date", "Alarm Time"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane1.setViewportView(Table_TaskList);
jMenu1.setText("File");
jMenuItem1.setText("jMenuItem1");
jMenu1.add(jMenuItem1);
jMenuItem2.setText("jMenuItem2");
jMenu1.add(jMenuItem2);
jMenuItem3.setText("jMenuItem3");
jMenu1.add(jMenuItem3);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Button_Delete)
.addComponent(Button_View)
.addComponent(Button_Edit)
.addComponent(Button_NewTask)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(Button_Exit, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(Button_Organizer, javax.swing.GroupLayout.Alignment.LEADING)))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 578, Short.MAX_VALUE)
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {Button_Delete, Button_Edit, Button_Exit, Button_NewTask, Button_Organizer, Button_View});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(Button_NewTask)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Button_Edit)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Button_View)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Button_Delete)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Button_Organizer)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Button_Exit))
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void Button_NewTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_NewTaskActionPerformed
// TODO add your handling code here:
N.setVisible(true);
}//GEN-LAST:event_Button_NewTaskActionPerformed
private void Button_EditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_EditActionPerformed
// TODO add your handling code here:
try{
Edit_Row = Get_Row_Number();
if(Edit_Row != -1)
{
JOptionPane.showMessageDialog(this,"Get_Row_Number" + Edit_Row);
N.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(this,"Select a row to be edited");
}
}
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please Select A Line In the Table");
E = null;
}
}//GEN-LAST:event_Button_EditActionPerformed
private void Button_ViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_ViewActionPerformed
// TODO add your handling code here:
Read_From_File();
}//GEN-LAST:event_Button_ViewActionPerformed
void Delete_File()
{
String fileName = "Database.txt";
// A File object to represent the filename
File f = new File(fileName);
// Make sure the file or directory exists and isn't write protected
if (!f.exists())
throw new IllegalArgumentException(
"Delete: no such file or directory: " + fileName);
if (!f.canWrite())
throw new IllegalArgumentException("Delete: write protected: "
+ fileName);
// If it is a directory, make sure it is empty
if (f.isDirectory()) {
String[] files = f.list();
if (files.length > 0)
throw new IllegalArgumentException(
"Delete: directory not empty: " + fileName);
}
// Attempt to delete it
boolean success = f.delete();
if (!success)
throw new IllegalArgumentException("Delete: deletion failed");
}
private void Button_DeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_DeleteActionPerformed
// TODO add your handling code here:
Delete_TableRow(-10);
Delete_Class();
//Delete_FileRow();
//Delete_File();
Delete_Row_From_File();
}//GEN-LAST:event_Button_DeleteActionPerformed
private void Button_ExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_ExitActionPerformed
// TODO add your handling code here:
this.dispose();
}//GEN-LAST:event_Button_ExitActionPerformed
private void Button_OrganizerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_OrganizerActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_Button_OrganizerActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
void Read_From_File()
{
try {
File Data_File = new File("Database.txt");
if(!Data_File.exists())
{
boolean New_File = Data_File.createNewFile();
}
FileInputStream Input = new FileInputStream(Data_File);
DataInputStream Datain = new DataInputStream(Input);
BufferedReader InputBuffer = new BufferedReader(new InputStreamReader(Datain));
String Input_String;
while((Input_String = InputBuffer.readLine()) != null)
{
Convert_FileTo_Task(Input_String);
}
InputBuffer.close();
// Input.
// Output.write("\r\n");
// Output.close();
} catch (IOException ex) {
Logger.getLogger(NewTask.class.getName()).log(Level.SEVERE, null, ex);
}
}
void Convert_FileTo_Task(String Input)
{
String Swap;
System.out.println(Input);
char[] Line_Array = Input.toCharArray();
int Point = 0;
int Word_Number =0;
for(int i=0; i < Line_Array.length ; i++)
{
if(Line_Array[i] == ',')
{
if(Word_Number == 0)
{
T[Task_Number] = new Tasks();
T[Task_Number].setNumber(Integer.parseInt(Input.substring(Point,i)));
Word_Number++;
}else
if(Word_Number == 1)
{
T[Task_Number].setName(Input.substring(Point, i));
Word_Number++;
}else
if(Word_Number == 2)
{
T[Task_Number].setDescription(Input.substring(Point, i));
Word_Number++;
}else
if(Word_Number == 3)
{
T[Task_Number].setDay(Integer.parseInt(Input.substring(Point, i)));
Word_Number++;
}else
if(Word_Number == 4)
{
T[Task_Number].setMonth(Integer.parseInt(Input.substring(Point, i)));
Word_Number++;
}else
if(Word_Number == 5)
{
T[Task_Number].setYear(Integer.parseInt(Input.substring(Point, i)));
Word_Number++;
}else
if(Word_Number == 6)
{
T[Task_Number].setMinute(Integer.parseInt(Input.substring(Point, i)));
Word_Number++;
}else
if(Word_Number == 7)
{
T[Task_Number].setHour(Integer.parseInt(Input.substring(Point, i)));
Word_Number++;
}else
if(Word_Number == 8)
{
String Flag = Input.substring(Point, i);
String F = "true";
String TF = "false";
if( Flag.equals(F))
{
T[Task_Number].setPeriodic(true);
}else
if(Flag.equals(TF))
{
T[Task_Number].setPeriodic(false);
}
Word_Number++;
}else
if(Word_Number == 9 )
{
T[Task_Number].setPeriod(Integer.parseInt(Input.substring(Point, i)));
}
Point = i+1;
}
}
Word_Number = 0;
Point = 0;
Task_Number++;
View_Task_Table();
}
public void Get_Task()
{
N.New_Task.setNumber(Task_Number);
T[Task_Number] = N.New_Task;
Task_Number++;
View_Task_Table();
}
void View_Task_Table()
{
try{
DefaultTableModel Model = (DefaultTableModel)Table_TaskList.getModel();
String Time;
String Date;
int i = Task_Number-1;
Time = T[i].getHour()+ ":"+ T[i].getMinute();
Date = T[i].getDay()+ "/"+T[i].getMonth()+"/"+T[i].getYear();
//JOptionPane.showMessageDialog(this, T[Task_Number].getName());
Model.addRow( new Object[] {T[i].getName(),T[i].getDescription(),T[i].getPeriodic(),
!T[i].getPeriodic(),Date,Time});
Model = null;
}catch(Exception E)
{
JOptionPane.showMessageDialog(this,"Exeption In the View Task Table");
E = null;
}
}
int Get_Row_Number()
{
int Selected_row = -1;
try{
Selected_row = Table_TaskList.getSelectedRow();
}
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please Select A Line In the Table");
E = null;
}
return Selected_row;
}
void Delete_TableRow( int Row_Num)
{
try{
int Selected_row;
if(Row_Num == -10)
{
Selected_row = Get_Row_Number();
}else
{
Selected_row = Row_Num;
}
Row = Selected_row;
if(Selected_row == -1)
JOptionPane.showMessageDialog(this,"Error in row selection");
else
{
DefaultTableModel Model = (DefaultTableModel)Table_TaskList.getModel();
Model.removeRow(Selected_row);
}
}
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please Select A Line In the Table");
E = null;
}
}
void Delete_Class()
{
try{
for(int i = Row; i < Task_Number -1; i++)
{
//JOptionPane.showMessageDialog(this, "Before Swaping " + String.valueOf(T[i+1].getNumber()));
T[i+1].setNumber((T[i+1].getNumber()-1));
T[i] = T[i+1];
//JOptionPane.showMessageDialog(this, "After Swaping " + String.valueOf(T[i+1].getNumber()));
}
T[Task_Number-1] = null;
Task_Number = Task_Number - 1;
}catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Error in Delete Class");
}
}
void Delete_Row_From_File()
{
try{
N.Write_InFile(T[0],false);
for(int i = 1; i < Task_Number; i++)
{
N.Write_InFile(T[i], true);
}
}catch(Exception E){
JOptionPane.showMessageDialog(this, "Error in Updating Database");
}
}
void Delete_FileRow()
{
try{
int Selected_row = Row;
boolean Row_Deleted = false;
if(Selected_row == -1)
JOptionPane.showMessageDialog(this,"Error in row selection");
else
{
File Original_File = new File("Database.txt");
FileInputStream Input = new FileInputStream(Original_File);
DataInputStream Datain = new DataInputStream(Input);
BufferedReader InputBuffer = new BufferedReader(new InputStreamReader(Datain));
String Input_String;
Writer Output = null;
File DataBase_File = new File("Data.txt");
Output = new BufferedWriter(new FileWriter(DataBase_File,true));
while((Input_String = InputBuffer.readLine()) != null)
{
if(Input_String.substring(0, 1).equals(String.valueOf(Selected_row)))
{
JOptionPane.showMessageDialog(this,Input_String);
Row_Deleted = true;
}
else
if(Row_Deleted == true)
{
Output.write(Selected_row+ Input_String.substring(1) + "\r\n");
Output.flush();
Selected_row++;
}else
{
Output.write(Input_String + "\r\n");
Output.flush();
}
}
Output.close();
InputBuffer.close();
if(!Original_File.delete())
{
JOptionPane.showMessageDialog(this,"Error In Editing Data File Delete");
}else
if(!DataBase_File.renameTo(Original_File))
{
JOptionPane.showMessageDialog(this,"Error In Editing Data ");
}
}
}
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please Select A Line In the Table");
E = null;
}
}
void Clear_Viewing_Table()
{
DefaultTableModel Model = (DefaultTableModel)Table_TaskList.getModel();
//Model.removeRow(Selected_row);
while (Model.getRowCount()>0)
{
Model.removeRow(0);
}
}
void Delete_File_Row_New(String Delete_Or_Edit_String)
{
try{
int Selected_row = Row;
boolean Row_Deleted_Or_Edited = false;
if(Selected_row == -1)
JOptionPane.showMessageDialog(this,"Error in row selection");
else
{
File Original_File = new File("Database.txt");
FileInputStream Input = new FileInputStream(Original_File);
DataInputStream Datain = new DataInputStream(Input);
BufferedReader InputBuffer = new BufferedReader(new InputStreamReader(Datain));
String Input_String;
Writer Output = null;
File DataBase_File = new File("Data.txt");
Output = new BufferedWriter(new FileWriter(DataBase_File,true));
while((Input_String = InputBuffer.readLine()) != null)
{
if(Input_String.substring(0, 1).equals(String.valueOf(Selected_row)))
{
JOptionPane.showMessageDialog(this,Input_String);
Row_Deleted_Or_Edited = true;
if(Delete_Or_Edit_String != null)
{
Output.write(Delete_Or_Edit_String + "\r\n");
}
}
else
if(Row_Deleted_Or_Edited == true)
{
Output.write(Selected_row+ Input_String.substring(1) + "\r\n");
Output.flush();
Selected_row++;
}else
{
Output.write(Input_String + "\r\n");
Output.flush();
}
}
Output.close();
InputBuffer.close();
if(!Original_File.delete())
{
JOptionPane.showMessageDialog(this,"Error In Editing Data File Delete");
}else
if(!DataBase_File.renameTo(Original_File))
{
JOptionPane.showMessageDialog(this,"Error In Editing Data ");
}
}
}
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please Select A Line In the Table");
E = null;
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton Button_Delete;
private javax.swing.JButton Button_Edit;
private javax.swing.JButton Button_Exit;
private javax.swing.JButton Button_NewTask;
private javax.swing.JButton Button_Organizer;
private javax.swing.JButton Button_View;
private javax.swing.JTable Table_TaskList;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
}
/* Add Clock to Check On the Tasks */
/* Function the Edit button */