From 4722100cba287b164957c658c2e035783e20c963 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 18 Feb 2009 17:33:22 +0000 Subject: moved sources --- client/AboutWindow.java | 50 -- client/CalendarTableCellRenderer.java | 135 ----- client/CalendarTableModel.java | 481 --------------- client/InfoWindow.java | 57 -- client/LicenseWindow.java | 33 - client/NetCalendarClient.java | 731 ----------------------- client/ServerRequester.java | 82 --- client/SplashScreen.java | 42 -- client/SubWindow.java | 101 ---- client/helper/DateSpinner.java | 57 -- client/helper/GUIHelper.java | 189 ------ client/inputforms/AdvancedSearching.java | 141 ----- client/inputforms/CreateNewEvent.java | 122 ---- client/inputforms/EditExistingEvent.java | 156 ----- client/inputforms/InputForm.java | 93 --- client/inputforms/Preferences.java | 99 --- client/inputforms/RenameCategory.java | 123 ---- server/CalendarDatabase.java | 271 --------- server/CalendarFormatParser.java | 278 --------- server/NetCalendarServer.java | 160 ----- shared/CalendarCategory.java | 223 ------- shared/CalendarEvent.java | 339 ----------- shared/Config.java | 236 -------- shared/DoCallback.java | 10 - shared/Main.java | 125 ---- shared/MyDate.java | 54 -- shared/MyVector.java | 23 - shared/remotecall/ClientRequest.java | 369 ------------ shared/remotecall/RemoteCall.java | 29 - shared/remotecall/ServerResponse.java | 53 -- sources/client/AboutWindow.java | 50 ++ sources/client/CalendarTableCellRenderer.java | 135 +++++ sources/client/CalendarTableModel.java | 481 +++++++++++++++ sources/client/InfoWindow.java | 57 ++ sources/client/LicenseWindow.java | 33 + sources/client/NetCalendarClient.java | 731 +++++++++++++++++++++++ sources/client/ServerRequester.java | 82 +++ sources/client/SplashScreen.java | 42 ++ sources/client/SubWindow.java | 101 ++++ sources/client/helper/DateSpinner.java | 57 ++ sources/client/helper/GUIHelper.java | 189 ++++++ sources/client/inputforms/AdvancedSearching.java | 141 +++++ sources/client/inputforms/CreateNewEvent.java | 122 ++++ sources/client/inputforms/EditExistingEvent.java | 156 +++++ sources/client/inputforms/InputForm.java | 93 +++ sources/client/inputforms/Preferences.java | 99 +++ sources/client/inputforms/RenameCategory.java | 123 ++++ sources/server/CalendarDatabase.java | 271 +++++++++ sources/server/CalendarFormatParser.java | 278 +++++++++ sources/server/NetCalendarServer.java | 160 +++++ sources/shared/CalendarCategory.java | 223 +++++++ sources/shared/CalendarEvent.java | 339 +++++++++++ sources/shared/Config.java | 236 ++++++++ sources/shared/DoCallback.java | 10 + sources/shared/Main.java | 125 ++++ sources/shared/MyDate.java | 54 ++ sources/shared/MyVector.java | 23 + sources/shared/remotecall/ClientRequest.java | 369 ++++++++++++ sources/shared/remotecall/RemoteCall.java | 29 + sources/shared/remotecall/ServerResponse.java | 53 ++ 60 files changed, 4862 insertions(+), 4862 deletions(-) delete mode 100644 client/AboutWindow.java delete mode 100644 client/CalendarTableCellRenderer.java delete mode 100644 client/CalendarTableModel.java delete mode 100644 client/InfoWindow.java delete mode 100644 client/LicenseWindow.java delete mode 100644 client/NetCalendarClient.java delete mode 100644 client/ServerRequester.java delete mode 100644 client/SplashScreen.java delete mode 100644 client/SubWindow.java delete mode 100644 client/helper/DateSpinner.java delete mode 100644 client/helper/GUIHelper.java delete mode 100644 client/inputforms/AdvancedSearching.java delete mode 100644 client/inputforms/CreateNewEvent.java delete mode 100644 client/inputforms/EditExistingEvent.java delete mode 100644 client/inputforms/InputForm.java delete mode 100644 client/inputforms/Preferences.java delete mode 100644 client/inputforms/RenameCategory.java delete mode 100644 server/CalendarDatabase.java delete mode 100644 server/CalendarFormatParser.java delete mode 100644 server/NetCalendarServer.java delete mode 100644 shared/CalendarCategory.java delete mode 100644 shared/CalendarEvent.java delete mode 100644 shared/Config.java delete mode 100644 shared/DoCallback.java delete mode 100644 shared/Main.java delete mode 100644 shared/MyDate.java delete mode 100644 shared/MyVector.java delete mode 100644 shared/remotecall/ClientRequest.java delete mode 100644 shared/remotecall/RemoteCall.java delete mode 100644 shared/remotecall/ServerResponse.java create mode 100644 sources/client/AboutWindow.java create mode 100644 sources/client/CalendarTableCellRenderer.java create mode 100644 sources/client/CalendarTableModel.java create mode 100644 sources/client/InfoWindow.java create mode 100644 sources/client/LicenseWindow.java create mode 100644 sources/client/NetCalendarClient.java create mode 100644 sources/client/ServerRequester.java create mode 100644 sources/client/SplashScreen.java create mode 100644 sources/client/SubWindow.java create mode 100644 sources/client/helper/DateSpinner.java create mode 100644 sources/client/helper/GUIHelper.java create mode 100644 sources/client/inputforms/AdvancedSearching.java create mode 100644 sources/client/inputforms/CreateNewEvent.java create mode 100644 sources/client/inputforms/EditExistingEvent.java create mode 100644 sources/client/inputforms/InputForm.java create mode 100644 sources/client/inputforms/Preferences.java create mode 100644 sources/client/inputforms/RenameCategory.java create mode 100644 sources/server/CalendarDatabase.java create mode 100644 sources/server/CalendarFormatParser.java create mode 100644 sources/server/NetCalendarServer.java create mode 100644 sources/shared/CalendarCategory.java create mode 100644 sources/shared/CalendarEvent.java create mode 100644 sources/shared/Config.java create mode 100644 sources/shared/DoCallback.java create mode 100644 sources/shared/Main.java create mode 100644 sources/shared/MyDate.java create mode 100644 sources/shared/MyVector.java create mode 100644 sources/shared/remotecall/ClientRequest.java create mode 100644 sources/shared/remotecall/RemoteCall.java create mode 100644 sources/shared/remotecall/ServerResponse.java diff --git a/client/AboutWindow.java b/client/AboutWindow.java deleted file mode 100644 index 38d947e..0000000 --- a/client/AboutWindow.java +++ /dev/null @@ -1,50 +0,0 @@ -package client; -import shared.*; - -/** - * This window simply shows an about message about the - * netcalendar. - * @author paul.buetow - * - */ -public class AboutWindow extends InfoWindow { - final static long serialVersionUID = 1L; - /** - * Creates the window and shows it. - * @param sTitleText Specifies the title text of this JFrame. - * @param netCalendarClient Specifies the calendar client session object to use. - */ - public AboutWindow(NetCalendarClient netCalendarClient) { - super(netCalendarClient, "About", - Config.VERSION + "\n" + - "(c) 2006, 2009 by Dipl.-Inform. (FH) Paul C. Buetow; " + - "Web: netcalendar.buetow.org; E-Mail: " + getEmailAddr() + "\n\n" + - "NetCalendar is a network capable and mostly UNIX /usr/bin/calendar database compatible Calendar application " + - "programmed in Java. Its initial motivation was a programming project at the Aachen " + - "University of Applied Sciences (www.fh-aachen.de) for the object oriented " + - "programming class. But it became much more than just that!\n\n" + - "Credits:\n\n" + - "Bernhard Schertl " + - "for testing and suggestions for improvements; Web: www.b78.org\n\n" + - "Prof. Dr. rer. nat. H. Fassbender " + - "for supervision of expert opinion; Web: www.fassbender.fh-aachen.de\n\n" + - "Florian P. Buetow " + - "for ideas concerning the splash image; Web: www.florianbuetow.com\n\n" + - "Kay Czarnotta " + - "for ideas concerning the icon and an optimization tip for NetCalendar for Mac OS X; Web: eagleeye.byte-welt.net" - ); - } - - /** - * This method simply returns a string containing the contact email address. - * This method is needed to protect this sourcecode + the email address for - * internet spam because some spambots try to fetch this address from the - * cvsweb interface. - * @return Returns a string containing the contact email address. - */ - private static String getEmailAddr() { - String sEmail = "netcalendar at dev dot buetow dot org"; - sEmail = sEmail.replaceAll(" at ", "@"); - return sEmail.replaceAll(" dot ", "."); - } -} diff --git a/client/CalendarTableCellRenderer.java b/client/CalendarTableCellRenderer.java deleted file mode 100644 index 67a9b67..0000000 --- a/client/CalendarTableCellRenderer.java +++ /dev/null @@ -1,135 +0,0 @@ -package client; - -import java.awt.*; - -import javax.swing.*; -import javax.swing.table.*; -import java.util.*; - -import shared.*; - -/** - * This class is responsible for the rendering of the JTable of the client gui which contains - * all the events. - * @author buetow - */ -public class CalendarTableCellRenderer extends DefaultTableCellRenderer { - private static final long serialVersionUID = 1L; - private CalendarTableModel tableModel; - // private NetCalendarClient netCalendarClient; - - private static final Color SELECTED_BACKGROUND_COLOR; - private static final Color SELECTED_FOREGROUND_COLOR; - private static final Color ALREADY_OVER_BACKGROUND_COLOR; - private static final Color ALREADY_OVER_FOREGROUND_COLOR; - private static final Color STANDARD_FOREGROUND_COLOR; - private static final Color BACKGROUND_COLOR_1_DAY; - private static final Color BACKGROUND_COLOR_7_DAYS; - private static final Color BACKGROUND_COLOR_28_DAYS; - private static final Color BACKGROUND_COLOR_168_DAYS; - private static final Color BACKGROUND_COLOR_365_DAYS; - private static final Color BACKGROUND_COLOR_MT_365_DAYS; - private static final Color YEARLY_BACKGROUND_COLOR; - private static final Color NOT_YEARLY_BACKGROUND_COLOR; - - - private static final long NANOSECONDS_1_DAY; - private static final long NANOSECONDS_7_DAYS; - private static final long NANOSECONDS_28_DAYS; - private static final long NANOSECONDS_168_DAYS; - private static final long NANOSECONDS_365_DAYS; - - // Initialize once, use often! - static { - SELECTED_BACKGROUND_COLOR = new Color(0, 0, 0); - SELECTED_FOREGROUND_COLOR = new Color(255, 255, 255); - STANDARD_FOREGROUND_COLOR = new Color(0, 0, 0); - ALREADY_OVER_FOREGROUND_COLOR = SELECTED_BACKGROUND_COLOR; - ALREADY_OVER_BACKGROUND_COLOR = SELECTED_FOREGROUND_COLOR; - BACKGROUND_COLOR_1_DAY = new Color(0xff, 0x00, 0x00); - BACKGROUND_COLOR_7_DAYS = new Color(0xff, 0x6c, 0x00); - BACKGROUND_COLOR_28_DAYS = new Color(0xff, 0xa5, 0x00); - BACKGROUND_COLOR_168_DAYS = new Color(0xe7, 0xa5, 0x5e); - BACKGROUND_COLOR_365_DAYS = new Color(230, 218, 161); - BACKGROUND_COLOR_MT_365_DAYS = new Color(0xa2, 0x9c, 0x90); // For more than 365 days - - YEARLY_BACKGROUND_COLOR = new Color(0x65, 0xa9, 0xe3); - NOT_YEARLY_BACKGROUND_COLOR = new Color(0x88, 0xe0, 0x90); - - - NANOSECONDS_1_DAY = 3600 * 24 * 1000; - NANOSECONDS_7_DAYS = NANOSECONDS_1_DAY * 7; - NANOSECONDS_28_DAYS = NANOSECONDS_7_DAYS * 4; - NANOSECONDS_168_DAYS = NANOSECONDS_28_DAYS * 6; - NANOSECONDS_365_DAYS = NANOSECONDS_1_DAY * 365; - } - - /** - * This method creates a custom table cell renderer for the calendar client. - * Its coloring the different cells and sets other special display attributes. - * @param tableModel Specifies the DefaultTableModel object used by the JTable. This is needed to make decisions about displaying a specific cell. - */ - public CalendarTableCellRenderer(CalendarTableModel tableModel) { - // this.netCalendarClient = netCalendarClient; - this.tableModel = tableModel; - } - - /** - * This method returns the Component object of a specific table cell. - * @param jTable Specifies the table object of the calendar client frame. - * @param object Specifies the object which is inside of the specific table cell. - * @param isSelected Specifies if the current cell is selected or not. - * @param hasFocus Specifies if the current cell is focused or not. - * @param iRow Specifies thr row number of the current cell. - * @param iCol specifies the column number of the current cell. - * @return Returns the Component object of a specific table cell. - */ - public Component getTableCellRendererComponent(JTable jTable, Object object, - boolean isSelected, boolean hasFocus, int iRow, int iCol) { - JLabel jLable =(JLabel) super.getTableCellRendererComponent(jTable, object, isSelected, hasFocus, iRow, iCol); - - //MyVector vecSelected = netCalendarClient.getSelectedIndexes(); - - //if (vecSelected.hasLike(new Integer(iRow))) { - if (isSelected) { - jLable.setBackground(SELECTED_BACKGROUND_COLOR); - jLable.setForeground(SELECTED_FOREGROUND_COLOR); - return jLable; - } - - CalendarEvent calendarEvent = tableModel.getEvent(iRow); - jLable.setForeground(STANDARD_FOREGROUND_COLOR); - - if (iCol <= 1) { - if (!calendarEvent.isYearly()) - jLable.setBackground(NOT_YEARLY_BACKGROUND_COLOR); - else - jLable.setBackground(YEARLY_BACKGROUND_COLOR); - - return jLable; - } - - long lCurrentTime = new Date().getTime(); - long lEventTime = calendarEvent.getDate().getTime(); - - if (lCurrentTime + NANOSECONDS_1_DAY > lEventTime) - jLable.setBackground(BACKGROUND_COLOR_1_DAY); - - else if (lCurrentTime + NANOSECONDS_7_DAYS > lEventTime) - jLable.setBackground(BACKGROUND_COLOR_7_DAYS); - - else if (lCurrentTime + NANOSECONDS_28_DAYS > lEventTime) - jLable.setBackground(BACKGROUND_COLOR_28_DAYS); - - else if (lCurrentTime + NANOSECONDS_168_DAYS > lEventTime) - jLable.setBackground(BACKGROUND_COLOR_168_DAYS); - - else if (lCurrentTime + NANOSECONDS_365_DAYS > lEventTime) - jLable.setBackground(BACKGROUND_COLOR_365_DAYS); - - else - jLable.setBackground(BACKGROUND_COLOR_MT_365_DAYS); - - return jLable; - } -} diff --git a/client/CalendarTableModel.java b/client/CalendarTableModel.java deleted file mode 100644 index 4520c66..0000000 --- a/client/CalendarTableModel.java +++ /dev/null @@ -1,481 +0,0 @@ -package client; - -import javax.swing.table.*; -import javax.swing.*; -import java.util.*; -import shared.*; -import shared.remotecall.*; - -/** - * This class defined the table model of the JTable of the main calendar client window. All table - * data and most of the table actions, like sorting or updating the content, go trough this class. - * @author buetow - * - */ -public final class CalendarTableModel extends AbstractTableModel { - public static final String NUM_HEADER = "#"; - public static final String DATE_HEADER = "Date"; - public static final String CATEGORY_HEADER = "Category"; - public static final String DESCRIPTION_HEADER = "Description"; - public static final String PLACE_HEADER = "Place"; - - private static final int iEnumLength = Config.getStringValue("client_max_events").length(); - private static final long serialVersionUID = 1L; - private static final int iCols = 5; // Num of columns never changes! - private int iRows = 0; - private Vector vecEvents; - private Comparator lastSortComparator = null; - private JTable jTable; - - /** - * Simple constructor, creates a calendar table model to be used with the JTable of the netcalendar client main window. - * @param jTable Specifies the JTable object of this table model. - */ - public CalendarTableModel(JTable jTable) { - this.jTable = jTable; - } - - /** - * This method returns the number of columns of the JTable. - * @return Returns the number of columns of the JTable. - */ - public int getColumnCount() { - return iCols; - } - - /** - * This method retuns the number of rows of the JTable. - * @return Returns the number of rows of the JTable. - */ - public int getRowCount() { - return iRows; - } - - /** - * This method sets the number of rows of the JTable. - * @param iRows Specifies the number of rows of the JTable. - */ - public void setRowCount(int iRows) { - this.iRows = iRows; - } - - /** - * This method checks if a cell is editable or not. - * @param iRow Specifies the tables row. - * @param iCol Specifies the tables column. - * @return Returns true if the cell is editable. Else, false will be returned. - */ - public boolean isCellEditable(int iRow, int iCol) { - if (iCol > 1) - return true; - - return false; - } - - /** - * Gets a specific table value - * @param iRow Specifies the tables row - * @param iCol Specifies the tables column - * @return Returns the object at (row,column) - */ - public Object getValueAt(int iRow, int iCol) { - CalendarEvent calendarEvent = (CalendarEvent) vecEvents.get(iRow); - - switch (iCol) { - case 0: - String sEnum = "" + (iRow + 1); - while (sEnum.length() < iEnumLength) - sEnum = "0" + sEnum; - return sEnum; - case 1: - return calendarEvent.getDate(); - case 2: - return calendarEvent.getDescription(); - case 3: - return calendarEvent.getCategoryName(); - case 4: - return calendarEvent.getPlace(); - } - - return "N/A"; - } - - /** - * This function updates the data of the JTable. - * @param object Specifies the new value. - * @param iRow Specifies the row of the cell to be updated. - * @param iCol Specifies the column of the cell to be updated. - */ - public void setValueAt(Object object, int iRow, int iCol) { - CalendarEvent calendarEvent = (CalendarEvent) vecEvents.get(iRow); - - switch (iCol) { - case 2: - calendarEvent.setDescription((String) object); - break; - case 3: - calendarEvent.setCategoryName((String) object); - break; - case 4: - calendarEvent.setPlace((String) object); - break; - default: - return; - } - - runLastSorter(); - jTable.updateUI(); - - ClientRequest clientRequest = new ClientRequest(ClientRequest.MODIFY_EVENT); - clientRequest.setEvent(calendarEvent); - ServerRequester.sendClientRequest(clientRequest); - } - - /** - * This method returns the class types of a specific table column. - * @param iCol Specifies the column index to get the class type for. - * @return Returns the class type of the specified column. - */ - public Class getColumnClass(int iCol) { - switch (iCol) { - case 0: - return String.class; - case 1: - return MyDate.class; - case 2: - return String.class; - case 3: - return String.class; - case 4: - return String.class; - } - - return String.class; - } - - /** - * This method returns the column header of a specific table column. - * @param iCol Specifies the column index to get the column header for. - * @return Returns the header string of the specified column. - */ - public String getColumnName(int iCol) { - switch (iCol) { - case 0: - return NUM_HEADER; - case 1: - return DATE_HEADER; - case 2: - return DESCRIPTION_HEADER; - case 3: - return CATEGORY_HEADER; - case 4: - return PLACE_HEADER; - } - - return "N/A"; - } - - /** - * This method returns the calendar event which belongs to a specific table row - * @param iRow Specifies the table row index - * @return Returns the calendar event - */ - public CalendarEvent getEvent(int iRow) { - return (CalendarEvent) vecEvents.get(iRow); - } - - /** - * This method updates all the value objects (calendar events) of the table. - * @param vecEvents Specifies the vector of the events to be used. - */ - public void setEvents(Vector vecEvents) { - if (vecEvents == null) - return; - - this.vecEvents = vecEvents; - setRowCount(vecEvents.size()); - - runLastSorter(); - } - - /** - * This method sorts the data again using the last sorting method being used. - */ - private void runLastSorter() { - if (lastSortComparator == null) { - sortByDate(); - - } else { - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - } - } - - /** - * Sorts the table content by a specified table column. - * @param iCol Specifies the table column to sort against. - */ - public void sortByCol(int iCol) { - switch (iCol) { - case 0: - case 1: - sortByDate(); - break; - case 2: - sortByDescription(); - break; - case 3: - sortByCategory(); - break; - case 4: - sortByPlace(); - break; - } - } - - /** - * Reverse sorts the table content by a specified table column. - * @param iCol Specifies the table column to reverse sort against. - */ - public void reverseSortByCol(int iCol) { - switch (iCol) { - case 0: - case 1: - reverseSortByDate(); - break; - case 2: - reverseSortByDescription(); - break; - case 3: - reverseSortByCategory(); - break; - case 4: - reverseSortByPlace(); - break; - } - } - - /** - * Sorts the table content by their IDs. - */ - public void sortByID() { - Main.statusMessage("Sorting by ID..."); - - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - int i = ((CalendarEvent) objectA).getID(); - int j = ((CalendarEvent) objectB).getID(); - if (i == j) - return 0; - else if (i < j) - return -1; - else - return 1; - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - - Main.statusMessage("Sorting by date done"); - } - - /** - * Sorts the table content by their dates. - */ - public void sortByDate() { - Main.statusMessage("Sorting by date..."); - - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - long l = ((CalendarEvent) objectA).getDate().getTime(); - long m = ((CalendarEvent) objectB).getDate().getTime(); - if (l == m) - return 0; - else if (l < m) - return -1; - else - return 1; - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - - Main.statusMessage("Sorting by date done"); - } - - /** - * Sorts the table content by their category names. - */ - public void sortByCategory() { - Main.statusMessage("Sorting by category..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventA.getCategoryName().compareTo(eventB.getCategoryName()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Sorting by category done"); - } - - /** - * Sorts the table content by their description texts. - */ - public void sortByDescription() { - Main.statusMessage("Sorting by description..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventA.getDescription().compareTo(eventB.getDescription()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Sorting by description done"); - } - - /** - * Sorts the table content by their places. - */ - public void sortByPlace() { - Main.statusMessage("Sorting by place..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventA.getPlace().compareTo(eventB.getPlace()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Sorting by place done"); - } - - /** - * Reverse sorts the table content by their IDs. - */ - public void reverseSortByID() { - Main.statusMessage("Reverse sorting by date..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - long i = ((CalendarEvent) objectA).getID(); - long j = ((CalendarEvent) objectB).getID(); - if (i == j) - return 0; - else if (i > j) - return -1; - else - return 1; - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Reverse sorting by date done"); - } - - /** - * Reverse sorts the table content by their dates. - */ - public void reverseSortByDate() { - Main.statusMessage("Reverse sorting by date..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - long l = ((CalendarEvent) objectA).getDate().getTime(); - long m = ((CalendarEvent) objectB).getDate().getTime(); - if (l == m) - return 0; - else if (l > m) - return -1; - else - return 1; - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Reverse sorting by date done"); - } - - /** - * Reverse sorts the table content by their category names. - */ - public void reverseSortByCategory() { - Main.statusMessage("Reverse sorting by category..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventB.getCategoryName().compareTo(eventA.getCategoryName()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Reverse sorting by category done"); - } - - /** - * Reverse sorts the table content by their description texts. - */ - public void reverseSortByDescription() { - Main.statusMessage("Reverse sorting by description..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventB.getDescription().compareTo(eventA.getDescription()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Reverse sorting by description done!"); - } - - /** - * Reverse sorts the table content by their places. - */ - public void reverseSortByPlace() { - Main.statusMessage("Reverse sorting by place..."); - lastSortComparator = new Comparator() { - public int compare(Object objectA, Object objectB) { - CalendarEvent eventA = (CalendarEvent) objectA; - CalendarEvent eventB = (CalendarEvent) objectB; - return eventB.getPlace().compareTo(eventA.getPlace()); - } - public boolean equals(Object object) { - return false; - } - }; - Collections.sort(vecEvents, lastSortComparator); - jTable.updateUI(); - Main.statusMessage("Reverse sorting by place done"); - } -} diff --git a/client/InfoWindow.java b/client/InfoWindow.java deleted file mode 100644 index bdcc744..0000000 --- a/client/InfoWindow.java +++ /dev/null @@ -1,57 +0,0 @@ -package client; - -import java.awt.*; -import javax.swing.*; - -/** - * This window simply shows an about message about the - * netcalendar. - * @author paul.buetow - * - */ -public class InfoWindow extends SubWindow { - final static long serialVersionUID = 1L; - private String sText; - - /** - * Creates the window and shows it. - * @param netCalendarClient Specifies the calendar client session object to use. - * @param jTitle Speicifies the title text to be displayd in the title bar. - * @param jText Specifies the text to be displayed at the text area. - */ - public InfoWindow(NetCalendarClient netCalendarClient, String jTitle, String sText) { - super(jTitle, netCalendarClient); - this.sText = sText; - initComponents(); - setResizable(false); - pack(); - setVisible(true); - } - - /** - * This method initializes all the GUI components. - */ - protected void initComponents() { - setSize(306,400); - JPanel contentPane = (JPanel) getContentPane(); - contentPane.setBackground(Color.BLACK); - - // Build the splash screen - JLabel jLabel = new JLabel(new ImageIcon("images/netcal.png")); - contentPane.add(jLabel, BorderLayout.CENTER); - - JTextArea jTextArea = new JTextArea(); - jTextArea.setEditable(false); - jTextArea.setBackground(Color.BLACK); - jTextArea.setForeground(Color.WHITE); - jTextArea.setLineWrap(true); - jTextArea.setWrapStyleWord(true); - jTextArea.setMargin(new Insets(10, 10, 10, 10)); - jTextArea.setText(sText); - jTextArea.setFocusable(false); - jTextArea.setEnabled(false); - JScrollPane jScrollPane = new JScrollPane(jTextArea); - jScrollPane.setPreferredSize(new Dimension(306, 400-261)); - contentPane.add(jScrollPane, BorderLayout.SOUTH); - } -} diff --git a/client/LicenseWindow.java b/client/LicenseWindow.java deleted file mode 100644 index b8a2faa..0000000 --- a/client/LicenseWindow.java +++ /dev/null @@ -1,33 +0,0 @@ -package client; - -import shared.*; - -/** - * This window simply shows an license message. - * @author buetow - * - */ -public class LicenseWindow extends InfoWindow { - final static long serialVersionUID = 1L; - /** - * Creates the window and shows it. - * @param netCalendarClient Specifies the calendar client session object to use. - */ - public LicenseWindow(NetCalendarClient netCalendarClient) { - super(netCalendarClient, "License", - Config.VERSION + "\n" + - "Copyright (C) 2006, 2009 by Paul C. Buetow\n\n" + - "This program is free software; you can redistribute it and/or " + - "modify it under the terms of the GNU General Public License " + - "as published by the Free Software Foundation; either version 2 " + - "of the License, or (at your option) any later version.\n\n" + - "This program is distributed in the hope that it will be useful, " + - "but WITHOUT ANY WARRANTY; without even the implied warranty of " + - "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " + - "GNU General Public License for more details.\n\n" + - "You should have received a copy of the GNU General Public License " + - "along with this program; if not, write to the Free Software " + - "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." - ); - } -} diff --git a/client/NetCalendarClient.java b/client/NetCalendarClient.java deleted file mode 100644 index 14c6708..0000000 --- a/client/NetCalendarClient.java +++ /dev/null @@ -1,731 +0,0 @@ -/** - */ - -package client; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.table.*; -import java.util.*; - -import shared.*; -import shared.remotecall.*; -import client.inputforms.*; - -/** - * This is the main class of the client part of the netcalendar suite. It contains the main GUI. - * All subguis are created within this class. - * @author buetow - */ -public class NetCalendarClient extends JFrame { - private static final long serialVersionUID = 1L; - private static int iNextSession = 1; - private static int iNumCurrentSessions = 0; - private int iCurrentSession; - private NetCalendarClient netCalendarClient; - private Vector vecFrames = new Vector(); - - // Diverse components - private ClientRequest lastClientRequest = null; - protected int iCurrentMouseSelectedRow = 0; - protected int iCurrentMouseSelectedCol = 0; - - // GUI components - private JMenuBar jMenuBar; - private JPopupMenu jPopupMenu; - private CalendarTableModel tableModel; - private JTable jTable; - - private JTextField jTextFieldRegexp; - private JTextField jTextFieldStatusMessages; - - // Some callback objects - private DoCallback doCallbackEditEvent; - private DoCallback doCallbackDeleteEvent; - private DoCallback doCallbackCopyEvent; - private DoCallback doCallbackDeleteCategory; - private DoCallback doCallbackRenameCategory; - - // Static GUI strings which needs to be specified at least twice - private final static String DELETE_EVENT = "Delete event(s)"; - private final static String EDIT_EVENT = "Edit event(s)"; - private final static String COPY_EVENT = "Copy event(s)"; - private final static String CREATE_EVENT = "Create new event"; - private final static String DELETE_CATEGORY = "Delete whole category(s)"; - private final static String RENAME_CATEGORY = "Rename whole category(s)"; - private final static String ADVANCED_SEARCH = "Advanced searching"; - private final static String SORT_BY_COL = "Sort by this row"; - private final static String REVERSE_SORT_BY_COL = "Reverse sort by this row"; - private final static String ENTER_REGEXP_HERE ="Enter some regexp search string here..."; - - /** - * Standard constructor, creates the client GUI. - */ - public NetCalendarClient() { - super(getSessionString(iNextSession) + Config.VERSION); - this.iCurrentSession = iNextSession++; - - // Save a reference of this to allow to access this object through - // inner-classes - // (See the "Advanced searching" action listener object for example!) - this.netCalendarClient = this; - iNumCurrentSessions++; - - initComponents(); - setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - setLocationRelativeTo(null); - pack(); - setVisible(true); - - // Start a default request to the netcalendar server - update(new ClientRequest(ClientRequest.REQUEST_ALL_EVENTS)); - } - - /** - * Initializes all the GUI components. - */ - private void initComponents() { - this.addWindowListener(new WindowListener() { - public void windowActivated(WindowEvent e) { } - public void windowClosing(WindowEvent e) {} - public void windowDeactivated(WindowEvent e) {} - public void windowDeiconified(WindowEvent e) {} - public void windowIconified(WindowEvent e) { } - public void windowOpened(WindowEvent e) {} - public void windowClosed(WindowEvent e) { - if (--iNumCurrentSessions == 0) - Main.exit(0); - - Main.infoMessage("Closing a session window"); - } - }); - - Container container = getContentPane(); - - jMenuBar = new JMenuBar(); - setJMenuBar(jMenuBar); - - JMenu jMenuSession = new JMenu("Session"); - jMenuBar.add(jMenuSession); - - JMenuItem jMenuItemNewWindow = new JMenuItem("New window"); - jMenuSession.add(jMenuItemNewWindow); - jMenuItemNewWindow.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new NetCalendarClient(); - } - }); - - JMenuItem jMenuItemCloseWindow = new JMenuItem("Close window"); - jMenuSession.add(jMenuItemCloseWindow); - jMenuItemCloseWindow.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - dispose(); - } - }); - - jMenuSession.add(new JSeparator()); - - JMenuItem jMenuItemPreferences = new JMenuItem("Preferences"); - jMenuSession.add(jMenuItemPreferences); - jMenuItemPreferences.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new Preferences(netCalendarClient); - } - }); - - jMenuSession.add(new JSeparator()); - - JMenuItem jMenuItemQuit = new JMenuItem("Quit"); - jMenuSession.add(jMenuItemQuit); - jMenuItemQuit.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - System.exit(0); - } - }); - - JMenu jMenuEdit = new JMenu("Edit"); - jMenuBar.add(jMenuEdit); - - JMenuItem jMenuItemCreate = new JMenuItem(CREATE_EVENT); - jMenuEdit.add(jMenuItemCreate); - jMenuItemCreate.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new CreateNewEvent(netCalendarClient); - } - }); - - JMenuItem jMenuItemEdit = new JMenuItem(EDIT_EVENT); - jMenuEdit.add(jMenuItemEdit); - doCallbackEditEvent = new DoCallback() { - public void callback(Object obj) { - new EditExistingEvent(netCalendarClient, (CalendarEvent) obj); - } - }; - jMenuItemEdit.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - foreachSelectedEvent(doCallbackEditEvent); - } - }); - - JMenuItem jMenuItemCopy = new JMenuItem(COPY_EVENT); - jMenuEdit.add(jMenuItemCopy); - doCallbackCopyEvent = new DoCallback() { - public void callback(Object obj) { - CalendarEvent calendarEvent = (CalendarEvent) obj; - ClientRequest clientRequest = new ClientRequest(ClientRequest.ADD_EVENT); - clientRequest.setEvent(calendarEvent); - ServerRequester.sendClientRequest(clientRequest); - netCalendarClient.updateLast(); - } - }; - jMenuItemCopy.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - foreachSelectedEvent(doCallbackCopyEvent); - } - }); - - JMenuItem jMenuItemDelete = new JMenuItem(DELETE_EVENT); - jMenuEdit.add(jMenuItemDelete); - doCallbackDeleteEvent = new DoCallback() { - public void callback(Object obj) { - deleteEvent((CalendarEvent)obj); - jTable.getSelectionModel().clearSelection(); - } - }; - jMenuItemDelete.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - foreachSelectedEvent(doCallbackDeleteEvent); - } - }); - - jMenuEdit.add(new JSeparator()); - - JMenuItem jMenuItemRenameCategory = new JMenuItem(RENAME_CATEGORY); - jMenuEdit.add(jMenuItemRenameCategory); - doCallbackRenameCategory = new DoCallback() { - public void callback(Object obj) { - new RenameCategory(netCalendarClient, (CalendarEvent) obj); - jTable.getSelectionModel().clearSelection(); - } - }; - jMenuItemRenameCategory.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - foreachSelectedEvent(doCallbackRenameCategory); - } - }); - - JMenuItem jMenuItemDeleteCategory = new JMenuItem(DELETE_CATEGORY); - jMenuEdit.add(jMenuItemDeleteCategory); - doCallbackDeleteCategory = new DoCallback() { - public void callback(Object obj) { - deleteCategory((CalendarEvent)obj); - jTable.getSelectionModel().clearSelection(); - } - }; - jMenuItemDeleteCategory.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - foreachSelectedEvent(doCallbackDeleteCategory); - } - }); - - - JMenu jMenuSorting = new JMenu("Sorting"); - jMenuBar.add(jMenuSorting); - - JMenuItem jMenuItemSortByDate = new JMenuItem("Sort by date"); - jMenuSorting.add(jMenuItemSortByDate); - jMenuItemSortByDate.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.sortByDate(); - } - }); - JMenuItem jMenuItemSortByCategory = new JMenuItem("Sort by category"); - jMenuSorting.add(jMenuItemSortByCategory); - jMenuItemSortByCategory.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.sortByCategory(); - } - }); - JMenuItem jMenuItemSortByDescr = new JMenuItem("Sort by description"); - jMenuSorting.add(jMenuItemSortByDescr); - jMenuItemSortByDescr.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.sortByDescription(); - } - }); - JMenuItem jMenuItemSortByPlace = new JMenuItem("Sort by place"); - jMenuSorting.add(jMenuItemSortByPlace); - jMenuItemSortByPlace.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.sortByPlace(); - } - }); - JMenuItem jMenuItemSortByEventIDs = new JMenuItem("Sort by event IDs"); - jMenuSorting.add(jMenuItemSortByEventIDs); - jMenuItemSortByEventIDs.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.sortByID(); - } - }); - - jMenuSorting.add(new JSeparator()); - - JMenuItem jMenuItemReverseSortByDate = new JMenuItem( - "Reverse sort by date"); - jMenuSorting.add(jMenuItemReverseSortByDate); - jMenuItemReverseSortByDate.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.reverseSortByDate(); - } - }); - JMenuItem jMenuItemReverseSortByCategory = new JMenuItem( - "Reverse sort by category"); - jMenuSorting.add(jMenuItemReverseSortByCategory); - jMenuItemReverseSortByCategory.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.reverseSortByCategory(); - } - }); - JMenuItem jMenuItemReverseSortByDescr = new JMenuItem( - "Reverse sort by description"); - jMenuSorting.add(jMenuItemReverseSortByDescr); - jMenuItemReverseSortByDescr.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.reverseSortByDescription(); - } - }); - JMenuItem jMenuItemReverseSortByPlace = new JMenuItem( - "Reverse sort by place"); - jMenuSorting.add(jMenuItemReverseSortByPlace); - jMenuItemReverseSortByPlace.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.reverseSortByPlace(); - } - }); - JMenuItem jMenuItemReverseSortByIDs = new JMenuItem( - "Reverse sort by event IDs"); - jMenuSorting.add(jMenuItemReverseSortByIDs); - jMenuItemReverseSortByIDs.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - tableModel.reverseSortByID(); - } - }); - - JMenu jMenuServer = new JMenu("Server"); - jMenuBar.add(jMenuServer); - - JMenuItem jMenuItemUpdate = new JMenuItem("Update events from server"); - jMenuServer.add(jMenuItemUpdate); - jMenuItemUpdate.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - update(lastClientRequest); - } - }); - - JMenuItem jMenuItemGetAll = new JMenuItem("Get all events from server"); - jMenuServer.add(jMenuItemGetAll); - ActionListener actionListenerGetAll = new ActionListener() { - public void actionPerformed(ActionEvent event) { - update(new ClientRequest(ClientRequest.REQUEST_ALL_EVENTS)); - } - }; - jMenuItemGetAll.addActionListener(actionListenerGetAll); - - JMenuItem jMenuItemAdvancedSearch = new JMenuItem( - "Advanced searching for events"); - jMenuServer.add(jMenuItemAdvancedSearch); - jMenuItemAdvancedSearch.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new AdvancedSearching(netCalendarClient); - } - }); - - jMenuServer.add(new JSeparator()); - - JMenuItem jMenuItemReloadDatabase = new JMenuItem("Reload database"); - jMenuServer.add(jMenuItemReloadDatabase); - jMenuItemReloadDatabase.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - ServerRequester.sendClientRequest(new ClientRequest( - ClientRequest.RELOAD_DATABASE)); - updateLast(); - } - }); - JMenuItem jMenuItemFlushDatabase = new JMenuItem("Flush database"); - jMenuServer.add(jMenuItemFlushDatabase); - jMenuItemFlushDatabase.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - ServerRequester.sendClientRequest(new ClientRequest( - ClientRequest.FLUSH_DATABASE)); - } - }); - - jMenuServer.add(new JSeparator()); - - JMenuItem jMenuItemShutdownServer = new JMenuItem("Shutdown server"); - jMenuServer.add(jMenuItemShutdownServer); - jMenuItemShutdownServer.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - ServerRequester.sendClientRequest(new ClientRequest( - ClientRequest.SHUTDOWN_SERVER)); - } - }); - - JMenu jMenuAbout = new JMenu("About"); - jMenuBar.add(jMenuAbout); - - JMenuItem jMenuItemAbout = new JMenuItem("About"); - jMenuAbout.add(jMenuItemAbout); - jMenuItemAbout.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new AboutWindow(netCalendarClient); - } - }); - JMenuItem jMenuItemLicense = new JMenuItem("License"); - jMenuAbout.add(jMenuItemLicense); - jMenuItemLicense.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - new LicenseWindow(netCalendarClient); - } - }); - - jPopupMenu = new JPopupMenu(); - ActionListener jPopupMenuActionListener = new ActionListener() { - public void actionPerformed(ActionEvent actionEvent) { - String sActionCommand = actionEvent.getActionCommand(); - if (sActionCommand.equals(DELETE_EVENT)) { - foreachSelectedEvent(doCallbackDeleteEvent); - - } else if (sActionCommand.equals(CREATE_EVENT)) { - new CreateNewEvent(netCalendarClient); - - } else if (sActionCommand.equals(EDIT_EVENT)) { - foreachSelectedEvent(doCallbackEditEvent); - - } else if (sActionCommand.equals(COPY_EVENT)) { - foreachSelectedEvent(doCallbackCopyEvent); - - } else if (sActionCommand.equals(RENAME_CATEGORY)) { - foreachSelectedEvent(doCallbackRenameCategory); - - } else if (sActionCommand.equals(DELETE_CATEGORY)) { - foreachSelectedEvent(doCallbackDeleteCategory); - - } else if (sActionCommand.equals(ADVANCED_SEARCH)) { - new AdvancedSearching(netCalendarClient); - - } else if (sActionCommand.equals(SORT_BY_COL)) { - tableModel.sortByCol(iCurrentMouseSelectedCol); - - } else if (sActionCommand.equals(REVERSE_SORT_BY_COL)) { - tableModel.reverseSortByCol(iCurrentMouseSelectedCol); - } - } - }; - - JMenuItem jMenuItemPopupCreate = new JMenuItem(CREATE_EVENT); - jMenuItemPopupCreate.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupCreate); - JMenuItem jMenuItemPopupEdit = new JMenuItem(EDIT_EVENT); - jMenuItemPopupEdit.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupEdit); - JMenuItem jMenuItemPopupCopy = new JMenuItem(COPY_EVENT); - jMenuItemPopupCopy.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupCopy); - JMenuItem jMenuItemPopupDelete = new JMenuItem(DELETE_EVENT); - jMenuItemPopupDelete.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupDelete); - jPopupMenu.add(new JSeparator()); - - JMenuItem jMenuItemPopupRenameCategory = new JMenuItem(RENAME_CATEGORY); - jMenuItemPopupRenameCategory.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupRenameCategory); - JMenuItem jMenuItemPopupDeleteCategory = new JMenuItem(DELETE_CATEGORY); - jMenuItemPopupDeleteCategory.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupDeleteCategory); - jPopupMenu.add(new JSeparator()); - - JMenuItem jMenuItemPopupSort = new JMenuItem(SORT_BY_COL); - jMenuItemPopupSort.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupSort); - JMenuItem jMenuItemPopupReverseSort = new JMenuItem(REVERSE_SORT_BY_COL); - jMenuItemPopupReverseSort.addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupReverseSort); - jPopupMenu.add(new JSeparator()); - - JMenuItem jMenuItemPopupAdvancedSearch = new JMenuItem(ADVANCED_SEARCH); - jMenuItemPopupAdvancedSearch - .addActionListener(jPopupMenuActionListener); - jPopupMenu.add(jMenuItemPopupAdvancedSearch); - - jTable = new JTable(); - jTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - - jTable.setColumnModel(new DefaultTableColumnModel() { - private static final long serialVersionUID = 1L; - // Dont allow column moving! - public void moveColumn(int iColumnIndex, int iNewColumnIndex) { } - }); - - tableModel = new CalendarTableModel(jTable); - jTable.setModel(tableModel); - jTable.addMouseListener(new MouseListener() { - public void mouseClicked(MouseEvent mouseEvent) { - iCurrentMouseSelectedRow = jTable.rowAtPoint(mouseEvent.getPoint()); - iCurrentMouseSelectedCol = jTable.columnAtPoint(mouseEvent.getPoint()); - - if (mouseEvent.getButton() != MouseEvent.BUTTON1) - jPopupMenu.show(jTable, mouseEvent.getX(), mouseEvent.getY()); - } - - public void mouseEntered(MouseEvent event) { } - public void mouseExited(MouseEvent event) {} - public void mousePressed(MouseEvent event) { } - public void mouseReleased(MouseEvent event) { - } - }); - - CalendarTableCellRenderer cellRenderer = new CalendarTableCellRenderer(tableModel); - - TableColumn column = jTable.getColumn(CalendarTableModel.NUM_HEADER); - column.setMaxWidth(Config.getStringValue("client_max_events").length() * 10); - column.setResizable(false); - column.setCellRenderer(cellRenderer); - - column = jTable.getColumn(CalendarTableModel.CATEGORY_HEADER); - column.setPreferredWidth(10); - column.setCellRenderer(cellRenderer); - - column = jTable.getColumn(CalendarTableModel.PLACE_HEADER); - column.setPreferredWidth(10); - column.setCellRenderer(cellRenderer); - - jTable.getColumn(CalendarTableModel.DATE_HEADER).setCellRenderer(cellRenderer); - jTable.getColumn(CalendarTableModel.DESCRIPTION_HEADER).setCellRenderer(cellRenderer); - - jTextFieldRegexp = new JTextField(); - jTextFieldRegexp.setText(ENTER_REGEXP_HERE); - jTextFieldRegexp.setEnabled(false); - - ActionListener actionListenerSearchRegexp = new ActionListener() { - public void actionPerformed(ActionEvent event) { - ClientRequest clientRequest = new ClientRequest(); - clientRequest.setRegexpAll(jTextFieldRegexp.getText()); - clientRequest.setMainRegexp(true); - jTextFieldRegexp.setText(""); - update(ServerRequester.sendClientRequest(clientRequest)); - lastClientRequest = clientRequest; - } - }; - MouseListener mouseListenerSearchRegexp = new MouseListener() { - public void mouseClicked(MouseEvent mouseEvent) {} - public void mousePressed(MouseEvent mouseEvent) {} - public void mouseReleased(MouseEvent mouseEvent) {} - public void mouseExited(MouseEvent mouseEvent) { - if (jTextFieldRegexp.getText().equals("")) { - jTextFieldRegexp.setText(ENTER_REGEXP_HERE); - jTextFieldRegexp.setEnabled(false); - } - } - public void mouseEntered(MouseEvent mouseEvent) { - if (!jTextFieldRegexp.isEnabled()) { - jTextFieldRegexp.setText(""); - jTextFieldRegexp.setEnabled(true); - } - } - }; - - jTextFieldRegexp.addActionListener(actionListenerSearchRegexp); - jTextFieldRegexp.addMouseListener(mouseListenerSearchRegexp); - - JButton jButtonSearch = new JButton("Search"); - jButtonSearch.addActionListener(actionListenerSearchRegexp); - jButtonSearch.addMouseListener(mouseListenerSearchRegexp); - - JButton jButtonGetAll = new JButton("Get all"); - jButtonGetAll.addActionListener(actionListenerGetAll); - - // Init split panes - JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - jSplitPane.setResizeWeight(1); - jSplitPane.setDividerSize(0); - - JSplitPane jSplitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - jSplitPane2.setResizeWeight(1); - jSplitPane2.setDividerSize(0); - - JSplitPane jSplitPane3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); - jSplitPane3.setResizeWeight(1); - jSplitPane3.setDividerSize(0); - - JSplitPane jSplitPane4 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); - jSplitPane4.setDividerSize(0); - - // Init components - JScrollPane jScrollPaneTable = new JScrollPane(jTable); - - jTextFieldStatusMessages = new JTextField("Welcome to " - + Config.VERSION); - jTextFieldStatusMessages.setEditable(false); - - // Set split pane components - jSplitPane.setTopComponent(jScrollPaneTable); - jSplitPane.setBottomComponent(jSplitPane2); - - jSplitPane2.setTopComponent(jSplitPane3); - jSplitPane2.setBottomComponent(jTextFieldStatusMessages); - - JPanel jPanelButtons = new JPanel(); - jPanelButtons.add(jButtonSearch); - jPanelButtons.add(jButtonGetAll); - - jSplitPane3.setLeftComponent(jTextFieldRegexp); - jSplitPane3.setRightComponent(jPanelButtons); - - container.add(jSplitPane); - } - - /** - * This method sends a client request object to the server and used the server response object - * to update the JTable ith its new values using the table model. - * @param clientRequest Specifies the client request object to use for the updating. - */ - public void update(ClientRequest clientRequest) { - if (clientRequest == null) - return; - - update(ServerRequester.sendClientRequest(clientRequest)); - lastClientRequest = clientRequest; - } - - /** - * This method sends the last client request object being used to the server again. If - * If there is no last client request, nothing will be done. - */ - public void updateLast() { - if (lastClientRequest != null) - update(ServerRequester.sendClientRequest(lastClientRequest)); - } - - /** - * This method updates the GUI unsing a given server response object. - * @param serverResponse Specifies the server response to use for the updating. - */ - public void update(ServerResponse serverResponse) { - if (serverResponse == null) - return; - - tableModel.setEvents(serverResponse.getEvents()); - } - - /** - * This method tells the calendar server to delete a given calendar event. - * @param deleteEvent Specifies the calendar event to delete. - */ - public void deleteEvent(CalendarEvent deleteEvent) { - ClientRequest deleteRequest = new ClientRequest( - ClientRequest.DELETE_EVENT); - deleteRequest.setEvent(deleteEvent); - ServerRequester.sendClientRequest(deleteRequest); - updateLast(); - } - - /** - * This method tells the calendar server to delete a given calendar category. - * @param deleteEventsCategory Specifies the calendar event to delete its category! - */ - public void deleteCategory(CalendarEvent deleteEventsCategory) { - ClientRequest deleteRequest = new ClientRequest( - ClientRequest.DELETE_CATEGORY); - deleteRequest.setEvent(deleteEventsCategory); - ServerRequester.sendClientRequest(deleteRequest); - updateLast(); - } - - /** - * If the client has several main windows open, then it will display a - * session indicator so that the user knows which window belongs to which - * session window! - * @param iSession Specifies the session number of the current client window. - * @return Returns the session indicator of the current client session. - */ - private static String getSessionString(int iSession) { - return iSession > 1 ? "[" + iSession + "] " : ""; - } - - /** - * If the client has several main windows open, then it will display a - * session indicator so that the user knows which window belongs to which - * session window. - * @return Returns the session indicator of the current client session. - */ - public String getSessionString() { - return iCurrentSession > 1 ? "[" + iCurrentSession + "] " : ""; - } - - /** - * Runs a callback function on each selected event of the table. - * @param doCallback Specifies the callback object to be used. - */ - public void foreachSelectedEvent(DoCallback doCallback) { - ListSelectionModel listSelectionModel = jTable.getSelectionModel(); - - int iMinIndex = listSelectionModel.getMinSelectionIndex(); - int iMaxIndex = listSelectionModel.getMaxSelectionIndex(); - - Vector vecEvents = new Vector(); - - for (int i = iMinIndex; i <= iMaxIndex; ++i) - if (listSelectionModel.isSelectedIndex(i)) - vecEvents.add(tableModel.getEvent(i)); - - Enumeration enumEvents = vecEvents.elements(); - while (enumEvents.hasMoreElements()) - doCallback.callback(enumEvents.nextElement()); - } - - /** - * This method is for various status messages. All messages will show up in the - * status bar of the current client session window. - * @param sMessage Specifies the message to be displayed in the status bar. - */ - public void statusMessage(String sMessage) { - jTextFieldStatusMessages.setText(sMessage); - jTextFieldStatusMessages.updateUI(); - } - - /** - * This method disposes this JFrame window including all the JFrame windows which - * belong to this session. - */ - public void dispose() { - Enumeration enumFrames = vecFrames.elements(); - - while (enumFrames.hasMoreElements()) - ((JFrame) enumFrames.nextElement()).dispose(); - - super.dispose(); - } - - /** - * This method tells the main netcalendar client JFrame which sub JFrames are opened. - * So that all the sub JFrames will be disposed as well if the main JFrame gets disposed. - * A sub JFrame is for example a input form for advanced searching or the preferences dialog. - * @param jFrame Specifies the frame object to add. . - */ - public void addFrame(JFrame jFrame) { - vecFrames.add(jFrame); - } - - /** - * This method tells the main netcalendar client JFrame which sub JFrames are opened. - * So that all the sub JFrames will be disposed as well if the main JFrame gets disposed. - * A sub JFrame is for example a input form for advanced searching or the preferences dialog. - * @param jFrame Specifies the frame object to remove. - */ - public void removeFrame(JFrame jFrame) { - vecFrames.remove(jFrame); - } -} diff --git a/client/ServerRequester.java b/client/ServerRequester.java deleted file mode 100644 index 9cd7485..0000000 --- a/client/ServerRequester.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * - */ -package client; - - -import java.io.*; -import java.net.*; -import java.security.*; -import javax.net.*; -import javax.net.ssl.*; - -import shared.*; -import shared.remotecall.*; - -/** - * This class only has static members. Its used for creating a client socket to connect and - * communicate with the calendar server. - * @author buetow - */ -public class ServerRequester { - /** - * This method creates a new client socket. - * @return Returns a client socket object. - * @throws IOException - */ - private static Socket makeClientSocket() throws IOException { - if (!Config.getBooleanValue("use_ssl")) { - Main.statusMessage("Making non-SSL Socket..."); - return new Socket(Config.getServerAddress(), Config.getIntValue("server_port")); - } - - Main.statusMessage("Making SSL Socket..."); - //Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); - SocketFactory socketFactory = SSLSocketFactory.getDefault(); - return socketFactory.createSocket(Config.getServerAddress(), Config.getIntValue("server_port")); - } - - /** - * Sends a client request to the netcalendar server end receives a server response object. - * @param clientRequest Specifies the client request to send to the calendar server. - * @return Returns the server response. It returns null if no response is available. - */ - public final static ServerResponse sendClientRequest(ClientRequest clientRequest) { - Main.statusMessage("Sending client request to server..."); - - ServerResponse serverResponse = null; - - try { - Socket socket = makeClientSocket(); - socket.setKeepAlive(true); - - // Send the client request to the server - OutputStream outputStream = socket.getOutputStream(); - ObjectOutput objectOutput = new ObjectOutputStream(outputStream); - - objectOutput.writeObject(clientRequest); - objectOutput.flush(); - - // We only want to receive data if the request new events, not if we only send - // changed events! - if (clientRequest.requestsNewEvents()) { - // Recieve the server's response - InputStream inputStream = socket.getInputStream(); - ObjectInput objectInput = new ObjectInputStream(inputStream); - serverResponse = (ServerResponse) objectInput.readObject(); - } - - objectOutput.close(); - socket.close(); - - } catch (Exception e) { - Main.infoMessage("Client error during serialization: " + e.getMessage()); - Main.statusMessage("Error: Client request did not succeed! Server down?"); - return serverResponse; - } - - Main.statusMessage("Last client request succeeded"); - // Returns null if no response is available! - return serverResponse; - } -} diff --git a/client/SplashScreen.java b/client/SplashScreen.java deleted file mode 100644 index 6ad8416..0000000 --- a/client/SplashScreen.java +++ /dev/null @@ -1,42 +0,0 @@ -package client; - -import java.awt.*; -import javax.swing.*; -import shared.*; - -public class SplashScreen extends JWindow implements Runnable { - private static final long serialVersionUID = 1L; - - /** - * A simple little method to show a title screen in the center - * of the screen for the amount of time given in the constructor - */ - public void run() { - JPanel jPanel = (JPanel)getContentPane(); - jPanel.setBackground(Color.BLACK); - jPanel.setForeground(Color.WHITE); - - // Set the window's bounds, centering the window - int iWidth = 411; - int iHeight = 261; - Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); - - int x = (dimension.width-iWidth)/2; - int y = (dimension.height-iHeight)/2; - setBounds(x,y,iWidth,iHeight); - - JLabel jLabel = new JLabel(new ImageIcon("images/netcal.png")); - jPanel.add(jLabel, BorderLayout.CENTER); - jPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3)); - setVisible(true); - - try { - Thread.sleep(3000); - - } catch (Exception e) { - Main.infoMessage(e.getMessage()); - } - - dispose(); - } -} \ No newline at end of file diff --git a/client/SubWindow.java b/client/SubWindow.java deleted file mode 100644