Added a wizard window to avoid as much as possible using the command line.
This way through clicking on the application through the wizard one can choose to connect to the available on-line dicts, open a local dict or generate a dict database.
This commit is contained in:
parent
4caeafa1b1
commit
cce779bf88
6 changed files with 718 additions and 86 deletions
259
source/org/thdl/tib/scanner/CreateDatabaseWizard.java
Normal file
259
source/org/thdl/tib/scanner/CreateDatabaseWizard.java
Normal file
|
@ -0,0 +1,259 @@
|
|||
package org.thdl.tib.scanner;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.*;
|
||||
import org.thdl.util.*;
|
||||
import org.thdl.tib.scanner.*;
|
||||
import javax.swing.*;
|
||||
|
||||
class CreateDatabaseWizard extends Dialog implements ActionListener, ItemListener
|
||||
{
|
||||
private Label dictNum;
|
||||
private int numDict, delimiterType;
|
||||
private Label fileName;
|
||||
private TextField dicDesc, dicAbb, delimiter;
|
||||
private Choice dicType;
|
||||
private List listDicts;
|
||||
private Button add, ok, cancel, browse;
|
||||
private Frame owner;
|
||||
private SimplifiedLinkedList dicts;
|
||||
private boolean pocketpc;
|
||||
private String response;
|
||||
|
||||
CreateDatabaseWizard(Frame owner, boolean pocketpc)
|
||||
{
|
||||
super(owner, "Generation of Binary Tree Dictionary", true);
|
||||
this.pocketpc = pocketpc;
|
||||
this.owner = owner;
|
||||
response = "";
|
||||
dicts = new SimplifiedLinkedList();
|
||||
|
||||
this.setLayout(new BorderLayout());
|
||||
if (pocketpc)
|
||||
{
|
||||
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
this.setSize(d);
|
||||
} else this.setSize(400,300);
|
||||
Panel p1, p2, p3;
|
||||
p1 = new Panel(new GridLayout(4, 1));
|
||||
p2 = new Panel(new FlowLayout(FlowLayout.LEFT));
|
||||
p2.add(new Label("Dictionary "));
|
||||
numDict = 1;
|
||||
dictNum = new Label(Integer.toString(numDict));
|
||||
p2.add(dictNum);
|
||||
p2.add(new Label(":"));
|
||||
p1.add(p2);
|
||||
p2 = new Panel(new BorderLayout());
|
||||
p2.add(new Label("File name:"), BorderLayout.WEST);
|
||||
fileName = new Label();
|
||||
p2.add(fileName, BorderLayout.CENTER);
|
||||
browse = new Button("Browse...");
|
||||
browse.addActionListener(this);
|
||||
p2.add(browse, BorderLayout.EAST);
|
||||
p1.add(p2);
|
||||
p2 = new Panel(new BorderLayout());
|
||||
if (pocketpc) p2.add(new Label("Desc:"), BorderLayout.WEST);
|
||||
else p2.add(new Label("Description:"), BorderLayout.WEST);
|
||||
dicDesc = new TextField(20);
|
||||
p2.add(dicDesc, BorderLayout.CENTER);
|
||||
p3 = new Panel(new FlowLayout());
|
||||
if (pocketpc) p3.add(new Label("Abv:"));
|
||||
else p3.add(new Label("Abbreviation:"));
|
||||
dicAbb = new TextField(6);
|
||||
p3.add(dicAbb);
|
||||
p2.add(p3, BorderLayout.EAST);
|
||||
p1.add(p2);
|
||||
p2 = new Panel(new BorderLayout());
|
||||
p2.add(new Label("Type:"), BorderLayout.WEST);
|
||||
dicType = new Choice();
|
||||
dicType.add("Dash separated");
|
||||
dicType.add("Tab separated");
|
||||
dicType.add("Transcribed ACIP");
|
||||
dicType.add("Other:");
|
||||
dicType.addItemListener(this);
|
||||
p2.add(dicType, BorderLayout.CENTER);
|
||||
p3 = new Panel(new FlowLayout());
|
||||
delimiter = new TextField(" - ");
|
||||
delimiter.setEnabled(false);
|
||||
p3.add(delimiter);
|
||||
add = new Button("Add");
|
||||
add.setEnabled(false);
|
||||
add.addActionListener(this);
|
||||
p3.add(add);
|
||||
p2.add(p3, BorderLayout.EAST);
|
||||
p1.add(p2);
|
||||
this.add(p1, BorderLayout.NORTH);
|
||||
listDicts = new List();
|
||||
this.add(listDicts, BorderLayout.CENTER);
|
||||
|
||||
p1 = new Panel(new FlowLayout());
|
||||
ok = new Button("Generate database");
|
||||
ok.addActionListener(this);
|
||||
ok.setEnabled(false);
|
||||
p1.add(ok);
|
||||
cancel = new Button("Cancel");
|
||||
cancel.addActionListener(this);
|
||||
p1.add(cancel);
|
||||
this.add(p1, BorderLayout.SOUTH);
|
||||
}
|
||||
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
FileDialog fd;
|
||||
DictionaryRecord dr;
|
||||
Button obj = (Button) event.getSource();
|
||||
String fileName, path="";
|
||||
int pos;
|
||||
|
||||
if (obj == cancel)
|
||||
{
|
||||
this.setVisible(false);
|
||||
}
|
||||
if (obj == browse)
|
||||
{
|
||||
fd = new FileDialog(owner, "Select dictionary to open", FileDialog.LOAD);
|
||||
fd.show();
|
||||
fileName = fd.getFile();
|
||||
if (fileName != null)
|
||||
{
|
||||
path = fd.getDirectory() + fileName;
|
||||
this.fileName.setText(path);
|
||||
// strip extension
|
||||
pos = fileName.lastIndexOf('.');
|
||||
if (pos>0) fileName = fileName.substring(0, pos);
|
||||
this.dicDesc.setText(fileName);
|
||||
if (fileName.length()>4) this.dicAbb.setText(fileName.substring(0,4));
|
||||
else this.dicAbb.setText(fileName);
|
||||
add.setEnabled(true);
|
||||
}
|
||||
}
|
||||
else if (obj == add)
|
||||
{
|
||||
dr = new DictionaryRecord(dicDesc.getText()+ "," + dicAbb.getText(), this.fileName.getText(), delimiterType, delimiter.getText());
|
||||
listDicts.add(dr.header + " - " + dicType.getSelectedItem() + "; " + dr.fileName);
|
||||
ok.setEnabled(true);
|
||||
numDict++;
|
||||
dictNum.setText(Integer.toString(numDict));
|
||||
dicts.addLast(dr);
|
||||
|
||||
dicDesc.setText("");
|
||||
dicAbb.setText("");
|
||||
this.fileName.setText("");
|
||||
|
||||
add.setEnabled(false);
|
||||
}
|
||||
else if (obj == ok)
|
||||
{
|
||||
BinaryFileGenerator bfg = new BinaryFileGenerator();
|
||||
AcipToWylie a2w=null;
|
||||
|
||||
// getting the database name
|
||||
if (pocketpc)
|
||||
{
|
||||
fd = new FileDialog(owner, "Save database to", FileDialog.SAVE);
|
||||
fd.show();
|
||||
fileName = fd.getFile();
|
||||
if (fileName!= null)
|
||||
{
|
||||
// dropping the extension
|
||||
pos = fileName.lastIndexOf('.');
|
||||
if (pos>0) fileName = fileName.substring(0, pos);
|
||||
path = fd.getDirectory() + fileName;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DictionaryFileFilter dicFilter = new DictionaryFileFilter();
|
||||
JFileChooser fileChooser = new JFileChooser("Save database to");
|
||||
fileChooser.addChoosableFileFilter(dicFilter);
|
||||
/*setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
|
||||
if (fileChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
|
||||
{
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
return;
|
||||
}*/
|
||||
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
|
||||
{
|
||||
path = fileChooser.getSelectedFile().getPath();
|
||||
pos = path.lastIndexOf('.');
|
||||
if (pos>0) path = path.substring(0, pos);
|
||||
}
|
||||
}
|
||||
|
||||
PrintWriter pr=null;
|
||||
Object dictsArray[] = dicts.toArray();
|
||||
try
|
||||
{
|
||||
pr = new PrintWriter(new FileOutputStream(path + ".dic"));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
|
||||
for (pos=0; pos<dictsArray.length; pos++)
|
||||
{
|
||||
dr = (DictionaryRecord) dictsArray[pos];
|
||||
if (dr.delimiterType==BinaryFileGenerator.delimiterAcip)
|
||||
{
|
||||
try
|
||||
{
|
||||
a2w = new AcipToWylie(new BufferedReader(new InputStreamReader(new FileInputStream(dr.fileName))), new PrintWriter(new FileOutputStream(dr.fileName + ".temp")));
|
||||
a2w.run();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
|
||||
dr.fileName = dr.fileName + ".temp";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
bfg.addFile(dr.fileName, dr.delimiterType, dr.delimiter, pos);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
}
|
||||
|
||||
pr.println(dr.header);
|
||||
}
|
||||
pr.flush();
|
||||
|
||||
try
|
||||
{
|
||||
bfg.generateDatabase(path);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
response = path;
|
||||
this.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void itemStateChanged(ItemEvent e)
|
||||
{
|
||||
Choice ch = (Choice) e.getSource();
|
||||
int sel = ch.getSelectedIndex();
|
||||
|
||||
switch (sel)
|
||||
{
|
||||
case 0: delimiterType = BinaryFileGenerator.delimiterDash;
|
||||
break;
|
||||
case 1: delimiterType = BinaryFileGenerator.delimiterGeneric;
|
||||
delimiter.setText("\t");
|
||||
break;
|
||||
case 2: delimiterType = BinaryFileGenerator.delimiterAcip;
|
||||
break;
|
||||
case 3: delimiterType = BinaryFileGenerator.delimiterGeneric;
|
||||
delimiter.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public String getResponse()
|
||||
{
|
||||
return response;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue