mirror of
https://github.com/AppleCommander/AppleCommander.git
synced 2025-03-13 18:29:51 +00:00
Adding view logic as well as short-cut keys.
This commit is contained in:
parent
4bf23bf409
commit
2d1b20771e
@ -64,8 +64,10 @@ import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.FileDialog;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.MenuItem;
|
||||
import org.eclipse.swt.widgets.MessageBox;
|
||||
@ -94,6 +96,7 @@ public class DiskExplorerTab {
|
||||
private ToolItem exportToolItem;
|
||||
private ToolItem importToolItem;
|
||||
private ToolItem compileToolItem;
|
||||
private ToolItem viewFileItem;
|
||||
private ToolItem deleteToolItem;
|
||||
private ToolItem saveToolItem;
|
||||
private ImageManager imageManager;
|
||||
@ -130,6 +133,7 @@ public class DiskExplorerTab {
|
||||
importToolItem.dispose();
|
||||
deleteToolItem.dispose();
|
||||
compileToolItem.dispose();
|
||||
viewFileItem.dispose();
|
||||
toolBar.dispose();
|
||||
|
||||
directoryTree = null;
|
||||
@ -175,6 +179,7 @@ public class DiskExplorerTab {
|
||||
treeItem[0].setExpanded(!treeItem[0].getExpanded());
|
||||
}
|
||||
});
|
||||
directoryTree.addListener(SWT.KeyUp, createDirectoryKeyboardHandler());
|
||||
|
||||
fileTable = new Table(sashForm, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
|
||||
fileTable.setHeaderVisible(true);
|
||||
@ -217,7 +222,7 @@ public class DiskExplorerTab {
|
||||
Menu menu = new Menu(shell, SWT.POP_UP);
|
||||
|
||||
MenuItem item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Expand");
|
||||
item.setText("Expand\t+");
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
TreeItem[] treeItem = directoryTree.getSelection();
|
||||
@ -227,7 +232,7 @@ public class DiskExplorerTab {
|
||||
item.setEnabled(disks[0].canHaveDirectories());
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Collapse");
|
||||
item.setText("Collapse\t-");
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
TreeItem[] treeItem = directoryTree.getSelection();
|
||||
@ -239,7 +244,7 @@ public class DiskExplorerTab {
|
||||
item = new MenuItem(menu, SWT.SEPARATOR);
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Expand All");
|
||||
item.setText("Expand All\tCtrl +");
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
TreeItem[] treeItem = directoryTree.getSelection();
|
||||
@ -249,7 +254,7 @@ public class DiskExplorerTab {
|
||||
item.setEnabled(disks[0].canHaveDirectories());
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Collapse All");
|
||||
item.setText("Collapse All\tCtrl -");
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
TreeItem[] treeItem = directoryTree.getSelection();
|
||||
@ -278,15 +283,38 @@ public class DiskExplorerTab {
|
||||
Menu menu = new Menu(shell, SWT.POP_UP);
|
||||
|
||||
MenuItem item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Export");
|
||||
item.setText("&View\tCtrl+V");
|
||||
item.setAccelerator(SWT.CTRL+'V');
|
||||
item.setEnabled(true); // FIXME - does this need to be dynamic?
|
||||
item.setImage(imageManager.getViewFileIcon());
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("&Compile...\tCtrl+C");
|
||||
item.setAccelerator(SWT.CTRL+'C');
|
||||
item.setEnabled(true); // FIXME - does this need to be dynamic?
|
||||
item.setImage(imageManager.getCompileIcon());
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
//compileFile(); //FIXME
|
||||
}
|
||||
});
|
||||
|
||||
item = new MenuItem(menu, SWT.SEPARATOR);
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("&Export\tCtrl+E");
|
||||
item.setAccelerator(SWT.CTRL+'E');
|
||||
item.setEnabled(disks[0].canReadFileData());
|
||||
item.setMenu(createFileExportMenu(SWT.DROP_DOWN));
|
||||
item.setImage(imageManager.getExportFileIcon());
|
||||
|
||||
item = new MenuItem(menu, SWT.SEPARATOR);
|
||||
|
||||
item = new MenuItem(menu, SWT.CASCADE);
|
||||
item.setText("Delete...");
|
||||
item.setText("&Delete...\tCtrl+D");
|
||||
item.setAccelerator(SWT.CTRL+'D');
|
||||
item.setEnabled(disks[0].canDeleteFile());
|
||||
item.setImage(imageManager.getDeleteFileIcon());
|
||||
item.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
deleteFile();
|
||||
@ -556,6 +584,7 @@ public class DiskExplorerTab {
|
||||
if (formatChanged) {
|
||||
fileTable.dispose();
|
||||
fileTable = new Table(sashForm, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
|
||||
fileTable.addListener(SWT.KeyUp, createFileKeyboardHandler());
|
||||
fileTable.setHeaderVisible(true);
|
||||
fileTable.setMenu(createFilePopupMenu());
|
||||
fileTable.addSelectionListener(new SelectionListener() {
|
||||
@ -568,11 +597,14 @@ public class DiskExplorerTab {
|
||||
FileEntry fileEntry = (FileEntry) fileTable.getItem(fileTable.getSelectionIndex()).getData();
|
||||
exportToolItem.setEnabled(disks[0].canReadFileData());
|
||||
deleteToolItem.setEnabled(disks[0].canDeleteFile());
|
||||
// FIXME:
|
||||
compileToolItem.setEnabled(fileEntry.canCompile());
|
||||
// FIXME: Need appropriate logic..
|
||||
viewFileItem.setEnabled(true);
|
||||
} else {
|
||||
exportToolItem.setEnabled(false);
|
||||
deleteToolItem.setEnabled(false);
|
||||
compileToolItem.setEnabled(false);
|
||||
viewFileItem.setEnabled(false);
|
||||
}
|
||||
}
|
||||
/**
|
||||
@ -624,6 +656,29 @@ public class DiskExplorerTab {
|
||||
exportToolItem.setEnabled(false);
|
||||
//importToolItem.setEnabled(false);
|
||||
deleteToolItem.setEnabled(false);
|
||||
compileToolItem.setEnabled(false);
|
||||
viewFileItem.setEnabled(false);
|
||||
}
|
||||
/**
|
||||
* Open up the Export Wizard dialog box.
|
||||
*/
|
||||
protected void exportFileWizard() {
|
||||
// Get a sugeseted filter, if possible:
|
||||
FileEntry fileEntry = (FileEntry) fileTable.getSelection()[0].getData();
|
||||
if (fileEntry != null) {
|
||||
fileFilter = fileEntry.getSuggestedFilter();
|
||||
}
|
||||
// Start wizard:
|
||||
ExportWizard wizard = new ExportWizard(shell,
|
||||
imageManager, fileEntry.getFormattedDisk());
|
||||
wizard.setFileFilter(fileFilter);
|
||||
wizard.setDirectory(userPreferences.getExportDirectory());
|
||||
wizard.open();
|
||||
if (wizard.isWizardCompleted()) {
|
||||
fileFilter = wizard.getFileFilter();
|
||||
String exportDirectory = wizard.getDirectory();
|
||||
exportFile(exportDirectory);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Export all selected files.
|
||||
@ -695,6 +750,20 @@ public class DiskExplorerTab {
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Launch the compile file wizard.
|
||||
*/
|
||||
protected void compileFileWizard() {
|
||||
FileEntry fileEntry = (FileEntry) fileTable.getSelection()[0].getData();
|
||||
CompileWizard wizard = new CompileWizard(shell,
|
||||
imageManager, fileEntry.getFormattedDisk());
|
||||
wizard.setDirectory(userPreferences.getCompileDirectory());
|
||||
wizard.open();
|
||||
if (wizard.isWizardCompleted()) {
|
||||
String compileDirectory = wizard.getDirectory();
|
||||
compileFile(compileDirectory);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Compile all selected files.
|
||||
* FIXME: This is a near duplicate of exportFile. Can they be merged?
|
||||
@ -980,22 +1049,7 @@ public class DiskExplorerTab {
|
||||
exportToolItem.addSelectionListener(new SelectionAdapter () {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
if (event.detail != SWT.ARROW) {
|
||||
// Get a suggseted filter, if possible:
|
||||
FileEntry fileEntry = (FileEntry) fileTable.getSelection()[0].getData();
|
||||
if (fileEntry != null) {
|
||||
fileFilter = fileEntry.getSuggestedFilter();
|
||||
}
|
||||
// Start wizard:
|
||||
ExportWizard wizard = new ExportWizard(shell,
|
||||
imageManager, fileEntry.getFormattedDisk());
|
||||
wizard.setFileFilter(fileFilter);
|
||||
wizard.setDirectory(userPreferences.getExportDirectory());
|
||||
wizard.open();
|
||||
if (wizard.isWizardCompleted()) {
|
||||
fileFilter = wizard.getFileFilter();
|
||||
String exportDirectory = wizard.getDirectory();
|
||||
exportFile(exportDirectory);
|
||||
}
|
||||
exportFileWizard();
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -1009,16 +1063,18 @@ public class DiskExplorerTab {
|
||||
compileToolItem.addSelectionListener(new SelectionAdapter () {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
if (event.detail != SWT.ARROW) {
|
||||
// Start wizard:
|
||||
FileEntry fileEntry = (FileEntry) fileTable.getSelection()[0].getData();
|
||||
CompileWizard wizard = new CompileWizard(shell,
|
||||
imageManager, fileEntry.getFormattedDisk());
|
||||
wizard.setDirectory(userPreferences.getCompileDirectory());
|
||||
wizard.open();
|
||||
if (wizard.isWizardCompleted()) {
|
||||
String compileDirectory = wizard.getDirectory();
|
||||
compileFile(compileDirectory);
|
||||
}
|
||||
compileFileWizard();
|
||||
}
|
||||
}
|
||||
});
|
||||
viewFileItem = new ToolItem(toolBar, SWT.PUSH);
|
||||
viewFileItem.setImage(imageManager.getViewFileIcon());
|
||||
viewFileItem.setText("View");
|
||||
viewFileItem.setToolTipText("View file");
|
||||
viewFileItem.setEnabled(false);
|
||||
viewFileItem.addSelectionListener(new SelectionAdapter () {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
if (event.detail != SWT.ARROW) {
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -1090,4 +1146,60 @@ public class DiskExplorerTab {
|
||||
box.open();
|
||||
}
|
||||
}
|
||||
|
||||
private Listener createDirectoryKeyboardHandler() {
|
||||
return new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
if (event.type == SWT.KeyUp) {
|
||||
TreeItem[] treeItem = null;
|
||||
if ((event.stateMask & SWT.CTRL) != 0) {
|
||||
switch (event.character) {
|
||||
case '-':
|
||||
treeItem = directoryTree.getSelection();
|
||||
setDirectoryExpandedStates(treeItem[0], false);
|
||||
break;
|
||||
case '+':
|
||||
treeItem = directoryTree.getSelection();
|
||||
setDirectoryExpandedStates(treeItem[0], true);
|
||||
break;
|
||||
}
|
||||
} else { // assume no control and no alt
|
||||
switch (event.character) {
|
||||
case '-':
|
||||
treeItem = directoryTree.getSelection();
|
||||
treeItem[0].setExpanded(false);
|
||||
break;
|
||||
case '+':
|
||||
treeItem = directoryTree.getSelection();
|
||||
treeItem[0].setExpanded(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Listener createFileKeyboardHandler() {
|
||||
return new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
if (event.type == SWT.KeyUp && (event.stateMask & SWT.CTRL) != 0) {
|
||||
switch (event.character) {
|
||||
case 0x03: // CTRL+C
|
||||
compileFileWizard();
|
||||
break;
|
||||
case 0x04: // CTRL+D
|
||||
deleteFile();
|
||||
break;
|
||||
case 0x05: // CTRL+E
|
||||
exportFileWizard();
|
||||
break;
|
||||
case 'V'-' ': // CTRL+V
|
||||
// TODO
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user