From e83a373de8e83ad4879fd6749d1b0d0e6d4719e9 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Tue, 15 Aug 2017 22:54:57 -0500 Subject: [PATCH] Implemented Twitch Follower Notifications / Tracking. Offline/Online Tracking of Stream so users that follower offline are announced once online. Include scrolling bio + logo of user. Fixed Double Drag issue. Added many config options for new Twitch module. Implemented Follower image + name display. Pulls from Twitch API. --- sigIRCv2.jar | Bin 1817681 -> 1824275 bytes src/sig/Module.java | 17 +- src/sig/MyPanel.java | 36 +++- src/sig/modules/TouhouMotherModule.java | 9 +- src/sig/modules/Twitch/Announcement.java | 45 +++++ src/sig/modules/TwitchModule.java | 245 ++++++++++++++++++++--- src/sig/sigIRC.java | 42 +++- src/sig/utils/DrawUtils.java | 10 + src/sig/utils/FileUtils.java | 29 ++- src/sig/utils/TextUtils.java | 9 + 10 files changed, 389 insertions(+), 53 deletions(-) create mode 100644 src/sig/modules/Twitch/Announcement.java diff --git a/sigIRCv2.jar b/sigIRCv2.jar index 8fe24ff8be046819dd9b4ca50bb4eeeabe9f25f8..952efbd4dbd583ab29b2340034d67808edc8edb2 100644 GIT binary patch delta 63616 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 z�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 ZHI-ji8Jcy_?V$VakWQ7ja`yKG{tw messages = new ArrayList(); final public static Font programFont = new Font(sigIRC.messageFont,0,24); final public static Font userFont = new Font(sigIRC.usernameFont,0,16); @@ -199,4 +201,36 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo @Override public void componentHidden(ComponentEvent ev) { } + + @Override + public void windowActivated(WindowEvent ev) { + } + + @Override + public void windowClosed(WindowEvent ev) { + } + + @Override + public void windowClosing(WindowEvent ev) { + for (Module m : sigIRC.modules) { + m.windowClosed(ev); + } + sigIRC.config.saveProperties(); + } + + @Override + public void windowDeactivated(WindowEvent ev) { + } + + @Override + public void windowDeiconified(WindowEvent ev) { + } + + @Override + public void windowIconified(WindowEvent ev) { + } + + @Override + public void windowOpened(WindowEvent ev) { + } } diff --git a/src/sig/modules/TouhouMotherModule.java b/src/sig/modules/TouhouMotherModule.java index 483479c..dcfd167 100644 --- a/src/sig/modules/TouhouMotherModule.java +++ b/src/sig/modules/TouhouMotherModule.java @@ -94,7 +94,7 @@ public class TouhouMotherModule extends Module implements ActionListener{ @Override public void actionPerformed(ActionEvent ev) { memory = FileUtils.readFromFile(sigIRC.BASEDIR+"memory"); - System.out.println(Arrays.toString(memory)); + //System.out.println(Arrays.toString(memory)); if (memory.length>=14) { ProcessMemoryData(); ValidateAndControlMonsterData(); @@ -118,6 +118,13 @@ public class TouhouMotherModule extends Module implements ActionListener{ } } + public void ApplyConfigWindowProperties() { + sigIRC.touhoumothermodule_X=(int)bounds.getX(); + sigIRC.touhoumothermodule_Y=(int)bounds.getY(); + sigIRC.config.setInteger("TOUHOUMOTHER_module_X", sigIRC.touhoumothermodule_X); + sigIRC.config.setInteger("TOUHOUMOTHER_module_Y", sigIRC.touhoumothermodule_Y); + } + public void draw(Graphics g) { if (enabled) { super.draw(g); diff --git a/src/sig/modules/Twitch/Announcement.java b/src/sig/modules/Twitch/Announcement.java new file mode 100644 index 0000000..cd90ebc --- /dev/null +++ b/src/sig/modules/Twitch/Announcement.java @@ -0,0 +1,45 @@ +package sig.modules.Twitch; + +import java.io.File; +import java.text.DateFormat; + +import com.mb3364.twitch.api.models.User; + +import sig.modules.TwitchModule; +import sig.utils.FileUtils; + +public class Announcement { + User userData; + long twitchID; + public Announcement(long twitchID) { + String userFilePath = TwitchModule.USERDIR+twitchID; + File userFile = new File(userFilePath); + if (userFile.exists()) { + String[] contents = FileUtils.readFromFile(userFilePath); + userData = new User(); + int i=1; + userData.setId(twitchID); + userData.setBio(contents[i++]); + userData.setDisplayName(contents[i++]); + userData.setLogo(contents[i++]); + userData.setName(contents[i++]); + userData.setType(contents[i++]); + } else { + System.out.println("WARNING! Could not find user with ID "+twitchID+"!"); + } + this.twitchID=twitchID; + } + + public Announcement(User data) { + this.userData=data; + this.twitchID=data.getId(); + } + + public String toString() { + return userData.toString(); + } + + public User getUser() { + return userData; + } +} diff --git a/src/sig/modules/TwitchModule.java b/src/sig/modules/TwitchModule.java index e6f8b15..3aed37a 100644 --- a/src/sig/modules/TwitchModule.java +++ b/src/sig/modules/TwitchModule.java @@ -2,29 +2,54 @@ package sig.modules; import java.awt.Color; import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.event.WindowEvent; import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; + +import javax.imageio.ImageIO; +import javax.swing.SwingUtilities; import com.mb3364.twitch.api.Twitch; import com.mb3364.twitch.api.handlers.ChannelFollowsResponseHandler; import com.mb3364.twitch.api.handlers.StreamResponseHandler; import com.mb3364.twitch.api.models.ChannelFollow; import com.mb3364.twitch.api.models.Stream; +import com.mb3364.twitch.api.models.User; import sig.Module; import sig.sigIRC; +import sig.modules.Twitch.Announcement; import sig.utils.DrawUtils; import sig.utils.FileUtils; +import sig.utils.SoundUtils; import sig.utils.TextUtils; public class TwitchModule extends Module{ public String console="Twitch module goes here."; Twitch manager = new Twitch(); - final static String USERDIR = sigIRC.BASEDIR+"sigIRC/users/"; - final static String FOLLOWERQUEUEFILE = USERDIR+"followers.txt"; + final public static String USERDIR = sigIRC.BASEDIR+"sigIRC/users/"; + final public static String SOUNDSDIR = sigIRC.BASEDIR+"sigIRC/sounds/"; + final public static String FOLLOWERQUEUEFILE = USERDIR+"followers.txt"; public static boolean streamOnline = false; + static BufferedImage follower_img; + BufferedImage followerUserLogo; + List follower_queue = new ArrayList(); + final static int FOLLOWERCHECKTIMER = 900; + int lastFollowerCheck=300; + final static int FOLLOWERANNOUNCEMENTTIME = 300; + int lastFollowerAnnouncement=0; + User announcedFollowerUser; + String[] followersounds = new String[]{"Pokemon Cries - #471 Glaceon.wav"}; public TwitchModule(Rectangle2D bounds, String moduleName) { this(bounds,moduleName,true); @@ -37,6 +62,7 @@ public class TwitchModule extends Module{ private void Initialize() { boolean firstTime = false; + InitializeFollowerImage(); firstTime = CreateUserFolder(); if (firstTime) { CreateFollowerQueueLog(); @@ -83,6 +109,94 @@ public class TwitchModule extends Module{ } } );*/ + /*SwingUtilities.invokeLater(new Runnable() { + public void run() { + System.out.println("Follower Queue Size: "+follower_queue.size()+", Contents: "+follower_queue); + } + });*/ + } + + public void run() { + if (lastFollowerCheck--<=0) { + lastFollowerCheck = FOLLOWERCHECKTIMER; + getFollowers(false); + popFollowerFromQueue(); + } + if (lastFollowerAnnouncement>0) { + lastFollowerAnnouncement--; + } + //System.out.println(lastFollowerCheck); + } + + public void ApplyConfigWindowProperties() { + sigIRC.twitchmodule_X=(int)bounds.getX(); + sigIRC.twitchmodule_Y=(int)bounds.getY(); + sigIRC.config.setInteger("TWITCH_module_X", sigIRC.twitchmodule_X); + sigIRC.config.setInteger("TWITCH_module_Y", sigIRC.twitchmodule_Y); + } + + private void popFollowerFromQueue() { + if (follower_queue.size()>0) { + if (isStreamOnline()) { + //We have a follower to announce! + Announcement a = follower_queue.remove(0); + User user = a.getUser(); + if (user.getDisplayName().length()>0 && + !user.getDisplayName().contains("?")) { + DisplayFollowerAnnouncement(user,true); + } else { + DisplayFollowerAnnouncement(user,false); + } + } else { + //Store away all remaining followers in the queue....We can't announce them right now. + StoreRemainingFollowers(); + } + } + } + + public void windowClosed(WindowEvent ev) { + StoreRemainingFollowers(); + } + + private void StoreRemainingFollowers() { + for (Announcement a : follower_queue) { + FileUtils.logToFile(Long.toString(a.getUser().getId()), FOLLOWERQUEUEFILE); + } + follower_queue.clear(); + } + + private void DisplayFollowerAnnouncement(User user, boolean useNickname) { + lastFollowerAnnouncement = FOLLOWERANNOUNCEMENTTIME; + if (!useNickname) { + user.setDisplayName(user.getName()); + } + announcedFollowerUser = user; + String followerAnnouncement = user.getDisplayName()+" is now following the stream!"; + String userlogo = USERDIR+user.getId()+"_logo"; + if (!user.getLogo().equalsIgnoreCase("null")) { + try { + org.apache.commons.io.FileUtils.copyURLToFile(new URL(user.getLogo()),new File(userlogo)); + followerUserLogo = ImageIO.read(new File(userlogo)); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + followerUserLogo = null; + } + LogMessageToFile(followerAnnouncement); + System.out.println(followerAnnouncement); + SoundUtils.playSound(SOUNDSDIR+followersounds[(int)(Math.random()*followersounds.length)]); + } + + private void InitializeFollowerImage() { + try { + follower_img = ImageIO.read(new File(sigIRC.BASEDIR+sigIRC.twitchmodule_follower_img)); + System.out.println("Initialized Follower Image successfully."); + } catch (IOException e) { + e.printStackTrace(); + } } private void CreateFollowerQueueLog() { @@ -99,7 +213,6 @@ public class TwitchModule extends Module{ } private void getFollowers(boolean firstTime) { - //isStreamOnline(); manager.channels().getFollows(TextUtils.getActualChannelName(), new ChannelFollowsResponseHandler() { @Override public void onSuccess(int total, java.util.List follows) { @@ -120,12 +233,19 @@ public class TwitchModule extends Module{ } } ); - if (isStreamOnline()) {ClearFollowerAnnouncerQueue();} + if (isStreamOnline()) {/*System.out.println("Stream is Online...Clearing Follower Queue.");*/ClearFollowerAnnouncerQueue();} } private void ClearFollowerAnnouncerQueue() { - // TODO Read the file and announce everybody in that queue. - + String[] contents = FileUtils.readFromFile(FOLLOWERQUEUEFILE); + //System.out.println("Contents: "+Arrays.toString(contents)); + FileUtils.deleteFile(FOLLOWERQUEUEFILE); + for (String s : contents) { + if (s.length()>0) { + int twitchID = Integer.parseInt(s); + AddFollowerToQueue(twitchID); + } + } } private boolean isStreamOnline() { @@ -146,52 +266,61 @@ public class TwitchModule extends Module{ public void onSuccess(Stream arg0) { //System.out.println("Stream data is available! "+arg0); if (arg0==null) { - //System.out.println("Stream is offline."); TwitchModule.streamOnline=false; } else { - TwitchModule.streamOnline=true; + TwitchModule.streamOnline=true; } } }); - //return TwitchModule.streamOnline; - return false; + return TwitchModule.streamOnline; + //return false; } protected void addFollower(ChannelFollow f, boolean streamOnline, boolean silent) { String filename = USERDIR+f.getUser().getId(); File userProfile = new File(filename); - if (!silent) { //If we got in here, this isn't the initial follower setup, so we are good to go with announcing these followers. - if (!streamOnline) { - //Save their ID to a queue. - FileUtils.logToFile(Long.toString(f.getUser().getId()), FOLLOWERQUEUEFILE); - } else { - //Announce it now. - AnnounceFollower(f); + if (!userProfile.exists()) { + if (!silent) { //If we got in here, this isn't the initial follower setup, so we are good to go with announcing these followers. + if (!streamOnline) { + //Save their ID to a queue. + FileUtils.logToFile(Long.toString(f.getUser().getId()), FOLLOWERQUEUEFILE); + } else { + //Announce it now. + //System.out.println("Stream is online..."); + AnnounceFollower(f); + } } + CreateUserProfile(f, filename, userProfile); } - CreateUserProfile(f, filename, userProfile); } private void CreateUserProfile(ChannelFollow f, String filename, File userProfile) { - if (!userProfile.exists()) { - try { - userProfile.createNewFile(); - FileUtils.logToFile(DateFormat.getDateInstance().format(f.getCreatedAt()), filename); - FileUtils.logToFile(f.getUser().getBio(), filename); - FileUtils.logToFile(f.getUser().getDisplayName(), filename); - FileUtils.logToFile(f.getUser().getLogo(), filename); - FileUtils.logToFile(f.getUser().getName(), filename); - FileUtils.logToFile(f.getUser().getType(), filename); - FileUtils.logToFile(DateFormat.getDateInstance().format(f.getUser().getUpdatedAt()), filename); - } catch (IOException e) { - e.printStackTrace(); - } + try { + userProfile.createNewFile(); + FileUtils.logToFile(DateFormat.getDateInstance().format(f.getCreatedAt()), filename); + FileUtils.logToFile(f.getUser().getBio(), filename); + FileUtils.logToFile(f.getUser().getDisplayName(), filename); + FileUtils.logToFile(f.getUser().getLogo(), filename); + FileUtils.logToFile(f.getUser().getName(), filename); + FileUtils.logToFile(f.getUser().getType(), filename); + FileUtils.logToFile(DateFormat.getDateInstance().format(f.getUser().getUpdatedAt()), filename); + } catch (IOException e) { + e.printStackTrace(); } } private void AnnounceFollower(ChannelFollow f) { - System.out.println("Thanks for following "+f.getUser().getDisplayName()+"!"); + //System.out.println("Thanks for following "+f.getUser().getDisplayName()+"!"); + AddFollowerToQueue(f.getUser()); + } + + private void AddFollowerToQueue(int id) { + follower_queue.add(new Announcement(id)); + } + + private void AddFollowerToQueue(User user) { + follower_queue.add(new Announcement(user)); } private boolean CreateUserFolder() { @@ -205,8 +334,58 @@ public class TwitchModule extends Module{ } } + private void LogMessageToFile(String message) { + Calendar cal = Calendar.getInstance(); + FileUtils.logToFile(message, sigIRC.BASEDIR+"sigIRC/logs/log_"+(cal.get(Calendar.MONTH)+1)+"_"+cal.get(Calendar.DAY_OF_MONTH)+"_"+cal.get(Calendar.YEAR)+".txt"); + } + public void draw(Graphics g){ super.draw(g); - DrawUtils.drawText(g, bounds.getX(), bounds.getY()+24, Color.RED, console); + //DrawUtils.drawText(g, bounds.getX(), bounds.getY()+24, Color.RED, console); + DrawFollowerAnnouncement(g); + } + + private void DrawFollowerAnnouncement(Graphics g) { + if (lastFollowerAnnouncement>0) { + final int ticksPassed = FOLLOWERANNOUNCEMENTTIME-lastFollowerAnnouncement; + final int yAlteration = + (sigIRC.twitchmodule_follower_img_animation) + ? Math.max(0,(int)(200-(ticksPassed*(200d/30)))) + : 0; + final int canvasYOffset = + (sigIRC.twitchmodule_follower_img_animation) + ? Math.min(follower_img.getHeight(),yAlteration) + : 0; + final int xAlteration = + (sigIRC.twitchmodule_follower_img_animation) + ? (ticksPassed>=270)?(int)(-((ticksPassed-270)*(500d/30))):0 + : 0; + final int canvasXOffset = + (sigIRC.twitchmodule_follower_img_animation) + ? Math.min(follower_img.getWidth(),xAlteration) + : 0; + //System.out.println(yAlteration); + //g.drawImage(follower_img, (int)bounds.getX()+xAlteration, (int)bounds.getY()+yAlteration, sigIRC.panel); + //g.drawImage(follower_img, (int)bounds.getX(), (int)bounds.getY(), , , sigIRC.panel) + g.drawImage(follower_img, (int)bounds.getX(), (int)bounds.getY()+canvasYOffset, (int)bounds.getX()+follower_img.getWidth()+canvasXOffset, (int)bounds.getY()+follower_img.getHeight(), + -xAlteration, 0, follower_img.getWidth(), follower_img.getHeight()-yAlteration, sigIRC.panel); + Rectangle2D usernameTextsize = TextUtils.calculateStringBoundsFont(announcedFollowerUser.getDisplayName(), sigIRC.panel.programFont); + int textY = (int)bounds.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration; + int textX = (int)bounds.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration; + if (textYbounds.getX()) { + DrawUtils.drawCenteredText(g, sigIRC.panel.programFont, (int)bounds.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration, (int)bounds.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration, Color.BLACK, announcedFollowerUser.getDisplayName()); + } + if (!announcedFollowerUser.getBio().equalsIgnoreCase("null")) { + if (followerUserLogo!=null) { + final int image_size = sigIRC.twitchmodule_newfollowerImgLogoSize; + int img_startx = (int)(bounds.getX()+bounds.getWidth()-ticksPassed*3-(image_size+4)); + int img_starty = (int)(bounds.getY()+follower_img.getHeight()+2-image_size/2); + //g.setColor(Color.BLACK); + //g.drawRect(img_startx, img_starty, image_size, image_size); + g.drawImage(followerUserLogo, img_startx, img_starty, img_startx+image_size, img_starty+image_size, 0, 0, followerUserLogo.getWidth(), followerUserLogo.getHeight(), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerImgBackgroundColor), sigIRC.panel); + } + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, bounds.getX()+bounds.getWidth()-ticksPassed*3, bounds.getY()+follower_img.getHeight()+2+8, 2, TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerTextColor), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerShadowTextColor), announcedFollowerUser.getBio()); + } + } } } diff --git a/src/sig/sigIRC.java b/src/sig/sigIRC.java index be91c78..a6e7d29 100644 --- a/src/sig/sigIRC.java +++ b/src/sig/sigIRC.java @@ -17,6 +17,8 @@ import java.awt.Graphics; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -48,7 +50,7 @@ public class sigIRC{ final public static int ROWSEPARATION = 64; final public static String BASEDIR = "./"; final public static String WINDOWTITLE = "sigIRCv2"; - static ConfigFile config; + public static ConfigFile config; static String server; static String nickname; public static String channel; @@ -77,6 +79,22 @@ public class sigIRC{ static boolean downloadsComplete=false; static boolean hardwareAcceleration=true; static boolean playedoAuthSoundOnce=false; + public static int twitchmodule_width=500; + public static int twitchmodule_height=120; + public static int twitchmodule_X=320; + public static int twitchmodule_Y=312; + public static String twitchmodule_follower_img="sigIRC/glaceon_follower.png"; + public static boolean twitchmodule_follower_img_animation=true; + public static int twitchmodule_followerText_centerX=292; + public static int twitchmodule_followerText_Y=42; + public static int touhoumothermodule_width=320; + public static int touhoumothermodule_height=312; + public static int touhoumothermodule_X=0; + public static int touhoumothermodule_Y=312; + public static String twitchmodule_newfollowerImgBackgroundColor="90,90,90"; + public static String twitchmodule_newfollowerShadowTextColor="26,90,150"; + public static String twitchmodule_newfollowerTextColor="255,255,255"; + public static int twitchmodule_newfollowerImgLogoSize=32; public static void main(String[] args) { @@ -101,6 +119,22 @@ public class sigIRC{ touhoumotherConsoleFont = config.getProperty("touhoumotherConsoleFont","Agency FB Bold"); touhoumothermodule_enabled = config.getBoolean("Module_touhoumother_Enabled",true); twitchmodule_enabled = config.getBoolean("Module_twitch_Enabled",true); + twitchmodule_width = config.getInteger("TWITCH_module_width",500); + twitchmodule_height = config.getInteger("TWITCH_module_height",120); + twitchmodule_follower_img = config.getProperty("TWITCH_module_follower_img","sigIRC/glaceon_follower.png"); + twitchmodule_follower_img_animation = config.getBoolean("TWITCH_module_follower_img_animation",true); + twitchmodule_followerText_centerX = config.getInteger("TWITCH_module_followerText_centerX",292); + twitchmodule_followerText_Y = config.getInteger("TWITCH_module_followerText_Y",42); + twitchmodule_newfollowerImgLogoSize = config.getInteger("TWITCH_module_newFollowerImgLogoSize",32); + twitchmodule_newfollowerImgBackgroundColor = config.getProperty("TWITCH_module_newFollowerImgBackgroundColor","90,90,90"); + twitchmodule_newfollowerShadowTextColor = config.getProperty("TWITCH_module_newFollowerShadowTextColor","26,90,150"); + twitchmodule_newfollowerTextColor = config.getProperty("TWITCH_module_newFollowerTextColor","255,255,255"); + twitchmodule_X = config.getInteger("TWITCH_module_X",320); + twitchmodule_Y = config.getInteger("TWITCH_module_Y",312); + touhoumothermodule_X = config.getInteger("TOUHOUMOTHER_module_X",0); + touhoumothermodule_Y = config.getInteger("TOUHOUMOTHER_module_Y",312); + touhoumothermodule_width = config.getInteger("TOUHOUMOTHER_module_width",320); + touhoumothermodule_height = config.getInteger("TOUHOUMOTHER_module_height",312); hardwareAcceleration = config.getBoolean("hardware_acceleration",true); DownloadAllRequiredDependencies(); @@ -118,7 +152,6 @@ public class sigIRC{ SwingUtilities.invokeLater(new Runnable() { public void run() { window = createAndShowGUI(); - InitializeModules(); performTwitchEmoteUpdate(); downloadsComplete=true; @@ -163,13 +196,13 @@ public class sigIRC{ } if (touhoumothermodule_enabled) { modules.add(new TouhouMotherModule( - new Rectangle(0,panel.getHeight()/2,320,panel.getHeight()/2), + new Rectangle(touhoumothermodule_X,touhoumothermodule_Y,touhoumothermodule_width,touhoumothermodule_height), "Touhou Mother" )); } if (twitchmodule_enabled) { modules.add(new TwitchModule( - new Rectangle(320,panel.getHeight()/2,panel.getWidth()-320,96), + new Rectangle(twitchmodule_X,twitchmodule_Y,twitchmodule_width,twitchmodule_height), "Twitch" )); } @@ -347,6 +380,7 @@ public class sigIRC{ f.setAlwaysOnTop(true); } //f.setOpacity(0.5f); + f.addWindowListener(sigIRC.panel); return f; } diff --git a/src/sig/utils/DrawUtils.java b/src/sig/utils/DrawUtils.java index a54f700..289872a 100644 --- a/src/sig/utils/DrawUtils.java +++ b/src/sig/utils/DrawUtils.java @@ -60,4 +60,14 @@ public class DrawUtils { g.setColor(healthbarcol); g.fill3DRect((int)bounds.getX()+1, (int)bounds.getY()+1, (int)(bounds.getWidth()*pct)-1, (int)bounds.getHeight()-1, true); } + /** + * Centers the text along the X Axis. + */ + public static void drawCenteredText(Graphics g, Font font, int x, int y, Color color, String text) { + AttributedString as = new AttributedString(text); + as.addAttribute(TextAttribute.FONT, font); + g.setColor(color); + Rectangle2D textBounds = TextUtils.calculateStringBoundsFont(text, font); + g.drawString(as.getIterator(),(int)(x-textBounds.getWidth()/2),(int)(y+textBounds.getHeight())); + } } diff --git a/src/sig/utils/FileUtils.java b/src/sig/utils/FileUtils.java index ae64ef8..049481d 100644 --- a/src/sig/utils/FileUtils.java +++ b/src/sig/utils/FileUtils.java @@ -107,15 +107,22 @@ public class FileUtils { } public static void copyFile(File source, File dest) throws IOException { - FileChannel sourceChannel = null; - FileChannel destChannel = null; - try { - sourceChannel = new FileInputStream(source).getChannel(); - destChannel = new FileOutputStream(dest).getChannel(); - destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); - }finally{ - sourceChannel.close(); - destChannel.close(); - } - } + FileChannel sourceChannel = null; + FileChannel destChannel = null; + try { + sourceChannel = new FileInputStream(source).getChannel(); + destChannel = new FileOutputStream(dest).getChannel(); + destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); + }finally{ + sourceChannel.close(); + destChannel.close(); + } + } + + public static void deleteFile(String filename) { + File file = new File(filename); + if (file.exists()) { + file.delete(); + } + } } diff --git a/src/sig/utils/TextUtils.java b/src/sig/utils/TextUtils.java index 5188d50..4725f83 100644 --- a/src/sig/utils/TextUtils.java +++ b/src/sig/utils/TextUtils.java @@ -1,4 +1,5 @@ package sig.utils; +import java.awt.Color; import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; @@ -73,4 +74,12 @@ public class TextUtils { public static String getActualChannelName() { return sigIRC.channel.replaceFirst("#", ""); } + + /** + * Converts a three CSV value to RGB value. + */ + public static Color convertStringToColor(String col) { + String[] split = col.split(","); + return new Color(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2])); + } }