From 80619fc8abd5d30e0e8fb0f8da9b44d695815959 Mon Sep 17 00:00:00 2001 From: MohamedFarid612 <84376570+MohamedFarid612@users.noreply.github.com> Date: Thu, 9 Sep 2021 16:53:50 +0200 Subject: [PATCH] Add files via upload --- dist/Frexie.jar | Bin 0 -> 164356 bytes src/frexie/Controller.java | 22 + src/frexie/DataChecker.java | 62 +++ src/frexie/FileHandler.java | 181 +++++++ src/frexie/FileLoader.java | 78 +++ src/frexie/Finder.java | 51 ++ src/frexie/Frexie.java | 16 + src/frexie/User.java | 128 +++++ src/frexie/Validator.java | 81 ++++ src/icons/female.png | Bin 0 -> 1814 bytes src/icons/icons8-offline-30.png | Bin 0 -> 1006 bytes src/icons/icons8-online-48.png | Bin 0 -> 3122 bytes src/icons/icons8-show-password-30.png | Bin 0 -> 427 bytes src/icons/male.png | Bin 0 -> 1817 bytes src/icons/myFacebookProfile.png | Bin 0 -> 893 bytes src/icons/offline.png | Bin 0 -> 1006 bytes src/icons/online.png | Bin 0 -> 3122 bytes src/icons/showPassword.png | Bin 0 -> 427 bytes src/servers/Client.java | 21 + src/servers/DouClient.java | 26 + src/servers/DouServerConnector.java | 49 ++ src/servers/GlobalServerConnector.java | 39 ++ src/servers/Server1.java | 50 ++ src/servers/Server2.java | 57 +++ src/servers/ServerConnector.java | 36 ++ src/servers/ServerHandler.java | 45 ++ src/view/AddFriend.form | 190 ++++++++ src/view/AddFriend.java | 164 +++++++ src/view/DeactivationAlert.form | 166 +++++++ src/view/DeactivationAlert.java | 156 ++++++ src/view/Developers.form | 216 +++++++++ src/view/Developers.java | 173 +++++++ src/view/DouChat.form | 243 ++++++++++ src/view/DouChat.java | 234 +++++++++ src/view/FindFriends.form | 281 +++++++++++ src/view/FindFriends.java | 264 +++++++++++ src/view/FriendProfile.form | 336 +++++++++++++ src/view/FriendProfile.java | 293 ++++++++++++ src/view/GlobalChat.form | 257 ++++++++++ src/view/GlobalChat.java | 252 ++++++++++ src/view/MyFriends.form | 281 +++++++++++ src/view/MyFriends.java | 264 +++++++++++ src/view/OnlineFriends.form | 296 ++++++++++++ src/view/OnlineFriends.java | 272 +++++++++++ src/view/Profile.form | 498 ++++++++++++++++++++ src/view/Profile.java | 445 ++++++++++++++++++ src/view/Registration.form | 579 +++++++++++++++++++++++ src/view/Registration.java | 602 ++++++++++++++++++++++++ src/view/SavedFrame.form | 128 +++++ src/view/SavedFrame.java | 112 +++++ src/view/Settings.form | 407 ++++++++++++++++ src/view/Settings.java | 365 ++++++++++++++ src/view/StartPage.form | 363 ++++++++++++++ src/view/StartPage.java | 331 +++++++++++++ src/view/StatusEditor.form | 267 +++++++++++ src/view/StatusEditor.java | 221 +++++++++ src/view/TermsAndConditions.form | 161 +++++++ src/view/TermsAndConditions.java | 178 +++++++ src/view/ThankingFrame.form | 141 ++++++ src/view/ThankingFrame.java | 117 +++++ src/view/WarningTermsAndConditions.form | 153 ++++++ src/view/WarningTermsAndConditions.java | 167 +++++++ 62 files changed, 10515 insertions(+) create mode 100644 dist/Frexie.jar create mode 100644 src/frexie/Controller.java create mode 100644 src/frexie/DataChecker.java create mode 100644 src/frexie/FileHandler.java create mode 100644 src/frexie/FileLoader.java create mode 100644 src/frexie/Finder.java create mode 100644 src/frexie/Frexie.java create mode 100644 src/frexie/User.java create mode 100644 src/frexie/Validator.java create mode 100644 src/icons/female.png create mode 100644 src/icons/icons8-offline-30.png create mode 100644 src/icons/icons8-online-48.png create mode 100644 src/icons/icons8-show-password-30.png create mode 100644 src/icons/male.png create mode 100644 src/icons/myFacebookProfile.png create mode 100644 src/icons/offline.png create mode 100644 src/icons/online.png create mode 100644 src/icons/showPassword.png create mode 100644 src/servers/Client.java create mode 100644 src/servers/DouClient.java create mode 100644 src/servers/DouServerConnector.java create mode 100644 src/servers/GlobalServerConnector.java create mode 100644 src/servers/Server1.java create mode 100644 src/servers/Server2.java create mode 100644 src/servers/ServerConnector.java create mode 100644 src/servers/ServerHandler.java create mode 100644 src/view/AddFriend.form create mode 100644 src/view/AddFriend.java create mode 100644 src/view/DeactivationAlert.form create mode 100644 src/view/DeactivationAlert.java create mode 100644 src/view/Developers.form create mode 100644 src/view/Developers.java create mode 100644 src/view/DouChat.form create mode 100644 src/view/DouChat.java create mode 100644 src/view/FindFriends.form create mode 100644 src/view/FindFriends.java create mode 100644 src/view/FriendProfile.form create mode 100644 src/view/FriendProfile.java create mode 100644 src/view/GlobalChat.form create mode 100644 src/view/GlobalChat.java create mode 100644 src/view/MyFriends.form create mode 100644 src/view/MyFriends.java create mode 100644 src/view/OnlineFriends.form create mode 100644 src/view/OnlineFriends.java create mode 100644 src/view/Profile.form create mode 100644 src/view/Profile.java create mode 100644 src/view/Registration.form create mode 100644 src/view/Registration.java create mode 100644 src/view/SavedFrame.form create mode 100644 src/view/SavedFrame.java create mode 100644 src/view/Settings.form create mode 100644 src/view/Settings.java create mode 100644 src/view/StartPage.form create mode 100644 src/view/StartPage.java create mode 100644 src/view/StatusEditor.form create mode 100644 src/view/StatusEditor.java create mode 100644 src/view/TermsAndConditions.form create mode 100644 src/view/TermsAndConditions.java create mode 100644 src/view/ThankingFrame.form create mode 100644 src/view/ThankingFrame.java create mode 100644 src/view/WarningTermsAndConditions.form create mode 100644 src/view/WarningTermsAndConditions.java diff --git a/dist/Frexie.jar b/dist/Frexie.jar new file mode 100644 index 0000000000000000000000000000000000000000..12943d884cbbe5e51f2aa9b8c161206e2a1528ad GIT binary patch literal 164356 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

