mirror of
https://github.com/AppleCommander/AppleCommander.git
synced 2024-11-04 11:04:53 +00:00
Added CTRL+A (select all), fixed printing (except for font selection),
improved copy to clipboard (if no selection, the entire document is copied), added some comments, fixed shortcut handling.
This commit is contained in:
parent
7084b35a9f
commit
082b51c11a
@ -72,6 +72,7 @@ import org.eclipse.swt.widgets.ToolItem;
|
||||
* @author: Rob Greene
|
||||
*/
|
||||
public class FileViewerWindow {
|
||||
private static final char CTRL_A = 'A' - '@';
|
||||
private static final char CTRL_P = 'P' - '@';
|
||||
private static final char CTRL_C = 'C' - '@';
|
||||
|
||||
@ -278,26 +279,38 @@ public class FileViewerWindow {
|
||||
|
||||
toolBar.pack();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print current file.
|
||||
*/
|
||||
protected void print() {
|
||||
PrintDialog dialog = new PrintDialog(shell);
|
||||
PrinterData printerData = dialog.open();
|
||||
if (printerData == null) return;
|
||||
Printer printer = new Printer(printerData);
|
||||
final Printer printer = new Printer(printerData);
|
||||
|
||||
Control control = content.getContent();
|
||||
final Control control = content.getContent();
|
||||
if (control instanceof StyledText) {
|
||||
StyledText styledText = (StyledText) control;
|
||||
styledText.print();
|
||||
// FIXME: Unable to use printer chosen and print?!
|
||||
//printer.startJob(fileEntry.getFilename());
|
||||
//printer.startPage();
|
||||
// StyledTextPrintOptions options = new StyledTextPrintOptions();
|
||||
// options.jobName = fileEntry.getFilename();
|
||||
// options.printTextFontStyle = true;
|
||||
// styledText.print(printer); //, options);
|
||||
//printer.endPage();
|
||||
//printer.endJob();
|
||||
StyledTextPrintOptions options = new StyledTextPrintOptions();
|
||||
options.jobName = fileEntry.getFilename();
|
||||
options.printLineBackground = true;
|
||||
options.printTextBackground = true;
|
||||
options.printTextFontStyle = true;
|
||||
options.printTextForeground = true;
|
||||
options.footer = "\t<page>";
|
||||
options.header = "\t" + fileEntry.getFilename();
|
||||
|
||||
final Runnable runnable = styledText.print(printer, options);
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
runnable.run();
|
||||
printer.dispose();
|
||||
}
|
||||
}).start();
|
||||
} else if (control instanceof ImageCanvas) {
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
printer.startJob(fileEntry.getFilename());
|
||||
printer.startPage();
|
||||
Point dpi = printer.getDPI();
|
||||
@ -314,14 +327,39 @@ public class FileViewerWindow {
|
||||
printer.endPage();
|
||||
printer.endJob();
|
||||
gc.dispose();
|
||||
printer.dispose();
|
||||
}
|
||||
//printer.dispose();
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Select all text within the widget.
|
||||
*/
|
||||
protected void selectAll() {
|
||||
Control control = content.getContent();
|
||||
if (control instanceof StyledText) { // only applies to StyledText
|
||||
StyledText styledText = (StyledText) control;
|
||||
styledText.selectAll();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform copy operation.
|
||||
*/
|
||||
protected void copy() {
|
||||
Control control = content.getContent();
|
||||
if (control instanceof StyledText) {
|
||||
StyledText styledText = (StyledText) control;
|
||||
// If there is no selection, copy everything
|
||||
if (styledText.getSelectionCount() == 0) {
|
||||
Point selection = styledText.getSelection();
|
||||
styledText.selectAll();
|
||||
styledText.copy();
|
||||
styledText.setSelection(selection);
|
||||
} else { // copy current selection
|
||||
styledText.copy();
|
||||
}
|
||||
} else if (control instanceof ImageCanvas) {
|
||||
// TODO: Can SWT copy an image to the clipboard?
|
||||
// Clipboard clipboard = new Clipboard(shell.getDisplay());
|
||||
@ -330,6 +368,10 @@ public class FileViewerWindow {
|
||||
// clipboard.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the file in its native format.
|
||||
*/
|
||||
protected void displayNativeFormat() {
|
||||
Control oldContent = content.getContent();
|
||||
if (oldContent != null) {
|
||||
@ -432,6 +474,10 @@ public class FileViewerWindow {
|
||||
displayHexFormat();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a StyledText widget for displaying plain text.
|
||||
*/
|
||||
protected void createTextWidget(Composite composite, String text) {
|
||||
copyToolItem.setEnabled(true);
|
||||
|
||||
@ -448,6 +494,10 @@ public class FileViewerWindow {
|
||||
content.setMinHeight(size.y);
|
||||
content.getContent().addListener(SWT.KeyUp, createToolbarCommandHandler());
|
||||
}
|
||||
|
||||
/**
|
||||
* Display file content as a hex dump.
|
||||
*/
|
||||
protected void displayHexFormat() {
|
||||
copyToolItem.setEnabled(true);
|
||||
|
||||
@ -465,6 +515,10 @@ public class FileViewerWindow {
|
||||
String hexDump = new String(filter.filter(fileEntry));
|
||||
createTextWidget(content, hexDump);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display file content as hex dump of raw disk bytes.
|
||||
*/
|
||||
protected void displayRawFormat() {
|
||||
Control oldContent = content.getContent();
|
||||
if (oldContent != null) {
|
||||
@ -480,6 +534,7 @@ public class FileViewerWindow {
|
||||
fileEntry.getFormattedDisk().getFileData(fileEntry));
|
||||
createTextWidget(content, rawDump);
|
||||
}
|
||||
|
||||
/**
|
||||
* The toolbar command handler contains the global toolbar
|
||||
* actions. The intent is that the listener is then added to
|
||||
@ -489,16 +544,19 @@ public class FileViewerWindow {
|
||||
return new Listener() {
|
||||
public void handleEvent(Event event) {
|
||||
if (event.type == SWT.KeyUp) {
|
||||
if ((event.type & SWT.CTRL) != 0) { // CTRL+key
|
||||
switch (event.keyCode) {
|
||||
if ((event.stateMask & SWT.CTRL) != 0) { // CTRL+key
|
||||
switch (event.character) {
|
||||
case CTRL_C:
|
||||
copy();
|
||||
break;
|
||||
case CTRL_A:
|
||||
selectAll();
|
||||
break;
|
||||
case CTRL_P:
|
||||
print();
|
||||
break;
|
||||
}
|
||||
} else if ((event.type & SWT.ALT) == 0) { // key alone
|
||||
} else if ((event.stateMask & SWT.ALT) == 0) { // key alone
|
||||
switch (event.keyCode) {
|
||||
case SWT.F2: // the "native" file format (image, text, etc)
|
||||
displayNativeFormat();
|
||||
|
Loading…
Reference in New Issue
Block a user