Package cli_fmw.report

Source Code of cli_fmw.report.ReportFiles$RedBlackListCellRenderer

/*
* ReportFiles.java
*
* Created on August 14, 2008, 9:21 AM
*/

package cli_fmw.report;

import cli_fmw.delegate.DelegateLine2;
import cli_fmw.delegate.report.FileLocal;
import cli_fmw.delegate.report.ReportLocal;
import cli_fmw.delegate.report.ReportSearchLocal;
import cli_fmw.main.ContentStateListener;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.Persistentable;
import cli_fmw.report.panels.model.delegate.DelegateListModel;
import cli_fmw.report.panels.model.delegate.DelegateTextModel;
import cli_fmw.report.panels.model.report.ReportFilesListModel;
import cli_fmw.utils.MessageBox;
import framework.beans.report.FileDetails;
import cli_fmw.main.ClipsException;
import cli_fmw.report.panels.model.ObjectComboBoxModel;
import cli_fmw.report.panels.model.delegate.DelegateListener;
import cli_fmw.utils.ConfigGui;
import cli_fmw.utils.table_config_states.StateSaver;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFileChooser;
import javax.swing.JList;
import javax.swing.filechooser.FileNameExtensionFilter;
import net.sf.jasperreports.engine.JRException;

/**
*
* @author  finder
*/
public class ReportFiles extends PageGeneric implements Persistentable, ContentStateListener {
  private static final long serialVersionUID = 1L;
  static final String[]        JASPER_EXTENSIONS = {"jasper", "jrxml"};
 
  abstract class RedBlackListCellRenderer extends DefaultListCellRenderer{
    protected Color        normalColor;
    protected Color        specialColor;

    protected Color newNormalColor(){
      return new Color(0, 0, 0);
    }

    protected Color newSpecialColor(){
      return new Color(255, 0, 0);
    }

    protected Color getNormalColor(){
      if (normalColor == null) {
        normalColor = newNormalColor();
      }
      return normalColor;
    }
   
    protected Color getSpecialColor(){
      if (specialColor == null) {
        specialColor = newSpecialColor();
      }
      return specialColor;
    }

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
      Component render = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
      Color  c;
      if (isSpecialItem(list, value, index)) {
        c = getSpecialColor();
      }
      else {
        c = getNormalColor();
      }
     
      render.setForeground(c);
      return render;
    }

