Добавил:
Eatmore
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:написанные программы / информационная система umbrella - сырцы( java + .net ) / Umbrella / src / ReportControl
.java//
// Created by Grishul Eugeny
//
// Copyright © Grishul Eugeny 2008
//
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.TransferHandler;
public class ReportControl extends javax.swing.JPanel {
public DbLayer DbLayerInstance;
public ReportControl() {
initComponents();
_currentReport.Text = "";
_from.setText( "" );
_date.setText( "" );
_attachments.setTransferHandler( this.new FileDropHandler() );
}
private DbMessage _currentReport = new DbMessage();
public DbMessage getCurrentReport() {
return _currentReport;
}
public void setCurrentReport( DbLayer dblayerInstance, DbMessage value ) throws Throwable {
if( value == null )
value = new DbMessage();
DbLayerInstance = dblayerInstance;
_currentReport = value;
_description.setText( _currentReport.Text );
if( _currentReport.When == null )
_date.setText( "" );
else {
Calendar date = new GregorianCalendar();
date.setTimeInMillis( _currentReport.When.getTime() );
_date.setText( String.format( "%1$te.%1$tm.%1$tY %1$tH:%1$tM:%1$tS", date ) );
}
if( _currentReport.From != 0 )
_from.setText( "От: " + DbLayerInstance.getEmployeeByID( _currentReport.From ).Surname );
else
_from.setText( "" );
refreshAttachments();
}
private void refreshAttachments() {
ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();
if( _currentReport.Attachments != null )
for( DbAttachment item : _currentReport.Attachments ) {
ListViewItem listItem = new ListViewItem( item.Name, item );
items.add( listItem );
}
_attachments.setModel( new ListView( items ) );
}
public boolean getEditMode() {
return _description.isEditable();
}
public void setEditMode( boolean value ) {
_description.setEditable( value );
}
@Override
public void requestFocus() {
_description.requestFocus();
}
private class FileDropHandler extends TransferHandler {
@Override
public boolean canImport( JComponent arg0, DataFlavor[] arg1 ) {
for( int i = 0; i < arg1.length; i++ ) {
DataFlavor flavor = arg1[i];
if( flavor.equals( DataFlavor.javaFileListFlavor ) )
return true;
System.err.println( "Непонятный дроп: " + flavor );
}
return false;
}
@Override
public boolean importData( JComponent comp, Transferable t ) {
try {
DataFlavor[] flavors = t.getTransferDataFlavors();
for( int i = 0; i < flavors.length; i++ ) {
DataFlavor flavor = flavors[i];
if( flavor.equals( DataFlavor.javaFileListFlavor ) ) {
List l = ( List ) t.getTransferData( DataFlavor.javaFileListFlavor );
Iterator iter = l.iterator();
while( iter.hasNext() ) {
File droppedFile = ( File ) iter.next();
FileInputStream droppedFileReader = null;
byte[] resultBuf = new byte[( int ) droppedFile.length()];
try {
droppedFileReader = new FileInputStream( droppedFile );
droppedFileReader.read( resultBuf );
if( _currentReport.Attachments == null )
_currentReport.Attachments = new ArrayList<DbAttachment>();
_currentReport.Attachments.add( new DbAttachment( droppedFile.getName(), resultBuf ) );
} finally {
if( droppedFileReader != null )
droppedFileReader.close();
}
}
refreshAttachments();
return true;
}
}
Toolkit.getDefaultToolkit().beep();
} catch( Throwable excpt ) {
JOptionPane.showMessageDialog( comp, excpt.getMessage() );
}
return false;
}
}
@SuppressWarnings( "unchecked" )
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
_attachmentMenu = new javax.swing.JPopupMenu();
_newAttachment = new javax.swing.JMenuItem();
_saveAttachmentAs = new javax.swing.JMenuItem();
_deleteAttachment = new javax.swing.JMenuItem();
_descriptionScroll = new javax.swing.JScrollPane();
_description = new javax.swing.JTextArea();
_attachmentsScroll = new javax.swing.JScrollPane();
_attachments = new javax.swing.JList();
_contentsLabel = new javax.swing.JLabel();
_date = new javax.swing.JLabel();
_from = new javax.swing.JLabel();
_newAttachment.setText("новое");
_newAttachment.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
_newAttachmentActionPerformed(evt);
}
});
_attachmentMenu.add(_newAttachment);
_saveAttachmentAs.setText("сохранить как..");
_saveAttachmentAs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
_saveAttachmentAsActionPerformed(evt);
}
});
_attachmentMenu.add(_saveAttachmentAs);
_deleteAttachment.setText("удалить");
_deleteAttachment.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
_deleteAttachmentActionPerformed(evt);
}
});
_attachmentMenu.add(_deleteAttachment);
_description.setColumns(20);
_description.setFont(new java.awt.Font("Tahoma", 0, 11));
_description.setRows(5);
_description.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
_descriptionKeyReleased(evt);
}
});
_descriptionScroll.setViewportView(_description);
_attachments.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
_attachmentsMouseClicked(evt);
}
});
_attachmentsScroll.setViewportView(_attachments);
_contentsLabel.setText("Содержание:");
_date.setText("Date");
_from.setText("From");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(_attachmentsScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 429, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(_from)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 382, Short.MAX_VALUE)
.addComponent(_date))
.addComponent(_descriptionScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 429, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(170, 170, 170)
.addComponent(_contentsLabel)
.addContainerGap(191, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(_date)
.addComponent(_from))
.addComponent(_contentsLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(_descriptionScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 225, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(_attachmentsScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
);
}// </editor-fold>//GEN-END:initComponents
private void _descriptionKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event__descriptionKeyReleased
_currentReport.Text = _description.getText();
}//GEN-LAST:event__descriptionKeyReleased
private void _newAttachmentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__newAttachmentActionPerformed
try {
JFileChooser openFileDialog = new JFileChooser();
if( openFileDialog.showOpenDialog( this ) == JFileChooser.APPROVE_OPTION ) {
FileInputStream droppedFileReader = null;
byte[] resultBuf = new byte[( int ) openFileDialog.getSelectedFile().length()];
try {
droppedFileReader = new FileInputStream( openFileDialog.getSelectedFile() );
droppedFileReader.read( resultBuf );
if( _currentReport.Attachments == null )
_currentReport.Attachments = new ArrayList<DbAttachment>();
_currentReport.Attachments.add( new DbAttachment( openFileDialog.getSelectedFile().getName(), resultBuf ) );
} finally {
if( droppedFileReader != null )
droppedFileReader.close();
}
refreshAttachments();
}
} catch( Throwable excpt ) {
JOptionPane.showMessageDialog( this, excpt.getMessage() );
}
}//GEN-LAST:event__newAttachmentActionPerformed
private void _deleteAttachmentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__deleteAttachmentActionPerformed
_currentReport.Attachments.remove( ( DbAttachment ) ListView.getSelectedObjectTag( _attachments ) );
refreshAttachments();
}//GEN-LAST:event__deleteAttachmentActionPerformed
private void _saveAttachmentAsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__saveAttachmentAsActionPerformed
try {
DbAttachment current = ( DbAttachment ) ListView.getSelectedObjectTag( _attachments );
JFileChooser saveFileDialog = new JFileChooser();
saveFileDialog.setSelectedFile( new File( current.Name ) );
if( saveFileDialog.showSaveDialog( this ) == JFileChooser.APPROVE_OPTION ) {
FileOutputStream droppedFileReader = null;
try {
droppedFileReader = new FileOutputStream( saveFileDialog.getSelectedFile() );
droppedFileReader.write( current.Data );
} finally {
if( droppedFileReader != null )
droppedFileReader.close();
}
}
} catch( Throwable excpt ) {
JOptionPane.showMessageDialog( this, excpt.getMessage() );
}
}//GEN-LAST:event__saveAttachmentAsActionPerformed
private void _attachmentsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event__attachmentsMouseClicked
try {
if( SwingUtilities.isRightMouseButton( evt ) ) {
DbAttachment current = null;
if( _attachments.getSelectedIndex() != -1 )
current = ( DbAttachment ) ListView.getSelectedObjectTag( _attachments );
_newAttachment.setVisible( getEditMode() );
_deleteAttachment.setVisible( current != null && getEditMode() );
_saveAttachmentAs.setVisible( current != null );
_attachmentMenu.show( _attachments, evt.getX(), evt.getY() );
}
} catch( Throwable excpt ) {
JOptionPane.showMessageDialog( this, excpt.getMessage() );
}
}//GEN-LAST:event__attachmentsMouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPopupMenu _attachmentMenu;
private javax.swing.JList _attachments;
private javax.swing.JScrollPane _attachmentsScroll;
private javax.swing.JLabel _contentsLabel;
private javax.swing.JLabel _date;
private javax.swing.JMenuItem _deleteAttachment;
private javax.swing.JTextArea _description;
private javax.swing.JScrollPane _descriptionScroll;
private javax.swing.JLabel _from;
private javax.swing.JMenuItem _newAttachment;
private javax.swing.JMenuItem _saveAttachmentAs;
// End of variables declaration//GEN-END:variables
}
Соседние файлы в папке src