001/**
002 * Copyright (C) 2014  Universidade de Aveiro, DETI/IEETA, Bioinformatics Group - http://bioinformatics.ua.pt/
003 *
004 * This file is part of Dicoogle/dicoogle.
005 *
006 * Dicoogle/dicoogle is free software: you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation, either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * Dicoogle/dicoogle is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with Dicoogle.  If not, see <http://www.gnu.org/licenses/>.
018 */
019
020package pt.ua.dicoogle.rGUI.fileTransfer;
021
022import java.awt.Desktop;
023import java.awt.Image;
024import java.awt.Toolkit;
025import java.io.File;
026import java.io.IOException;
027import org.slf4j.Logger;
028import org.slf4j.LoggerFactory;
029import org.slf4j.Logger;
030import org.slf4j.LoggerFactory;
031import javax.swing.JOptionPane;
032import pt.ua.dicoogle.Main;
033import pt.ua.dicoogle.core.ClientSettings;
034import pt.ua.dicoogle.rGUI.RFileBrowser.RemoteFile;
035
036/**
037 *
038 * @author Samuel Campos <samuelcampos@ua.pt>
039 */
040@Deprecated
041public class TransferStatus extends javax.swing.JFrame {
042
043    private RemoteFile file;
044    private String filePath;
045
046    /** Creates new form TransferStatus */
047    public TransferStatus(RemoteFile file) {
048        initComponents();
049        
050        Image image = Toolkit.getDefaultToolkit().getImage(Thread.currentThread().getContextClassLoader().getResource("trayicon.gif"));
051        this.setIconImage(image);
052
053        this.file = file;
054        jProgressBar.setMaximum((int) file.length());
055        jProgressBar.setMinimum(0);
056        jProgressBar.setValue(0);
057        jProgressBar.setStringPainted(true);
058
059        jButtonView.setEnabled(false);
060        jLabelFileName.setText(file.getName());
061        jLabelFileSize.setText(String.valueOf(file.length()));
062    }
063
064    /** This method is called from within the constructor to
065     * initialize the form.
066     * WARNING: Do NOT modify this code. The content of this method is
067     * always regenerated by the Form Editor.
068     */
069    @SuppressWarnings("unchecked")
070    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
071    private void initComponents() {
072
073        jLabel1 = new javax.swing.JLabel();
074        jLabelFileName = new javax.swing.JLabel();
075        jLabel2 = new javax.swing.JLabel();
076        jLabelFileSize = new javax.swing.JLabel();
077        jProgressBar = new javax.swing.JProgressBar();
078        jButtonView = new javax.swing.JButton();
079        jLabelState = new javax.swing.JLabel();
080        jLabel4 = new javax.swing.JLabel();
081        jLabelProgress = new javax.swing.JLabel();
082
083        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
084        setTitle("File Transfer");
085
086        jLabel1.setFont(new java.awt.Font("Lucida Grande", 1, 13));
087        jLabel1.setText("File:");
088
089        jLabelFileName.setText("<FileName>");
090
091        jLabel2.setFont(new java.awt.Font("Lucida Grande", 1, 13));
092        jLabel2.setText("Size (Bytes):");
093
094        jLabelFileSize.setText("<FileSize>");
095
096        jButtonView.setText("View");
097        jButtonView.addActionListener(new java.awt.event.ActionListener() {
098            public void actionPerformed(java.awt.event.ActionEvent evt) {
099                jButtonViewActionPerformed(evt);
100            }
101        });
102
103        jLabelState.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
104        jLabelState.setText("Downloading the file from the server..");
105
106        jLabel4.setFont(new java.awt.Font("Lucida Grande", 1, 13));
107        jLabel4.setText("Progress:");
108
109        jLabelProgress.setText("<Progress>");
110
111        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
112        getContentPane().setLayout(layout);
113        layout.setHorizontalGroup(
114            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
115            .add(layout.createSequentialGroup()
116                .add(36, 36, 36)
117                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
118                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
119                        .add(jButtonView)
120                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
121                            .add(jLabel4)
122                            .add(jProgressBar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 323, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
123                    .add(jLabelState)
124                    .add(layout.createSequentialGroup()
125                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
126                            .add(jLabel2)
127                            .add(jLabel1))
128                        .add(18, 18, 18)
129                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
130                            .add(jLabelFileName)
131                            .add(jLabelFileSize)
132                            .add(jLabelProgress))))
133                .addContainerGap(41, Short.MAX_VALUE))
134        );
135        layout.setVerticalGroup(
136            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
137            .add(layout.createSequentialGroup()
138                .add(26, 26, 26)
139                .add(jLabelState)
140                .add(18, 18, 18)
141                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
142                    .add(jLabel1)
143                    .add(jLabelFileName))
144                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
145                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
146                    .add(jLabel2)
147                    .add(jLabelFileSize))
148                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 25, Short.MAX_VALUE)
149                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
150                    .add(jLabel4)
151                    .add(jLabelProgress))
152                .add(7, 7, 7)
153                .add(jProgressBar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
154                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
155                .add(jButtonView)
156                .addContainerGap())
157        );
158
159        pack();
160    }// </editor-fold>//GEN-END:initComponents
161
162    private void jButtonViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonViewActionPerformed
163        if (ClientSettings.getInstance().getExtV() == null
164                || ClientSettings.getInstance().getExtV().equals("")) {
165
166            try {
167                Desktop.getDesktop().open(new File(filePath));
168
169            } catch (IOException ex) {
170                String folder = filePath.substring(0, filePath.lastIndexOf('/'));
171
172                try {
173                    Desktop.getDesktop().open(new File(folder));
174
175                } catch (IOException ex1) {
176                    JOptionPane.showMessageDialog(this, "Dicoogle can't open this file!", "Error opening the file", JOptionPane.ERROR_MESSAGE);
177                }
178            }
179        } else {
180            try {
181                ProcessBuilder pb = new ProcessBuilder(ClientSettings.getInstance().getExtV(), filePath);
182                pb.start();
183
184            } catch (IOException ex) {
185
186                String folder = filePath.substring(0, filePath.lastIndexOf('/'));
187
188                try {
189                    Desktop.getDesktop().open(new File(folder));
190
191                } catch (IOException ex1) {
192                    JOptionPane.showMessageDialog(this, "Dicoogle can't open this file!", "Error opening the file", JOptionPane.ERROR_MESSAGE);
193                }
194            }
195        }
196    }//GEN-LAST:event_jButtonViewActionPerformed
197
198    // Variables declaration - do not modify//GEN-BEGIN:variables
199    private javax.swing.JButton jButtonView;
200    private javax.swing.JLabel jLabel1;
201    private javax.swing.JLabel jLabel2;
202    private javax.swing.JLabel jLabel4;
203    private javax.swing.JLabel jLabelFileName;
204    private javax.swing.JLabel jLabelFileSize;
205    private javax.swing.JLabel jLabelProgress;
206    private javax.swing.JLabel jLabelState;
207    private javax.swing.JProgressBar jProgressBar;
208    // End of variables declaration//GEN-END:variables
209
210    public void setFilePath(String filePath){
211        this.filePath = filePath;
212    }
213
214    public void setTransferedBytes(long size){
215        long perc = (size * 100 / file.length());
216
217        jProgressBar.setValue((int) size);
218        jProgressBar.setString(String.valueOf(perc) + "%");
219
220
221        jLabelProgress.setText(String.valueOf(size));
222
223        if(size == file.length()){
224            jLabelState.setText("Download complete. Click 'View' button");
225
226            if(this.filePath != null)
227                jButtonView.setEnabled(true);
228        }
229    }
230
231    public void errorInTransfer(String error){
232        JOptionPane.showMessageDialog(this, error,
233                    "Transfer Error", JOptionPane.ERROR_MESSAGE);
234
235        //closes this window
236        this.dispatchEvent(new java.awt.event.WindowEvent(this,
237                java.awt.Event.WINDOW_DESTROY));
238    }
239}