2-fi@HDrD+m~o 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 temp = new ArrayList(); + try { + BufferedWriter bw = new BufferedWriter(new FileWriter(Controller.currentUser.getUserName() + ".txt")); + for (x = 0; x < Controller.currentUser.getFriendsNames().size(); x++) { + bw.write(Controller.currentUser.getFriendsNames().get(x) + "\n"); + } + bw.write(username + "\n"); + bw.close(); + } catch (Exception ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure UserName.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + ///////////////////////////////////////////// + temp = FileLoader.loadFriends(username); + BufferedWriter bw2 = new BufferedWriter(new FileWriter(username + ".txt")); + for (x = 0; x < temp.size(); x++) { + bw2.write(temp.get(x) + "\n"); + } + bw2.write(Controller.currentUser.getUserName() + "\n"); + bw2.close(); + } catch (IOException ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure UserName.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + + } + +////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +//////////////////////////////////////////////////////// + public static void addFirstFriend(String username) { + BufferedWriter bw2 = null; + try { + bw2 = new BufferedWriter(new FileWriter(username + ".txt")); + bw2.write("1" + "\n"); + bw2.close(); + } catch (IOException ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure UserName.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + } + + + + public static void deleteFriend(String username) + { + + try { + int x; + ArrayList temp = new ArrayList(); + try { + BufferedWriter bw = new BufferedWriter(new FileWriter(Controller.currentUser.getUserName() + ".txt")); + for (x = 0; x < Controller.currentUser.getFriendsNames().size(); x++) { + if(!Controller.currentUser.getFriendsNames().get(x).equalsIgnoreCase(username)) bw.write(Controller.currentUser.getFriendsNames().get(x) + "\n"); + } + + bw.close(); + } catch (Exception ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure UserName.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + ///////////////////////////////////////////// + temp = FileLoader.loadFriends(username); + BufferedWriter bw2 = new BufferedWriter(new FileWriter(username + ".txt")); + for (x = 0; x < temp.size(); x++) { + if(!temp.get(x).equalsIgnoreCase(Controller.currentUser.getUserName())) bw2.write(temp.get(x) + "\n"); + } + bw2.close(); + } catch (IOException ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure UserName.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + + + + } +} diff --git a/src/frexie/FileLoader.java b/src/frexie/FileLoader.java new file mode 100644 index 0000000..6dbde0c --- /dev/null +++ b/src/frexie/FileLoader.java @@ -0,0 +1,78 @@ + +package frexie; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.StringTokenizer; +import javax.swing.ImageIcon; +import javax.swing.JOptionPane; + +public class FileLoader { + + public static ArrayList users = new ArrayList<>(); + + + public static void FileLoading() { + try { + + + users.clear(); + + BufferedReader br = new BufferedReader(new FileReader("users.txt")); + String temp; + while ((temp = br.readLine()) != null) { + + User tempUser = new User(); + StringTokenizer st = new StringTokenizer(temp, ","); + while (st.hasMoreTokens()) { + tempUser.setUserName(st.nextToken()); + tempUser.setFirstName(st.nextToken()); + tempUser.setLastName(st.nextToken()); + tempUser.setFullName(st.nextToken()); + tempUser.setEmail(st.nextToken()); + tempUser.setPassword(st.nextToken()); + tempUser.setGender(st.nextToken()); + tempUser.setCountFriends(Integer.parseInt(st.nextToken())); + tempUser.setStatus(st.nextToken()); + String tempState=st.nextToken(); + tempUser.setState(tempState); + users.add(tempUser); + } + } + br.close(); + } catch (Exception ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure users.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + return; + } + } + public static ArrayList loadFriends(String fileName) + { + + ArrayList friends=new ArrayList(); + try { + BufferedReader br = new BufferedReader(new FileReader(fileName+".txt")); + String temp; + + while ((temp = br.readLine()) != null) { + + StringTokenizer st = new StringTokenizer(temp, "\n"); + while (st.hasMoreTokens()) { + String tempString=st.nextToken(); + friends.add(tempString); + } + } + br.close(); + } catch (Exception ex) { + ImageIcon xMark = new ImageIcon("xMark50.png"); + JOptionPane.showMessageDialog(null, "File not found!\nplease make sure thisuser's.txt is in program folder and restart the application", "Operation failed", JOptionPane.INFORMATION_MESSAGE, xMark); + } + + return friends; + } + + + + +} diff --git a/src/frexie/Finder.java b/src/frexie/Finder.java new file mode 100644 index 0000000..f18c2b7 --- /dev/null +++ b/src/frexie/Finder.java @@ -0,0 +1,51 @@ +package frexie; + +import java.util.ArrayList; + +public class Finder { + + public static User FindFriend(String username) { + + for (int i = 0; i < FileLoader.users.size(); i++) { + if (FileLoader.users.get(i).getUserName().equalsIgnoreCase(username)) { + return FileLoader.users.get(i); + } + } + return null; + } + + public static boolean isAlreadyFriend(String Username) { + + for (int i = 0; i < Controller.currentUser.getFriendsNames().size(); i++) { + if (Controller.currentUser.getFriendsNames().get(i).equalsIgnoreCase(Username)) { + return true; + } + } + return false; + } + + public static boolean isOnline(String Username) { + + if (Controller.selectedUser.getState().equalsIgnoreCase("true")) { + return true; + } + + return false; + } + + public static ArrayList loadOnlineFriends() { + FileLoader.FileLoading(); + ArrayList temp = Controller.currentUser.getFriendsNames(); + ArrayList temp2 = new ArrayList<>(); + for (int i = 0; i < temp.size(); i++) { + String tempString = temp.get(i); + for (int j = 0; j < FileLoader.users.size(); j++) { + if (tempString.trim().equalsIgnoreCase(FileLoader.users.get(j).getUserName()) && FileLoader.users.get(j).getState().equalsIgnoreCase("true") ) { + temp2.add(FileLoader.users.get(j)); + } + } + } + return temp2; + } + +} diff --git a/src/frexie/Frexie.java b/src/frexie/Frexie.java new file mode 100644 index 0000000..273d2ec --- /dev/null +++ b/src/frexie/Frexie.java @@ -0,0 +1,16 @@ + +package frexie; + + +import view.StartPage; + +public class Frexie { + + public static void main(String[] args) { + FileLoader.FileLoading(); + new StartPage().setVisible(true); + + + } + +} diff --git a/src/frexie/User.java b/src/frexie/User.java new file mode 100644 index 0000000..7d8d3df --- /dev/null +++ b/src/frexie/User.java @@ -0,0 +1,128 @@ +package frexie; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.ArrayList; + +public class User { + + private String userName; + private String firstName; + private String fullName; + private String lastName; + private String email; + private String gender; + private String password; + private String state; + private int countFriends; + private String Status; + private ArrayList friendsNames; + private ArrayList friends; + + + + + public User() { + + } + + public String getUserName() { + return userName; + } + + public String getStatus() { + return Status; + } + + public void setStatus(String Status) { + this.Status = Status; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getFullName() { + return fullName; + } + + + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public int getCountFriends() { + return countFriends; + } + + public void setCountFriends(int countFriends) { + this.countFriends = countFriends; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public ArrayList getFriendsNames() { + return friendsNames; + } + + public void setFriendsNames() { + this.friendsNames = FileLoader.loadFriends(this.userName); + } + + public ArrayList getFriends() { + return friends; + } + + public void setFriends(ArrayList friends) { + this.friends = friends; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/src/frexie/Validator.java b/src/frexie/Validator.java new file mode 100644 index 0000000..ff848b0 --- /dev/null +++ b/src/frexie/Validator.java @@ -0,0 +1,81 @@ +package frexie; + +public class Validator { + + public static boolean isEmpty(String str) { + if (str.equals("")) { + return true; + } + + return false; + } + + public static boolean hasNoSpaces(String str) { + int len = str.length(); + + if (len == 0) { + return true; + } + for (int i = 1; i < len; i++) { + if (Character.isSpaceChar(str.charAt(i))) { + return false; + } + } + + return true; + } + + public static boolean isEmail(String str) { + int atCount = 0, periodCount = 0; + boolean domainValid = false; + if (!hasNoSpaces(str)) { + return false; + } + if (str.length() == 0) { + return true; + } + for (int x = 0; x < str.length(); x++) { + if (str.charAt(x) == '@') { + atCount++; + } + if (atCount > 1) { + return false; + } + } + for (int i = 0; i < str.length(); i++) { + + if (str.charAt(i) == '@') { + if (i == 0) { + return false; + } + + if (i < (str.length() - 3)) { + if (str.charAt(i + 1) != '.') { + domainValid = true; + } + for (int j = i; j < (str.length() - 3); j++) { + if (str.charAt(j + 2) == '.' && str.charAt(j + 3) == '.') { + return false; + } + } + } + } + if (str.charAt(i) == '.') { + if (i == (str.length() - 1) || i == 0) { + return false; + } + periodCount++; + } + } + if (atCount == 1 && periodCount >= 1 && domainValid) { + return true; + } else { + return false; + } + } + + + + + +} diff --git a/src/icons/female.png b/src/icons/female.png new file mode 100644 index 0000000000000000000000000000000000000000..125c94fc3e75eae4797664c0e0706925895ad91e GIT binary patch literal 1814 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 literal 0 HcmV?d00001 diff --git a/src/icons/icons8-online-48.png b/src/icons/icons8-online-48.png new file mode 100644 index 0000000000000000000000000000000000000000..206c28659b1bf4225538472bad0f1b1be74f67f7 GIT binary patch literal 3122 zcmV-249)Y2P)Y+7c+G-vZbO-~a&rS_zN=cn$>fBNO9F ze)sImX#Fr_(m2e2gD7DskB55dArv-hSk0 z&Z;eXp5;CQumphb=f(shKnvjWu((L+pFenclu#m)1w)4Oc)dQHyAlCv00&H2W7{UbbpK8L5}*|IC(28YXCJgQoT>_O zw>b=yr=cLEodBSe3IT`(Vv$)lB-)%h{YLSytZ`|KfD!gL@xj%fA3mO)69bCL04gs> zfDFK1)8sMSQG{W{-L@Ww z+um4OQ&;}qLR-bbLLKY&=+b81a(4W@yT|n>q&%mvXxE|*T2M>{aAu$awnV2Iqh_vs z{>HvKYjTTE?^?88LKxzm_~aiQ!>4AB0U^vK{PjS6QF+PEm)EhJj}y)QXkloGUK`by z-N`Qx9?f}uOB8_704%`@_=8NXclCBi|l{oZ$<7bwCt zTK|sbv*)Wf&0NGuRSN6uPZsOrGEAmm4rad~ge2aa7S~c;UzEFMJ2!gPBz<3IhSAA} z%0op>F1tgIt|${j1__1O1LTf1$;^aWhz+-ap5v$Oi#R+kIPQ(9M8 zcE*ryO6kw0)8TAeJLTC9%F|2$=eyejS0I8A^3Hu5Uq}#$gkt}Wvb{%7w>Mgwru<{h zRV5Dqgb<>R(M4R!Mko!5P0}zWIQnCl5gVYz;nEJ{j>$gyd5s*mH6okBAG;?A0A%;U}|@pzW_C1 zh%x3mWAc?uVykUD?{0O(ij{H&0B|hpT|aHXu`BWEkCZzmNC8ale)bO_DN3FCJP3)r zk_i~0fKd9=))a_D;yYh|JUpnul+yD>6=xdHRM}%kC2FHn2lvXk62_$%(RE=0&{Mz& zb+pbEEK$l+ZqL#Wa-uXjS2a5K1W}0I0u!n`2Uk z^ok1{%Xzjuvf`+vqCQ0+7Fln3?mqjltg#uM4rgoGzJf7gh3rVHxtZMX$n~`(T+y4U&PeViO!g@TJ`Ku8EdVDLIuaHg8_ z^!n(Og!b;XGdyiT`QAYi;wl|o4=m3OzR^;&_`)+Pi1Rb&{~W^TDi*fe>p+I+gw$aB08 z074CsuvRyS06?x*DLB@r96$daQ%g-la>0k+d`EenYj3hQ?OC?zpwGj){W)2y8|nbm zbU$|sV2D7_OF%?o>`+E1a1~`A$OpP|mIJG^J%dIiHcOSVPy%!|mDE%LKx9&!vc18o z1%SA*!{sfN=5TB6g>&sqwuZqIMvPK~sm*JrJX`kO-7g-KhpPoHyF=0?Mi)ydB|BeU zS3cvdr!D!LcE_xmFrVFc&kLb#W{V*3u26CKgc(3V_jC7KQZWLixRabI4;6$TSM^==*NJfn$BHy!XETVf?(iZsa-M zxB331`K{-hLEVe5 zHh#>7ER@or`0>Kuy*xZ9wfj1~a-mc#4;&aeNEb8lshPc2=UU_Frf-TUrN`k{t?>Vh z);1JZS6_Qt!GU9aY~g47;{mMqZ}%5abiSa(c5P_|kG%K3&gVHk2LYFRe*t^Wep@KH zwzPtSr^D?i{A_ZE9Y!m5!=__7JpElQuFch($alL zEe*xhVyD%i^m)8W%JD)XV7wBAtX&lq>NJctA^G+(25mxAzb^#l!rMlt38o@ zAb#+K5l(q%NT17nHQ;r2c6{;Vs{9k#ITBDz0ZnefW;ph{RaqKnZuF z;Z$W=?z$b#=986)l+qml76E9!9A5*iEJp))7{I-ZNT3XhjjS`Io46r2rRhRrbrJH= zkg&jNwWq`Fu-7&=R316me6FB`SZkZ2IWKDm@Bx5N0oX5x_~i=lM*@H`0MY=A0+0wm zMF`;t!?-BVD=4J`bp6aW12_gCAHetUt1kaqp#ku#Obma+ZwSEu0G~7AsFj243jhEB M07*qoM6N<$f(q*QLjV8( literal 0 HcmV?d00001 diff --git a/src/icons/icons8-show-password-30.png b/src/icons/icons8-show-password-30.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab398b2b5938317ada36a7f9e551c13dce866d GIT binary patch literal 427 zcmV;c0aX5pP)@RSh*#+RY_MVKF72SoKw6b+djwit6DwCfNTAY5cn}=xOJX8{Q&_N zz%$SVzTD~pPr!K=z(e3=jqh?BI7kax1wJF@eV_s4-Kqnqa^G1!^4fJwxx2NVN&`(FDe!2L$hi0OlS`}vtNy+{SO znjUlvw6=mq;1%FKaCv-n)@|>?KZF20C+S*JQ&LINu?tyA9Z79Tuf~{3va)u{SU(z0 VTcNsgv~vIe002ovPDHLkV1gW2wr>Cc literal 0 HcmV?d00001 diff --git a/src/icons/male.png b/src/icons/male.png new file mode 100644 index 0000000000000000000000000000000000000000..957b486ccf16b1d8f8dc519d84cf81d41196cb59 GIT binary patch literal 1817 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 Br<4Ey literal 0 HcmV?d00001 diff --git a/src/icons/offline.png b/src/icons/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..b89fb94b01d471ec6e99d36444d286d08727ef22 GIT binary patch literal 1006 zcmVFW~Pg{ z5G+~{?7}F5B3Rr7-836TkbnU=ic8t|8wrW4}dVp4QfZ%sejRqzMYZdOrf+REV!jougssi zbUh1eTYppJWuA7`J1k!vyWBW#mVL$isY`CD)Qhly(*9o>uH>5oz}t}tKh$j2T@!pG z;Z8;l3;cr89ob!Pra1L4VK(2TR$BbI@v)Tbsy#Ay^7oCv!ytb@a2D_p+2hTQ&m?2Z zGq$`T=#i+i@K7pqk<)8st{`EMpDymspU}1^JOFQQ;+(=;fS?T5$5+9{-GzIB$AGI2 z?zgZ}*@pyZ7NromSE|x_CL9JXgZ3_U?rlwhjnx4FL_SEmP_tS0TH(Tw1v3DI2+tKe z3he+g^T{H@F@TJTA5Vd;=pz-$CKF#2-#%On^7~TojB_pw@_$4@?qV^>9jZxt;%ksm zAS1>;TPuSc2e2yLDX^%tmV-+3wKSwp;K)+v-qvMsXa<@Txl@pXq4&@0wan%H%G}=C zI;LDYp(O=I*ahJGJ1*7))D|G)+i(#YYF=js_9xHIRZ|(0D#VM57s|`YU1>0c0Q^~W z>U_(#+iGw{wp9aei7Io{R(-Mf72ncI;J*Nte7&{K_Y*+LHFvKAzmhausc70Oz8{nL zqEA!haWMr}WC6f9HlXG_4WO}9rCbHxoOHVyeX2ZHKdr`UW)Fa%=Tl&#`UQYk+h64x zI|^7to(Z%0t~KH1tu~Ev0EpF?(P|v@R2Dp&0>{>lm80ZIZF}@)0DpFJ9^_rX!!o7} zt#`KH19+e#{_Oa7P`;&reSpR`KAr+^o1gpvmu zP#6In1TMG^56G7jzg;&x@xdW~ZsN82xKz#D@TQl5GeC1GBGt|7*$P`NjIDX6F)rOK z=Z}W2dIN~Q=tS{*8wIZb_neHKY`j=fQr}2h>j!dE!E3=c9lR=hE5Oju?J6&96}Jix cgWMp%zrWw$eSw-O<^TWy07*qoM6N<$f}v62@&Et; literal 0 HcmV?d00001 diff --git a/src/icons/online.png b/src/icons/online.png new file mode 100644 index 0000000000000000000000000000000000000000..206c28659b1bf4225538472bad0f1b1be74f67f7 GIT binary patch literal 3122 zcmV-249)Y2P)Y+7c+G-vZbO-~a&rS_zN=cn$>fBNO9F ze)sImX#Fr_(m2e2gD7DskB55dArv-hSk0 z&Z;eXp5;CQumphb=f(shKnvjWu((L+pFenclu#m)1w)4Oc)dQHyAlCv00&H2W7{UbbpK8L5}*|IC(28YXCJgQoT>_O zw>b=yr=cLEodBSe3IT`(Vv$)lB-)%h{YLSytZ`|KfD!gL@xj%fA3mO)69bCL04gs> zfDFK1)8sMSQG{W{-L@Ww z+um4OQ&;}qLR-bbLLKY&=+b81a(4W@yT|n>q&%mvXxE|*T2M>{aAu$awnV2Iqh_vs z{>HvKYjTTE?^?88LKxzm_~aiQ!>4AB0U^vK{PjS6QF+PEm)EhJj}y)QXkloGUK`by z-N`Qx9?f}uOB8_704%`@_=8NXclCBi|l{oZ$<7bwCt zTK|sbv*)Wf&0NGuRSN6uPZsOrGEAmm4rad~ge2aa7S~c;UzEFMJ2!gPBz<3IhSAA} z%0op>F1tgIt|${j1__1O1LTf1$;^aWhz+-ap5v$Oi#R+kIPQ(9M8 zcE*ryO6kw0)8TAeJLTC9%F|2$=eyejS0I8A^3Hu5Uq}#$gkt}Wvb{%7w>Mgwru<{h zRV5Dqgb<>R(M4R!Mko!5P0}zWIQnCl5gVYz;nEJ{j>$gyd5s*mH6okBAG;?A0A%;U}|@pzW_C1 zh%x3mWAc?uVykUD?{0O(ij{H&0B|hpT|aHXu`BWEkCZzmNC8ale)bO_DN3FCJP3)r zk_i~0fKd9=))a_D;yYh|JUpnul+yD>6=xdHRM}%kC2FHn2lvXk62_$%(RE=0&{Mz& zb+pbEEK$l+ZqL#Wa-uXjS2a5K1W}0I0u!n`2Uk z^ok1{%Xzjuvf`+vqCQ0+7Fln3?mqjltg#uM4rgoGzJf7gh3rVHxtZMX$n~`(T+y4U&PeViO!g@TJ`Ku8EdVDLIuaHg8_ z^!n(Og!b;XGdyiT`QAYi;wl|o4=m3OzR^;&_`)+Pi1Rb&{~W^TDi*fe>p+I+gw$aB08 z074CsuvRyS06?x*DLB@r96$daQ%g-la>0k+d`EenYj3hQ?OC?zpwGj){W)2y8|nbm zbU$|sV2D7_OF%?o>`+E1a1~`A$OpP|mIJG^J%dIiHcOSVPy%!|mDE%LKx9&!vc18o z1%SA*!{sfN=5TB6g>&sqwuZqIMvPK~sm*JrJX`kO-7g-KhpPoHyF=0?Mi)ydB|BeU zS3cvdr!D!LcE_xmFrVFc&kLb#W{V*3u26CKgc(3V_jC7KQZWLixRabI4;6$TSM^==*NJfn$BHy!XETVf?(iZsa-M zxB331`K{-hLEVe5 zHh#>7ER@or`0>Kuy*xZ9wfj1~a-mc#4;&aeNEb8lshPc2=UU_Frf-TUrN`k{t?>Vh z);1JZS6_Qt!GU9aY~g47;{mMqZ}%5abiSa(c5P_|kG%K3&gVHk2LYFRe*t^Wep@KH zwzPtSr^D?i{A_ZE9Y!m5!=__7JpElQuFch($alL zEe*xhVyD%i^m)8W%JD)XV7wBAtX&lq>NJctA^G+(25mxAzb^#l!rMlt38o@ zAb#+K5l(q%NT17nHQ;r2c6{;Vs{9k#ITBDz0ZnefW;ph{RaqKnZuF z;Z$W=?z$b#=986)l+qml76E9!9A5*iEJp))7{I-ZNT3XhjjS`Io46r2rRhRrbrJH= zkg&jNwWq`Fu-7&=R316me6FB`SZkZ2IWKDm@Bx5N0oX5x_~i=lM*@H`0MY=A0+0wm zMF`;t!?-BVD=4J`bp6aW12_gCAHetUt1kaqp#ku#Obma+ZwSEu0G~7AsFj243jhEB M07*qoM6N<$f(q*QLjV8( literal 0 HcmV?d00001 diff --git a/src/icons/showPassword.png b/src/icons/showPassword.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab398b2b5938317ada36a7f9e551c13dce866d GIT binary patch literal 427 zcmV;c0aX5pP)@RSh*#+RY_MVKF72SoKw6b+djwit6DwCfNTAY5cn}=xOJX8{Q&_N zz%$SVzTD~pPr!K=z(e3=jqh?BI7kax1wJF@eV_s4-Kqnqa^G1!^4fJwxx2NVN&`(FDe!2L$hi0OlS`}vtNy+{SO znjUlvw6=mq;1%FKaCv-n)@|>?KZF20C+S*JQ&LINu?tyA9Z79Tuf~{3va)u{SU(z0 VTcNsgv~vIe002ovPDHLkV1gW2wr>Cc literal 0 HcmV?d00001 diff --git a/src/servers/Client.java b/src/servers/Client.java new file mode 100644 index 0000000..3796a4a --- /dev/null +++ b/src/servers/Client.java @@ -0,0 +1,21 @@ +package servers; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; + +public class Client { + + public static Socket socket; + public static BufferedReader br; + public static PrintWriter pw; + + public Client() throws IOException { + socket = new Socket("localhost", 1111); + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + } + +} diff --git a/src/servers/DouClient.java b/src/servers/DouClient.java new file mode 100644 index 0000000..e7db173 --- /dev/null +++ b/src/servers/DouClient.java @@ -0,0 +1,26 @@ + +package servers; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; + +public class DouClient { + + public static Socket socket; + public static BufferedReader br; + public static PrintWriter pw; + + public DouClient() throws IOException { + + socket = new Socket("localhost", 2222); + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + + } + +} + \ No newline at end of file diff --git a/src/servers/DouServerConnector.java b/src/servers/DouServerConnector.java new file mode 100644 index 0000000..d036d5d --- /dev/null +++ b/src/servers/DouServerConnector.java @@ -0,0 +1,49 @@ + +package servers; + +import frexie.Controller; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; +import view.DouChat; +import view.GlobalChat; + + +public class DouServerConnector implements Runnable { + + + + + Socket socket; + BufferedReader br; + PrintWriter pw; + + public DouServerConnector(Socket socket) throws IOException { + this.socket = socket; + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + } + + public void run() { + String temp; + while (socket.isConnected()) { + try { + + temp = br.readLine(); + if(!temp.contains("null") && (temp.contains("["+Controller.selectedUser.getUserName()+"]") || (temp.contains("["+Controller.currentUser.getUserName()+"]")))) + DouChat.chat.setText(DouChat.chat.getText() + "\n\n" + temp); + + } catch (IOException ex) { + + } + } + } + +} + + + + + diff --git a/src/servers/GlobalServerConnector.java b/src/servers/GlobalServerConnector.java new file mode 100644 index 0000000..59dfc62 --- /dev/null +++ b/src/servers/GlobalServerConnector.java @@ -0,0 +1,39 @@ +package servers; + +import frexie.Controller; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; +import view.GlobalChat; + +public class GlobalServerConnector implements Runnable { + + Socket socket; + BufferedReader br; + PrintWriter pw; + + public GlobalServerConnector(Socket socket) throws IOException { + this.socket = socket; + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + } + + @Override + public void run() { + String temp; + while (socket.isConnected()) { + try { + if (Controller.flagGlobalChat == true) { + temp = br.readLine(); + if(!temp.contains("null")) + GlobalChat.k.setText(GlobalChat.k.getText() + "\n\n" + temp); + } + } catch (IOException ex) { + + } + } + } + +} diff --git a/src/servers/Server1.java b/src/servers/Server1.java new file mode 100644 index 0000000..202a407 --- /dev/null +++ b/src/servers/Server1.java @@ -0,0 +1,50 @@ + +package servers; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + +public class Server1 { + + private static Socket socket; + private static ServerSocket serverSocket; + private static BufferedReader bf; + private PrintWriter pw; + public static int port = 1111; + private static ArrayList serverHandlers=new ArrayList(); + private static ExecutorService pool= Executors.newFixedThreadPool(100); + public static String tempo=""; + + + public Server1() throws IOException { + serverSocket = new ServerSocket(port); + } + public static void main(String[] args) { + try { + + Server1 server=new Server1(); + while(true) + { + server.socket=server.serverSocket.accept(); + System.out.println("[server]----connected"); + ServerHandler clientHandler= new ServerHandler(server.socket,serverHandlers); + serverHandlers.add(clientHandler); + pool.execute(clientHandler); + } + } catch (IOException ex) { + + } + } + + + + + +} diff --git a/src/servers/Server2.java b/src/servers/Server2.java new file mode 100644 index 0000000..70dc907 --- /dev/null +++ b/src/servers/Server2.java @@ -0,0 +1,57 @@ + +package servers; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + + +public class Server2 { + + private Socket socket; + private ServerSocket serverSocket; + private BufferedReader bf; + private PrintWriter pw; + public static int port = 2222; + private static ArrayList serverHandlers=new ArrayList(); + private static ExecutorService pool= Executors.newFixedThreadPool(200); + + + public Server2() throws IOException { + serverSocket = new ServerSocket(port); + } + public static void main(String[] args) { + + try { + + Server2 server=new Server2(); + while(true) + { + server.socket=server.serverSocket.accept(); + System.out.println("[server]----connected"); + ServerHandler clientHandler= new ServerHandler(server.socket,serverHandlers); + serverHandlers.add(clientHandler); + pool.execute(clientHandler); + + + } + } catch (IOException ex) { + + } + + + + + + } + + +} + diff --git a/src/servers/ServerConnector.java b/src/servers/ServerConnector.java new file mode 100644 index 0000000..5e294ae --- /dev/null +++ b/src/servers/ServerConnector.java @@ -0,0 +1,36 @@ +package servers; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; +import view.GlobalChat; + +public class ServerConnector implements Runnable { + + Socket socket; + BufferedReader br; + PrintWriter pw; + + public ServerConnector(Socket socket) throws IOException { + this.socket = socket; + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + } + + @Override + public void run() { + String temp; + while (true) { + try { + temp = br.readLine(); + GlobalChat.k.setText(GlobalChat.k.getText() + "\n\n" + temp); + } catch (IOException ex) { + + + } + } + } + +} diff --git a/src/servers/ServerHandler.java b/src/servers/ServerHandler.java new file mode 100644 index 0000000..7fce0e0 --- /dev/null +++ b/src/servers/ServerHandler.java @@ -0,0 +1,45 @@ +package servers; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.ArrayList; + +public class ServerHandler implements Runnable { + + Socket socket; + BufferedReader br; + PrintWriter pw; + ArrayList clients = new ArrayList(); + + public ServerHandler(Socket socket, ArrayList clients) throws IOException { + this.socket = socket; + br = new BufferedReader(new InputStreamReader(socket.getInputStream())); + pw = new PrintWriter(socket.getOutputStream(), true); + this.clients = clients; + } + + @Override + public void run() { + + try { + while (true) { + String temp = br.readLine(); + sendAll(temp); + } + } catch (IOException ex) { + + } + + } + + public void sendAll(String temp) { + for (ServerHandler client : this.clients) { + client.pw.println(temp); + } + + } + +} diff --git a/src/view/AddFriend.form b/src/view/AddFriend.form new file mode 100644 index 0000000..29ad1ef --- /dev/null +++ b/src/view/AddFriend.form @@ -0,0 +1,190 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/AddFriend.java b/src/view/AddFriend.java new file mode 100644 index 0000000..754b5e4 --- /dev/null +++ b/src/view/AddFriend.java @@ -0,0 +1,164 @@ + +package view; + +import frexie.Controller; +import java.awt.Dimension; +import java.awt.Toolkit; + + +public class AddFriend extends javax.swing.JFrame { + + + public AddFriend() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + name.setText(Controller.selectedFriend+"?"); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + name = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + jLabel11 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Do you want to add"); + + name.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + name.setForeground(new java.awt.Color(153, 153, 153)); + name.setText("friend's name"); + + jButton1.setBackground(new java.awt.Color(46, 49, 49)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Add"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jButton2.setBackground(new java.awt.Color(46, 49, 49)); + jButton2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jButton2.setForeground(new java.awt.Color(153, 153, 153)); + jButton2.setText("Back"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, 303, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(71, Short.MAX_VALUE)) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 108, javax.swing.GroupLayout.PREFERRED_SIZE)))) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(name, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 67, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))) + ); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(0, 0, 0)) + ); + + pack(); + }// //GEN-END:initComponents + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + }//GEN-LAST:event_jButton1ActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + this.dispose(); // TODO add your handling code here: + }//GEN-LAST:event_jButton2ActionPerformed + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new AddFriend().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JLabel name; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/DeactivationAlert.form b/src/view/DeactivationAlert.form new file mode 100644 index 0000000..f5a72f6 --- /dev/null +++ b/src/view/DeactivationAlert.form @@ -0,0 +1,166 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/DeactivationAlert.java b/src/view/DeactivationAlert.java new file mode 100644 index 0000000..b3f9e3d --- /dev/null +++ b/src/view/DeactivationAlert.java @@ -0,0 +1,156 @@ + +package view; + +import frexie.FileHandler; +import frexie.FileLoader; +import java.awt.Dimension; +import java.awt.Toolkit; + + +public class DeactivationAlert extends javax.swing.JFrame { + + + public DeactivationAlert() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jToggleButton1 = new javax.swing.JToggleButton(); + jToggleButton2 = new javax.swing.JToggleButton(); + jLabel11 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel1.setForeground(new java.awt.Color(255, 255, 255)); + jLabel1.setText("Are you sure you want to deactivate your account?"); + + jToggleButton1.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton1.setForeground(new java.awt.Color(255, 255, 255)); + jToggleButton1.setText("Yes"); + jToggleButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton1ActionPerformed(evt); + } + }); + + jToggleButton2.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton2.setForeground(new java.awt.Color(255, 255, 255)); + jToggleButton2.setText("Cancel"); + jToggleButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 492, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 107, Short.MAX_VALUE)) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 24, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jToggleButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + ); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(20, 20, 20) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel11) + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(19, Short.MAX_VALUE)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(20, 20, 20) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed + FileLoader.FileLoading(); + FileHandler.deactivateUser(); + this.dispose(); + new ThankingFrame().setVisible(true); + }//GEN-LAST:event_jToggleButton1ActionPerformed + + private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton2ActionPerformed + this.dispose(); + new Settings().setVisible(true); + }//GEN-LAST:event_jToggleButton2ActionPerformed + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new DeactivationAlert().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JToggleButton jToggleButton1; + private javax.swing.JToggleButton jToggleButton2; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/Developers.form b/src/view/Developers.form new file mode 100644 index 0000000..15e3dca --- /dev/null +++ b/src/view/Developers.form @@ -0,0 +1,216 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/Developers.java b/src/view/Developers.java new file mode 100644 index 0000000..c62d0c9 --- /dev/null +++ b/src/view/Developers.java @@ -0,0 +1,173 @@ + +package view; + +import java.awt.Dimension; +import java.awt.Toolkit; + +public class Developers extends javax.swing.JFrame { + + + public Developers() { + initComponents(); + + Toolkit toolkit= getToolkit(); + Dimension size=toolkit.getScreenSize(); + setLocation(size.width/2-getWidth()/2,size.height/2-getHeight()/2); + + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jPanel3 = new javax.swing.JPanel(); + jLabel11 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 36)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Developers"); + jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addContainerGap(330, Short.MAX_VALUE)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel3.setBackground(new java.awt.Color(46, 49, 49)); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 18, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel2.setForeground(new java.awt.Color(153, 153, 153)); + jLabel2.setText("Mohamed Farid Abdelaziz Salama"); + + jLabel3.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel3.setForeground(new java.awt.Color(153, 153, 153)); + jLabel3.setText("Founder of Frexie Company "); + + jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/myFacebookProfile.png"))); // NOI18N + + jLabel4.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 8)); // NOI18N + jLabel4.setForeground(new java.awt.Color(102, 102, 102)); + jLabel4.setText("Auto generated by the developer's QR code generator"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jLabel11)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 411, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 240, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5) + .addComponent(jLabel4)) + .addGap(0, 0, Short.MAX_VALUE))))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(7, 7, 7) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 195, Short.MAX_VALUE) + .addComponent(jLabel11)) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new Developers().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/DouChat.form b/src/view/DouChat.form new file mode 100644 index 0000000..a000fdb --- /dev/null +++ b/src/view/DouChat.form @@ -0,0 +1,243 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/DouChat.java b/src/view/DouChat.java new file mode 100644 index 0000000..057b88d --- /dev/null +++ b/src/view/DouChat.java @@ -0,0 +1,234 @@ + +package view; + +import frexie.Controller; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import servers.DouClient; +import servers.DouServerConnector; + + +public class DouChat extends javax.swing.JFrame { +public static DouClient c; +static boolean flag=false; + + public DouChat() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + msg = new javax.swing.JTextField(); + jPanel2 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jToggleButton2 = new javax.swing.JToggleButton(); + jScrollPane2 = new javax.swing.JScrollPane(); + chat = new javax.swing.JTextPane(); + jPanel8 = new javax.swing.JPanel(); + jToggleButton7 = new javax.swing.JToggleButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setBackground(new java.awt.Color(36, 37, 42)); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + msg.setBackground(new java.awt.Color(36, 37, 42)); + msg.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + msg.setForeground(new java.awt.Color(255, 255, 255)); + msg.setText("Type a message.."); + msg.setCaretColor(new java.awt.Color(255, 255, 255)); + msg.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + msgMouseClicked(evt); + } + }); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(204, 204, 204)); + jLabel2.setText("esm el tany"); + jLabel2.setText(Controller.selectedUser.getUserName()); + + jToggleButton2.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jToggleButton2.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton2.setText("Back"); + jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); + jToggleButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel2) + .addGap(352, 352, 352) + .addComponent(jToggleButton2, javax.swing.GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + chat.setBackground(new java.awt.Color(46, 49, 49)); + chat.setForeground(new java.awt.Color(255, 255, 255)); + jScrollPane2.setViewportView(chat); + + jPanel8.setBackground(new java.awt.Color(46, 49, 49)); + + jToggleButton7.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton7.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jToggleButton7.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton7.setText("Send"); + jToggleButton7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton7ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); + jPanel8.setLayout(jPanel8Layout); + jPanel8Layout.setHorizontalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToggleButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(48, 48, 48)) + ); + jPanel8Layout.setVerticalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jToggleButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jScrollPane2) + .addComponent(msg, javax.swing.GroupLayout.DEFAULT_SIZE, 430, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(msg, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton2ActionPerformed + c.pw.println("~.~"+" ["+Controller.currentUsername+"] has left your private chat. ~.~"); + try{ + c.socket.close(); + c.pw.close(); + c.br.close(); + } catch (IOException ex) { + + } + new OnlineFriends().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jToggleButton2ActionPerformed + + private void jToggleButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton7ActionPerformed + c.pw.println("["+Controller.currentUsername+"] :"+msg.getText()); + msg.setText(""); // TODO add your handling code here: + }//GEN-LAST:event_jToggleButton7ActionPerformed + + private void msgMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_msgMouseClicked + if(flag==false) msg.setText(""); + flag=true; + }//GEN-LAST:event_msgMouseClicked + + public static void beginDouChat() + { + + new DouChat().setVisible(true); + + try { + DouClient client = new DouClient(); + c=client; + DouServerConnector sv=new DouServerConnector(client.socket); + new Thread(sv).start(); + c.pw.println("~.~"+" ["+Controller.currentUsername+"] has entered your private chat. ~.~"); + + + } catch (IOException ex) { + + System.out.println("client"); + } + + + } + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new DouChat().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + public static javax.swing.JTextPane chat; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel8; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JToggleButton jToggleButton2; + private javax.swing.JToggleButton jToggleButton7; + private javax.swing.JTextField msg; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/FindFriends.form b/src/view/FindFriends.form new file mode 100644 index 0000000..6d3f097 --- /dev/null +++ b/src/view/FindFriends.form @@ -0,0 +1,281 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/FindFriends.java b/src/view/FindFriends.java new file mode 100644 index 0000000..f5cd724 --- /dev/null +++ b/src/view/FindFriends.java @@ -0,0 +1,264 @@ + +package view; + +import frexie.Controller; +import frexie.FileLoader; +import frexie.Finder; +import java.awt.Dimension; +import java.awt.Toolkit; +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; + + +public class FindFriends extends javax.swing.JFrame { + + + DefaultListModel x = new DefaultListModel(); + + public FindFriends() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + this.getData(); + } + + public void getData() { + + for (int i = 0; i < FileLoader.users.size(); i++) { + if(!FileLoader.users.get(i).getUserName().equals(Controller.currentUser.getUserName())) + x.addElement(FileLoader.users.get(i).getUserName()); + } + friendsList.setModel(x); + friendsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + } + + public void filterList(String subString) { + DefaultListModel y = new DefaultListModel(); + + for (int i = 0; i < FileLoader.users.size(); i++) { + if (((FileLoader.users.get(i).getUserName().toLowerCase().trim()).startsWith(subString.toLowerCase().trim()) + || (FileLoader.users.get(i).getUserName().toLowerCase().trim()).contains(subString.toLowerCase().trim())) + && !FileLoader.users.get(i).getUserName().equals(Controller.currentUser.getUserName())) { + y.addElement(FileLoader.users.get(i).getUserName()); + } + } + + friendsList.setModel(y); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + search = new javax.swing.JTextField(); + jScrollPane1 = new javax.swing.JScrollPane(); + friendsList = new javax.swing.JList<>(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabel11 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Find Friends"); + + search.setBackground(new java.awt.Color(46, 49, 49)); + search.setForeground(new java.awt.Color(255, 255, 255)); + search.setCaretColor(new java.awt.Color(255, 255, 255)); + search.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + searchActionPerformed(evt); + } + }); + search.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + searchKeyReleased(evt); + } + }); + + friendsList.setBackground(new java.awt.Color(46, 49, 49)); + friendsList.setForeground(new java.awt.Color(255, 255, 255)); + friendsList.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + friendsListMouseClicked(evt); + } + }); + jScrollPane1.setViewportView(friendsList); + + jLabel2.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setText("r"); + + jLabel3.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel3.setForeground(new java.awt.Color(255, 255, 255)); + jLabel3.setText("e"); + + jLabel4.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("x"); + + jLabel5.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel5.setForeground(new java.awt.Color(255, 255, 255)); + jLabel5.setText("F"); + + jLabel7.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel7.setForeground(new java.awt.Color(255, 255, 255)); + jLabel7.setText("e"); + + jLabel8.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel8.setForeground(new java.awt.Color(255, 255, 255)); + jLabel8.setText("i"); + + jSeparator1.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator1.setForeground(new java.awt.Color(46, 49, 49)); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + jButton1.setBackground(new java.awt.Color(36, 37, 42)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Back"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(search, javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jLabel1) + .addGap(141, 141, 141) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(33, 33, 33) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addGap(22, 22, 22)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1) + .addComponent(jButton1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(21, 21, 21) + .addComponent(search, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jScrollPane1)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(6, 6, 6) + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void searchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchActionPerformed + + }//GEN-LAST:event_searchActionPerformed + + private void searchKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_searchKeyReleased + filterList(search.getText()); + }//GEN-LAST:event_searchKeyReleased + + private void friendsListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_friendsListMouseClicked + FileLoader.FileLoading(); + Controller.selectedFriend = friendsList.getSelectedValue(); + Controller.selectedUser=Finder.FindFriend(Controller.selectedFriend); + new FriendProfile().setVisible(true); + this.dispose(); + + }//GEN-LAST:event_friendsListMouseClicked + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new FindFriends().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList friendsList; + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JTextField search; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/FriendProfile.form b/src/view/FriendProfile.form new file mode 100644 index 0000000..90a5be8 --- /dev/null +++ b/src/view/FriendProfile.form @@ -0,0 +1,336 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/FriendProfile.java b/src/view/FriendProfile.java new file mode 100644 index 0000000..4a123a2 --- /dev/null +++ b/src/view/FriendProfile.java @@ -0,0 +1,293 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package view; + +import frexie.Controller; +import frexie.FileHandler; +import frexie.Finder; +import java.awt.Dimension; +import java.awt.Toolkit; + +public class FriendProfile extends javax.swing.JFrame { + + + public FriendProfile() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + username = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + jPanel3 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + status = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + fullName = new javax.swing.JLabel(); + email = new javax.swing.JLabel(); + button = new javax.swing.JButton(); + jLabel11 = new javax.swing.JLabel(); + jButton2 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + username.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 36)); // NOI18N + username.setForeground(new java.awt.Color(153, 153, 153)); + username.setText("Friend Name"); + username.setText(Controller.selectedUser.getUserName()); + + if(Controller.selectedUser.getState().equalsIgnoreCase("false")) + jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/offline.png"))); // NOI18N + else + jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/online.png"))); // NOI18N + + if(Controller.selectedUser.getGender().equalsIgnoreCase("male")) + jLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/male.png"))); // NOI18N + else + jLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/female.png"))); // NOI18N + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(3, 3, 3) + .addComponent(jLabel10) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(username, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(jLabel5) + .addGap(21, 21, 21)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(24, 24, 24) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(23, 23, 23) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(username, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap(30, Short.MAX_VALUE)) + ); + + jPanel3.setBackground(new java.awt.Color(46, 49, 49)); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 54, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Status:"); + + status.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + status.setForeground(new java.awt.Color(153, 153, 153)); + status.setText("ANA GAMED AWY YA MAMA"); + status.setText(Controller.selectedUser.getStatus()); + + jLabel4.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel4.setForeground(new java.awt.Color(153, 153, 153)); + jLabel4.setText("Email:"); + + fullName.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + fullName.setForeground(new java.awt.Color(153, 153, 153)); + fullName.setText("Full Name"); + fullName.setText(Controller.selectedUser.getFullName()); + + email.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + email.setForeground(new java.awt.Color(153, 153, 153)); + email.setText("FARID@GMAIL>COM"); + email.setText(Controller.selectedUser.getEmail()); + + button.setBackground(new java.awt.Color(36, 37, 42)); + button.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + button.setForeground(new java.awt.Color(153, 153, 153)); + if(!Finder.isAlreadyFriend(Controller.selectedFriend)) + button.setText("Add"); + else button.setText("Delete"); + button.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonActionPerformed(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + jButton2.setBackground(new java.awt.Color(36, 37, 42)); + jButton2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jButton2.setForeground(new java.awt.Color(153, 153, 153)); + jButton2.setText("Back"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, 587, Short.MAX_VALUE) + .addComponent(email, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(fullName, javax.swing.GroupLayout.PREFERRED_SIZE, 579, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(button, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(133, 133, 133)))) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(531, Short.MAX_VALUE) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(20, 20, 20))) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(fullName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(37, 37, 37) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(status, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(23, 23, 23) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(email, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(button, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING)) + .addGap(21, 21, 21)))) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(409, Short.MAX_VALUE) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(21, 21, 21))) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonActionPerformed + if(button.getText().equalsIgnoreCase("add")){ FileHandler.addFriend(Controller.selectedUser.getUserName());} + else { FileHandler.deleteFriend(Controller.selectedUser.getUserName()); } + Controller.currentUser.setFriendsNames(); + this.dispose(); + new Profile().setVisible(true);// TODO add your handling code here: + }//GEN-LAST:event_buttonActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton2ActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(FriendProfile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(FriendProfile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(FriendProfile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(FriendProfile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new FriendProfile().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton button; + private javax.swing.JLabel email; + private javax.swing.JLabel fullName; + private javax.swing.JButton jButton2; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JLabel status; + private javax.swing.JLabel username; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/GlobalChat.form b/src/view/GlobalChat.form new file mode 100644 index 0000000..3c38cbf --- /dev/null +++ b/src/view/GlobalChat.form @@ -0,0 +1,257 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/GlobalChat.java b/src/view/GlobalChat.java new file mode 100644 index 0000000..ceeac3d --- /dev/null +++ b/src/view/GlobalChat.java @@ -0,0 +1,252 @@ + +package view; + +import frexie.Controller; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import servers.Client; +import servers.GlobalServerConnector; + + +public class GlobalChat extends javax.swing.JFrame { + + + static boolean flag=false; + static Client c; + public GlobalChat() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jToggleButton2 = new javax.swing.JToggleButton(); + jScrollPane2 = new javax.swing.JScrollPane(); + k = new javax.swing.JTextPane(); + jPanel8 = new javax.swing.JPanel(); + jToggleButton7 = new javax.swing.JToggleButton(); + msg = new javax.swing.JTextField(); + jLabel11 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(204, 204, 204)); + jLabel2.setText("Frexies Global Chat Room"); + + jToggleButton2.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jToggleButton2.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton2.setText("Back"); + jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); + jToggleButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 291, Short.MAX_VALUE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18)) + ); + + k.setEditable(false); + k.setBackground(new java.awt.Color(46, 49, 49)); + k.setForeground(new java.awt.Color(255, 255, 255)); + jScrollPane2.setViewportView(k); + + jPanel8.setBackground(new java.awt.Color(46, 49, 49)); + + jToggleButton7.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton7.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jToggleButton7.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton7.setText("Send"); + jToggleButton7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton7ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); + jPanel8.setLayout(jPanel8Layout); + jPanel8Layout.setHorizontalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel8Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToggleButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + jPanel8Layout.setVerticalGroup( + jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel8Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToggleButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(19, 19, 19)) + ); + + msg.setBackground(new java.awt.Color(36, 37, 42)); + msg.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + msg.setForeground(new java.awt.Color(255, 255, 255)); + msg.setText("Type a message.."); + msg.setCaretColor(new java.awt.Color(255, 255, 255)); + msg.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + msgMouseClicked(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel11) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(msg) + .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 346, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(msg, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(2, 2, 2) + .addComponent(jLabel11))) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jToggleButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton7ActionPerformed + c.pw.println("["+Controller.currentUsername+"] :"+msg.getText()); + msg.setText(""); + }//GEN-LAST:event_jToggleButton7ActionPerformed + + private void msgMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_msgMouseClicked + if(flag==false) msg.setText(""); + flag=true; + }//GEN-LAST:event_msgMouseClicked + + private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton2ActionPerformed + c.pw.println("~.~ ["+Controller.currentUsername+"] has left Frexie's Global Chat. ~.~"); + try{ + c.socket.close(); + c.pw.close(); + c.br.close(); + } catch (IOException ex) { + + } + this.dispose(); + new Profile().setVisible(true); + }//GEN-LAST:event_jToggleButton2ActionPerformed + + + public static void beginGlobalChat() + { + Controller.flagGlobalChat=true; + new GlobalChat().setVisible(true); + + try { + Client client = new Client(); + c=client; + GlobalServerConnector sv=new GlobalServerConnector(client.socket); + new Thread(sv).start(); + c.pw.println("~.~"+" ["+Controller.currentUsername+"] has entered Frexie's Global Chat. ~.~"); + + + } catch (IOException ex) { + + System.out.println("client"); + } + + + } + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new GlobalChat().setVisible(true); + + + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel8; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JToggleButton jToggleButton2; + private javax.swing.JToggleButton jToggleButton7; + public static javax.swing.JTextPane k; + private javax.swing.JTextField msg; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/MyFriends.form b/src/view/MyFriends.form new file mode 100644 index 0000000..95a593e --- /dev/null +++ b/src/view/MyFriends.form @@ -0,0 +1,281 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/MyFriends.java b/src/view/MyFriends.java new file mode 100644 index 0000000..a99d852 --- /dev/null +++ b/src/view/MyFriends.java @@ -0,0 +1,264 @@ + +package view; + +import frexie.Controller; +import frexie.FileLoader; +import frexie.Finder; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.util.ArrayList; +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; + + +public class MyFriends extends javax.swing.JFrame { + ArrayList myFriends=Controller.currentUser.getFriendsNames(); + + DefaultListModel x = new DefaultListModel(); + + public MyFriends() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + this.getData(); + } + + + public void getData() { + + for (int i = 0; i < myFriends.size(); i++) { + if(!myFriends.get(i).equals("1")) + x.addElement(myFriends.get(i)); + } + friendsList.setModel(x); + friendsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + } + public void filterList(String subString) { + DefaultListModel y = new DefaultListModel(); + + for (int i = 0; i < myFriends.size(); i++) { + if (((myFriends.get(i).toLowerCase().trim()).startsWith(subString.toLowerCase().trim()) + || (myFriends.get(i).toLowerCase().trim()).contains(subString.toLowerCase().trim())) + && !myFriends.get(i).equals(Controller.currentUser.getUserName())) { + y.addElement(myFriends.get(i)); + } + } + + friendsList.setModel(y); + } + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jLabel8 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabel1 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + search = new javax.swing.JTextField(); + jScrollPane1 = new javax.swing.JScrollPane(); + friendsList = new javax.swing.JList<>(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jLabel8.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel8.setForeground(new java.awt.Color(255, 255, 255)); + jLabel8.setText("i"); + + jSeparator1.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator1.setForeground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("My Friends"); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + search.setBackground(new java.awt.Color(46, 49, 49)); + search.setForeground(new java.awt.Color(255, 255, 255)); + search.setCaretColor(new java.awt.Color(255, 255, 255)); + search.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + searchActionPerformed(evt); + } + }); + search.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + searchKeyReleased(evt); + } + }); + + friendsList.setBackground(new java.awt.Color(46, 49, 49)); + friendsList.setForeground(new java.awt.Color(255, 255, 255)); + friendsList.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + friendsListMouseClicked(evt); + } + }); + jScrollPane1.setViewportView(friendsList); + + jLabel2.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setText("r"); + + jLabel3.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel3.setForeground(new java.awt.Color(255, 255, 255)); + jLabel3.setText("e"); + + jLabel4.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("x"); + + jLabel5.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel5.setForeground(new java.awt.Color(255, 255, 255)); + jLabel5.setText("F"); + + jLabel7.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel7.setForeground(new java.awt.Color(255, 255, 255)); + jLabel7.setText("e"); + + jButton1.setBackground(new java.awt.Color(36, 37, 42)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Back"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(search, javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(127, 127, 127) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(33, 33, 33) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addGap(22, 22, 22)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1) + .addComponent(jButton1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(21, 21, 21) + .addComponent(search, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jScrollPane1)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(6, 6, 6) + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void searchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchActionPerformed + + }//GEN-LAST:event_searchActionPerformed + + private void searchKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_searchKeyReleased + filterList(search.getText()); // TODO add your handling code here: + }//GEN-LAST:event_searchKeyReleased + + private void friendsListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_friendsListMouseClicked + FileLoader.FileLoading(); + Controller.selectedFriend = friendsList.getSelectedValue(); + Controller.selectedUser=Finder.FindFriend(Controller.selectedFriend); + new FriendProfile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_friendsListMouseClicked + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new MyFriends().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList friendsList; + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JTextField search; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/OnlineFriends.form b/src/view/OnlineFriends.form new file mode 100644 index 0000000..0e0dc70 --- /dev/null +++ b/src/view/OnlineFriends.form @@ -0,0 +1,296 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/OnlineFriends.java b/src/view/OnlineFriends.java new file mode 100644 index 0000000..82e91c3 --- /dev/null +++ b/src/view/OnlineFriends.java @@ -0,0 +1,272 @@ +package view; + +import frexie.Controller; +import frexie.FileLoader; +import frexie.Finder; +import frexie.User; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.util.ArrayList; +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; + +public class OnlineFriends extends javax.swing.JFrame { + + ArrayList onlineFriends = null; + DefaultListModel x = new DefaultListModel(); + + public OnlineFriends() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + Controller.currentUser.setFriendsNames(); + onlineFriends= Finder.loadOnlineFriends(); + this.getData(); + } + public void getData() { + + for (int i = 0; i < onlineFriends.size(); i++) { + if (!onlineFriends.get(i).getUserName().equals("1")) { + x.addElement(onlineFriends.get(i).getUserName()); + } + } + friendsList.setModel(x); + friendsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + } + + public void filterList(String subString) { + DefaultListModel y = new DefaultListModel(); + + for (int i = 0; i < onlineFriends.size(); i++) { + if (((onlineFriends.get(i).getUserName().toLowerCase().trim()).startsWith(subString.toLowerCase().trim()) + || (onlineFriends.get(i).getUserName().toLowerCase().trim()).contains(subString.toLowerCase().trim())) + && !onlineFriends.get(i).getUserName().equals(Controller.currentUser.getUserName())) { + y.addElement(onlineFriends.get(i).getUserName()); + } + } + friendsList.setModel(y); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jLabel8 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabel1 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + search = new javax.swing.JTextField(); + jScrollPane1 = new javax.swing.JScrollPane(); + friendsList = new javax.swing.JList<>(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jLabel8.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel8.setForeground(new java.awt.Color(255, 255, 255)); + jLabel8.setText("i"); + + jLabel7.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel7.setForeground(new java.awt.Color(255, 255, 255)); + jLabel7.setText("e"); + + jSeparator1.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator1.setForeground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("ONLINE"); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + search.setBackground(new java.awt.Color(46, 49, 49)); + search.setForeground(new java.awt.Color(255, 255, 255)); + search.setCaretColor(new java.awt.Color(255, 255, 255)); + search.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + searchActionPerformed(evt); + } + }); + search.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + searchKeyReleased(evt); + } + }); + + friendsList.setBackground(new java.awt.Color(46, 49, 49)); + friendsList.setForeground(new java.awt.Color(255, 255, 255)); + friendsList.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + friendsListMouseClicked(evt); + } + }); + jScrollPane1.setViewportView(friendsList); + + jLabel2.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setText("r"); + + jLabel3.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel3.setForeground(new java.awt.Color(255, 255, 255)); + jLabel3.setText("e"); + + jLabel4.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("x"); + + jLabel5.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel5.setForeground(new java.awt.Color(255, 255, 255)); + jLabel5.setText("F"); + + jLabel6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/online.png"))); // NOI18N + + jButton1.setBackground(new java.awt.Color(36, 37, 42)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Back"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(search) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel6)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(33, 33, 33) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addGap(22, 22, 22)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(search, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jButton1))) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel6)) + .addGap(18, 18, 18) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(18, 18, 18) + .addComponent(jScrollPane1)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel4) + .addGap(18, 18, 18) + .addComponent(jLabel8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(38, 38, 38) + .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void searchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchActionPerformed + + }//GEN-LAST:event_searchActionPerformed + + private void searchKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_searchKeyReleased + }//GEN-LAST:event_searchKeyReleased + + private void friendsListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_friendsListMouseClicked + FileLoader.FileLoading(); + Controller.selectedFriend = friendsList.getSelectedValue(); + Controller.selectedUser=Finder.FindFriend(Controller.selectedFriend); + this.dispose(); + DouChat.beginDouChat(); + }//GEN-LAST:event_friendsListMouseClicked + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new OnlineFriends().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList friendsList; + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JTextField search; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/Profile.form b/src/view/Profile.form new file mode 100644 index 0000000..e2679e4 --- /dev/null +++ b/src/view/Profile.form @@ -0,0 +1,498 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/Profile.java b/src/view/Profile.java new file mode 100644 index 0000000..5b5fb7b --- /dev/null +++ b/src/view/Profile.java @@ -0,0 +1,445 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package view; + +import frexie.Controller; +import frexie.FileHandler; +import frexie.FileLoader; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class Profile extends javax.swing.JFrame { + + public Profile() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + Calendar cal5 = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris")); + Date d = new Date(); + cal5.setTime(d); + date.setText(cal5.get(Calendar.DAY_OF_MONTH)+" / "+(cal5.get(Calendar.MONTH)+1)+" / "+cal5.get(Calendar.YEAR)); + username.setText("Hi , "+Controller.currentUser.getUserName()); + status.setText(Controller.currentUser.getStatus()); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel13 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jSeparator2 = new javax.swing.JSeparator(); + jSeparator3 = new javax.swing.JSeparator(); + jLabel14 = new javax.swing.JLabel(); + username = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jToggleButton1 = new javax.swing.JToggleButton(); + jLabel11 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + date = new javax.swing.JLabel(); + jLabel1 = new javax.swing.JLabel(); + jLabel16 = new javax.swing.JLabel(); + jLabel15 = new javax.swing.JLabel(); + status = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(46, 49, 49)); + + jPanel2.setBackground(new java.awt.Color(36, 37, 42)); + + jLabel4.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("F"); + + jLabel5.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel5.setForeground(new java.awt.Color(255, 255, 255)); + jLabel5.setText("r"); + + jLabel6.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel6.setForeground(new java.awt.Color(255, 255, 255)); + jLabel6.setText("x"); + + jLabel7.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel7.setForeground(new java.awt.Color(255, 255, 255)); + jLabel7.setText("i"); + + jLabel8.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel8.setForeground(new java.awt.Color(255, 255, 255)); + jLabel8.setText("e"); + + jLabel9.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel9.setForeground(new java.awt.Color(255, 255, 255)); + jLabel9.setText("e"); + + jLabel10.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel10.setForeground(new java.awt.Color(153, 153, 153)); + jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel10.setText("Find Friends"); + jLabel10.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel10.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); + jLabel10.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel10MouseClicked(evt); + } + }); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(153, 153, 153)); + jLabel2.setText("Settings"); + jLabel2.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel2.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel2MouseClicked(evt); + } + }); + + jLabel13.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel13.setForeground(new java.awt.Color(153, 153, 153)); + jLabel13.setText("My Friends"); + jLabel13.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel13.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel13MouseClicked(evt); + } + }); + + jSeparator1.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator1.setForeground(new java.awt.Color(46, 49, 49)); + + jSeparator2.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator2.setForeground(new java.awt.Color(46, 49, 49)); + + jSeparator3.setBackground(new java.awt.Color(46, 49, 49)); + jSeparator3.setForeground(new java.awt.Color(46, 49, 49)); + + jLabel14.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel14.setForeground(new java.awt.Color(153, 153, 153)); + jLabel14.setText("More about us"); + jLabel14.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel14.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel14MouseClicked(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(41, 41, 41) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(20, 20, 20) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(11, 11, 11) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(24, 24, 24) + .addComponent(jLabel13) + .addGap(18, 18, 18) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(1, 1, 1) + .addComponent(jLabel2) + .addGap(18, 18, 18) + .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel14) + .addContainerGap(23, Short.MAX_VALUE)) + ); + + username.setFont(new java.awt.Font("Microsoft JhengHei UI Light", 0, 36)); // NOI18N + username.setForeground(new java.awt.Color(255, 255, 255)); + username.setText(" Hi , Current user"); + + if(Controller.currentUser.getGender().equalsIgnoreCase("male")) + jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/male.png"))); // NOI18N + else jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/female.png"))); // NOI18N + + jToggleButton1.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jToggleButton1.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton1.setText("Log out"); + jToggleButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jToggleButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jToggleButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton1ActionPerformed(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel11.setForeground(new java.awt.Color(153, 153, 153)); + jLabel11.setText("Chat with friends.."); + jLabel11.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel11.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel11MouseClicked(evt); + } + }); + + jLabel12.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel12.setForeground(new java.awt.Color(153, 153, 153)); + jLabel12.setText("Enter Frexie's global chat room.."); + jLabel12.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel12.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel12MouseClicked(evt); + } + }); + + date.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + date.setForeground(new java.awt.Color(255, 255, 255)); + date.setText("Today's date"); + + jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/online.png"))); // NOI18N + + jLabel16.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel16.setForeground(new java.awt.Color(255, 255, 255)); + jLabel16.setText("Frexie"); + + jLabel15.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel15.setForeground(new java.awt.Color(153, 153, 153)); + jLabel15.setText("Your Status:"); + + status.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + status.setForeground(new java.awt.Color(153, 153, 153)); + status.setText("Status"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(4, 4, 4) + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(username) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(date)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGap(590, 591, Short.MAX_VALUE) + .addComponent(jLabel16)) + .addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel12) + .addComponent(jLabel11) + .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()))) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(date, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGap(37, 37, 37) + .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(status) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(55, 55, 55) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel16)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed + FileLoader.FileLoading(); + Controller.currentUser.setState("false"); + FileHandler.UpdateUsersFile(); + + new StartPage().setVisible(true); + this.dispose(); + Controller.currentUser=null; + }//GEN-LAST:event_jToggleButton1ActionPerformed + + private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel2MouseClicked + new Settings().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jLabel2MouseClicked + + private void jLabel12MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel12MouseClicked + + GlobalChat globalChat=new GlobalChat(); + this.dispose(); + globalChat.beginGlobalChat(); + Controller.globalChat=globalChat; + this.dispose(); + + + }//GEN-LAST:event_jLabel12MouseClicked + + private void jLabel14MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel14MouseClicked + new Developers().setVisible(true); + }//GEN-LAST:event_jLabel14MouseClicked + + private void jLabel10MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel10MouseClicked + new FindFriends().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jLabel10MouseClicked + + private void jLabel11MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel11MouseClicked + + new OnlineFriends().setVisible(true); + this.dispose(); + + }//GEN-LAST:event_jLabel11MouseClicked + + private void jLabel13MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel13MouseClicked + new MyFriends().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jLabel13MouseClicked + + + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(Profile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(Profile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(Profile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(Profile.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new Profile().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel date; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel13; + private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JSeparator jSeparator2; + private javax.swing.JSeparator jSeparator3; + private javax.swing.JToggleButton jToggleButton1; + public static javax.swing.JLabel status; + private javax.swing.JLabel username; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/Registration.form b/src/view/Registration.form new file mode 100644 index 0000000..24e0717 --- /dev/null +++ b/src/view/Registration.form @@ -0,0 +1,579 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/Registration.java b/src/view/Registration.java new file mode 100644 index 0000000..183b5e4 --- /dev/null +++ b/src/view/Registration.java @@ -0,0 +1,602 @@ +package view; + +import frexie.Controller; +import frexie.DataChecker; +import frexie.FileHandler; +import frexie.Validator; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Toolkit; +import javax.swing.BorderFactory; +import javax.swing.border.Border; + +public class Registration extends javax.swing.JFrame { + + Border border = BorderFactory.createLineBorder(new Color(150, 40, 27), 1, true); + Border border2 = BorderFactory.createLineBorder(new Color(38, 194, 129), 1, true); + boolean flagFirstName = false; + boolean flagUsername = false; + boolean flagLastName = false; + boolean flagEmail = false; + boolean flagPassword = false; + boolean flagConfirmPassword = false; + boolean flagMale = false; + boolean flagFemale = false; + char x; + String gender; + boolean mainFlag = false; + + public Registration() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + x = password.getEchoChar(); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + password = new javax.swing.JPasswordField(); + confirmPassword = new javax.swing.JPasswordField(); + jLabel9 = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + male = new javax.swing.JCheckBox(); + female = new javax.swing.JCheckBox(); + accept = new javax.swing.JCheckBox(); + jLabel12 = new javax.swing.JLabel(); + termsAndConditions = new javax.swing.JLabel(); + jToggleButton1 = new javax.swing.JToggleButton(); + lastName = new javax.swing.JTextField(); + firstName = new javax.swing.JTextField(); + email = new javax.swing.JTextField(); + jLabel5 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + username = new javax.swing.JTextField(); + jLabel14 = new javax.swing.JLabel(); + genderWarning = new javax.swing.JLabel(); + jToggleButton2 = new javax.swing.JToggleButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel3.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Segoe Print", 0, 48)); // NOI18N + jLabel1.setForeground(new java.awt.Color(255, 255, 255)); + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setText("Welcome to the new ERA"); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 720, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGap(22, 22, 22) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(43, Short.MAX_VALUE)) + ); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setText("E-mail"); + + jLabel3.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel3.setForeground(new java.awt.Color(255, 255, 255)); + jLabel3.setText("Password"); + + jLabel4.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("Confirm password"); + + password.setBackground(new java.awt.Color(36, 37, 42)); + password.setForeground(new java.awt.Color(255, 255, 255)); + password.setCaretColor(new java.awt.Color(255, 255, 255)); + password.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + passwordActionPerformed(evt); + } + }); + + confirmPassword.setBackground(new java.awt.Color(36, 37, 42)); + confirmPassword.setForeground(new java.awt.Color(255, 255, 255)); + confirmPassword.setCaretColor(new java.awt.Color(255, 255, 255)); + + jLabel9.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel9.setForeground(new java.awt.Color(240, 240, 240)); + jLabel9.setText("First Name"); + + jLabel10.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel10.setForeground(new java.awt.Color(240, 240, 240)); + jLabel10.setText("Last Name"); + + jLabel11.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel11.setForeground(new java.awt.Color(240, 240, 240)); + jLabel11.setText("Gender"); + + male.setBackground(new java.awt.Color(36, 37, 42)); + male.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + male.setForeground(new java.awt.Color(153, 153, 153)); + male.setText("Male"); + male.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + maleActionPerformed(evt); + } + }); + + female.setBackground(new java.awt.Color(36, 37, 42)); + female.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + female.setForeground(new java.awt.Color(153, 153, 153)); + female.setText("Female"); + female.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + femaleActionPerformed(evt); + } + }); + + accept.setBackground(new java.awt.Color(36, 37, 42)); + accept.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + acceptActionPerformed(evt); + } + }); + + jLabel12.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jLabel12.setForeground(new java.awt.Color(255, 255, 255)); + jLabel12.setText("Accept"); + + termsAndConditions.setFont(new java.awt.Font("Microsoft JhengHei Light", 1, 14)); // NOI18N + termsAndConditions.setForeground(new java.awt.Color(153, 153, 153)); + termsAndConditions.setText(" Terms and Conditions. "); + termsAndConditions.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + termsAndConditions.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + termsAndConditionsMouseClicked(evt); + } + }); + + jToggleButton1.setBackground(new java.awt.Color(36, 37, 42)); + jToggleButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jToggleButton1.setForeground(new java.awt.Color(255, 255, 255)); + jToggleButton1.setText("Finish"); + jToggleButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jToggleButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton1ActionPerformed(evt); + } + }); + + lastName.setBackground(new java.awt.Color(36, 37, 42)); + lastName.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 11)); // NOI18N + lastName.setForeground(new java.awt.Color(255, 255, 255)); + lastName.setText("Enter your last name.."); + lastName.setCaretColor(new java.awt.Color(255, 255, 255)); + lastName.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + lastNameMouseClicked(evt); + } + }); + lastName.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + lastNameActionPerformed(evt); + } + }); + + firstName.setBackground(new java.awt.Color(36, 37, 42)); + firstName.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 11)); // NOI18N + firstName.setForeground(new java.awt.Color(255, 255, 255)); + firstName.setText("Enter yout first name.."); + firstName.setCaretColor(new java.awt.Color(255, 255, 255)); + firstName.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + firstNameMouseClicked(evt); + } + }); + firstName.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + firstNameActionPerformed(evt); + } + }); + + email.setBackground(new java.awt.Color(36, 37, 42)); + email.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 11)); // NOI18N + email.setForeground(new java.awt.Color(255, 255, 255)); + email.setText("Enter your email.."); + email.setCaretColor(new java.awt.Color(255, 255, 255)); + email.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + emailMouseClicked(evt); + } + }); + email.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + emailActionPerformed(evt); + } + }); + + jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/showPassword.png"))); // NOI18N + jLabel5.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel5.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel5MouseClicked(evt); + } + }); + + jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/showPassword.png"))); // NOI18N + jLabel7.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel7.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel7MouseClicked(evt); + } + }); + + jLabel6.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel6.setForeground(new java.awt.Color(255, 255, 255)); + jLabel6.setText("Username"); + + username.setBackground(new java.awt.Color(36, 37, 42)); + username.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 11)); // NOI18N + username.setForeground(new java.awt.Color(255, 255, 255)); + username.setText("Enter your Username"); + username.setCaretColor(new java.awt.Color(255, 255, 255)); + username.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + usernameMouseClicked(evt); + } + }); + username.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + usernameActionPerformed(evt); + } + }); + + jLabel14.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel14.setForeground(new java.awt.Color(255, 255, 255)); + jLabel14.setText("Frexie"); + + genderWarning.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + genderWarning.setForeground(new java.awt.Color(150, 40, 27)); + + jToggleButton2.setBackground(new java.awt.Color(36, 37, 42)); + jToggleButton2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jToggleButton2.setForeground(new java.awt.Color(255, 255, 255)); + jToggleButton2.setText("Back"); + jToggleButton2.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jToggleButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(48, 48, 48) + .addComponent(accept) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel12) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(termsAndConditions, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel14) + .addContainerGap()) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(36, 36, 36) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jLabel9) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(41, 41, 41) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(confirmPassword) + .addComponent(lastName) + .addComponent(email, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(password) + .addComponent(firstName, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(username, javax.swing.GroupLayout.Alignment.LEADING)) + .addGap(18, 18, 18) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel5) + .addComponent(jLabel7)) + .addGap(64, 64, 64)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(genderWarning, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(male, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(female, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(278, Short.MAX_VALUE)))) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(39, 39, 39) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(username, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(33, 33, 33) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(firstName, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel9)) + .addGap(38, 38, 38) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lastName, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel10)) + .addGap(28, 28, 28) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(email, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(34, 34, 34) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(49, 49, 49) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(46, 46, 46) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(confirmPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(37, 37, 37) + .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(30, 30, 30) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(male) + .addComponent(female)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(genderWarning, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(accept, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel12) + .addComponent(termsAndConditions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(7, 7, 7) + .addComponent(jLabel14) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void passwordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passwordActionPerformed + }//GEN-LAST:event_passwordActionPerformed + + private void acceptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_acceptActionPerformed + }//GEN-LAST:event_acceptActionPerformed + + private void lastNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lastNameActionPerformed + }//GEN-LAST:event_lastNameActionPerformed + + private void firstNameMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_firstNameMouseClicked + if (flagFirstName == false) { + firstName.setText(""); + } + flagFirstName = true; + }//GEN-LAST:event_firstNameMouseClicked + + private void lastNameMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lastNameMouseClicked + if (flagLastName == false) { + lastName.setText(""); + } + flagLastName = true; + }//GEN-LAST:event_lastNameMouseClicked + + private void emailMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_emailMouseClicked + if (flagEmail == false) { + email.setText(""); + } + flagEmail = true; + + }//GEN-LAST:event_emailMouseClicked + + private void emailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_emailActionPerformed + + }//GEN-LAST:event_emailActionPerformed + + private void firstNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_firstNameActionPerformed + + }//GEN-LAST:event_firstNameActionPerformed + + private void termsAndConditionsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_termsAndConditionsMouseClicked + new TermsAndConditions().setVisible(true); + }//GEN-LAST:event_termsAndConditionsMouseClicked + + private void usernameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_usernameActionPerformed + }//GEN-LAST:event_usernameActionPerformed + + private void jLabel5MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel5MouseClicked + if (flagPassword == false) { + password.setEchoChar((char) 0); + flagPassword = true; + } else { + password.setEchoChar(x); + flagPassword = false; + } + }//GEN-LAST:event_jLabel5MouseClicked + + private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseClicked + if (flagConfirmPassword == false) { + confirmPassword.setEchoChar((char) 0); + flagConfirmPassword = true; + } else { + confirmPassword.setEchoChar(x); + flagConfirmPassword = false; + } + }//GEN-LAST:event_jLabel7MouseClicked + + private void usernameMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_usernameMouseClicked + if (flagUsername == false) { + username.setText(""); + } + flagUsername = true; + }//GEN-LAST:event_usernameMouseClicked + + private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed + mainFlag = true; + if (Validator.isEmpty(username.getText().trim()) || DataChecker.isUsedUsername(username.getText().trim()) || username.getText().contains("Enter")) { + username.setBorder(border); + mainFlag = false; + } else { + username.setBorder(border2); + } + if (Validator.isEmpty(firstName.getText().trim()) || firstName.getText().contains("Enter")) { + firstName.setBorder(border); + mainFlag = false; + } else { + firstName.setBorder(border2); + } + if (Validator.isEmpty(lastName.getText().trim()) || lastName.getText().contains("Enter")) { + lastName.setBorder(border); + mainFlag = false; + } else { + lastName.setBorder(border2); + } + if (!Validator.isEmail(email.getText().trim()) || DataChecker.isUsedEmail(email.getText().trim())) { + email.setBorder(border); + mainFlag = false; + } else { + email.setBorder(border2); + } + if (!male.isSelected() && !female.isSelected()) { + genderWarning.setText("*Please select a gender."); + mainFlag = false; + } else { + genderWarning.setText(""); + } + String confirmP = new String(confirmPassword.getPassword()); + String p = new String(password.getPassword()); + if (!p.equals(confirmP) || Validator.isEmpty(p.trim())) { + confirmPassword.setBorder(border); + password.setBorder(border); + mainFlag = false; + } else { + confirmPassword.setBorder(border2); + password.setBorder(border2); + } + if(!accept.isSelected()) + { + new WarningTermsAndConditions().setVisible(true); + mainFlag = false; + } + + if (mainFlag == true) { + FileHandler.addToUsersFile(username.getText(), firstName.getText(), lastName.getText(), firstName.getText() + " " + lastName.getText(), email.getText(), new String(password.getPassword()), gender, 0); + FileHandler.createNewUserFile(); + FileHandler.addFirstFriend(Controller.currentUser.getUserName()); + Controller.currentUser.setFriendsNames(); + new Profile().setVisible(true); + this.dispose(); + } + }//GEN-LAST:event_jToggleButton1ActionPerformed + + private void maleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_maleActionPerformed + if (male.isSelected()) { + female.setSelected(false); + gender = "MALE"; + } + }//GEN-LAST:event_maleActionPerformed + + private void femaleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_femaleActionPerformed + if (female.isSelected()) { + male.setSelected(false); + gender = "FEMALE"; + } + }//GEN-LAST:event_femaleActionPerformed + + private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton2ActionPerformed + this.dispose(); + new StartPage().setVisible(true); + }//GEN-LAST:event_jToggleButton2ActionPerformed + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new Registration().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JCheckBox accept; + private javax.swing.JPasswordField confirmPassword; + private javax.swing.JTextField email; + private javax.swing.JCheckBox female; + private javax.swing.JTextField firstName; + private javax.swing.JLabel genderWarning; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel3; + private javax.swing.JToggleButton jToggleButton1; + private javax.swing.JToggleButton jToggleButton2; + private javax.swing.JTextField lastName; + private javax.swing.JCheckBox male; + private javax.swing.JPasswordField password; + private javax.swing.JLabel termsAndConditions; + private javax.swing.JTextField username; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/SavedFrame.form b/src/view/SavedFrame.form new file mode 100644 index 0000000..a7b3b15 --- /dev/null +++ b/src/view/SavedFrame.form @@ -0,0 +1,128 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/SavedFrame.java b/src/view/SavedFrame.java new file mode 100644 index 0000000..9a5be6d --- /dev/null +++ b/src/view/SavedFrame.java @@ -0,0 +1,112 @@ + +package view; + +import java.awt.Dimension; +import java.awt.Toolkit; + + +public class SavedFrame extends javax.swing.JFrame { + + + public SavedFrame() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Segoe Print", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(255, 255, 255)); + jLabel1.setText("Info saved successfully!"); + + jLabel2.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setText("Frexie"); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap(74, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(73, 73, 73)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(jLabel2) + .addContainerGap()))) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(34, 34, 34) + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE) + .addComponent(jLabel2)) + ); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new SavedFrame().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/Settings.form b/src/view/Settings.form new file mode 100644 index 0000000..33d78b7 --- /dev/null +++ b/src/view/Settings.form @@ -0,0 +1,407 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/Settings.java b/src/view/Settings.java new file mode 100644 index 0000000..f57ea43 --- /dev/null +++ b/src/view/Settings.java @@ -0,0 +1,365 @@ + +package view; + +import frexie.Controller; +import frexie.FileHandler; +import frexie.FileLoader; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Toolkit; +import javax.swing.BorderFactory; +import javax.swing.border.Border; + +public class Settings extends javax.swing.JFrame { + static boolean flag1 = false; + static boolean flag2 = false; + char x; + static boolean mainFlag = false; + static boolean flag = false; + Border border = BorderFactory.createLineBorder(new Color(150, 40, 27), 1, true); + Border border2 = BorderFactory.createLineBorder(new Color(38, 194, 129), 1, true); + public Settings() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + x=currentPassword.getEchoChar(); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabel10 = new javax.swing.JLabel(); + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jToggleButton1 = new javax.swing.JToggleButton(); + jLabel2 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + newPassword = new javax.swing.JPasswordField(); + jLabel5 = new javax.swing.JLabel(); + currentPassword = new javax.swing.JPasswordField(); + jLabel6 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jLabel12 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + + jLabel10.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel10.setForeground(new java.awt.Color(255, 255, 255)); + jLabel10.setText("Frexie"); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Settings"); + + jToggleButton1.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jToggleButton1.setForeground(new java.awt.Color(153, 153, 153)); + jToggleButton1.setText("Save"); + jToggleButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jToggleButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton1ActionPerformed(evt); + } + }); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + jLabel2.setForeground(new java.awt.Color(153, 153, 153)); + jLabel2.setText("report an issue"); + jLabel2.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + + jLabel4.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel4.setForeground(new java.awt.Color(153, 153, 153)); + jLabel4.setText("New Password"); + + newPassword.setBackground(new java.awt.Color(46, 49, 49)); + newPassword.setForeground(new java.awt.Color(255, 255, 255)); + newPassword.setCaretColor(new java.awt.Color(255, 255, 255)); + + jLabel5.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel5.setForeground(new java.awt.Color(153, 153, 153)); + jLabel5.setText("Current Password"); + + currentPassword.setBackground(new java.awt.Color(46, 49, 49)); + currentPassword.setForeground(new java.awt.Color(255, 255, 255)); + currentPassword.setCaretColor(new java.awt.Color(255, 255, 255)); + currentPassword.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + currentPasswordActionPerformed(evt); + } + }); + + jLabel6.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel6.setForeground(new java.awt.Color(150, 40, 27)); + jLabel6.setText("Deactivate your account"); + jLabel6.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel6.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel6MouseClicked(evt); + } + }); + + jSeparator1.setBackground(new java.awt.Color(153, 153, 153)); + + jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/showPassword.png"))); // NOI18N + jLabel7.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel7.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel7MouseClicked(evt); + } + }); + + jLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/showPassword.png"))); // NOI18N + jLabel8.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel8.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel8MouseClicked(evt); + } + }); + + jButton1.setBackground(new java.awt.Color(46, 49, 49)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Back"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jLabel12.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel12.setForeground(new java.awt.Color(153, 153, 153)); + jLabel12.setText("Edit Status.."); + jLabel12.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel12.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel12MouseClicked(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 347, Short.MAX_VALUE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(newPassword) + .addComponent(currentPassword) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 235, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel7) + .addComponent(jLabel8)) + .addGap(133, 133, 133)) + .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))))) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 207, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGap(0, 0, Short.MAX_VALUE)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(30, 30, 30) + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(currentPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(212, 212, 212))) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(newPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(36, 36, 36) + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + jLabel9.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel9.setForeground(new java.awt.Color(255, 255, 255)); + jLabel9.setText("Frexie"); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(46, 46, 46) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel11) + .addContainerGap()) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(279, 279, 279) + .addComponent(jLabel9) + .addContainerGap(351, Short.MAX_VALUE))) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel11) + .addContainerGap()) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(258, 258, 258) + .addComponent(jLabel9) + .addContainerGap(258, Short.MAX_VALUE))) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void currentPasswordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_currentPasswordActionPerformed + }//GEN-LAST:event_currentPasswordActionPerformed + + private void jLabel6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseClicked + this.dispose(); + new DeactivationAlert().setVisible(true); + }//GEN-LAST:event_jLabel6MouseClicked + + private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed + mainFlag = true; + String pass = new String(currentPassword.getPassword()); + String pass2 = new String(newPassword.getPassword()); + if(!Controller.currentUser.getPassword().equals(pass) || pass2.isBlank()) + { + mainFlag=false; + if(!Controller.currentUser.getPassword().equals(pass) )currentPassword.setBorder(border); + else currentPassword.setBorder(border2); + newPassword.setBorder(border); + } + if(mainFlag == true) + { + + FileLoader.FileLoading(); + Controller.currentUser.setPassword(new String(newPassword.getPassword())); + FileHandler.UpdateUsersFile(); + + this.dispose(); + new Profile().setVisible(true); + } + }//GEN-LAST:event_jToggleButton1ActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + private void jLabel12MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel12MouseClicked + new StatusEditor().setVisible(true); + this.dispose();// TODO add your handling code here: + }//GEN-LAST:event_jLabel12MouseClicked + + private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseClicked + if (flag2 == false) { + currentPassword.setEchoChar((char) 0); + flag2 = true; + } else { + currentPassword.setEchoChar(x); flag2= false; + } // TODO add your handling code here: + }//GEN-LAST:event_jLabel7MouseClicked + + private void jLabel8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel8MouseClicked + if (flag1 == false) { + newPassword.setEchoChar((char) 0); + flag1 = true; + } else { + newPassword.setEchoChar(x); flag1 = false; + } + }//GEN-LAST:event_jLabel8MouseClicked + + public static void main(String args[]) { + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new Settings().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPasswordField currentPassword; + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JToggleButton jToggleButton1; + private javax.swing.JPasswordField newPassword; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/StartPage.form b/src/view/StartPage.form new file mode 100644 index 0000000..c5f074c --- /dev/null +++ b/src/view/StartPage.form @@ -0,0 +1,363 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/StartPage.java b/src/view/StartPage.java new file mode 100644 index 0000000..bd45ee4 --- /dev/null +++ b/src/view/StartPage.java @@ -0,0 +1,331 @@ + +package view; + +import frexie.Controller; +import frexie.DataChecker; +import frexie.FileHandler; +import frexie.FileLoader; +import java.awt.Color; +import static java.awt.Color.red; +import java.awt.Dimension; +import java.awt.Toolkit; +import javax.swing.BorderFactory; +import javax.swing.border.Border; + + +public class StartPage extends javax.swing.JFrame { + + boolean flag = false; + boolean flagEmail=false; + char x; + public StartPage() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + x=password.getEchoChar(); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jFileChooser1 = new javax.swing.JFileChooser(); + jPanel3 = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + email = new javax.swing.JTextField(); + password = new javax.swing.JPasswordField(); + jLabel5 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jToggleButton1 = new javax.swing.JToggleButton(); + warning = new javax.swing.JLabel(); + showPassword = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setBackground(new java.awt.Color(1, 50, 67)); + + jPanel3.setBackground(new java.awt.Color(36, 37, 42)); + jPanel3.setForeground(new java.awt.Color(255, 255, 255)); + + jPanel1.setBackground(new java.awt.Color(46, 49, 49)); + jPanel1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + + jLabel1.setFont(new java.awt.Font("Segoe Print", 1, 48)); // NOI18N + jLabel1.setForeground(new java.awt.Color(255, 255, 255)); + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setText("Frexie"); + jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + + jLabel2.setFont(new java.awt.Font("Segoe Print", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(255, 255, 255)); + jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel2.setText(" Wireless Made Simple..."); + jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(34, 34, 34) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + + jLabel3.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel3.setForeground(new java.awt.Color(255, 255, 255)); + jLabel3.setText("E-mail"); + + jLabel4.setBackground(new java.awt.Color(255, 255, 255)); + jLabel4.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel4.setForeground(new java.awt.Color(255, 255, 255)); + jLabel4.setText("Password"); + + email.setBackground(new java.awt.Color(36, 37, 42)); + email.setForeground(new java.awt.Color(255, 255, 255)); + email.setText("Enter your email"); + email.setCaretColor(new java.awt.Color(255, 255, 255)); + email.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + emailMouseClicked(evt); + } + }); + email.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + emailActionPerformed(evt); + } + }); + + password.setBackground(new java.awt.Color(36, 37, 42)); + password.setForeground(new java.awt.Color(255, 255, 255)); + password.setCaretColor(new java.awt.Color(255, 255, 255)); + password.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + passwordActionPerformed(evt); + } + }); + + jLabel5.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 11)); // NOI18N + jLabel5.setForeground(new java.awt.Color(255, 255, 255)); + jLabel5.setText("Forgot Password?"); + jLabel5.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + + jLabel6.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jLabel6.setForeground(new java.awt.Color(255, 255, 255)); + jLabel6.setText("Don't have an account?"); + + jLabel7.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jLabel7.setForeground(new java.awt.Color(153, 153, 153)); + jLabel7.setText("Sign up"); + jLabel7.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jLabel7.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel7MouseClicked(evt); + } + }); + + jToggleButton1.setBackground(new java.awt.Color(46, 49, 49)); + jToggleButton1.setFont(new java.awt.Font("Microsoft JhengHei UI Light", 0, 18)); // NOI18N + jToggleButton1.setForeground(new java.awt.Color(255, 255, 255)); + jToggleButton1.setText("Log in"); + jToggleButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + jToggleButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton1ActionPerformed(evt); + } + }); + + warning.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + warning.setForeground(new java.awt.Color(150, 40, 27)); + + showPassword.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/showPassword.png"))); // NOI18N + showPassword.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + showPassword.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + showPasswordMouseClicked(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGap(53, 53, 53) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) + .addGap(53, 53, 53) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(warning, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(95, 95, 95)) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jLabel6) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, 58, Short.MAX_VALUE) + .addGap(318, 318, 318)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(282, 282, 282) + .addComponent(jLabel8) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(password) + .addComponent(email)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(showPassword) + .addGap(58, 58, 58)))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel11) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(72, 72, 72) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(email, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 67, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(password, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4) + .addComponent(showPassword)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(warning, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToggleButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 58, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel11) + .addGap(10, 10, 10)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void passwordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passwordActionPerformed + }//GEN-LAST:event_passwordActionPerformed + + private void emailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_emailActionPerformed + }//GEN-LAST:event_emailActionPerformed + + private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel7MouseClicked + new Registration().setVisible(true); + this.dispose(); + + }//GEN-LAST:event_jLabel7MouseClicked + + private void emailMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_emailMouseClicked + if (flagEmail == false) { + email.setText(""); + } + flagEmail = true; // TODO add your handling code here: + }//GEN-LAST:event_emailMouseClicked + + private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton1ActionPerformed + if (DataChecker.verifyUser(email.getText().toLowerCase().trim(), new String(password.getPassword())) == true) { + + new Profile().setVisible(true); + Controller.currentUser.setFriendsNames(); + FileLoader.FileLoading(); + Controller.currentUser.setState("true"); + FileHandler.UpdateUsersFile(); + this.dispose(); + + } else { + warning.setText("*Invalid E-mail or Password"); + email.setBorder(BorderFactory.createLineBorder(new Color(150,40,27),1,true)); + password.setBorder(BorderFactory.createLineBorder(new Color(150,40,27),1,true)); + } + + // TODO add your handling code here: + }//GEN-LAST:event_jToggleButton1ActionPerformed + + private void showPasswordMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_showPasswordMouseClicked + if (flag == false) { + password.setEchoChar((char) 0); + flag = true; + } else { + password.setEchoChar(x); flag = false; + } + }//GEN-LAST:event_showPasswordMouseClicked + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new StartPage().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField email; + private javax.swing.JFileChooser jFileChooser1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel3; + private javax.swing.JToggleButton jToggleButton1; + private javax.swing.JPasswordField password; + private javax.swing.JLabel showPassword; + private javax.swing.JLabel warning; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/StatusEditor.form b/src/view/StatusEditor.form new file mode 100644 index 0000000..149cce9 --- /dev/null +++ b/src/view/StatusEditor.form @@ -0,0 +1,267 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/StatusEditor.java b/src/view/StatusEditor.java new file mode 100644 index 0000000..f0b79a9 --- /dev/null +++ b/src/view/StatusEditor.java @@ -0,0 +1,221 @@ + +package view; + +import frexie.Controller; +import frexie.FileHandler; +import frexie.FileLoader; +import java.awt.Dimension; +import java.awt.Toolkit; + +public class StatusEditor extends javax.swing.JFrame { + + + public StatusEditor() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + myStatus.setText(Controller.currentUser.getStatus()); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel12 = new javax.swing.JLabel(); + jPanel3 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + myStatus = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + newStatus = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel12.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel12.setForeground(new java.awt.Color(255, 255, 255)); + jLabel12.setText("Frexie"); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(19, 19, 19) + .addComponent(jLabel12) + .addContainerGap(18, Short.MAX_VALUE)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel12) + .addContainerGap()) + ); + + jPanel3.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Status Editor"); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap(14, Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel2.setForeground(new java.awt.Color(153, 153, 153)); + jLabel2.setText("Current Status: "); + + myStatus.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + myStatus.setForeground(new java.awt.Color(153, 153, 153)); + myStatus.setText("my status"); + + jLabel5.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel5.setForeground(new java.awt.Color(153, 153, 153)); + jLabel5.setText("Type your unique status:"); + + newStatus.setBackground(new java.awt.Color(36, 37, 42)); + newStatus.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 12)); // NOI18N + newStatus.setForeground(new java.awt.Color(255, 255, 255)); + newStatus.setCaretColor(new java.awt.Color(255, 255, 255)); + + jButton1.setBackground(new java.awt.Color(36, 37, 42)); + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("Save"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jButton2.setBackground(new java.awt.Color(36, 37, 42)); + jButton2.setForeground(new java.awt.Color(153, 153, 153)); + jButton2.setText("Back"); + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(2, 2, 2)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(myStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 496, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2) + .addComponent(jLabel5) + .addComponent(newStatus)) + .addGap(10, 10, 10))) + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(29, 29, 29) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(myStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(35, 35, 35) + .addComponent(jLabel5) + .addGap(27, 27, 27) + .addComponent(newStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 90, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()))) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + new Profile().setVisible(true); + this.dispose(); }//GEN-LAST:event_jButton2ActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + FileLoader.FileLoading(); + Controller.currentUser.setStatus(newStatus.getText()); + FileHandler.UpdateUsersFile(); + new Profile().setVisible(true); + this.dispose(); + }//GEN-LAST:event_jButton1ActionPerformed + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new StatusEditor().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel5; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JLabel myStatus; + private javax.swing.JTextField newStatus; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/TermsAndConditions.form b/src/view/TermsAndConditions.form new file mode 100644 index 0000000..ca0c11e --- /dev/null +++ b/src/view/TermsAndConditions.form @@ -0,0 +1,161 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/TermsAndConditions.java b/src/view/TermsAndConditions.java new file mode 100644 index 0000000..337d726 --- /dev/null +++ b/src/view/TermsAndConditions.java @@ -0,0 +1,178 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package view; + +import java.awt.Dimension; +import java.awt.Toolkit; + +/** + * + * @author Mohamed Farid + */ +public class TermsAndConditions extends javax.swing.JFrame { + + /** + * Creates new form TermsAndConditions + */ + public TermsAndConditions() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + + } + + /** + * 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") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jButton1 = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabel3 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jButton1.setBackground(new java.awt.Color(36, 37, 42)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("ok"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jPanel3.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 24)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("Terms & Conditions"); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jLabel2.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jLabel2.setForeground(new java.awt.Color(153, 153, 153)); + jLabel2.setText("By accepting Frexie's terms and conditions you will be totally responsible of any message you will send to"); + + jLabel3.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jLabel3.setForeground(new java.awt.Color(153, 153, 153)); + jLabel3.setText("any of Frexie's users. This means you may be charged with cyber-bullying or any other sort of discrimination."); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(29, 29, 29) + .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 46, Short.MAX_VALUE) + .addComponent(jButton1) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + this.dispose(); // TODO add your handling code here: + }//GEN-LAST:event_jButton1ActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(TermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(TermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(TermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(TermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new TermsAndConditions().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel3; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/ThankingFrame.form b/src/view/ThankingFrame.form new file mode 100644 index 0000000..665f7d5 --- /dev/null +++ b/src/view/ThankingFrame.form @@ -0,0 +1,141 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/ThankingFrame.java b/src/view/ThankingFrame.java new file mode 100644 index 0000000..384fabc --- /dev/null +++ b/src/view/ThankingFrame.java @@ -0,0 +1,117 @@ + +package view; + +import java.awt.Dimension; +import java.awt.Toolkit; + +public class ThankingFrame extends javax.swing.JFrame { + + public ThankingFrame() { + initComponents(); + Toolkit toolkit = getToolkit(); + Dimension size = toolkit.getScreenSize(); + setLocation(size.width / 2 - getWidth() / 2, size.height / 2 - getHeight() / 2); + + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabel11 = new javax.swing.JLabel(); + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Segoe Print", 0, 36)); // NOI18N + jLabel1.setForeground(new java.awt.Color(255, 255, 255)); + jLabel1.setText("Thank you for using Frexie"); + + jLabel12.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel12.setForeground(new java.awt.Color(255, 255, 255)); + jLabel12.setText("Frexie"); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap(58, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(jLabel12) + .addContainerGap()) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 527, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(37, 37, 37)))) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(19, Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel12)) + ); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new ThankingFrame().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + // End of variables declaration//GEN-END:variables +} diff --git a/src/view/WarningTermsAndConditions.form b/src/view/WarningTermsAndConditions.form new file mode 100644 index 0000000..52d2c8b --- /dev/null +++ b/src/view/WarningTermsAndConditions.form @@ -0,0 +1,153 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/view/WarningTermsAndConditions.java b/src/view/WarningTermsAndConditions.java new file mode 100644 index 0000000..e7d0344 --- /dev/null +++ b/src/view/WarningTermsAndConditions.java @@ -0,0 +1,167 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package view; + +/** + * + * @author Mohamed Farid + */ +public class WarningTermsAndConditions extends javax.swing.JFrame { + + /** + * Creates new form WarningTermsAndConditions + */ + public WarningTermsAndConditions() { + initComponents(); + } + + /** + * 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") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jLabel11 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + jPanel1.setBackground(new java.awt.Color(36, 37, 42)); + + jPanel2.setBackground(new java.awt.Color(46, 49, 49)); + + jLabel1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 18)); // NOI18N + jLabel1.setForeground(new java.awt.Color(153, 153, 153)); + jLabel1.setText("In order to use Frexie you must accept our Terms & Conditions"); + + jButton1.setBackground(new java.awt.Color(46, 49, 49)); + jButton1.setFont(new java.awt.Font("Microsoft JhengHei Light", 0, 14)); // NOI18N + jButton1.setForeground(new java.awt.Color(153, 153, 153)); + jButton1.setText("ok"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(19, 19, 19) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 533, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(183, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(28, 28, 28) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 38, Short.MAX_VALUE) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + jLabel11.setFont(new java.awt.Font("Segoe Print", 0, 11)); // NOI18N + jLabel11.setForeground(new java.awt.Color(255, 255, 255)); + jLabel11.setText("Frexie"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jLabel11))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(29, 29, 29) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel11)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + this.dispose(); // TODO add your handling code here: + }//GEN-LAST:event_jButton1ActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(WarningTermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(WarningTermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(WarningTermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(WarningTermsAndConditions.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new WarningTermsAndConditions().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel11; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + // End of variables declaration//GEN-END:variables +}