    abstract boolean isSpecialItem(JList list, Object value, int index);
  }
 
  /*ReportFilesListModel        comboModelFilesLists;
  ReportFilesListModel        lisModeltFilesLists;*/
  DelegateListener<ReportLocal>    container;
  DelegateListModel<ReportLocal>    reportListModel;
  ReportLocal              curReport;
  DelegateTextModel<ReportLocal>    nameModel;
 

  public ReportFiles(PageContainer container) throws ClipsException {
    super(container);
        initComponents();
    initModels();
    rightPanelSetReport(null, false);
   
    DefaultListCellRenderer    renrer = new RedBlackListCellRenderer() {
      private static final long serialVersionUID = 1L;
      @Override
      boolean isSpecialItem(JList list, Object value, int index) {
        try {
          return curReport != null && curReport.getMainFile() == value;
        } catch (ClipsException ex) {
          MessageBox.showException(ex);
          return false;
        }
      }
    };
    fileList.setCellRenderer(renrer);
    renrer = new RedBlackListCellRenderer() {
      private static final long serialVersionUID = 1L;
      @Override
      boolean isSpecialItem(JList list, Object value, int index) {
        if (value instanceof ReportLocal) {
          return ((ReportLocal) value).isSpecialReport();
        }
        return false;
      }
    };
    reportList.setCellRenderer(renrer);
    StateSaver.attachTo(this);
  }
 
  void initModels(){
    try {
      reportListModel = new DelegateListModel<ReportLocal>(new ReportSearchLocal(getAuditManager()).getReports());
      reportList.setModel(reportListModel);
      container = new DelegateListener<ReportLocal>();
      new ObjectComboBoxModel<ReportLocal>(mainFileCBox, container, new ReportFilesListModel(mainFileCBox, container, true)) {
        private static final long serialVersionUID = 1L;
        public void setSelectedItemImp(Object anItem) throws ClipsException {
          if (anItem != null){
            if (anItem instanceof FileLocal && ((FileLocal)anItem).getFileTypeID() == FileDetails.TYPE_JASPER_REPORT){
              try {
                getObject().setMainFile((FileLocal) anItem);
              } catch (JRException ex) {
                MessageBox.showExceptionOnly(ex);
              }
            }
          }
        }

        public Object getSelectedItemImp() throws ClipsException {
          return getObject().getMainFile();
        }
      };
      new ReportFilesListModel(fileList, container, false);

      nameModel = new DelegateTextModel<ReportLocal>(reportNameTextField, null) {
        private static final long serialVersionUID = 1L;
        @Override
        public void setModelTextChecked(String text) throws ClipsException {
          getObject().setName(text);
        }

        @Override
        public String getModelTextChecked() throws ClipsException {
          return getObject().getName();
        }

        public void setDelegate(ReportLocal delegate) {
          throw new UnsupportedOperationException("Not supported yet.");
        }
      };
    } catch (ClipsException ex) {
      MessageBox.showException(ex);
    }
  }// initModels

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel3 = new javax.swing.JLabel();
        jSplitPane1 = new javax.swing.JSplitPane();
        reportEditPanel = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        reportNameTextField = new javax.swing.JTextField();
        jPanel5 = new javax.swing.JPanel();
        mainFileCBox = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        addButton = new javax.swing.JButton();
        removeButton = new javax.swing.JButton();
        saveButton = new javax.swing.JButton();
        saveCompiled = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        fileList = new javax.swing.JList();
        jPanel6 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        reportList = new javax.swing.JList();
        jPanel1 = new javax.swing.JPanel();
        newReportButton = new javax.swing.JButton();
        deleteReportButton = new javax.swing.JButton();

        jLabel3.setText("Отчеты:");

        setMinimumSize(new java.awt.Dimension(192, 235));
        setRequestFocusEnabled(false);
        setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));

        reportEditPanel.setLayout(new java.awt.BorderLayout());

        jPanel3.setLayout(new java.awt.GridLayout(3, 1));

        jPanel4.setLayout(new java.awt.BorderLayout());

        jLabel1.setText("Имя отчета");
        jPanel4.add(jLabel1, java.awt.BorderLayout.WEST);

        reportNameTextField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                reportNameTextFieldActionPerformed(evt);
            }
        });
        jPanel4.add(reportNameTextField, java.awt.BorderLayout.CENTER);

        jPanel3.add(jPanel4);

        jPanel5.setLayout(new java.awt.BorderLayout());

        jPanel5.add(mainFileCBox, java.awt.BorderLayout.CENTER);

        jLabel2.setText("Основной файл:");
        jPanel5.add(jLabel2, java.awt.BorderLayout.LINE_START);

        jPanel3.add(jPanel5);

        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        addButton.setText("Добавить файл");
        addButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        addButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addButtonActionPerformed(evt);
            }
        });
        jPanel2.add(addButton);

        removeButton.setText("Удалить файл");
        removeButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        removeButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeButtonActionPerformed(evt);
            }
        });
        jPanel2.add(removeButton);

        saveButton.setText("Сохранить Файл");
        saveButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        saveButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                saveButtonActionPerformed(evt);
            }
        });
        jPanel2.add(saveButton);

        saveCompiled.setText("Сохранить Отчет");
        saveCompiled.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        saveCompiled.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                saveCompiledActionPerformed(evt);
            }
        });
        jPanel2.add(saveCompiled);

        jPanel3.add(jPanel2);

        reportEditPanel.add(jPanel3, java.awt.BorderLayout.PAGE_START);

        fileList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                fileListValueChanged(evt);
            }
        });
        jScrollPane2.setViewportView(fileList);

        reportEditPanel.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jSplitPane1.setRightComponent(reportEditPanel);

        jPanel6.setLayout(new java.awt.BorderLayout());

        reportList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        reportList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                reportListValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(reportList);

        jPanel6.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        newReportButton.setText("Новый отчет");
        newReportButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newReportButtonActionPerformed(evt);
            }
        });

        deleteReportButton.setText("Удалить Отчет");
        deleteReportButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                deleteReportButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(newReportButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(deleteReportButton))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(newReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(deleteReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        jPanel6.add(jPanel1, java.awt.BorderLayout.PAGE_START);

        jSplitPane1.setLeftComponent(jPanel6);

        add(jSplitPane1);
    }// </editor-fold>//GEN-END:initComponents

private void reportListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_reportListValueChanged
    int        sel = reportList.getSelectedIndex();
    boolean      reportSet;
    if (sel >= 0 && sel <  reportListModel.getSize()) {
      reportSet = rightPanelSetReport(reportListModel.getElementAt(sel), true);
    }
    else {
      reportSet = rightPanelSetReport(null, true);
    }
    if (!reportSet && curReport != null) {
      reportList.setSelectedValue(curReport, false);
    }
}//GEN-LAST:event_reportListValueChanged

