Block user operations

This commit is contained in:
bancika
2012-08-23 15:44:33 +00:00
parent 58ac3d8148
commit 585351bb11
3 changed files with 52 additions and 34 deletions
@@ -1,42 +1,56 @@
package org.diylc.swing.gui;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Cursor;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseListener;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JPanel;
public class CustomGlassPane extends JComponent {
public class CustomGlassPane extends JPanel implements MouseListener,
KeyListener {
private static final long serialVersionUID = 1L;
private Icon icon;
public static final CustomGlassPane GLASS_PANE = new CustomGlassPane();
private static final long serialVersionUID = -5344758920442881290L;
public CustomGlassPane() {
super();
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
if (icon != null) {
repaint();
}
}
});
}
public void setCursorIcon(Icon icon) {
this.icon = icon;
addKeyListener(this);
addMouseListener(this);
setCursor(new Cursor(Cursor.WAIT_CURSOR));
setOpaque(false);
}
@Override
public void paint(Graphics g) {
Point cursor = getMousePosition();
if ((icon != null) && (cursor != null)) {
Graphics2D g2d = (Graphics2D) g;
icon.paintIcon(this, g2d, cursor.x + 10, cursor.y + 10);
}
public void mouseClicked(final MouseEvent pArg0) {
}
@Override
public void mouseEntered(final MouseEvent pArg0) {
}
@Override
public void mouseExited(final MouseEvent pArg0) {
}
@Override
public void mousePressed(final MouseEvent pArg0) {
}
@Override
public void mouseReleased(final MouseEvent pArg0) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
@@ -148,7 +148,7 @@ public class MainFrame extends JFrame implements ISwingUI {
}
});
// setGlassPane(new CustomGlassPane());
setGlassPane(new CustomGlassPane());
// getGlassPane().setVisible(true);
}
@@ -313,10 +313,10 @@ public class MainFrame extends JFrame implements ISwingUI {
menu.add(submenu);
menuMap.put(name, submenu);
}
@Override
public <T extends Object> void executeBackgroundTask(final ITask<T> task) {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
getGlassPane().setVisible(true);
SwingWorker<T, Void> worker = new SwingWorker<T, Void>() {
@Override
@@ -333,7 +333,7 @@ public class MainFrame extends JFrame implements ISwingUI {
LOG.error("Task failed", e);
task.failed(e);
}
setCursor(Cursor.getDefaultCursor());
getGlassPane().setVisible(false);
}
};
worker.execute();
@@ -769,7 +769,11 @@
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Polygon Ground Fill component</description>
</org.diylc.appframework.update.Change>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Block user actions during long operations (print, export, etc)</description>
</org.diylc.appframework.update.Change>
</changes>
<url>http://code.google.com/p/diy-layout-creator/downloads/list</url>
</org.diylc.appframework.update.Version>