SPARK-633 Copy Image capture and send functionality is broken on Linux

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@7937 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2007-04-09 13:20:48 +00:00
committed by derek
parent 77254459a5
commit 614e812c69

View File

@ -55,13 +55,6 @@ import org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.ReceiveMessage
import org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.SendMessage; import org.jivesoftware.sparkimpl.plugin.filetransfer.transfer.ui.SendMessage;
import org.jivesoftware.sparkimpl.plugin.manager.Enterprise; import org.jivesoftware.sparkimpl.plugin.manager.Enterprise;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import java.awt.Component; import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.GraphicsDevice; import java.awt.GraphicsDevice;
@ -91,6 +84,19 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
/** /**
* Responsible for the handling of File Transfer within Spark. You would use the SparkManager * Responsible for the handling of File Transfer within Spark. You would use the SparkManager
* for sending of images, files, multiple files and adding your own transfer listeners for plugin work. * for sending of images, files, multiple files and adding your own transfer listeners for plugin work.
@ -171,12 +177,12 @@ public class SparkTransferManager {
contactList.addFileDropListener(new FileDropListener() { contactList.addFileDropListener(new FileDropListener() {
public void filesDropped(Collection files, Component component) { public void filesDropped(Collection files, Component component) {
if (component instanceof ContactItem) { if (component instanceof ContactItem) {
ContactItem item = (ContactItem) component; ContactItem item = (ContactItem)component;
ChatRoom chatRoom = null; ChatRoom chatRoom = null;
Iterator iter = files.iterator(); Iterator iter = files.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
chatRoom = sendFile((File) iter.next(), item.getJID()); chatRoom = sendFile((File)iter.next(), item.getJID());
} }
if (chatRoom != null) { if (chatRoom != null) {
@ -228,7 +234,7 @@ public class SparkTransferManager {
} }
TranscriptWindow transcriptWindow = chatRoom.getTranscriptWindow(); TranscriptWindow transcriptWindow = chatRoom.getTranscriptWindow();
StyledDocument doc = (StyledDocument) transcriptWindow.getDocument(); StyledDocument doc = (StyledDocument)transcriptWindow.getDocument();
// The image must first be wrapped in a style // The image must first be wrapped in a style
Style style = doc.addStyle("StyleName", null); Style style = doc.addStyle("StyleName", null);
@ -313,12 +319,12 @@ public class SparkTransferManager {
fileDropListener = new FileDropListener() { fileDropListener = new FileDropListener() {
public void filesDropped(Collection files, Component component) { public void filesDropped(Collection files, Component component) {
if (component instanceof ChatRoomImpl) { if (component instanceof ChatRoomImpl) {
ChatRoomImpl roomImpl = (ChatRoomImpl) component; ChatRoomImpl roomImpl = (ChatRoomImpl)component;
Iterator iter = files.iterator(); Iterator iter = files.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
sendFile((File) iter.next(), roomImpl.getParticipantJID()); sendFile((File)iter.next(), roomImpl.getParticipantJID());
} }
SparkManager.getChatManager().getChatContainer().activateChatRoom(roomImpl); SparkManager.getChatManager().getChatContainer().activateChatRoom(roomImpl);
@ -358,7 +364,7 @@ public class SparkTransferManager {
} }
public void finished() { public void finished() {
ChatRoomImpl roomImpl = (ChatRoomImpl) room; ChatRoomImpl roomImpl = (ChatRoomImpl)room;
getFileChooser().setDialogTitle(Res.getString("title.select.file.to.send")); getFileChooser().setDialogTitle(Res.getString("title.select.file.to.send"));
getFileChooser().setMultiSelectionEnabled(true); getFileChooser().setMultiSelectionEnabled(true);
@ -440,7 +446,7 @@ public class SparkTransferManager {
} }
public void finished() { public void finished() {
final BufferedImage bufferedImage = (BufferedImage) get(); final BufferedImage bufferedImage = (BufferedImage)get();
if (bufferedImage == null) { if (bufferedImage == null) {
JOptionPane.showMessageDialog(null, Res.getString("title.error"), "Unable to process screenshot.", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, Res.getString("title.error"), "Unable to process screenshot.", JOptionPane.ERROR_MESSAGE);
return; return;
@ -456,7 +462,7 @@ public class SparkTransferManager {
Rectangle clip = mainPanel.getClip(); Rectangle clip = mainPanel.getClip();
BufferedImage newImage = null; BufferedImage newImage = null;
try { try {
newImage = bufferedImage.getSubimage((int) clip.getX(), (int) clip.getY(), (int) clip.getWidth(), (int) clip.getHeight()); newImage = bufferedImage.getSubimage((int)clip.getX(), (int)clip.getY(), (int)clip.getWidth(), (int)clip.getHeight());
} }
catch (Exception e1) { catch (Exception e1) {
@ -498,8 +504,6 @@ public class SparkTransferManager {
}); });
if (bufferedImage != null) {
frame.setUndecorated(true); frame.setUndecorated(true);
frame.setSize(bufferedImage.getWidth(null), bufferedImage.getHeight()); frame.setSize(bufferedImage.getWidth(null), bufferedImage.getHeight());
frame.getContentPane().add(mainPanel); frame.getContentPane().add(mainPanel);
@ -513,7 +517,7 @@ public class SparkTransferManager {
} }
else { else {
// Full-screen mode will be simulated // Full-screen mode will be simulated
} frame.setVisible(true);
} }
@ -526,18 +530,18 @@ public class SparkTransferManager {
private void addPresenceListener() { private void addPresenceListener() {
SparkManager.getConnection().addPacketListener(new PacketListener() { SparkManager.getConnection().addPacketListener(new PacketListener() {
public void processPacket(Packet packet) { public void processPacket(Packet packet) {
Presence presence = (Presence) packet; Presence presence = (Presence)packet;
if (presence.isAvailable()) { if (presence.isAvailable()) {
String bareJID = StringUtils.parseBareAddress(presence.getFrom()); String bareJID = StringUtils.parseBareAddress(presence.getFrom());
// Iterate through map. // Iterate through map.
List list = (List) waitMap.get(bareJID); List list = (List)waitMap.get(bareJID);
if (list != null) { if (list != null) {
// Iterate through list and send. // Iterate through list and send.
Iterator iter = list.iterator(); Iterator iter = list.iterator();
ChatRoom room = null; ChatRoom room = null;
while (iter.hasNext()) { while (iter.hasNext()) {
File file = (File) iter.next(); File file = (File)iter.next();
room = sendFile(file, bareJID); room = sendFile(file, bareJID);
} }
@ -568,7 +572,7 @@ public class SparkTransferManager {
String fullJID = PresenceManager.getFullyQualifiedJID(jid); String fullJID = PresenceManager.getFullyQualifiedJID(jid);
if (!PresenceManager.isOnline(jid)) { if (!PresenceManager.isOnline(jid)) {
List list = (List) waitMap.get(jid); List list = (List)waitMap.get(jid);
if (list == null) { if (list == null) {
list = new ArrayList(); list = new ArrayList();
} }
@ -604,7 +608,7 @@ public class SparkTransferManager {
TranscriptWindow transcriptWindow = chatRoom.getTranscriptWindow(); TranscriptWindow transcriptWindow = chatRoom.getTranscriptWindow();
StyledDocument doc = (StyledDocument) transcriptWindow.getDocument(); StyledDocument doc = (StyledDocument)transcriptWindow.getDocument();
// The image must first be wrapped in a style // The image must first be wrapped in a style
Style style = doc.addStyle("StyleName", null); Style style = doc.addStyle("StyleName", null);
@ -621,7 +625,7 @@ public class SparkTransferManager {
AndFilter presenceFilter = new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(bareJID)); AndFilter presenceFilter = new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(bareJID));
final PacketListener packetListener = new PacketListener() { final PacketListener packetListener = new PacketListener() {
public void processPacket(Packet packet) { public void processPacket(Packet packet) {
Presence presence = (Presence) packet; Presence presence = (Presence)packet;
if (!presence.isAvailable()) { if (!presence.isAvailable()) {
if (transfer != null) { if (transfer != null) {
transfer.cancel(); transfer.cancel();
@ -692,7 +696,7 @@ public class SparkTransferManager {
} }
public void finished() { public void finished() {
ChatRoomImpl roomImpl = (ChatRoomImpl) room; ChatRoomImpl roomImpl = (ChatRoomImpl)room;
sendFile(imageFile, roomImpl.getParticipantJID()); sendFile(imageFile, roomImpl.getParticipantJID());
SparkManager.getChatManager().getChatContainer().activateChatRoom(room); SparkManager.getChatManager().getChatContainer().activateChatRoom(room);
room.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); room.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
@ -711,7 +715,7 @@ public class SparkTransferManager {
try { try {
if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) { if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
return (Image) t.getTransferData(DataFlavor.imageFlavor); return (Image)t.getTransferData(DataFlavor.imageFlavor);
} }
} }
catch (UnsupportedFlavorException e) { catch (UnsupportedFlavorException e) {
@ -744,7 +748,7 @@ public class SparkTransferManager {
private boolean fireTransferListeners(FileTransferRequest request) { private boolean fireTransferListeners(FileTransferRequest request) {
final Iterator iter = new ArrayList(listeners).iterator(); final Iterator iter = new ArrayList(listeners).iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
FileTransferListener listener = (FileTransferListener) iter.next(); FileTransferListener listener = (FileTransferListener)iter.next();
boolean accepted = listener.handleTransfer(request); boolean accepted = listener.handleTransfer(request);
if (accepted) { if (accepted) {
return true; return true;