private void reportNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reportNameTextFieldActionPerformed
}//GEN-LAST:event_reportNameTextFieldActionPerformed

static int        newReportCount = 0;

private void newReportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newReportButtonActionPerformed
  if (rightPanelSetReport(curReport, true)){
    ReportLocal      newRep = new ReportLocal(getAuditManager());
    try {
      newRep.setName("Новый отчет " + ++newReportCount);
    } catch (ClipsException ex) {
      MessageBox.showException(ex);
    }
    reportListModel.addElement(newRep);
    reportList.setSelectedValue(newRep, true);
  }
}//GEN-LAST:event_newReportButtonActionPerformed

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
    if (curReport != null){
      ConfigGui            cfg = ConfigGui.getInstance();
      JFileChooser        choser = new JFileChooser();
      choser.setCurrentDirectory(cfg.getLastOpenDialogPath());
      FileNameExtensionFilter    filter = new FileNameExtensionFilter("Файлы JasperReport", JASPER_EXTENSIONS);
      choser.addChoosableFileFilter(filter);
      choser.setFileFilter(choser.getAcceptAllFileFilter());
      choser.setMultiSelectionEnabled(true);
      int      id = choser.showOpenDialog(this);
      if (id == JFileChooser.APPROVE_OPTION){
        cfg.setLastOpenDialogPath(choser.getCurrentDirectory());
        File[]      files = choser.getSelectedFiles();
        ArrayList<File>  exist = new ArrayList<File>();
        for (File curFile : files) {
          try {
            if (curReport.getFile(curFile.getName()) != null) {
              exist.add(curFile);
            }
          }
          catch (ClipsException ex) {
            MessageBox.showException(ex);
          }
        }
        if (exist.size() > 0){
          String      str = "";
          for (File file : exist) {
            str += "\n" + file.getName();
          }
          int res = MessageBox.showConfirmYesNo(MessageBox.C_OVERWRITE_FILE, str);
          if (res != MessageBox.ANSWER_YES){
            return;
          }
        }
        for (File curFile : files) {
          try {
            curReport.addFile(curFile);
          }
          catch (ClipsException ex) {
            MessageBox.showException(ex);
          }
          catch (FileNotFoundException ex) {
            ex.printStackTrace();
            MessageBox.showError(MessageBox.E_FILE_NOT_FOUND, curFile.getName());
          }
          catch (IOException ex) {
            ex.printStackTrace();
            MessageBox.showError(MessageBox.E_FILE_READ_ERROR, curFile.getName());
          }
          catch (JRException ex) {
            MessageBox.showExceptionOnly(ex);
          }
        }
      }
    }
}//GEN-LAST:event_addButtonActionPerformed

