/* Copyright @ 2003-2004, The Institute for Genomic Research (TIGR). All rights reserved. */ /*************************************************************************** * Author: Jianwei(Jerry) Li * Name: ExpressConverter (Version 1.6) * Date: Created: 02/12/2003 and modified: 01/26/2005 * Descp: A Java class that converts a variety of gene expression data formats * to TIGR tav and mev file formats. * 04/02/03: Changed the interface for holding ImaGene conversion. * 06/07/04: Changed the interface for holding ArrayVersion conversion. * 09/29/04: Added GUI for generic conversion. ***************************************************************************/ package org.tigr.microarray.converter; import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; import com.sun.java.swing.plaf.motif.MotifLookAndFeel; import java.awt.*; import java.awt.event.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.ButtonGroup; import javax.swing.event.*; import javax.swing.plaf.metal.MetalLookAndFeel; import javax.swing.Timer; import org.tigr.microarray.converter.GenepixMev; import org.tigr.util.awt.GBA; import org.tigr.util.*; import org.tigr.util.FileReading; import org.tigr.util.io.IOUtil; import org.tigr.util.io.MyIni; import org.tigr.util.MadamFileFilter; import org.tigr.util.LongTextChanger; import org.tigr.util.ConfirmUsers; public class ExpressConverter extends JFrame implements InitialWindow{ private ArrayVersionPanel arrayVersionPL; private AgilentPanel aligentPL; private CustomerPanel gCustomerPL; private Icon gAnnOneIcon, gAnnManyIcon; private JButton gAnnBtn; private JCheckBox gAnnOneCkbox, gAnnManyCkbox; private JMenuItem aboutMI, changeDirMI, changeNameMI, deleteMI, exitMI, gOpenMI; private JMenuItem gSaveMI, helpMI, gLoadMI, prefMI, resetMI, gRunMI, stopMI, viewLogMI; private Icon browserIcon, deleteIcon, editIcon, gSaveIcon, gOpenIcon; private Icon runIcon, stopIcon, clearIcon, viewLogIcon, helpIcon, changeDirIcon; private JComboBox outputCB; private JPanel basePanel, toolBarPanel, viewPanel, gAnnTypePanel; private JButton fileBrowserBtn, changeDirBtn, gOpenBtn, gSaveBtn; private JButton deleteBtn; private JButton clearBtn; private JButton convertBtn; private JButton helpBtn; private JButton editBtn; private JButton viewLogBtn; private JButton stopBtn; private JMenuBar menuBar; private JMenu fileMenu, editMenu, viewMenu, helpMenu, annMenu; private JCheckBox metalViewCkbox, winViewMI, motifViewMI; private JToolBar fileToolBar, editToolBar, helpToolBar; private JToolBar outSelBar; // define the type of output files private JProgressBar bar; private JLabel progLabel, infoLB, outputLB; private JTabbedPane inputTP; private ConverterLogView logViewWin; private BevelBorder flat; private ButtonGroup btnGroup, gAnnGroup; // variable declare public static Image iconPic; public static String gSysPath; private static Proface proPic, creditWin; public static boolean logWinOn; public static boolean helpWinOn; public static Vector logFileContent; public static ProfaceProjector projector; public static final int ONE_FILE = 1; public static final int ALL_FILES = 2; public static final String CUS_HEADER_FILE = "Customer Header File"; public static final String INIFILE = "docs/convt.ini"; public static final String MEV_VER = "V4.0"; public static final String TITLE = "ExpressConveter V.1.7"; public static String ECH[] = {"ech"}; public static final int MAC = 1; public static int scrWidth; public static int scrHeight; public static int gOs; // operation system. private final String CUST_FILE = "custFile"; private final String CUST_LINE = "cfSize"; private final String MANUAL_NAME = "docs/convthelp.chm"; private final String ONE_ONE_INFO = "Each mev file has its own ann file."; private final String MANY_ONE_INFO = "Many mev files share one ann file."; private final String SCREEN_X = "scrWidth"; private final String SCREEN_Y = "scrHeight"; private final String SCREEN_FEEL = "scrFeel"; private final String SCREEN_PREF = "scrPref"; private final String VERSION = "ver"; private final String LOC_X = "locX"; private final String LOC_Y = "locY"; private final String ONE_ONE = "1"; private final String MANY_ONE = "2"; private AgilentMev aligentMevConvt; private ArrayVersionMev arrayVersionMevConvt; private boolean gDirtyData; private CustomerMev gCustMevConvt; private TavConverter genepixTavConvt; private GenepixMev genepixMevConvt; private ImaGeneTav imaGeneTavConvt; private ImaGeneMev imaGeneMevConvt; private ScanArrayTav scanArrayTavConvt; private ScanArrayMev scanArrayMevConvt; private TavMev tavMevConvt; private MevTav mevTavConvt; private Timer cvTimer; private int gSelConverter; // selected converter private int gSizeX, gSizeY, gLocX, gLocY; private int gAnnType, gFileLine, gScrFeel; private int progEnd; private int progCounter; private int outputType; private long startTime, curTime; private ProgramRunner runner; private GenePixPanel genePixPL; private ImaGenePanel imaGenePL; private ScanArrayPanel scanArrayPL; private TavPanel tavPL; private MevPanel mevPL; private Vector selectedChAFiles; // input files for channel 1 to be converted. private Vector selectedChBFiles; // input files for channel 2 to be converted. private String gfType[] = {"gpr", "txt"}; private String gCustType[]; private String txtType[] = {"txt"}; private String tavType[] = {"tav"}; private String mevType[] = {"mev"}; private String info; private String title; private String iniFileName; private String gUserTypes; private String gVer; private Vector initFile; private final String[] FILE_TYPE = {"tav", "mev"}; private final int QUIT = -1; private final int NO_FILE = 0; private final int TAV_OUT = 0; private final int MEV_OUT = 1; private final int GENEPIX = 0; private final int IMAGENE = 1; private final int SCANARRAY = 2; private final int ARRAYVERSION = 3; private final int ALIGENT = 4; private final int TAV = 5; private final int MEV = 6; private final int CUSTOMER = 7; public ExpressConverter(){ this(null); } public ExpressConverter(String barTitle) { if(barTitle != null){ title = barTitle; } else { title = TITLE; } logWinOn = false; helpWinOn = false; gDirtyData = false; info = new String(""); //iniFileName = gSysPath + INIFILE; iniFileName = INIFILE; // Mac need relative path gOs = getOperationSystem(System.getProperty("os.name")); logFileContent = new Vector(10, 3); selectedChAFiles = new Vector(10, 3); selectedChBFiles = new Vector(10, 3); flat = new BevelBorder(2); outputType = MEV_OUT; gAnnType = ONE_FILE; runner = new ProgramRunner(); projector.setInfoText(" Loading configuration information ... "); loadConfigInfo(iniFileName); projector.setInfoText(" Building GenePix converter ... "); genePixPL = new GenePixPanel(this); projector.setInfoText(" Building ImaGene converter ... "); imaGenePL = new ImaGenePanel(this); projector.setInfoText(" Building ScanArray converter ... "); scanArrayPL = new ScanArrayPanel(this); projector.setInfoText(" Building ArrayVerson Converter ... "); arrayVersionPL = new ArrayVersionPanel(this); projector.setInfoText(" Building Agilent converter ... "); aligentPL = new AgilentPanel(this); projector.setInfoText(" Building TAV converter ... "); tavPL = new TavPanel(this); projector.setInfoText(" Building MAV converter ... "); mevPL = new MevPanel(this); projector.setInfoText(" Building Customized converter ... "); gCustomerPL = new CustomerPanel(this); if(gSizeX == 0 || gSizeY == 0){ gSizeX = (int) (scrWidth * 0.85); gSizeY = (int) (scrHeight * 0.85); } createGUI(); adjustToolBar(); setPreferenceState(); this.validate(); logFileContent.add("ExpressConverter started without errors.\n"); } /***************************************************************************** * Description: * changes the border of a button based on movement of mouse. *
Parameter:
*
btn --- the button that has been trigged.
***************************************************************************/
private void buttonFace(JButton btn){
btn.addMouseListener(new MouseAdapter () {
public void mouseEntered(MouseEvent me){
buttonUp(me);
}
});
btn.addMouseListener(new MouseAdapter () {
public void mouseExited(MouseEvent me){
buttonDown(me);
}
});
}
/****************************************************************************
* Description:
* makes icons flat.
**************************************************************************/
private void adjustToolBar(){
fileBrowserBtn.setBorder(flat);
gOpenBtn.setBorder(flat);
gSaveBtn.setBorder(flat);
convertBtn.setBorder(flat);
stopBtn.setBorder(flat);
changeDirBtn.setBorder(flat);
editBtn.setBorder(flat);
deleteBtn.setBorder(flat);
clearBtn.setBorder(flat);
viewLogBtn.setBorder(flat);
helpBtn.setBorder(flat);
gAnnBtn.setBorder(flat);
}
/*****************************************************************************
* Description:
* shows the border of a button.
*
Parameter:
*
e --- the mouse event.
***************************************************************************/
private void buttonDown(MouseEvent e){
JButton btn=(JButton)e.getSource();
if(btn.isEnabled())
btn.setBorder(new BevelBorder(2));
}
/*****************************************************************************
* Description:
* hides the border of a button.
*
Parameter:
* ext --- file name extension;
* Return: the file name.
***************************************************************************/
private File getFile(String[] ext, String fileType, String path) {
int result, i;
String tempName[];
File file;
JFileChooser fileChooser = new JFileChooser(path);
if(ext != null){
MadamFileFilter wanted = new MadamFileFilter(ext, fileType);
fileChooser.setFileFilter(wanted);
}
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setDialogTitle(TITLE + " -- selecting files");
result = fileChooser.showOpenDialog(this);
if(result == JFileChooser.CANCEL_OPTION || result < 0){
return null;
}
file = fileChooser.getSelectedFile();
if(!file.isFile()){
alertUsers("The file (" + file.getName() + ") does not exist.");
return null;
}
gSysPath = file.getPath();
return file;
}
/*****************************************************************************
* Description:
* presnets a file chooser window for selecting files.
* Parameters:
* ext --- file name extension;
* Return: the file names.
***************************************************************************/
private String[] getFileName(String[] ext, String fileType, String path) {
int result, numFile, i;
String temp[], tempName[];
File files[];
JFileChooser fileChooser = new JFileChooser(path);
if(ext != null){
MadamFileFilter wanted = new MadamFileFilter(ext, fileType);
fileChooser.setFileFilter(wanted);
}
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setMultiSelectionEnabled(true);
fileChooser.setDialogTitle(TITLE + " -- selecting files");
result = fileChooser.showOpenDialog(this);
if(result == JFileChooser.CANCEL_OPTION || result < 0){
return null;
}
files = fileChooser.getSelectedFiles();
numFile = files.length;
temp = new String[numFile];
tempName = new String[numFile];
for(i=0; i Parameter:
* Return: 1: Mac OS; otherwise, others.
***************************************************************************/
private int getOperationSystem(String sysOs){
if(sysOs.startsWith("W") || sysOs.startsWith("w")){
return 0;
} else {
return 1;
}
}
/*****************************************************************************
* Description:
* create a GUI for program
****************************************************************************/
public void createGUI(){
int btnWidth = 60;
int btnHeight = 23;
this.setIconImage(iconPic);
this.setTitle(title);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
quit();
}
});
initialMenuBar();
initialToolBar();
basePanel = new JPanel(new GridBagLayout());
inputTP = new JTabbedPane();
inputTP.setSize(gSizeX-10, (int)(gSizeY * 0.66));
inputTP.setPreferredSize(inputTP.getSize());
inputTP.add(" GenePix ", genePixPL);
inputTP.add(" ImaGene ", imaGenePL);
inputTP.add(" ScanArray ", scanArrayPL);
inputTP.add(" ArrayVision ", arrayVersionPL);
inputTP.add(" Agilent ", aligentPL);
inputTP.add(" TAV " , tavPL);
inputTP.add(" MEV ", mevPL);
inputTP.add(" Customized ", gCustomerPL);
inputTP.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent ce){
outputCB.setEnabled(true);
if(inputTP.getSelectedComponent() == genePixPL){
gSelConverter = GENEPIX;
activateButton(genePixPL.isOutputReady(), genePixPL.isOutputReady());
outputCB.setSelectedIndex(genePixPL.getOutputTypeFromFile());
} else if(inputTP.getSelectedComponent() == imaGenePL){
gSelConverter = IMAGENE;
activateButton(imaGenePL.isOutputReady(), imaGenePL.isDataDirty());
outputCB.setSelectedIndex(imaGenePL.getOutputTypeFromFile());
} else if(inputTP.getSelectedComponent() == scanArrayPL){
gSelConverter = SCANARRAY;
activateButton(scanArrayPL.isOutputReady(), scanArrayPL.isOutputReady());
outputCB.setSelectedIndex(scanArrayPL.getOutputTypeFromFile());
} else if(inputTP.getSelectedComponent() == arrayVersionPL){
gSelConverter = ARRAYVERSION;
activateButton(arrayVersionPL.isOutputReady(), arrayVersionPL.isOutputReady());
outputCB.setSelectedIndex(1);
} else if(inputTP.getSelectedComponent() == aligentPL){
gSelConverter = ALIGENT;
activateButton(aligentPL.isOutputReady(), aligentPL.isOutputReady());
outputCB.setSelectedIndex(1);
} else if(inputTP.getSelectedComponent() == tavPL){
gSelConverter = TAV;
activateButton(tavPL.getOutputReady(), tavPL.getOutputReady());
outputCB.setSelectedIndex(1);
} else if(inputTP.getSelectedComponent() == mevPL){
gSelConverter = MEV;
activateButton(mevPL.getOutputReady(), mevPL.getOutputReady());
outputCB.setSelectedIndex(0);
} else if(inputTP.getSelectedComponent() == gCustomerPL){
gSelConverter = CUSTOMER;
activateButton(gCustomerPL.getOutputReady(), gCustomerPL.getOutputReady());
outputCB.setSelectedIndex(0);
}
setPreferenceState();
gDirtyData = true;
}
});
progLabel = new JLabel("");
progLabel.setPreferredSize(new Dimension(btnWidth, btnHeight));
infoLB = new JLabel("");
infoLB.setPreferredSize(new Dimension(btnWidth, btnHeight));
bar = new JProgressBar();
bar.setBorder(low);
bar.setStringPainted(true);
toolBarPanel = new JPanel();
toolBarPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
toolBarPanel.setSize(gSizeX-10, 30);
toolBarPanel.setPreferredSize(toolBarPanel.getSize());
int baseHigh = gSizeY - toolBarPanel.getSize().height - 60;
basePanel.setPreferredSize(new Dimension(gSizeX-10, baseHigh));
toolBarPanel.add(fileToolBar);
toolBarPanel.add(editToolBar);
toolBarPanel.add(helpToolBar);
toolBarPanel.add(outSelBar);
this.getContentPane().add(toolBarPanel, BorderLayout.NORTH);
this.getContentPane().add(basePanel, BorderLayout.CENTER);
this.addComponentListener(new ComponentListener(){
public void componentResized(ComponentEvent ce){
gSizeX = getWidth();
gSizeY = getHeight();
if(gSizeY > scrHeight || gSizeY > 1000){
gSizeY = scrHeight - 30;
}
gDirtyData = true;
}
public void componentMoved(ComponentEvent ce){
gLocX = (int)getLocation().getX();
gLocY = (int)getLocation().getY();
}
public void componentShown(ComponentEvent ce){}
public void componentHidden(ComponentEvent ce){}
});
gba.add(basePanel, inputTP, 0, 0, 1, 1, 1, 1, GBA.B, GBA.C, 3, 5, 3, 5);
gba.add(basePanel, infoLB, 0, 1, 1, 1, 1, 0, GBA.H, GBA.C, 8, 5, 2, 5);
gba.add(basePanel, progLabel, 0, 2, 1, 1, 1, 0, GBA.H, GBA.C, 2, 5, 2, 5);
gba.add(basePanel, bar, 0, 3, 1, 1, 1, 0, GBA.H, GBA.C, 1, 5, 5, 5);
// set the interface at the center of the screen
resize(gSizeX, gSizeY);
if(gLocX < 0 && gLocY < 0){
gLocX = (scrWidth - gSizeX) >> 1;
gLocY = (scrHeight - 25 - gSizeY) >> 1;
if(gLocY < 0){
gLocY = 0;
}
}
setLocation(gLocX, gLocY);
setWindowFeel(gScrFeel);
pack();
}
/***************************************************************************
* Description: Description:
* activate the buttons to meet the function needs.
***************************************************************************/
public void activateButton(boolean go, boolean clear){
convertBtn.setEnabled(go);
gRunMI.setEnabled(go);
clearBtn.setEnabled(clear);
resetMI.setEnabled(clear);
changeDirBtn.setEnabled(clear);
changeDirMI.setEnabled(clear);
changeNameMI.setEnabled(clear);
editBtn.setEnabled(clear);
stopBtn.setEnabled(false);
stopMI.setEnabled(false);
if(gSelConverter == CUSTOMER){
gSaveBtn.setEnabled(clear);
gSaveMI.setEnabled(clear);
gOpenBtn.setEnabled(gCustomerPL.getOutputReady());
gOpenMI.setEnabled(gCustomerPL.getOutputReady());
} else {
gSaveBtn.setEnabled(false);
gSaveMI.setEnabled(false);
gOpenBtn.setEnabled(false);
gOpenMI.setEnabled(false);
}
}
/***************************************************************************
* Description:
* creats a menu bar to control the program.
**************************************************************************/
private void initialMenuBar(){
browserIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/brwsdir.gif")));
deleteIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/delete.gif")));
editIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/edit.gif")));
runIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/runconvt.gif")));
stopIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/stop.gif")));
clearIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/erase.gif")));
viewLogIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/vlog.gif")));
helpIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/help.gif")));
changeDirIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/chdir.gif")));
gAnnOneIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/oneone.gif")));
gAnnManyIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/onemany.gif")));
gOpenIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/openfile.gif")));
gSaveIcon = new ImageIcon(Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/save.gif")));
menuBar = new JMenuBar (); // menuBar hold all menus
setJMenuBar(menuBar);
// begin to add menu components
fileMenu = new JMenu ("File"); // fileMenu holds several menuItems
fileMenu.setMnemonic ('F');
menuBar.add(fileMenu);
gLoadMI = new JMenuItem(" Select input files ...", browserIcon);
gLoadMI.addActionListener(this);
gOpenMI = new JMenuItem(" Open header file ...", gOpenIcon);
gOpenMI.addActionListener(this);
gOpenMI.setEnabled(false);
gSaveMI = new JMenuItem(" Save header file ...", gSaveIcon);
gSaveMI.addActionListener(this);
gSaveMI.setEnabled(false);
gRunMI = new JMenuItem(" Start converting", runIcon);
gRunMI.setEnabled(false);
gRunMI.addActionListener(this);
stopMI = new JMenuItem(" Stop converting", stopIcon);
stopMI.addActionListener(this);
stopMI.setEnabled(false);
prefMI = new JMenuItem(" Preference ...");
prefMI.addActionListener(this);
exitMI = new JMenuItem(" Exit");
exitMI.addActionListener(this);
fileMenu.add(gLoadMI);
fileMenu.add(gOpenMI);
fileMenu.add(gSaveMI);
fileMenu.addSeparator();
fileMenu.add(gRunMI);
fileMenu.add(stopMI);
fileMenu.addSeparator();
fileMenu.add(prefMI);
fileMenu.addSeparator();
fileMenu.add(exitMI);
editMenu = new JMenu("Edit");
editMenu.setMnemonic('E');
menuBar.add(editMenu);
changeDirMI = new JMenuItem(" Change directory", changeDirIcon);
changeDirMI.setEnabled(false);
changeDirMI.addActionListener(this);
changeNameMI = new JMenuItem(" Change file name", editIcon);
changeNameMI.setEnabled(false);
changeNameMI.addActionListener(this);
deleteMI = new JMenuItem(" Delete a file", deleteIcon);
deleteMI.addActionListener(this);
resetMI = new JMenuItem(" Reset", clearIcon);
resetMI.setEnabled(false);
resetMI.addActionListener(this);
editMenu.add(changeDirMI);
editMenu.add(changeNameMI);
editMenu.add(deleteMI);
editMenu.add(resetMI);
viewMenu = new JMenu("View");
viewMenu.setMnemonic('V');
menuBar.add(viewMenu);
btnGroup = new ButtonGroup();
viewLogMI = new JMenuItem(" Log", viewLogIcon);
viewLogMI.addActionListener(this);
metalViewCkbox = new JCheckBox("Metal L&F");
metalViewCkbox.addActionListener(this);
winViewMI = new JCheckBox("Window L&F");
winViewMI.addActionListener(this);
motifViewMI = new JCheckBox("Motif L&F");
motifViewMI.addActionListener(this);
btnGroup.add(winViewMI);
btnGroup.add(metalViewCkbox);
btnGroup.add(motifViewMI);
if(gScrFeel == 0){
metalViewCkbox.setSelected(true);
} else if (gScrFeel == 1){
winViewMI.setSelected(true);
} else {
motifViewMI.setSelected(true);
}
viewPanel = new JPanel(new GridBagLayout());
gba.add(viewPanel, metalViewCkbox, 0, 0, 1, 1, 0, 0, GBA.NONE, GBA.W, 0, 4, 0, 0);
if(gOs != MAC) {
gba.add(viewPanel, winViewMI, 0, 1, 1, 1, 0, 0, GBA.NONE, GBA.W, 0, 4, 0, 0);
}
gba.add(viewPanel, motifViewMI, 0, 2, 1, 1, 0, 0, GBA.NONE, GBA.W, 0, 4, 0, 0);
viewMenu.add(viewLogMI);
viewMenu.addSeparator();
viewMenu.add(viewPanel);
annMenu = new JMenu("Ann File");
annMenu.setMnemonic('A');
menuBar.add(annMenu);
gAnnGroup = new ButtonGroup();
gAnnOneCkbox = new JCheckBox("One to One");
gAnnOneCkbox.setToolTipText(ONE_ONE_INFO);
gAnnOneCkbox.addActionListener(this);
gAnnManyCkbox = new JCheckBox("Many to One");
gAnnManyCkbox.setToolTipText(MANY_ONE_INFO);
gAnnManyCkbox.addActionListener(this);
gAnnGroup.add(gAnnOneCkbox);
gAnnGroup.add(gAnnManyCkbox);
gAnnOneCkbox.setSelected(true);
gAnnTypePanel = new JPanel(new GridBagLayout());
gba.add(gAnnTypePanel, gAnnOneCkbox, 0, 0, 1, 1, 0, 0, GBA.NONE, GBA.W, 0, 4, 0, 0);
gba.add(gAnnTypePanel, gAnnManyCkbox, 0, 1, 1, 1, 0, 0, GBA.NONE, GBA.W, 0, 4, 0, 0);
annMenu.add(gAnnTypePanel);
helpMenu = new JMenu("Help");
helpMenu.setMnemonic('H');
menuBar.add(helpMenu);
aboutMI = new JMenuItem(" about");
aboutMI.addActionListener(this);
helpMI = new JMenuItem(" Content and topics", helpIcon);
helpMI.addActionListener(this);
helpMenu.add(aboutMI);
if(gOs != MAC){
helpMenu.add(helpMI);
}
}
/***************************************************************************
* Description:
* creats a menu bar to control the program.
**************************************************************************/
private void initialToolBar(){
Dimension iconSize = new Dimension(27, 27);
fileToolBar = new JToolBar(); // begin to process ToolBar
fileToolBar.setBorderPainted(false);
fileToolBar.setName("File ...");
fileBrowserBtn = new JButton(browserIcon);
fileBrowserBtn.setToolTipText("Browser system to find input files.");
fileBrowserBtn.setPreferredSize(iconSize);
fileBrowserBtn.addActionListener(this);
buttonFace(fileBrowserBtn);
gOpenBtn = new JButton(gOpenIcon);
gOpenBtn.setToolTipText("Open a header file.");
gOpenBtn.setPreferredSize(iconSize);
gOpenBtn.addActionListener(this);
buttonFace(gOpenBtn);
gOpenBtn.setEnabled(false);
gSaveBtn = new JButton(gSaveIcon);
gSaveBtn.setToolTipText("Save a header file.");
gSaveBtn.setPreferredSize(iconSize);
gSaveBtn.addActionListener(this);
buttonFace(gSaveBtn);
gSaveBtn.setEnabled(false);
convertBtn = new JButton(runIcon);
convertBtn.setToolTipText("Start converting the selected files");
convertBtn.setPreferredSize(iconSize);
convertBtn.addActionListener(this);
buttonFace(convertBtn);
convertBtn.setEnabled(false);
stopBtn = new JButton(stopIcon);
stopBtn.addActionListener(this);
stopBtn.setEnabled(false);
stopBtn.setPreferredSize(iconSize);
buttonFace(stopBtn);
fileToolBar.add(fileBrowserBtn);
fileToolBar.add(gOpenBtn);
fileToolBar.add(gSaveBtn);
fileToolBar.add(convertBtn);
fileToolBar.add(stopBtn);
editToolBar = new JToolBar(); // begin to process editToolBar
editToolBar.setBorderPainted(false);
editToolBar.setName("Edit ...");
changeDirBtn = new JButton(changeDirIcon);
changeDirBtn.setToolTipText("Change output directory.");
changeDirBtn.setPreferredSize(iconSize);
changeDirBtn.addActionListener(this);
changeDirBtn.setEnabled(false);
buttonFace(changeDirBtn);
editBtn = new JButton(editIcon);
editBtn.setToolTipText("Modify the output file name.");
editBtn.setPreferredSize(iconSize);
editBtn.addActionListener(this);
buttonFace(editBtn);
deleteBtn = new JButton(deleteIcon);
deleteBtn.setToolTipText("Remove the files from the selected list.");
deleteBtn.addActionListener(this);
deleteBtn.setPreferredSize(iconSize);
buttonFace(deleteBtn);
clearBtn = new JButton(clearIcon);
clearBtn.setToolTipText("Clear interface and set Converter to its original status.");
clearBtn.setEnabled(false);
clearBtn.setPreferredSize(iconSize);
clearBtn.addActionListener(this);
buttonFace(clearBtn);
gAnnBtn = new JButton(gAnnOneIcon);
gAnnBtn.setToolTipText(ONE_ONE_INFO);
gAnnBtn.setPreferredSize(iconSize);
gAnnBtn.addActionListener(this);
gAnnBtn.setName(ONE_ONE);
buttonFace(gAnnBtn);
editToolBar.add(changeDirBtn);
editToolBar.add(editBtn);
editToolBar.add(deleteBtn);
editToolBar.add(clearBtn);
editToolBar.add(gAnnBtn);
outSelBar = new JToolBar();
outSelBar.setBorderPainted(false);
outSelBar.setName("Output Type");
outputLB = new JLabel("Output: ");
outputLB.setPreferredSize(new Dimension(45, 27));
outputCB = new JComboBox(FILE_TYPE);
outputCB.setBorder(low);
outputCB.setPreferredSize(new Dimension(60, 27));
outputCB.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent ie){
if(ie.getStateChange() == ItemEvent.SELECTED){
outputType = outputCB.getSelectedIndex();
if(gSelConverter == GENEPIX){
genePixPL.adjustGUI(outputType);
} else if(gSelConverter == IMAGENE){
imaGenePL.adjustGUI(outputType);
} else if(gSelConverter == SCANARRAY){
scanArrayPL.adjustGUI(outputType);
} else if(gSelConverter == TAV){
tavPL.adjustGUI(outputType);
} else if(gSelConverter == MEV){
mevPL.adjustGUI(outputType);
}
}
}
});
outSelBar.add(outputLB);
outSelBar.add(outputCB);
helpToolBar = new JToolBar(); // begin to process helpToolBar
helpToolBar.setBorderPainted(false);
helpToolBar.setName("Help ...");
viewLogBtn = new JButton(viewLogIcon);
viewLogBtn.setToolTipText("View Log");
viewLogBtn.setPreferredSize(iconSize);
viewLogBtn.addActionListener(this);
buttonFace(viewLogBtn);
helpBtn = new JButton(helpIcon);
helpBtn.setToolTipText("Open Manual.");
helpBtn.setPreferredSize(iconSize);
helpBtn.addActionListener(this);
buttonFace(helpBtn);
if(gOs != MAC){
helpToolBar.add(helpBtn);
}
helpToolBar.add(viewLogBtn);
}
/*****************************************************************************
* Description:
* check if user selected a file with correct file extesion
* Parameters:
* Return: true if qualified; otherwise, false.
***************************************************************************/
private boolean isValidFileName(String names[], String ftypes[]){
String temp = new String("");
String fExt;
int num, i, j, k;
boolean correct = true;
boolean oneRight;
if(names != null) {
num = names.length;
for(i=0; i Parameter:
* Parameter:
* Parameter:
* Parameter:
* Return: the test results: -1 -- quit; 0 -- no overwrite;
* 1 -- overwrite one file; 2 -- overwrite all files.
**************************************************************************/
public int validFile(String fName, boolean needTest, int btnShow){
String name = new String(fName);
String folder = new String("");
int confirm = 1;
JFrame jf = new JFrame();
File targFile = null;
folder = IOUtil.extractPath(name);
folder = IOUtil.makeDir(folder);
if(needTest){
targFile = new File(name);
if(targFile.exists()) {
jf.getToolkit().beep();
ConfirmUsers cu = new ConfirmUsers(jf, title,
"The file \"" + name +"\" already exists, do you want to replace " +
"the existing file?", btnShow, true);
confirm = cu.getConfirmed();
}
} else {
confirm = 2;
}
return confirm;
}
/****************************************************************************
* Description:
* set the interface to its original status.
**************************************************************************/
private void reset(){
if(gSelConverter == GENEPIX){
genePixPL.reset();
} else if (gSelConverter == IMAGENE){
imaGenePL.reset();
} else if(gSelConverter == SCANARRAY){
scanArrayPL.reset();
} else if(gSelConverter == ARRAYVERSION){
arrayVersionPL.reset();
} else if(gSelConverter == ALIGENT){
aligentPL.reset();
} else if(gSelConverter == TAV){
tavPL.reset();
} else if(gSelConverter == MEV){
mevPL.reset();
} else if(gSelConverter == CUSTOMER){
gCustomerPL.reset();
}
progLabel.setText(info);
infoLB.setText("");
fileBrowserBtn.setEnabled(true);
deleteBtn.setEnabled(true);
bar.setValue(0);
}
/***************************************************************************
* Description:
* delete a selected file from the list.
*************************************************************************/
private void removeFile(){
if(gSelConverter == GENEPIX){
genePixPL.removeFileFromList();
} else if (gSelConverter == IMAGENE) {
imaGenePL.removeFileFromList();
} else if(gSelConverter == SCANARRAY){
scanArrayPL.removeFileFromList();
} else if(gSelConverter == ARRAYVERSION){
arrayVersionPL.removeFileFromList();
} else if(gSelConverter == ALIGENT){
aligentPL.removeFileFromList();
} else if(gSelConverter == TAV){
tavPL.removeFileFromList();
} else if(gSelConverter == MEV){
mevPL.removeFileFromList();
} else if(gSelConverter == CUSTOMER){
gCustomerPL.removeFileFromList();
}
}
/****************************************************************************
* Descripiton:
* save the header information to a file for Customize conversion.
**************************************************************************/
private void openCustomerHeader(){
File hdFile = null;
hdFile = getFile(ECH, CUS_HEADER_FILE, gSysPath);
if(hdFile != null){
gCustomerPL.loadHeader(hdFile);
}
}
/**************************************************************************
* Description:
* assigns value to gAnnType and adjust GUI.
**************************************************************************/
private void setAnnFileType(){
if(gAnnBtn.getName().equals(ONE_ONE)){
gAnnType = ALL_FILES;
gAnnBtn.setIcon(gAnnManyIcon);
gAnnBtn.setName(MANY_ONE);
gAnnBtn.setToolTipText(MANY_ONE_INFO);
gAnnManyCkbox.setSelected(true);
} else {
gAnnType = ONE_FILE;
gAnnBtn.setIcon(gAnnOneIcon);
gAnnBtn.setName(ONE_ONE);
gAnnBtn.setToolTipText(ONE_ONE_INFO);
gAnnOneCkbox.setSelected(true);
}
}
/***************************************************************************
* Description:
* creates an array of customized file types.
* Parameter:
* Return: the array of types.
*************************************************************************/
private String[] setCustomizedFileType(String type){
int i = 0;
StringTokenizer token = new StringTokenizer(type, " ");
String[] temp = new String[token.countTokens()];
while(token.hasMoreTokens()){
temp[i++] = token.nextToken();
}
return temp;
}
/****************************************************************************
*Description:
* show users a pop-up window for editing parameters in the configuration
* file.
***************************************************************************/
private void setOption(){
String types;
ConverterOption ctOption = new ConverterOption(this, true);
ctOption.show();
if(ctOption.dataEntered && ctOption.dirtyData){
gUserTypes = ctOption.getCustomizedFileNameExtensions();
gCustType = setCustomizedFileType(gUserTypes);
gFileLine = ctOption.getPreviewFileSize();
gDirtyData = true;
}
}
/***************************************************************************
* Descripiton:
* modifies the GUI based on user's preference, which is saved in .ini
***************************************************************************/
private void setPreferenceState(){
inputTP.setSelectedIndex(gSelConverter);
outputCB.setSelectedIndex(0);
outputCB.setSelectedIndex(1);
if(gSelConverter == MEV){
outputType = TAV_OUT;
mevPL.adjustGUI(outputType);
outputCB.setSelectedIndex(outputType);
outputCB.setEnabled(false);
} else if(gSelConverter == TAV || gSelConverter == ARRAYVERSION ||
gSelConverter == ALIGENT || gSelConverter == CUSTOMER){
outputCB.setEnabled(false);
} else {
outputCB.setEnabled(true);
}
if(gSelConverter == IMAGENE || gSelConverter == MEV || gSelConverter == ARRAYVERSION){
gAnnBtn.setEnabled(false);
gAnnOneCkbox.setEnabled(false);
gAnnManyCkbox.setEnabled(false);
} else {
gAnnBtn.setEnabled(true);
gAnnOneCkbox.setEnabled(true);
gAnnManyCkbox.setEnabled(true);
}
}
/****************************************************************************
* Description:
* sets the window view feel based on the selection.
* Parameter:
* Parameters:
*
e --- the mouse event
***************************************************************************/
private void buttonUp(MouseEvent e){
JButton btn = (JButton)e.getSource();
if(btn.isEnabled())
btn.setBorder(new BevelBorder(0));
}
/****************************************************************************
* Description:
* change the directory for output files.
***************************************************************************/
private void changeDirectory(){
File file;
int result;
String tempPath;
JFileChooser fileChooser = new JFileChooser(gSysPath);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setDialogTitle(TITLE + " -- selecting a directory");
result = fileChooser.showOpenDialog(this);
if(result == JFileChooser.CANCEL_OPTION || result < 0){
return;
}
file = fileChooser.getSelectedFile();
tempPath = file.getPath();
gSysPath = tempPath;
if(gSelConverter == GENEPIX){
genePixPL.editDirectory(tempPath);
} else if(gSelConverter == IMAGENE){
imaGenePL.editDirectory(tempPath);
} else if(gSelConverter == SCANARRAY){
scanArrayPL.editDirectory(tempPath);
} else if(gSelConverter == ARRAYVERSION){
arrayVersionPL.editDirectory(tempPath);
} else if(gSelConverter == ALIGENT){
aligentPL.editDirectory(tempPath);
} else if(gSelConverter == TAV){
tavPL.editDirectory(tempPath);
} else if(gSelConverter == MEV){
mevPL.editDirectory(tempPath);
} else if(gSelConverter == CUSTOMER){
gCustomerPL.editDirectory(tempPath);
}
}
/****************************************************************************
* Description:
* updates the intial file.
***************************************************************************/
private void changeInitFile() {
initFile = MyIni.setValueToFile(initFile, SCREEN_X, "" + gSizeX);
initFile = MyIni.setValueToFile(initFile, SCREEN_Y, "" + gSizeY);
initFile = MyIni.setValueToFile(initFile, SCREEN_FEEL, "" + gScrFeel);
initFile = MyIni.setValueToFile(initFile, SCREEN_PREF, "" + gSelConverter);
initFile = MyIni.setValueToFile(initFile, LOC_X, "" + gLocX);
initFile = MyIni.setValueToFile(initFile, LOC_Y, "" + gLocY);
initFile = MyIni.setValueToFile(initFile, CUST_FILE, gUserTypes);
initFile = MyIni.setValueToFile(initFile, CUST_LINE, "" + gFileLine);
}
/****************************************************************************
* Description:
* validate the selected files and process the conversion.
**************************************************************************/
private void convertFiles(){
int numOfFiles, i, test;
String temp = new String("");
Vector validOutputFiles, deletedFileAddr, outputFileNames;
boolean wantTest;
outputFileNames = new Vector();
if(gSelConverter == GENEPIX){
outputFileNames = genePixPL.getOutputFileNames();
selectedChAFiles = genePixPL.getSelectedFiles();
} else if(gSelConverter == IMAGENE){
outputFileNames = imaGenePL.getOutputFileNames();
selectedChAFiles = imaGenePL.getSelectedChAFiles();
selectedChBFiles = imaGenePL.getSelectedChBFiles();
} else if(gSelConverter == SCANARRAY){
outputFileNames = scanArrayPL.getOutputFileNames();
selectedChAFiles = scanArrayPL.getSelectedFiles();
} else if(gSelConverter == ARRAYVERSION){
outputFileNames = arrayVersionPL.getOutputFileNames();
selectedChAFiles = arrayVersionPL.getSelectedFiles();
} else if(gSelConverter == ALIGENT){
outputFileNames = aligentPL.getOutputFileNames();
selectedChAFiles = aligentPL.getSelectedFiles();
} else if(gSelConverter == TAV){
outputFileNames = tavPL.getOutputFileNames();
selectedChAFiles = tavPL.getSelectedFiles();
} else if(gSelConverter == MEV){
outputFileNames = mevPL.getOutputFileNames();
selectedChAFiles = mevPL.getSelectedFiles();
} else if(gSelConverter == CUSTOMER){
if(gCustomerPL.isValidEquation()){
outputFileNames = gCustomerPL.getOutputFileNames();
selectedChAFiles = gCustomerPL.getSelectedFiles();
} else {
return;
}
}
numOfFiles = outputFileNames.size();
validOutputFiles = new Vector(numOfFiles, numOfFiles >> 2);
deletedFileAddr = new Vector(numOfFiles, numOfFiles >> 2);
wantTest = true;
for(i=0; i
fileType --- describe the file type;
*
path --- the path the program is running or file located.
*
fileType --- describe the file type;
*
path --- the path the program is running or file located.
*
sysOs --- a string that contains OS info.
*
names --- the file names.
*
ftypes -- the extensions to be checked.
*
msg --- the message to be showed.
***************************************************************************/
public void alertUsers(String msg){
getToolkit().beep();
JOptionPane.showMessageDialog(this, msg, "You make a mistake ... ",
JOptionPane.ERROR_MESSAGE);
}
public Vector getCustomizedFileTypes() {
Vector vec = new Vector(gCustType.length);
for(int i=0; i
load -- true if the program is lauching;
***************************************************************************/
static void showAbout(boolean load) {
Image image=Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("images/convertface.gif"));
proPic = new Proface(image, Proface.SHOW_INFO_BUTTON, Color.black);
proPic.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent pe){
if(pe.getPropertyName().equals(Proface.CREDIT)){
presentThanks();
}
}
});
projector = new ProfaceProjector(proPic, load);
projector.start();
if(!load){
projector.setTextColor(Color.green);
projector.setButtonTextColor(Color.green);
projector.setButtonText(" Acknowledgments ");
projector.setInfoText(" Jerry Li and John Quackenbush. ");
}
}
/*****************************************************************************
*Desc1ription:
* presets credit information about ExpressConverter.
*
load -- true if the program is lauching;
***************************************************************************/
static void presentThanks() {
JTextArea ta = new JTextArea();
StringBuffer thank = new StringBuffer(100);
thank.append("We thank following people for their great contributions:\n\n");
thank.append("Vasily Sharov at TIGR for his valuable comments about intensity conversion\n");
thank.append(" algorithms.\n");
thank.append("Dr. Joseph White at TIGR for his spot mapping algorithms.\n");
thank.append("Dr. Wes Warren at Washington University, St. Louis, for providing information\n");
thank.append(" about ScanArray file format.\n");
thank.append("Dr. Dave Berger at the University of Pretoria, South Africa, for providing\n");
thank.append(" information about ArrayVision file format.\n");
thank.append("Vu Chu at University of Washington for his protype to convert Agilent file.\n");
ta.setSize(proPic.getImageWidth(), proPic.getImageHeight());
creditWin = new Proface(ta, thank.toString(), Color.black);
creditWin.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent pe){
if(pe.getPropertyName().equals(Proface.CLOSE)) {
projector.terminate();
}
}
});
projector.setFace(creditWin);
projector.setButtonTextColor(Color.green);
projector.setTextColor(Color.yellow);
}
/****************************************************************************
* Description:
* stop the conversion by kill thread.
***************************************************************************/
public void terminate(){
if(genepixTavConvt != null){
if(genepixTavConvt.isAlive()){
genepixTavConvt.stop();
}
}
if(genepixMevConvt != null){
if(genepixMevConvt.isAlive()){
genepixMevConvt.stop();
}
}
if(imaGeneTavConvt != null){
if(imaGeneTavConvt.isAlive()){
imaGeneTavConvt.stop();
}
}
if(imaGeneMevConvt != null){
if(imaGeneMevConvt.isAlive()){
imaGeneMevConvt.stop();
}
}
if(scanArrayTavConvt != null){
if(scanArrayTavConvt.isAlive()){
scanArrayTavConvt.stop();
}
}
if(arrayVersionMevConvt != null){
if(arrayVersionMevConvt.isAlive()){
arrayVersionMevConvt.stop();
}
}
if(aligentMevConvt != null){
if(aligentMevConvt.isAlive()){
aligentMevConvt.stop();
}
}
if(tavMevConvt != null){
if(tavMevConvt.isAlive()){
tavMevConvt.stop();
}
}
if(mevTavConvt != null){
if(mevTavConvt.isAlive()){
mevTavConvt.stop();
}
}
if(gCustMevConvt != null){
if(gCustMevConvt.isAlive()){
gCustMevConvt.stop();
}
}
info = "";
progCounter = progEnd;
cvTimer.stop();
progLabel.setText("Converting is stopped.");
stopBtn.setEnabled(false);
stopMI.setEnabled(false);
clearBtn.setEnabled(true);
resetMI.setEnabled(true);
convertBtn.setEnabled(true);
fileBrowserBtn.setEnabled(true);
deleteBtn.setEnabled(true);
changeDirBtn.setEnabled(true);
changeDirMI.setEnabled(true);
changeNameMI.setEnabled(true);
editBtn.setEnabled(true);
}
/**************************************************************************
* Description:
* check if an entered file is qualified for saving.
*
fName -- the file name.
*
needTest -- indicates if the passed file name need to be tested.
*
type --- a string that defines the set of type.
*
sel -- the selected feel.
***************************************************************************/
private void setWindowFeel(int sel){
try {
if(sel == 1){
UIManager.setLookAndFeel(new WindowsLookAndFeel());
} else if (sel == 0){
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} else {
UIManager.setLookAndFeel(new MotifLookAndFeel());
}
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {}
}
/*****************************************************************************
* Description:
* presents a help windows to show manual.
***************************************************************************/
private void showHelp() {
String helpFile = new String(MANUAL_NAME);
String appl = new String("hh ");
// the program that must be associated and should be under 'winnt' directory.
// you may need to add the path to run the program
if(!runner.isRunning()){
helpWinOn = false;
}
if(!helpWinOn){
runner = new ProgramRunner(appl, helpFile);
runner.start();
helpWinOn = true;
}
}
/*****************************************************************************
* Description:
* opens a window to show error message.
***************************************************************************/
private void showLogContent(){
if(!logWinOn){
logViewWin = new ConverterLogView(this, logFileContent, title);
logViewWin.show();
logWinOn = true;
} else {
logViewWin.setState(JFrame.NORMAL);
logViewWin.show();
}
}
/****************************************************************************
* Description:
* present correct messages based on convertsion progress.
*
done -- true if the converting is done; otherwise false;
*
error -- true if converting has error.
**************************************************************************/
private void showProgressMassege(boolean done, boolean error, boolean smMistake){
if(done && !error && !smMistake){
progLabel.setText("Converting is successful.");
} else if (error){
progLabel.setText("Converting is interrupted due to errors, which are showed in the Log Window.");
} else if (smMistake){
progLabel.setText("Converting is completed with some errors, which are showed in the Log Window.");
} else {
progLabel.setText("");
}
}
/***************************************************************************
* Description:
* teminate the converting process by the timer.
***************************************************************************/
private void stopConverting(){
progLabel.setText(info);
bar.setValue(progCounter);
progCounter = 0;
progEnd = 1000;
Toolkit.getDefaultToolkit().beep();
bar.setMaximum(progEnd);
bar.setValue(progCounter);
cvTimer.stop();
info = "";
infoLB.setText(info);
if(outputType == TAV_OUT && gSelConverter == GENEPIX){
showProgressMassege(genepixTavConvt.ready, genepixTavConvt.fetalError,
genepixTavConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == GENEPIX){
showProgressMassege(genepixMevConvt.ready, genepixMevConvt.fetalError,
genepixMevConvt.minorError);
} else if (outputType == TAV_OUT && gSelConverter == IMAGENE){
showProgressMassege(imaGeneTavConvt.ready, imaGeneTavConvt.fetalError,
imaGeneTavConvt.minorError);
} else if (outputType == MEV_OUT && gSelConverter == IMAGENE){
showProgressMassege(imaGeneMevConvt.ready, imaGeneMevConvt.fetalError,
imaGeneMevConvt.minorError);
} else if(outputType == TAV_OUT && gSelConverter == SCANARRAY){
showProgressMassege(scanArrayTavConvt.ready, scanArrayTavConvt.fetalError,
scanArrayTavConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == SCANARRAY){
showProgressMassege(scanArrayMevConvt.ready, scanArrayMevConvt.fetalError,
scanArrayMevConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == TAV){
showProgressMassege(tavMevConvt.ready, tavMevConvt.fetalError,
tavMevConvt.minorError);
} else if(outputType == TAV_OUT && gSelConverter == MEV){
showProgressMassege(mevTavConvt.ready, mevTavConvt.fetalError,
mevTavConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == ARRAYVERSION){
showProgressMassege(arrayVersionMevConvt.ready, arrayVersionMevConvt.fetalError,
arrayVersionMevConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == ALIGENT){
showProgressMassege(aligentMevConvt.ready, aligentMevConvt.fetalError,
aligentMevConvt.minorError);
} else if(outputType == MEV_OUT && gSelConverter == CUSTOMER){
showProgressMassege(gCustMevConvt.ready, gCustMevConvt.fetalError,
gCustMevConvt.minorError);
}
activateButton(true, true);
}
/**************************************************************************
* Description:
* terminates the program.
*************************************************************************/
private void terminateProgram(String msg){
JFrame frame = new JFrame();
frame.getToolkit().beep();
JOptionPane.showMessageDialog(null, msg, "Error in ... ", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
/*****************************************************************************
* INNERCLASS: ConverterListener
* DESCRIPTION: peridically checks progress of the converting.
***************************************************************************/
class ConvertListener implements ActionListener {
Converter convt;
public ConvertListener(Converter c){
convt = c;
}
public void actionPerformed(ActionEvent evt) {
if(convt.fetalError){
logFileContent.add(convt.getErrorMsg());
stopConverting();
return;
}
curTime = System.currentTimeMillis ();
progEnd = convt.getTaskEnd();
bar.setMaximum(convt.getTaskEnd());
progCounter = convt.getCurrent();
if(progCounter == 0){
progLabel.setText("Wait, preparing for converting ... " + " Elapsed time: "
+ MyTimer.changeToStandardTime((curTime - startTime)/1000));
return;
}
infoLB.setText("Converting " + convt.getFileName() + " ...");
info = "completed " + (progCounter>>1) + " out of " + (progEnd>>1) + " spots "
+ "for " + selectedChAFiles.size() + " files. Elapsed time: "
+ MyTimer.changeToStandardTime((curTime - startTime)/1000);
if(progCounter < progEnd) {
progLabel.setText(info);
bar.setValue(progCounter);
} else if(progEnd != 0){
logFileContent.add(convt.getErrorMsg());
stopConverting();
return;
}
}
}
}