Code was formatted

This commit is contained in:
Robert Vokac 2024-01-21 09:14:47 +00:00
parent 7f58f2422a
commit 0b06f31d84
No known key found for this signature in database
GPG Key ID: 693D30BEE3329055
9 changed files with 642 additions and 713 deletions

View File

@ -1,3 +1,3 @@
mvn clean package
mv target/*jar-with-all-dependencies*.jar C:/Users/Robert/Desktop/rv
rm -r target
rm -r target

62
pom.xml
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@ -48,35 +48,35 @@
...
-->
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>rvc.timecalc.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Build-Date>${timestamp}</Build-Date>
</manifestEntries>
</archive>
<!-- <descriptorRefs>-->
<!-- <descriptorRef>jar-with-dependencies</descriptorRef>-->
<!-- </descriptorRefs>-->
<descriptors>
<descriptor>./src/main/resources/install.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>rvc.timecalc.Main</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Build-Date>${timestamp}</Build-Date>
</manifestEntries>
</archive>
<!-- <descriptorRefs>-->
<!-- <descriptorRef>jar-with-dependencies</descriptorRef>-->
<!-- </descriptorRefs>-->
<descriptors>
<descriptor>./src/main/resources/install.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -18,15 +18,11 @@ import java.util.GregorianCalendar;
//https://kodejava.org/how-do-i-write-a-simple-analog-clock-using-java-2d/
public class AnalogClock extends JPanel {
private static final Color FOREGROUND_COLOR = new Color(220, 220, 220);
private static final Color BACKGROUND_COLOR = new Color(238,238,238);
private static final Color FOREGROUND_COLOR = new Color(220, 220, 220);
private static final Color BACKGROUND_COLOR = new Color(238, 238, 238);
private boolean highlight = false;
public void setHighlight(boolean highlight) {
this.highlight = highlight;
}
public AnalogClock() {
setPreferredSize(new Dimension(400, 300));
setBackground(BACKGROUND_COLOR);
@ -60,6 +56,18 @@ public class AnalogClock extends JPanel {
});
}
public static void main(String[] args) {
JFrame frame = new JFrame("Analog Clock");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new AnalogClock());
frame.pack();
frame.setVisible(true);
}
public void setHighlight(boolean highlight) {
this.highlight = highlight;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
@ -77,8 +85,11 @@ public class AnalogClock extends JPanel {
int hour = time.get(Calendar.HOUR_OF_DAY);
drawHand(g2d, side / 2 - 10, second / 60.0, 0.5f, Color.RED);
drawHand(g2d, side / 2 - 20, minute / 60.0 + second / 60.0 / 60.0, 2.0f, Color.BLUE);
drawHand(g2d, side / 2 - 40, hour / 12.0 + minute / 60.0 / 12 + second / 60 / 60 / 12, 4.0f, Color.BLACK);
drawHand(g2d, side / 2 - 20, minute / 60.0 + second / 60.0 / 60.0, 2.0f,
Color.BLUE);
drawHand(g2d, side / 2 - 40,
hour / 12.0 + minute / 60.0 / 12 + second / 60 / 60 / 12, 4.0f,
Color.BLACK);
// Draw clock numbers and circle
drawClockFace(g2d, centerX, centerY, side / 2 - 40);
@ -86,7 +97,7 @@ public class AnalogClock extends JPanel {
private void drawHand(Graphics2D g2d, int length, double value,
float stroke, Color color) {
length= length - 4;
length = length - 4;
double angle = Math.PI * 2 * (value - 0.25);
int endX = (int) (getWidth() / 2 + length * Math.cos(angle));
int endY = (int) (getHeight() / 2 + length * Math.sin(angle));
@ -100,13 +111,13 @@ public class AnalogClock extends JPanel {
int radius) {
g2d.setStroke(new BasicStroke(2.0f));
g2d.setColor(highlight ? Color.BLACK : FOREGROUND_COLOR);
// System.out.println("centerX=" + centerX);
// System.out.println("centerY=" + centerY);
// System.out.println("radius=" + radius);
// System.out.println("centerX=" + centerX);
// System.out.println("centerY=" + centerY);
// System.out.println("radius=" + radius);
g2d.drawOval(1, 1, centerX * 2 - 4, centerY * 2 - 4);
g2d.drawOval(2, 2, centerX * 2 - 4, centerY * 2 - 4);
// g2d.drawOval(3, 3, centerX * 2 - 6, centerY * 2 - 6);
// g2d.drawOval(4, 4, centerX * 2 - 8, centerY * 2 - 8);
// g2d.drawOval(3, 3, centerX * 2 - 6, centerY * 2 - 6);
// g2d.drawOval(4, 4, centerX * 2 - 8, centerY * 2 - 8);
for (int i = 1; i <= 12; i++) {
double angle = Math.PI * 2 * (i / 12.0 - 0.25);
@ -117,12 +128,4 @@ public class AnalogClock extends JPanel {
g2d.drawString(Integer.toString(i), dx, dy);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Analog Clock");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new AnalogClock());
frame.pack();
frame.setVisible(true);
}
}

View File

@ -8,34 +8,35 @@ import javax.swing.JOptionPane;
*/
public class Main {
public static void main(String[] args) {
while(true) {
while (true) {
boolean test = false;
String startTime = test ? "7:00" : (String) JOptionPane.showInputDialog(
null,
"Start Time:",
"Start Time",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"7:00"
);
String overTime = test ? "0:00" : (String) JOptionPane.showInputDialog(
null,
"Overtime:",
"Overtime",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"0:00"
);
String startTime =
test ? "7:00" : (String) JOptionPane.showInputDialog(
null,
"Start Time:",
"Start Time",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"7:00"
);
String overTime =
test ? "0:00" : (String) JOptionPane.showInputDialog(
null,
"Overtime:",
"Overtime",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"0:00"
);
try {
TimeCalcWindow timeCalc =
new TimeCalcWindow(startTime, overTime);
} catch(Exception e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage(), e.getMessage(), JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage(),
e.getMessage(), JOptionPane.ERROR_MESSAGE);
}
}

View File

@ -15,14 +15,8 @@ public class ProgressSquare extends JPanel {
private int side = 0;
private int square;
private double donePercent = 0;
public void setDonePercent(double donePercent) {
this.donePercent = donePercent;
}
public ProgressSquare() {
setPreferredSize(new Dimension(400, 400));
setBackground(BACKGROUND_COLOR);
@ -30,10 +24,14 @@ public class ProgressSquare extends JPanel {
}
public void setDonePercent(double donePercent) {
this.donePercent = donePercent;
}
@Override
public void paintComponent(Graphics g) {
if(side == 0) {
if (side == 0) {
this.side = Math.min(getWidth(), getHeight());
this.square = side * side;
}
@ -43,37 +41,37 @@ public class ProgressSquare extends JPanel {
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// System.out.println("square=" + square);
int dotNumber = (int)(donePercent * square);
// System.out.println("square=" + square);
int dotNumber = (int) (donePercent * square);
int y = dotNumber / side;
int x = dotNumber - y * side;
// System.out.println("dotNumber=" + dotNumber);
// System.out.println("x=" + x);
// System.out.println("y=" + y);
if(y > 1) {
// System.out.println("dotNumber=" + dotNumber);
// System.out.println("x=" + x);
// System.out.println("y=" + y);
if (y > 1) {
g2d.setColor(Color.GRAY);
g2d.fillRect(side - 4, side - 4, 4, 4);
g2d.fillRect(1, side - 4, 4, 4);
g2d.fillRect(side - 4, side - 4, 4, 4);
g2d.fillRect(1, side - 4, 4, 4);
g2d.setColor(FOREGROUND_COLOR);
g2d.fillRect(1, 1, side, y - 1);
if(x>1) {
g2d.drawRect(1, y, x - 1, 1);
}
g2d.fillRect(1, 1, side, y - 1);
if (x > 1) {
g2d.drawRect(1, y, x - 1, 1);
}
g2d.setColor(Color.GRAY);
g2d.fillRect(side - 4, 1, 4, 4);
g2d.fillRect(1, 1, 4, 4);
g2d.setColor(Color.GRAY);
g2d.drawLine(1, 1, x, y);
// g2d.drawLine(1+1, 1+1, x+1, y+1);
g2d.drawLine(1, 1+1, x, y+1);
g2d.drawLine(1, 1+1, x, y+1);
g2d.setColor(Color.GRAY);
g2d.drawLine(1, 1, x, y);
// g2d.drawLine(1+1, 1+1, x+1, y+1);
g2d.drawLine(1, 1 + 1, x, y + 1);
g2d.drawLine(1, 1 + 1, x, y + 1);
g2d.setColor(Color.BLUE);
g2d.drawLine(x-10, y-10, x+10, y+10);
g2d.drawLine(x+10, y-10, x-10, y+10);
g2d.setColor(FOREGROUND_COLOR);
g2d.drawLine(x - 10, y - 10, x + 10, y + 10);
g2d.drawLine(x + 10, y - 10, x - 10, y + 10);
g2d.setColor(FOREGROUND_COLOR);
}
}

File diff suppressed because one or more lines are too long

View File

@ -2,550 +2,275 @@ package rvc.timecalc;
/**
* Java Toaster is a java utility class for your swing applications
* that show an animate box coming from the bottom of your screen
* with a notification message and/or an associated image
* with a notification message and/or an associated image
* (like msn online/offline notifications).
*
* <p>
* Toaster panel in windows system follow the taskbar; So if
* the taskbar is into the bottom the panel coming from the bottom
* and if the taskbar is on the top then the panel coming from the top.
*
* <p>
* This is a simple example of utilization:
*
* import com.nitido.utils.toaster.*;
* import javax.swing.*;
*
* public class ToasterTest
* {
*
* public static void main(String[] args)
* {
* // Initialize toaster manager...
* Toaster toasterManager = new Toaster();
*
* // Show a simple toaster
* toasterManager.showToaster( new ImageIcon( "mylogo.gif" ), "A simple toaster with an image" );
* }
* }
* <p>
* import com.nitido.utils.toaster.*;
* import javax.swing.*;
* <p>
* public class ToasterTest
* {
* <p>
* public static void main(String[] args)
* {
* // Initialize toaster manager...
* Toaster toasterManager = new Toaster();
* <p>
* // Show a simple toaster
* toasterManager.showToaster( new ImageIcon( "mylogo.gif" ), "A simple toaster with an image" );
* }
* }
*/
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JWindow;
import javax.swing.border.EtchedBorder;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
/**
* Class to show tosters in multiplatform
*
*
* @author daniele piras
*
*
*/
public class Toaster
{
// Width of the toster
private int toasterWidth = 300;
public class Toaster {
private static final long serialVersionUID = 1L;
// Set the margin
int margin;
// Flag that indicate if use alwaysOnTop or not.
// method always on top start only SINCE JDK 5 !
boolean useAlwaysOnTop = true;
// Width of the toster
private int toasterWidth = 300;
// Height of the toster
private int toasterHeight = 80;
// Step for the toaster
private int step = 20;
// Step time
private int stepTime = 20;
// Show time
private int displayTime = 3000;
// Current number of toaster...
private int currentNumberOfToaster = 0;
// Last opened toaster
private int maxToaster = 0;
// Max number of toasters for the sceen
private int maxToasterInSceen;
// Background image
private Image backgroundImage;
// Font used to display message
private Font font;
// Color for border
private Color borderColor;
// Color for toaster
private Color toasterColor;
// Set message color
private Color messageColor;
// Height of the toster
private int toasterHeight = 80;
// Step for the toaster
private int step = 20;
// Step time
private int stepTime = 20;
// Show time
private int displayTime = 3000;
// Current number of toaster...
private int currentNumberOfToaster = 0;
// Last opened toaster
private int maxToaster = 0;
// Max number of toasters for the sceen
private int maxToasterInSceen;
// Background image
private Image backgroundImage;
// Font used to display message
private Font font;
// Color for border
private Color borderColor;
// Color for toaster
private Color toasterColor;
// Set message color
private Color messageColor;
// Set the margin
int margin;
// Flag that indicate if use alwaysOnTop or not.
// method always on top start only SINCE JDK 5 !
boolean useAlwaysOnTop = true;
private static final long serialVersionUID = 1L;
/**
* Constructor to initialized toaster component...
*
* @author daniele piras
*
*/
public Toaster()
{
// Set default font...
font = new Font("Arial", Font.BOLD, 12);
// Border color
borderColor = new Color(245, 153, 15);
toasterColor = Color.WHITE;
messageColor = Color.BLACK;
useAlwaysOnTop = true;
// Verify AlwaysOnTop Flag...
try
{
JWindow.class.getMethod( "setAlwaysOnTop", new Class[] { Boolean.class } );
}
catch( Exception e )
{
useAlwaysOnTop = false;
}
}
/**
* Class that rappresent a single toaster
*
* @author daniele piras
*
*/
class SingleToaster extends JWindow
{
private static final long serialVersionUID = 1L;
// Label to store Icon
private JLabel iconLabel = new JLabel();
// Text area for the message
private JTextArea message = new JTextArea();
/***
* Simple costructor that initialized components...
*/
public SingleToaster()
{
initComponents();
}
/***
* Function to initialized components
*/
private void initComponents()
{
setSize(toasterWidth, toasterHeight);
message.setFont( getToasterMessageFont() );
JPanel externalPanel = new JPanel(new BorderLayout(1, 1));
externalPanel.setBackground( getBorderColor() );
JPanel innerPanel = new JPanel(new BorderLayout( getMargin(), getMargin() ))
{
@Override
public void paint(Graphics g) {
if ( getBackgroundImage() != null )
{
g.drawImage(getBackgroundImage(),0,0,null);
}
super.paint(g);
/**
* Constructor to initialized toaster component...
*
* @author daniele piras
*
*/
public Toaster() {
// Set default font...
font = new Font("Arial", Font.BOLD, 12);
// Border color
borderColor = new Color(245, 153, 15);
toasterColor = Color.WHITE;
messageColor = Color.BLACK;
useAlwaysOnTop = true;
// Verify AlwaysOnTop Flag...
try {
JWindow.class
.getMethod("setAlwaysOnTop", new Class[] {Boolean.class});
} catch (Exception e) {
useAlwaysOnTop = false;
}
};
if ( getBackgroundImage() != null )
{
innerPanel.setOpaque(false);
message.setOpaque(false);
iconLabel.setOpaque(false);
}
innerPanel.setBackground( getToasterColor() );
message.setBackground( getToasterColor() );
message.setMargin( new Insets( 2,2,2,2 ) );
message.setLineWrap( true );
message.setWrapStyleWord( true );
EtchedBorder etchedBorder = (EtchedBorder) BorderFactory
.createEtchedBorder();
externalPanel.setBorder(etchedBorder);
externalPanel.add(innerPanel);
message.setForeground( getMessageColor() );
innerPanel.add(iconLabel, BorderLayout.WEST);
innerPanel.add(message, BorderLayout.CENTER);
getContentPane().add(externalPanel);
JButton closeButton=new JButton("Close");
closeButton.setBounds(480,10,100, 40);
innerPanel.add(closeButton,BorderLayout.BEFORE_FIRST_LINE);
closeButton.addActionListener(e -> {setVisible(false); dispose();});
}
/***
* Start toaster animation...
*/
public void animate()
{
( new Animation( this ) ).start();
}
}
/***
* Class that manage the animation
*/
class Animation extends Thread
{
SingleToaster toaster;
public Animation( SingleToaster toaster )
{
this.toaster = toaster;
}
/**
* Animate vertically the toaster. The toaster could be moved from bottom
* to upper or to upper to bottom
* @param posx
* @param fromY
* @param toY
* @throws InterruptedException
*/
protected void animateVertically( int posx, int fromY, int toY ) throws InterruptedException
{
toaster.setLocation( posx, fromY );
if ( toY < fromY )
{
for (int i = fromY; i > toY; i -= step)
{
toaster.setLocation(posx, i);
Thread.sleep(stepTime);
}
}
else
{
for (int i = fromY; i < toY; i += step)
{
toaster.setLocation(posx, i);
Thread.sleep(stepTime);
}
}
toaster.setLocation( posx, toY );
}
public void run()
{
try
{
boolean animateFromBottom = true;
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Rectangle screenRect = ge.getMaximumWindowBounds();
int screenHeight = (int) screenRect.height;
int startYPosition;
int stopYPosition;
if ( screenRect.y > 0 )
{
animateFromBottom = false; // Animate from top!
}
maxToasterInSceen = screenHeight / toasterHeight;
int posx = (int) screenRect.width - toasterWidth - 1;
toaster.setLocation(posx, screenHeight);
toaster.setVisible(true);
if ( useAlwaysOnTop )
{
toaster.setAlwaysOnTop(true);
}
if ( animateFromBottom )
{
startYPosition = screenHeight;
stopYPosition = startYPosition - toasterHeight - 1;
if ( currentNumberOfToaster > 0 )
{
stopYPosition = stopYPosition - ( maxToaster % maxToasterInSceen * toasterHeight );
}
else
{
maxToaster = 0;
}
}
else
{
startYPosition = screenRect.y - toasterHeight;
stopYPosition = screenRect.y;
if ( currentNumberOfToaster > 0 )
{
stopYPosition = stopYPosition + ( maxToaster % maxToasterInSceen * toasterHeight );
}
else
{
maxToaster = 0;
}
}
currentNumberOfToaster++;
maxToaster++;
animateVertically( posx, startYPosition, stopYPosition );
Thread.sleep(displayTime);
animateVertically( posx, stopYPosition, startYPosition );
currentNumberOfToaster--;
toaster.setVisible(false);
toaster.dispose();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* Show a toaster with the specified message and the associated icon.
*/
public void showToaster(Icon icon, String msg)
{
SingleToaster singleToaster = new SingleToaster();
if ( icon != null )
{
singleToaster.iconLabel.setIcon( icon );
}
singleToaster.message.setText( msg );
singleToaster.toFront( );
singleToaster.setAlwaysOnTop(true);
singleToaster.animate();
}
/**
* Show a toaster with the specified message and the associated icon.
*/
public void showToaster(Icon icon, String msg) {
SingleToaster singleToaster = new SingleToaster();
if (icon != null) {
singleToaster.iconLabel.setIcon(icon);
}
singleToaster.message.setText(msg);
/**
* Show a toaster with the specified message.
*/
public void showToaster( String msg )
{
showToaster( null, msg );
}
singleToaster.toFront();
singleToaster.setAlwaysOnTop(true);
singleToaster.animate();
}
/**
* @return Returns the font
*/
public Font getToasterMessageFont()
{
// TODO Auto-generated method stub
return font;
}
/**
* Show a toaster with the specified message.
*/
public void showToaster(String msg) {
showToaster(null, msg);
}
/**
* Set the font for the message
*/
public void setToasterMessageFont( Font f)
{
font = f;
}
/**
* @return Returns the font
*/
public Font getToasterMessageFont() {
// TODO Auto-generated method stub
return font;
}
/**
* @return Returns the borderColor.
*/
public Color getBorderColor()
{
return borderColor;
}
/**
* Set the font for the message
*/
public void setToasterMessageFont(Font f) {
font = f;
}
/**
* @return Returns the borderColor.
*/
public Color getBorderColor() {
return borderColor;
}
/**
* @param borderColor The borderColor to set.
*/
public void setBorderColor(Color borderColor) {
this.borderColor = borderColor;
}
/**
* @param borderColor The borderColor to set.
*/
public void setBorderColor(Color borderColor)
{
this.borderColor = borderColor;
}
/**
* @return Returns the displayTime.
*/
public int getDisplayTime() {
return displayTime;
}
/**
* @param displayTime The displayTime to set.
*/
public void setDisplayTime(int displayTime) {
this.displayTime = displayTime;
}
/**
* @return Returns the margin.
*/
public int getMargin() {
return margin;
}
/**
* @return Returns the displayTime.
*/
public int getDisplayTime()
{
return displayTime;
}
/**
* @param margin The margin to set.
*/
public void setMargin(int margin) {
this.margin = margin;
}
/**
* @return Returns the messageColor.
*/
public Color getMessageColor() {
return messageColor;
}
/**
* @param messageColor The messageColor to set.
*/
public void setMessageColor(Color messageColor) {
this.messageColor = messageColor;
}
/**
* @param displayTime The displayTime to set.
*/
public void setDisplayTime(int displayTime)
{
this.displayTime = displayTime;
}
/**
* @return Returns the step.
*/
public int getStep() {
return step;
}
/**
* @param step The step to set.
*/
public void setStep(int step) {
this.step = step;
}
/**
* @return Returns the stepTime.
*/
public int getStepTime() {
return stepTime;
}
/**
* @return Returns the margin.
*/
public int getMargin()
{
return margin;
}
/**
* @param stepTime The stepTime to set.
*/
public void setStepTime(int stepTime) {
this.stepTime = stepTime;
}
/**
* @return Returns the toasterColor.
*/
public Color getToasterColor() {
return toasterColor;
}
/**
* @param toasterColor The toasterColor to set.
*/
public void setToasterColor(Color toasterColor) {
this.toasterColor = toasterColor;
}
/**
* @param margin The margin to set.
*/
public void setMargin(int margin)
{
this.margin = margin;
}
/**
* @return Returns the toasterHeight.
*/
public int getToasterHeight() {
return toasterHeight;
}
/**
* @param toasterHeight The toasterHeight to set.
*/
public void setToasterHeight(int toasterHeight) {
this.toasterHeight = toasterHeight;
}
/**
* @return Returns the toasterWidth.
*/
public int getToasterWidth() {
return toasterWidth;
}
/**
* @return Returns the messageColor.
*/
public Color getMessageColor()
{
return messageColor;
}
/**
* @param messageColor The messageColor to set.
*/
public void setMessageColor(Color messageColor)
{
this.messageColor = messageColor;
}
/**
* @return Returns the step.
*/
public int getStep()
{
return step;
}
/**
* @param step The step to set.
*/
public void setStep(int step)
{
this.step = step;
}
/**
* @return Returns the stepTime.
*/
public int getStepTime()
{
return stepTime;
}
/**
* @param stepTime The stepTime to set.
*/
public void setStepTime(int stepTime)
{
this.stepTime = stepTime;
}
/**
* @return Returns the toasterColor.
*/
public Color getToasterColor()
{
return toasterColor;
}
/**
* @param toasterColor The toasterColor to set.
*/
public void setToasterColor(Color toasterColor)
{
this.toasterColor = toasterColor;
}
/**
* @return Returns the toasterHeight.
*/
public int getToasterHeight()
{
return toasterHeight;
}
/**
* @param toasterHeight The toasterHeight to set.
*/
public void setToasterHeight(int toasterHeight)
{
this.toasterHeight = toasterHeight;
}
/**
* @return Returns the toasterWidth.
*/
public int getToasterWidth()
{
return toasterWidth;
}
/**
* @param toasterWidth The toasterWidth to set.
*/
public void setToasterWidth(int toasterWidth)
{
this.toasterWidth = toasterWidth;
}
/**
* @param toasterWidth The toasterWidth to set.
*/
public void setToasterWidth(int toasterWidth) {
this.toasterWidth = toasterWidth;
}
public Image getBackgroundImage() {
return backgroundImage;
@ -555,7 +280,182 @@ public class Toaster
this.backgroundImage = backgroundImage;
}
/**
* Class that rappresent a single toaster
*
* @author daniele piras
*
*/
class SingleToaster extends JWindow {
private static final long serialVersionUID = 1L;
// Label to store Icon
private JLabel iconLabel = new JLabel();
// Text area for the message
private JTextArea message = new JTextArea();
/***
* Simple costructor that initialized components...
*/
public SingleToaster() {
initComponents();
}
/***
* Function to initialized components
*/
private void initComponents() {
setSize(toasterWidth, toasterHeight);
message.setFont(getToasterMessageFont());
JPanel externalPanel = new JPanel(new BorderLayout(1, 1));
externalPanel.setBackground(getBorderColor());
JPanel innerPanel =
new JPanel(new BorderLayout(getMargin(), getMargin())) {
@Override
public void paint(Graphics g) {
if (getBackgroundImage() != null) {
g.drawImage(getBackgroundImage(), 0, 0, null);
}
super.paint(g);
}
};
if (getBackgroundImage() != null) {
innerPanel.setOpaque(false);
message.setOpaque(false);
iconLabel.setOpaque(false);
}
innerPanel.setBackground(getToasterColor());
message.setBackground(getToasterColor());
message.setMargin(new Insets(2, 2, 2, 2));
message.setLineWrap(true);
message.setWrapStyleWord(true);
EtchedBorder etchedBorder = (EtchedBorder) BorderFactory
.createEtchedBorder();
externalPanel.setBorder(etchedBorder);
externalPanel.add(innerPanel);
message.setForeground(getMessageColor());
innerPanel.add(iconLabel, BorderLayout.WEST);
innerPanel.add(message, BorderLayout.CENTER);
getContentPane().add(externalPanel);
JButton closeButton = new JButton("Close");
closeButton.setBounds(480, 10, 100, 40);
innerPanel.add(closeButton, BorderLayout.BEFORE_FIRST_LINE);
closeButton.addActionListener(e -> {
setVisible(false);
dispose();
});
}
/***
* Start toaster animation...
*/
public void animate() {
(new Animation(this)).start();
}
}
/***
* Class that manage the animation
*/
class Animation extends Thread {
SingleToaster toaster;
public Animation(SingleToaster toaster) {
this.toaster = toaster;
}
/**
* Animate vertically the toaster. The toaster could be moved from bottom
* to upper or to upper to bottom
* @param posx
* @param fromY
* @param toY
* @throws InterruptedException
*/
protected void animateVertically(int posx, int fromY, int toY)
throws InterruptedException {
toaster.setLocation(posx, fromY);
if (toY < fromY) {
for (int i = fromY; i > toY; i -= step) {
toaster.setLocation(posx, i);
Thread.sleep(stepTime);
}
} else {
for (int i = fromY; i < toY; i += step) {
toaster.setLocation(posx, i);
Thread.sleep(stepTime);
}
}
toaster.setLocation(posx, toY);
}
public void run() {
try {
boolean animateFromBottom = true;
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Rectangle screenRect = ge.getMaximumWindowBounds();
int screenHeight = (int) screenRect.height;
int startYPosition;
int stopYPosition;
if (screenRect.y > 0) {
animateFromBottom = false; // Animate from top!
}
maxToasterInSceen = screenHeight / toasterHeight;
int posx = (int) screenRect.width - toasterWidth - 1;
toaster.setLocation(posx, screenHeight);
toaster.setVisible(true);
if (useAlwaysOnTop) {
toaster.setAlwaysOnTop(true);
}
if (animateFromBottom) {
startYPosition = screenHeight;
stopYPosition = startYPosition - toasterHeight - 1;
if (currentNumberOfToaster > 0) {
stopYPosition =
stopYPosition - (maxToaster % maxToasterInSceen
* toasterHeight);
} else {
maxToaster = 0;
}
} else {
startYPosition = screenRect.y - toasterHeight;
stopYPosition = screenRect.y;
if (currentNumberOfToaster > 0) {
stopYPosition =
stopYPosition + (maxToaster % maxToasterInSceen
* toasterHeight);
} else {
maxToaster = 0;
}
}
currentNumberOfToaster++;
maxToaster++;
animateVertically(posx, startYPosition, stopYPosition);
Thread.sleep(displayTime);
animateVertically(posx, stopYPosition, startYPosition);
currentNumberOfToaster--;
toaster.setVisible(false);
toaster.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@ -14,8 +14,8 @@ public class Vtipy {
*/
private static final String[] array = new String[] {
"\"Když dosáhnete mého věku, 65 let, stanou se tři věci,\" vypráví důchodce Karel. \"Nejprve vás začne opouštět paměť a na ty dvě další si teď nemůžu vzpomenout.\"",
"Žán, odjíždíme zrovna někam? \"Ne, pane.\" \"Tak to mi právě ukradli auto.\"",
"Jestli se plaváním hubne, tak co dělají velryby špatně?",
"Žán, odjíždíme zrovna někam? \"Ne, pane.\" \"Tak to mi právě ukradli auto.\"",
"Jestli se plaváním hubne, tak co dělají velryby špatně?",
"\"Tak co, Pepíčku, kde jsi byl o prázdninách?\"\n"
+ "\n"
+ "\"S maminkou a jejím novým přítelem u moře.\"\n"
@ -84,14 +84,14 @@ public class Vtipy {
+ "\"Takže ty se opičíš po rodičích, co? To mi tedy řekni, co bys dělal, kdyby tvoje máma byla dementní a tvůj otec homosexuál?\"\n"
+ "\n"
+ "A Pepíček odpoví: \"Tak to bych nejspíš fandil Spartě.\"",
"Jsou Windows XP vir?\n"
+ "\n"
+ "???\n"
+ "\n"
+ "Samozřejmě nejsou, nebo\u009D vir se šíří bezplatně, má úsporný kód a něco dělá.",
"Víte, jaký je rozdíl mezi Windows a listím? . . . . . . . Listí padá jen na podzim.",
"Jeden opilec si zkrátil cestu domů přes hřbitov. Tam však spadl do vykopané jámy a usnul. Ráno se prochladlý probudil a nadává: Sakra, to je kosa. A paní, co byla kousek dál položit kytičku, povídá: Tak co ty ses odkopal?",
"Co ma spolecneho lahev a blondyna? - Od hrdla vyse jsou obe prazdne.",
"Jsou Windows XP vir?\n"
+ "\n"
+ "???\n"
+ "\n"
+ "Samozřejmě nejsou, nebo\u009D vir se šíří bezplatně, má úsporný kód a něco dělá.",
"Víte, jaký je rozdíl mezi Windows a listím? . . . . . . . Listí padá jen na podzim.",
"Jeden opilec si zkrátil cestu domů přes hřbitov. Tam však spadl do vykopané jámy a usnul. Ráno se prochladlý probudil a nadává: Sakra, to je kosa. A paní, co byla kousek dál položit kytičku, povídá: Tak co ty ses odkopal?",
"Co ma spolecneho lahev a blondyna? - Od hrdla vyse jsou obe prazdne.",
"Vždy, když dávám večer děti spát, přemýšlím, jestli je mám 'Uložit' anebo 'Uložit jako'..",
"Kolik je na světě Somálců?\n"
+ "\n"
@ -134,6 +134,6 @@ public class Vtipy {
t.setToasterColor(Color.GRAY);
Font font = new Font("sans", Font.PLAIN, 16);
t.setToasterMessageFont(font);
t.showToaster(array[((int) (Math.random() * ((double)array.length)))]);
t.showToaster(array[((int) (Math.random() * ((double) array.length)))]);
}
}

View File

@ -1,6 +1,6 @@
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-all-dependencies</id>
<formats>