private void deleteReportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteReportButtonActionPerformed
  remove();
}//GEN-LAST:event_deleteReportButtonActionPerformed

private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
    if (curReport != null){
      Object[]        sel = fileList.getSelectedValues();
      for (Object item : sel) {
        FileLocal    file = (FileLocal)item;
        try {
          if (curReport.getMainFile() != file){
            curReport.removeFile(file);
          }
        } catch (ClipsException ex) {
          MessageBox.showException(ex);
        }
      }
    }
}//GEN-LAST:event_removeButtonActionPerformed



private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
    int[]        sel = fileList.getSelectedIndices();
    saveFiles(sel, false);
}//GEN-LAST:event_saveButtonActionPerformed

private void saveCompiledActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveCompiledActionPerformed
    int[]        sel = fileList.getSelectedIndices();
    saveFiles(sel, true);

}//GEN-LAST:event_saveCompiledActionPerformed

private void fileListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_fileListValueChanged
    updateButtons();
}//GEN-LAST:event_fileListValueChanged


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton addButton;
    private javax.swing.JButton deleteReportButton;
    private javax.swing.JList fileList;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JComboBox mainFileCBox;
    private javax.swing.JButton newReportButton;
    private javax.swing.JButton removeButton;
    private javax.swing.JPanel reportEditPanel;
    private javax.swing.JList reportList;
    private javax.swing.JTextField reportNameTextField;
    private javax.swing.JButton saveButton;
    private javax.swing.JButton saveCompiled;
    // End of variables declaration//GEN-END:variables
 
  boolean rightPanelSetReport(ReportLocal report, boolean queryUser){
    if (curReport != report){
      if (curReport != null) {
        if (curReport.isDirty() && queryUser){
          int        res = MessageBox.showConfirmYesNoCancel(MessageBox.C_SAVE_CHANGES);
          if (res ==  MessageBox.ANSWER_YES) {
            try {
              save();
            } catch (ClipsException ex) {
              MessageBox.showException(ex);
              return false;
            }
          }
          else if (res == MessageBox.ANSWER_NO){
            restore();
          }
          else {
            return false;
          }
        }
        if (curReport != null){
          curReport.removeContentStateListener(this);
          curReport.removeContentStateListener(getContainer());
        }
      }
      curReport = report;
      if (curReport != null) {
        curReport.addContentStateListener(this);
        curReport.addContentStateListener(getContainer());
      }
      else{
      }
    }
    container.setObject(report);
    nameModel.setObject(report);
    updateButtons();
    getContainer().contentStateChanged();
    return true;
  }
 
  void updateButtons(){
    boolean        addEnabled = true, removeEnabled = true,
              saveEnabled = true, saveCompiledEnabled = true,
              deleteReportEnable = true;
   
    if (curReport == null){
      addEnabled = false;
      removeEnabled = false;
      saveEnabled = false;
      saveCompiledEnabled = false;
      deleteReportEnable = false;
    }
    else{
      Object[]        sel = fileList.getSelectedValues();
      if (sel.length == 0){
        removeEnabled = false;
        saveEnabled = false;
        saveCompiledEnabled = false;
      }
      for (Object item : sel) {
        FileLocal  file = (FileLocal)item;
        if (file.getFileTypeID() != FileDetails.TYPE_JASPER_REPORT) {
          saveCompiledEnabled = false;
        }
        try {
          if (curReport.getMainFile() != null && curReport.getMainFile().equals(file)) {
            removeEnabled = false;
          }
        } catch (ClipsException ex) {
          MessageBox.showException(ex);
        }
      }
      deleteReportEnable = !curReport.isSpecialReport();
    }
    addButton.setEnabled(addEnabled);
    removeButton.setEnabled(removeEnabled);
    saveButton.setEnabled(saveEnabled);
    saveCompiled.setEnabled(saveCompiledEnabled);
    deleteReportButton.setEnabled(deleteReportEnable)
  }

  @Override
  public boolean isDirty() {
    if (curReport != null && curReport.isDirty()) {
      return true;
    }
    return false;
  }

  @Override
  public void save() throws ClipsException {
    if (curReport != null) {
      if (curReport.getMainFile() == null){
        MessageBox.showWarning(MessageBox.W_REPORT_MAIN_FILE_NOT_SET, curReport.getName());
        return;
      }     
      curReport.save1();
    }
  }

  @Override
  public void restore() {
    if (curReport != null) {
      if (curReport.isNewlyCreated()) {
        remove();
      }
      else {
        curReport.restore();
      }
    } 
  }
 
  public void remove(){
    if (curReport != null && !curReport.isSpecialReport()){
      try {
        if (curReport.isNewlyCreated()){
          ReportLocal      tmp = curReport;
          rightPanelSetReport(null, false);
          reportListModel.removeElement(tmp);
        }
        else {
          int      res = MessageBox.showConfirmYesNo(MessageBox.C_DEL_OBJECT);
          if (res == MessageBox.ANSWER_YES){
            ReportLocal      tmp = curReport;
            rightPanelSetReport(null, false);
            tmp.remove();
            reportListModel.removeElement(tmp);
          }
        }
      } catch (ClipsException ex) {
        MessageBox.showException(ex);
      }
    }
  }

  @Override
  public void contentStateChanged() {
    EventQueue.invokeLater(new Runnable() {
      @Override
      public void run() {
        updateButtons();
      }
    });
  }

  @Override
  public String getPageTitle() {
    return "Отчеты";
  }
 
  void saveFiles(int[] ids, boolean compiled){
    for (int item : ids){
      FileLocal          file = (FileLocal)reportList.getModel().getElementAt(item);
      ConfigGui          cfg = ConfigGui.getInstance();
      JFileChooser        choser = new JFileChooser();
      choser.setCurrentDirectory(cfg.getLastOpenDialogPath());
      FileNameExtensionFilter    filter = new FileNameExtensionFilter("Файлы JasperReport", JASPER_EXTENSIONS);
      choser.addChoosableFileFilter(filter);
      switch (file.getFileTypeID()){
        case FileDetails.TYPE_JASPER_REPORT:
          choser.setFileFilter(filter);
          break;
        default:
          choser.setFileFilter(choser.getAcceptAllFileFilter());
          break;
      }
      choser.setSelectedFile(new File(choser.getCurrentDirectory().getPath() + File.separator + file.getFileName()));
     
      boolean      fileSaved = false;
      do{
        int      id = choser.showSaveDialog(this);
        if (id == JFileChooser.APPROVE_OPTION){
          cfg.setLastOpenDialogPath(choser.getCurrentDirectory());
          File    f = choser.getSelectedFile();
          if (f.exists()) {
            if (MessageBox.showConfirmYesNo(MessageBox.C_OVERWRITE_FILE, f.getName()) != MessageBox.ANSWER_YES) {
              continue;
            }
          }
         
          byte[]      data;
          try {
            if (compiled) {
              data = file.getFileCompiledData();
            }
            else {
              data = file.getFileData();
            }
          } catch (ClipsException ex) {
            MessageBox.showException(ex);
            return;
          }
          try {
            FileOutputStream      stream;
            stream = new FileOutputStream(f, false);
            try{
              stream.write(data);
              stream.flush();
            }
            finally{
              stream.close();
            }
            fileSaved = true;
          } catch (IOException ex) {
            MessageBox.showException(ex);
          }
        }
        else{
          return;
        }
      }
      while (!fileSaved);
    }
  }

    @Override
    public DelegateLine2 getDelegate() {
        return null;
    }
}
TOP

Related Classes of cli_fmw.report.ReportFiles$RedBlackListCellRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.