use of org.eclipse.swt.events.KeyAdapter in project OpenGrok by OpenGrok.
the class ResultsDialog method createDialogArea.
@Override
protected Control createDialogArea(Composite parent) {
parent.setLayout(new GridLayout(1, true));
filter = new Text(parent, SWT.FILL);
filter.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
TextUtils.setToDefault(filter, FILTER_DEFAULT);
filter.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
if ("".equals(filter.getText())) {
TextUtils.setToDefault(filter, FILTER_DEFAULT);
}
}
@Override
public void focusGained(FocusEvent e) {
TextUtils.makeEditable(filter);
}
});
filter.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
viewer.refresh();
}
});
return parent;
}
use of org.eclipse.swt.events.KeyAdapter in project OpenGrok by OpenGrok.
the class ToolBarControl method createControl.
@Override
protected Control createControl(Composite parent) {
final Text searchBox = new Text(parent, SWT.FILL | SWT.BORDER);
TextUtils.setToDefault(searchBox, "{OpenGrok");
searchBox.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
if (!disableFocusLostEvent) {
TextUtils.setToDefault(searchBox, "{OpenGrok");
}
}
@Override
public void focusGained(FocusEvent e) {
TextUtils.makeEditable(searchBox);
}
});
searchBox.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
doSearch();
} else if (e.keyCode == SWT.ARROW_UP) {
historyIndex++;
if (historyIndex > history.size()) {
historyIndex = history.size();
}
if (historyIndex >= 0 && history.size() >= historyIndex) {
searchBox.setText(history.get(historyIndex - 1));
}
} else if (e.keyCode == SWT.ARROW_DOWN) {
historyIndex--;
if (historyIndex < 0) {
historyIndex = 0;
} else if (history.size() > historyIndex) {
searchBox.setText(history.get(historyIndex));
}
} else if ((e.stateMask & SWT.CTRL) == SWT.CTRL && e.keyCode == 'v') {
searchBox.setText("");
searchBox.paste();
if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) {
doSearch();
}
} else if (e.stateMask == SWT.CTRL && e.keyCode == 'c') {
searchBox.copy();
}
}
private void doSearch() {
String text = searchBox.getText();
if (text != null && !"".equals(text)) {
history.add(0, text);
historyIndex = 0;
Rectangle bounds = searchBox.getBounds();
Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
topLeft = searchBox.getShell().toDisplay(topLeft);
final ResultsDialog dialog = new ResultsDialog(Display.getCurrent().getActiveShell(), text, topLeft);
Query query = new Query(text);
disableFocusLostEvent = true;
query.run(dialog);
disableFocusLostEvent = false;
}
}
});
return parent;
}
use of org.eclipse.swt.events.KeyAdapter in project dbeaver by serge-rider.
the class DatabaseConsumerPageMapping method createControl.
@Override
public void createControl(Composite parent) {
initializeDialogUnits(parent);
final DatabaseConsumerSettings settings = getWizard().getPageSettings(this, DatabaseConsumerSettings.class);
Composite composite = new Composite(parent, SWT.NULL);
GridLayout gl = new GridLayout();
gl.marginHeight = 0;
gl.marginWidth = 0;
composite.setLayout(gl);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
{
// Target container
Composite containerPanel = new Composite(composite, SWT.NONE);
containerPanel.setLayout(new GridLayout(4, false));
containerPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
UIUtils.createControlLabel(containerPanel, "Target container");
containerIcon = new Label(containerPanel, SWT.NONE);
containerIcon.setImage(DBeaverIcons.getImage(DBIcon.TYPE_UNKNOWN));
containerName = new Text(containerPanel, SWT.BORDER | SWT.READ_ONLY);
containerName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
containerName.setText("");
Button browseButton = new Button(containerPanel, SWT.PUSH);
browseButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_FOLDER));
browseButton.setText("...");
browseButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IProject activeProject = DBeaverCore.getInstance().getProjectRegistry().getActiveProject();
if (activeProject != null) {
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel();
final DBNProject rootNode = navigatorModel.getRoot().getProject(activeProject);
DBNNode selectedNode = settings.getContainerNode();
if (selectedNode == null && !settings.getDataMappings().isEmpty()) {
// Use first source object as cur selection (it's better than nothing)
DBSDataContainer firstSource = settings.getDataMappings().keySet().iterator().next();
selectedNode = navigatorModel.getNodeByObject(firstSource);
while (selectedNode != null) {
if (selectedNode instanceof DBSWrapper && ((DBSWrapper) selectedNode).getObject() instanceof DBSObjectContainer) {
break;
} else {
selectedNode = selectedNode.getParentNode();
}
}
}
DBNNode node = BrowseObjectDialog.selectObject(getShell(), "Choose container", rootNode.getDatabases(), selectedNode, new Class[] { DBSObjectContainer.class }, null);
if (node instanceof DBNDatabaseNode) {
settings.setContainerNode((DBNDatabaseNode) node);
containerIcon.setImage(DBeaverIcons.getImage(node.getNodeIconDefault()));
containerName.setText(settings.getContainerFullName());
// Reset mappings
for (DatabaseMappingContainer mappingContainer : settings.getDataMappings().values()) {
if (mappingContainer.getMappingType() == DatabaseMappingType.create) {
try {
mappingContainer.refreshMappingType(getContainer(), DatabaseMappingType.create);
} catch (DBException e1) {
log.error(e1);
}
}
}
mappingViewer.refresh();
updatePageCompletion();
}
}
}
});
}
createMappingsTree(composite);
{
// Control buttons
Composite buttonsPanel = new Composite(composite, SWT.NONE);
buttonsPanel.setLayout(new GridLayout(4, false));
buttonsPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final Button mapTableButton = new Button(buttonsPanel, SWT.PUSH);
mapTableButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_TABLE));
mapTableButton.setText("Existing table ...");
mapTableButton.setEnabled(false);
mapTableButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
mapExistingTable((DatabaseMappingContainer) getSelectedMapping());
}
});
final Button createNewButton = new Button(buttonsPanel, SWT.PUSH);
createNewButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_VIEW));
createNewButton.setText("New table...");
createNewButton.setEnabled(false);
createNewButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
mapNewTable((DatabaseMappingContainer) getSelectedMapping());
}
});
final Button columnsButton = new Button(buttonsPanel, SWT.PUSH);
columnsButton.setImage(DBeaverIcons.getImage(DBIcon.TREE_COLUMNS));
columnsButton.setText("Columns' mappings ...");
columnsButton.setEnabled(false);
columnsButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
DatabaseMappingObject selectedMapping = getSelectedMapping();
mapColumns(selectedMapping instanceof DatabaseMappingContainer ? (DatabaseMappingContainer) selectedMapping : ((DatabaseMappingAttribute) selectedMapping).getParent());
}
});
final Button ddlButton = new Button(buttonsPanel, SWT.PUSH);
ddlButton.setImage(DBeaverIcons.getImage(UIIcon.SQL_TEXT));
ddlButton.setText("DDL ...");
ddlButton.setEnabled(false);
ddlButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
DatabaseMappingObject selectedMapping = getSelectedMapping();
showDDL(selectedMapping instanceof DatabaseMappingContainer ? (DatabaseMappingContainer) selectedMapping : ((DatabaseMappingAttribute) selectedMapping).getParent());
}
});
mappingViewer.getTree().addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
try {
boolean updated = false;
Object element = null;
if (e.character == SWT.CR) {
//Object element = mappingViewer.getStructuredSelection().getFirstElement();
//mappingViewer.editElement(element, 1);
} else if (e.character == SWT.DEL) {
for (TreeItem item : mappingViewer.getTree().getSelection()) {
element = item.getData();
if (element instanceof DatabaseMappingAttribute) {
DatabaseMappingAttribute attribute = (DatabaseMappingAttribute) element;
attribute.setMappingType(DatabaseMappingType.skip);
} else if (element instanceof DatabaseMappingContainer) {
DatabaseMappingContainer container = (DatabaseMappingContainer) element;
container.refreshMappingType(getContainer(), DatabaseMappingType.skip);
}
}
updated = true;
} else if (e.character == SWT.SPACE) {
for (TreeItem item : mappingViewer.getTree().getSelection()) {
element = item.getData();
if (element instanceof DatabaseMappingAttribute) {
DatabaseMappingAttribute attribute = (DatabaseMappingAttribute) item.getData();
attribute.setMappingType(DatabaseMappingType.existing);
attribute.updateMappingType(VoidProgressMonitor.INSTANCE);
} else if (element instanceof DatabaseMappingContainer) {
DatabaseMappingContainer container = (DatabaseMappingContainer) element;
setMappingTarget(container, container.getSource().getName());
}
}
updated = true;
}
if (updated) {
mappingViewer.refresh();
updatePageCompletion();
if (element instanceof DatabaseMappingContainer) {
// Select next container
@SuppressWarnings("unchecked") List<DatabaseMappingContainer> model = (List<DatabaseMappingContainer>) mappingViewer.getInput();
int curIndex = model.indexOf(element);
if (curIndex < model.size() - 1) {
mappingViewer.setSelection(new StructuredSelection(model.get(curIndex + 1)), true);
}
}
}
} catch (DBException e1) {
UIUtils.showDatabaseError(getShell(), "Mapping error", "Error mapping table", e1);
}
}
});
mappingViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
DatabaseMappingObject mapping = getSelectedMapping();
mapTableButton.setEnabled(mapping instanceof DatabaseMappingContainer);
createNewButton.setEnabled(mapping instanceof DatabaseMappingContainer && settings.getContainerNode() != null);
final boolean hasMappings = (mapping instanceof DatabaseMappingContainer && mapping.getMappingType() != DatabaseMappingType.unspecified) || (mapping instanceof DatabaseMappingAttribute && ((DatabaseMappingAttribute) mapping).getParent().getMappingType() != DatabaseMappingType.unspecified);
columnsButton.setEnabled(hasMappings);
ddlButton.setEnabled(hasMappings);
}
});
mappingViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
DatabaseMappingObject selectedMapping = getSelectedMapping();
if (selectedMapping != null) {
if (selectedMapping instanceof DatabaseMappingContainer) {
/*
if (selectedMapping.getMappingType() == DatabaseMappingType.unspecified) {
mapExistingTable((DatabaseMappingContainer) selectedMapping);
} else {
mapColumns((DatabaseMappingContainer) selectedMapping);
}
*/
}
}
}
});
}
{
Composite hintPanel = new Composite(composite, SWT.NONE);
hintPanel.setLayout(new GridLayout(3, false));
hintPanel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
new Label(hintPanel, SWT.NONE).setText("* DEL - skip column(s) SPACE - map column(s)");
}
setControl(composite);
}
use of org.eclipse.swt.events.KeyAdapter in project otertool by wuntee.
the class Gui method createContents.
/**
* Create contents of the window.
*/
protected void createContents() {
shlOterTool = new Shell();
shlOterTool.setImage(SWTResourceManager.getImage(Gui.class, OterStatics.ICON_APP));
shlOterTool.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent arg0) {
try {
logcatController.stop();
} catch (Exception e) {
// Do nothing
}
}
});
shlOterTool.setMinimumSize(new Point(550, 250));
shlOterTool.setSize(1000, 600);
shlOterTool.setText("Otertool");
shlOterTool.setLayout(new FormLayout());
Menu menu = new Menu(shlOterTool, SWT.BAR);
shlOterTool.setMenuBar(menu);
MenuItem mntmFile = new MenuItem(menu, SWT.CASCADE);
mntmFile.setText("File");
Menu menu_1 = new Menu(mntmFile);
mntmFile.setMenu(menu_1);
MenuItem mntmConfigure = new MenuItem(menu_1, SWT.NONE);
mntmConfigure.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
Object ret = new ConfigurationDialog(shlOterTool).open();
}
});
mntmConfigure.setText("Configure");
new MenuItem(menu_1, SWT.SEPARATOR);
MenuItem mntmExit = new MenuItem(menu_1, SWT.NONE);
mntmExit.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
System.exit(0);
}
});
mntmExit.setText("Exit");
MenuItem mntmLogcat = new MenuItem(menu, SWT.CASCADE);
mntmLogcat.setText("LogCat");
Menu menu_2 = new Menu(mntmLogcat);
mntmLogcat.setMenu(menu_2);
MenuItem mntmStart = new MenuItem(menu_2, SWT.NONE);
mntmStart.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
logcatController.start();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not start: " + e.getMessage());
logger.error("Could not start logcat:", e);
}
}
});
mntmStart.setText("Start");
MenuItem mntmStop = new MenuItem(menu_2, SWT.NONE);
mntmStop.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.stop();
}
});
mntmStop.setText("Stop");
new MenuItem(menu_2, SWT.SEPARATOR);
MenuItem mntmClear = new MenuItem(menu_2, SWT.NONE);
mntmClear.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatTable.removeAll();
}
});
mntmClear.setText("Clear");
MenuItem mntmFsdiff = new MenuItem(menu, SWT.CASCADE);
mntmFsdiff.setText("FsDiff");
Menu menu_3 = new Menu(mntmFsdiff);
mntmFsdiff.setMenu(menu_3);
MenuItem mntmScanFirst = new MenuItem(menu_3, SWT.NONE);
mntmScanFirst.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
fsDiffController.scanFirst();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not scan: " + e.getMessage());
logger.error("Could not scan:", e);
}
}
});
mntmScanFirst.setText("Scan First");
MenuItem mntmScanSecond = new MenuItem(menu_3, SWT.NONE);
mntmScanSecond.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
fsDiffController.scanSecond();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not scan: " + e.getMessage());
logger.error("Could not scan:", e);
}
}
});
mntmScanSecond.setText("Scan Second");
MenuItem mntmGenerateDifferences = new MenuItem(menu_3, SWT.NONE);
mntmGenerateDifferences.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
fsDiffController.generateDifferences();
}
});
mntmGenerateDifferences.setText("Generate Differences");
new MenuItem(menu_3, SWT.SEPARATOR);
MenuItem mntmClear_1 = new MenuItem(menu_3, SWT.NONE);
mntmClear_1.setText("Clear");
MenuItem mntmApktool = new MenuItem(menu, SWT.CASCADE);
mntmApktool.setText("Smali");
Menu menu_4 = new Menu(mntmApktool);
mntmApktool.setMenu(menu_4);
MenuItem mntmLoadFile = new MenuItem(menu_4, SWT.NONE);
mntmLoadFile.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
String file = GuiWorkshop.selectFile(shlOterTool, new String[] { "*.apk" });
if (file != null) {
smaliController.loadApk(new File(file));
}
}
});
mntmLoadFile.setText("Load APK");
MenuItem mntmLoadApkDevice = new MenuItem(menu_4, SWT.NONE);
mntmLoadApkDevice.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
PackageBean apkBean = new LoadApkFromDeviceDialog(shlOterTool).open();
if (apkBean != null) {
smaliController.loadApkFromDevice(apkBean);
}
}
});
mntmLoadApkDevice.setText("Load APK From Device");
MenuItem mntmBuild = new MenuItem(menu_4, SWT.NONE);
mntmBuild.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (smaliController.unsavedFilesOpen() == true) {
int save = GuiWorkshop.yesNoDialog(getShell(), "Really build?", "You have unsaved smali files; if you do not save them, they will not be applied to the new APK. Are you sure you want to rebuild the APK without saving?");
if (save == SWT.NO) {
return;
}
}
BuildAndSignApkBean bean = new BuildAndSignApkDialog(getShell()).open();
if (bean != null && bean.getApkFilename() != null) {
if (bean.isSign()) {
if (bean.getApkFilename() != null && bean.getCertAlias() != null && bean.getCertFilename() != null && bean.getPassword() != null) {
setStatus("Building and signing APK to: " + bean.getApkFilename());
smaliController.rebuildAndSignApk(bean);
}
} else {
smaliController.rebuildApk(bean.getApkFilename());
}
}
}
});
mntmBuild.setText("Build APK...");
MenuItem mntmJavaToSmali = new MenuItem(menu, SWT.CASCADE);
mntmJavaToSmali.setText("Java to Smali");
Menu menu_8 = new Menu(mntmJavaToSmali);
mntmJavaToSmali.setMenu(menu_8);
MenuItem mntmCompile = new MenuItem(menu_8, SWT.NONE);
mntmCompile.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
javaToSmaliController.tryToCompileJava(javaToSmaliJavaStyledText, javaToSmaliSmaliStyledText);
}
});
mntmCompile.setText("Convert Java to Smali");
new MenuItem(menu_8, SWT.SEPARATOR);
MenuItem mntmConfigureClasspath = new MenuItem(menu_8, SWT.NONE);
mntmConfigureClasspath.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
Object ret = new ConfigurationDialog(shlOterTool).open();
}
});
mntmConfigureClasspath.setText("Configure classpath");
MenuItem mntmAddAndroidjarTo = new MenuItem(menu_8, SWT.NONE);
mntmAddAndroidjarTo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
try {
OterWorkshop.addAndroidjarToClasspath();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, e.getMessage());
return;
}
GuiWorkshop.messageDialog(shlOterTool, "Sucessfull added android.jar to classpath. View File->Configure to view changes.");
}
});
mntmAddAndroidjarTo.setText("Add android.jar to classpath");
MenuItem mntmTools = new MenuItem(menu, SWT.CASCADE);
mntmTools.setText("Tools");
Menu menu_6 = new Menu(mntmTools);
mntmTools.setMenu(menu_6);
MenuItem mntmLaunchAndroid = new MenuItem(menu_6, SWT.NONE);
mntmLaunchAndroid.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
setStatus("Launging android.");
BackgroundCommand c = new BackgroundCommand(OterStatics.getAndroidCommand());
try {
c.execute();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not execute android: " + e.getMessage());
}
clearStatus();
}
});
mntmLaunchAndroid.setText("Launch android");
MenuItem mntmRestartAdb = new MenuItem(menu_6, SWT.NONE);
mntmRestartAdb.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
setStatus("Restarting ADB");
try {
AdbWorkshop.restartAdb();
GuiWorkshop.messageDialog(shlOterTool, "Adb has been restarted.");
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not restart ADB: " + e.getMessage());
logger.error("Could not restart ADB:", e);
}
clearStatus();
}
});
mntmRestartAdb.setText("Restart ADB");
MenuItem mntmInstallCertificate = new MenuItem(menu_6, SWT.NONE);
mntmInstallCertificate.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
String certfile = GuiWorkshop.selectFile(shlOterTool, new String[] { "*" });
if (certfile != null) {
setStatus("Installing certificate: " + certfile);
try {
AdbWorkshop.installCert(new File(certfile), "changeit");
GuiWorkshop.messageDialog(shlOterTool, "The certificate has been sucessfully installed");
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not install cert: " + e.getMessage());
logger.error("Could not install cert:", e);
}
clearStatus();
}
}
});
mntmInstallCertificate.setText("Install Certificate");
MenuItem mntmInstallApk = new MenuItem(menu_6, SWT.NONE);
mntmInstallApk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
installApk();
}
});
mntmInstallApk.setText("Install APK");
MenuItem mntmCreateAvd = new MenuItem(menu_6, SWT.NONE);
mntmCreateAvd.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
//installApk();
CreateAvdBean ret = new CreateAvdDialog(getShell()).open();
if (ret != null) {
avdController.createAvd(ret);
}
}
});
mntmCreateAvd.setText("Create Android Virtual Device");
tabFolder = new CTabFolder(shlOterTool, SWT.BORDER | SWT.BOTTOM);
tabFolder.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
// If no tab is selected
String selectedTab = tabFolder.getSelection().getText();
if (selectedTab.equals("Package Manager")) {
if (packageManagerTabFolder.getSelection() == null) {
packageManagerTabFolder.setSelection(0);
}
if (apkTable.getTable().getItemCount() == 0) {
apkTable.loadPackages();
}
} else if (selectedTab.equals("Smali")) {
if (smaliTabFolder.getSelection() == null) {
smaliTabFolder.setSelection(0);
}
}
}
});
FormData fd_tabFolder = new FormData();
fd_tabFolder.top = new FormAttachment(0, 3);
fd_tabFolder.right = new FormAttachment(100);
fd_tabFolder.left = new FormAttachment(0, 3);
tabFolder.setLayoutData(fd_tabFolder);
tabFolder.setSimple(false);
tabFolder.setSelectionBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
CTabItem tbtmLogcat = new CTabItem(tabFolder, SWT.NONE);
tbtmLogcat.setText("LogCat");
Composite composite = new Composite(tabFolder, SWT.NONE);
tbtmLogcat.setControl(composite);
composite.setLayout(new GridLayout(1, false));
Composite composite_1 = new Composite(composite, SWT.NONE);
GridLayout gl_composite_1 = new GridLayout(3, false);
gl_composite_1.horizontalSpacing = 0;
gl_composite_1.marginHeight = 0;
gl_composite_1.marginWidth = 0;
gl_composite_1.verticalSpacing = 0;
composite_1.setLayout(gl_composite_1);
composite_1.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
Composite composite_11 = new Composite(composite_1, SWT.NONE);
composite_11.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
GridLayout gl_composite_11 = new GridLayout(1, false);
gl_composite_11.horizontalSpacing = 0;
gl_composite_11.marginHeight = 0;
gl_composite_11.marginWidth = 0;
gl_composite_11.verticalSpacing = 0;
composite_11.setLayout(gl_composite_11);
Label lblFilter = new Label(composite_11, SWT.HORIZONTAL);
lblFilter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
lblFilter.setText("Message Filter:");
logcatTextFilter = new Text(composite_11, SWT.BORDER);
logcatTextFilter.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
logcatController.reFilterTable();
}
});
logcatTextFilter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Composite composite_2 = new Composite(composite_1, SWT.NONE);
composite_2.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 1));
GridLayout gl_composite_2 = new GridLayout(8, false);
gl_composite_2.verticalSpacing = 0;
gl_composite_2.horizontalSpacing = 0;
gl_composite_2.marginWidth = 0;
gl_composite_2.marginHeight = 0;
composite_2.setLayout(gl_composite_2);
logcatCheckDebug = new Button(composite_2, SWT.CHECK);
logcatCheckDebug.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.reFilterTable();
}
});
logcatCheckDebug.setSize(57, 18);
logcatCheckDebug.setSelection(true);
logcatCheckDebug.setText("Debug");
logcatCheckInfo = new Button(composite_2, SWT.CHECK);
logcatCheckInfo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.reFilterTable();
}
});
logcatCheckInfo.setSize(43, 18);
logcatCheckInfo.setSelection(true);
logcatCheckInfo.setText("Info");
logcatCheckWarn = new Button(composite_2, SWT.CHECK);
logcatCheckWarn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.reFilterTable();
}
});
logcatCheckWarn.setSize(49, 18);
logcatCheckWarn.setSelection(true);
logcatCheckWarn.setText("Warn");
logcatCheckError = new Button(composite_2, SWT.CHECK);
logcatCheckError.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.reFilterTable();
}
});
logcatCheckError.setSize(49, 18);
logcatCheckError.setSelection(true);
logcatCheckError.setText("Error");
logcatCheckVerbose = new Button(composite_2, SWT.CHECK);
logcatCheckVerbose.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.reFilterTable();
}
});
logcatCheckVerbose.setSize(66, 18);
logcatCheckVerbose.setSelection(true);
logcatCheckVerbose.setText("Verbose");
new Label(composite_2, SWT.NONE);
new Label(composite_2, SWT.NONE);
this.logcatCheckAutoscroll = new Button(composite_2, SWT.CHECK);
logcatCheckAutoscroll.setSize(83, 18);
logcatCheckAutoscroll.setSelection(true);
logcatCheckAutoscroll.setText("Auto-scroll");
Composite composite_12 = new Composite(composite_1, SWT.NONE);
composite_12.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 1));
GridLayout gl_composite_12 = new GridLayout(4, false);
gl_composite_12.marginLeft = 5;
gl_composite_12.verticalSpacing = 0;
gl_composite_12.marginWidth = 0;
gl_composite_12.horizontalSpacing = 0;
gl_composite_12.marginHeight = 0;
composite_12.setLayout(gl_composite_12);
Button btnClear = new Button(composite_12, SWT.NONE);
btnClear.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatTable.removeAll();
}
});
btnClear.setText("Clear");
Button btnStart = new Button(composite_12, SWT.NONE);
btnStart.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
}
public void widgetSelected(SelectionEvent arg0) {
try {
logcatController.start();
} catch (Exception e) {
GuiWorkshop.messageError(shlOterTool, "Could not start: " + e.getMessage());
logger.error("Could not start logcat:", e);
}
}
});
btnStart.setText("Start");
Button btnStop = new Button(composite_12, SWT.NONE);
btnStop.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
}
public void widgetSelected(SelectionEvent arg0) {
logcatController.stop();
}
});
btnStop.setText("Stop");
new Label(composite_12, SWT.NONE);
logcatTable = new Table(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
logcatTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1));
logcatTable.addMouseWheelListener(new MouseWheelListener() {
public void mouseScrolled(MouseEvent arg0) {
//if(arg0.y == logcatTable.getLocation().y)
//logger.debug(arg0.y + ":" + logcatTable.getSize().y);
//logcatTable.getBounds().y
//logcatController.stopAutoscroll();
}
});
logcatTable.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent arg0) {
// TODO Auto-generated method stub
}
public void widgetSelected(SelectionEvent arg0) {
logcatController.stopAutoscroll();
}
});
logcatTable.setHeaderVisible(true);
logcatTable.setLinesVisible(true);
TableColumn tblclmnDate = new TableColumn(logcatTable, SWT.NONE);
tblclmnDate.setWidth(111);
tblclmnDate.setText("Timestamp");
TableColumn tblclmnNewColumn = new TableColumn(logcatTable, SWT.NONE);
tblclmnNewColumn.setWidth(55);
tblclmnNewColumn.setText("Level");
TableColumn tblclmnClass = new TableColumn(logcatTable, SWT.NONE);
tblclmnClass.setWidth(86);
tblclmnClass.setText("Class");
TableColumn tblclmnPid = new TableColumn(logcatTable, SWT.NONE);
tblclmnPid.setWidth(34);
tblclmnPid.setText("PID");
TableColumn tblclmnMessage = new TableColumn(logcatTable, SWT.NONE);
tblclmnMessage.setWidth(600);
tblclmnMessage.setText("Message");
Menu menu_7 = new Menu(logcatTable);
logcatTable.setMenu(menu_7);
MenuItem mntmCopy = new MenuItem(menu_7, SWT.NONE);
mntmCopy.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatController.copy();
}
});
mntmCopy.setText("Copy");
MenuItem mntmCle = new MenuItem(menu_7, SWT.NONE);
mntmCle.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logcatTable.removeAll();
}
});
mntmCle.setText("Clear");
statusLabel = new Label(shlOterTool, SWT.NONE);
fd_tabFolder.bottom = new FormAttachment(statusLabel, -6);
CTabItem tbtmFsdiff = new CTabItem(tabFolder, SWT.NONE);
tbtmFsdiff.setText("FsDiff");
Composite composite_5 = new Composite(tabFolder, SWT.NONE);
tbtmFsdiff.setControl(composite_5);
composite_5.setLayout(new FillLayout(SWT.HORIZONTAL));
fsDiffSashForm = new SashForm(composite_5, SWT.NONE);
Composite composite_6 = new Composite(fsDiffSashForm, SWT.NONE);
composite_6.setLayout(new FormLayout());
Label lblFirst = new Label(composite_6, SWT.NONE);
FormData fd_lblFirst = new FormData();
fd_lblFirst.top = new FormAttachment(1);
fd_lblFirst.left = new FormAttachment(0);
lblFirst.setLayoutData(fd_lblFirst);
lblFirst.setText("First");
fsDiffFirstTree = new Tree(composite_6, SWT.BORDER);
FormData fd_tree_2 = new FormData();
fd_tree_2.bottom = new FormAttachment(100);
fd_tree_2.right = new FormAttachment(100);
fd_tree_2.top = new FormAttachment(lblFirst, 0);
fd_tree_2.left = new FormAttachment(0);
fsDiffFirstTree.setLayoutData(fd_tree_2);
Composite composite_7 = new Composite(fsDiffSashForm, SWT.NONE);
composite_7.setLayout(new FormLayout());
Label lblSecond = new Label(composite_7, SWT.NONE);
FormData fd_lblSecond = new FormData();
fd_lblSecond.top = new FormAttachment(1);
fd_lblSecond.left = new FormAttachment(0);
lblSecond.setLayoutData(fd_lblSecond);
lblSecond.setText("Second");
fsDiffSecondTree = new Tree(composite_7, SWT.BORDER);
FormData fd_tree_3 = new FormData();
fd_tree_3.bottom = new FormAttachment(100);
fd_tree_3.right = new FormAttachment(100);
fd_tree_3.top = new FormAttachment(lblSecond, 0);
fd_tree_3.left = new FormAttachment(lblSecond, 0, SWT.LEFT);
fsDiffSecondTree.setLayoutData(fd_tree_3);
Composite composite_8 = new Composite(fsDiffSashForm, SWT.NONE);
composite_8.setLayout(new FormLayout());
Label lblDifferences = new Label(composite_8, SWT.NONE);
FormData fd_lblDifferences = new FormData();
fd_lblDifferences.top = new FormAttachment(1);
fd_lblDifferences.left = new FormAttachment(0);
lblDifferences.setLayoutData(fd_lblDifferences);
lblDifferences.setText("Differences");
fsDifferencesTree = new Tree(composite_8, SWT.BORDER);
fsDifferencesTree.setHeaderVisible(true);
FormData fd_tree_4 = new FormData();
fd_tree_4.bottom = new FormAttachment(100);
fd_tree_4.right = new FormAttachment(100);
fd_tree_4.top = new FormAttachment(lblDifferences, 0);
fd_tree_4.left = new FormAttachment(lblDifferences, 0, SWT.LEFT);
fsDifferencesTree.setLayoutData(fd_tree_4);
TreeColumn trclmnName = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnName.setWidth(330);
trclmnName.setText("Name");
TreeColumn trclmnPermissions = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnPermissions.setWidth(72);
trclmnPermissions.setText("Permissions");
TreeColumn trclmnGroup = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnGroup.setWidth(50);
trclmnGroup.setText("Group");
TreeColumn trclmnUser = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnUser.setWidth(50);
trclmnUser.setText("User");
TreeColumn trclmnSize = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnSize.setWidth(40);
trclmnSize.setText("Size");
TreeColumn trclmnModified = new TreeColumn(fsDifferencesTree, SWT.NONE);
trclmnModified.setWidth(140);
trclmnModified.setText("Modified");
fsDiffSashForm.setWeights(new int[] { 1, 1, 3 });
CTabItem tbtmApktool = new CTabItem(tabFolder, SWT.NONE);
tbtmApktool.setText("Smali");
Composite composite_3 = new Composite(tabFolder, SWT.NONE);
tbtmApktool.setControl(composite_3);
composite_3.setLayout(new FillLayout(SWT.HORIZONTAL));
SashForm sashForm_1 = new SashForm(composite_3, SWT.NONE);
smaliTree = new Tree(sashForm_1, SWT.BORDER);
smaliTree.setLinesVisible(true);
smaliTree.setHeaderVisible(true);
smaliTree.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent arg0) {
TreeItem[] items = smaliTree.getSelection();
if (items.length > 0) {
TreeItem sel = items[0];
if (sel.getItemCount() == 0) {
String name = sel.getText();
setStatus("Loading: " + name);
TreeItem parent = sel.getParentItem();
String pkg = (parent == null) ? "" : parent.getText();
smaliController.loadSmaliSource(pkg, name);
} else {
sel.setExpanded(true);
}
clearStatus();
}
}
});
smaliTabFolder = new CTabFolder(sashForm_1, SWT.BORDER);
smaliTabFolder.setSimple(false);
smaliTabFolder.setSelectionBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
smaliTabSearchTab = new CTabItem(smaliTabFolder, SWT.NONE);
smaliTabSearchTab.setText("Search");
Composite composite_9 = new Composite(smaliTabFolder, SWT.NONE);
smaliTabSearchTab.setControl(composite_9);
GridLayout gl_composite_9 = new GridLayout(1, false);
gl_composite_9.marginTop = 5;
gl_composite_9.verticalSpacing = 0;
gl_composite_9.marginHeight = 0;
gl_composite_9.horizontalSpacing = 0;
composite_9.setLayout(gl_composite_9);
smaliSearchText = new Text(composite_9, SWT.BORDER);
smaliSearchText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
if (arg0.character == 13) {
smaliController.search();
}
}
});
smaliSearchText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Composite composite_10 = new Composite(composite_9, SWT.NONE);
GridLayout gl_composite_10 = new GridLayout(2, false);
gl_composite_10.marginBottom = 5;
gl_composite_10.marginHeight = 0;
gl_composite_10.verticalSpacing = 0;
gl_composite_10.marginWidth = 0;
gl_composite_10.horizontalSpacing = 0;
composite_10.setLayout(gl_composite_10);
smaliSearchIgnoreCase = new Button(composite_10, SWT.CHECK);
smaliSearchIgnoreCase.setBounds(0, 0, 93, 18);
smaliSearchIgnoreCase.setText("Ignore Case");
smaliSearchRegex = new Button(composite_10, SWT.CHECK);
smaliSearchRegex.setBounds(0, 0, 93, 18);
smaliSearchRegex.setText("Regex");
smaliSearchTable = new Table(composite_9, SWT.BORDER | SWT.FULL_SELECTION);
smaliSearchTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent arg0) {
TableItem[] selected = smaliSearchTable.getSelection();
if (selected.length > 0) {
smaliController.loadSmaliSourceWithLineNumber((String) selected[0].getData(SmaliController.PACKAGE), (String) selected[0].getData(SmaliController.NAME), ((Integer) selected[0].getData(SmaliController.LINENUMBER)).intValue());
}
}
});
smaliSearchTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
smaliSearchTable.setBounds(0, 0, 3, 19);
smaliSearchTable.setHeaderVisible(true);
smaliSearchTable.setLinesVisible(true);
TableColumn tblclmnClass_1 = new TableColumn(smaliSearchTable, SWT.NONE);
tblclmnClass_1.setWidth(200);
tblclmnClass_1.setText("Class");
TableColumn tblclmnContents = new TableColumn(smaliSearchTable, SWT.NONE);
tblclmnContents.setWidth(750);
tblclmnContents.setText("Contents");
StyledText styledText = new StyledText(smaliTabFolder, SWT.BORDER);
sashForm_1.setWeights(new int[] { 1, 5 });
CTabItem tbtmJavaToSmali = new CTabItem(tabFolder, SWT.NONE);
tbtmJavaToSmali.setText("Java to Smali");
Composite composite_13 = new Composite(tabFolder, SWT.NONE);
tbtmJavaToSmali.setControl(composite_13);
composite_13.setLayout(new FillLayout(SWT.HORIZONTAL));
SashForm sashForm = new SashForm(composite_13, SWT.NONE);
Composite composite_14 = new Composite(sashForm, SWT.NONE);
GridLayout gl_composite_14 = new GridLayout(1, false);
gl_composite_14.verticalSpacing = 0;
gl_composite_14.marginWidth = 0;
gl_composite_14.marginHeight = 0;
gl_composite_14.horizontalSpacing = 0;
composite_14.setLayout(gl_composite_14);
Label lblJava = new Label(composite_14, SWT.NONE);
lblJava.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
lblJava.setText("Java");
javaToSmaliJavaStyledText = new StyledText(composite_14, SWT.BORDER | SWT.WRAP | SWT.H_SCROLL | SWT.V_SCROLL);
javaToSmaliJavaStyledText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
javaToSmaliJavaStyledText.setText("import android.util.Log;\n\npublic class OterTool {\n\n // Youll need to include everything that would exist in a full \n // java source file. I typically just write a class in Eclipse\n // and allow it to handle all imports, and paste it here.\n\n // You will also need to include the android.jar file in the \n // classpath to use thing like 'Log'. This can be configured\n // through the configuration dialog (File->Configure) or you\n // can attempt to have otertool attempt to automatically add it\n // for you through Java to Smali->Add android.jar to classpath\n\n public static void main(String[] args) {\n // Placing a method here, with its arguments will show you \n // the calling convention, and allow you to easily paste\n // the code in the smali class\n oterToolMethod(\"calling argument\");\n Log.e(\"Tag\", \"Test\");\n }\n \n public static void oterToolMethod(String arg){\n // You can paste this portion of the smali code directly in\n // the end of the original package, and call it from everywhere\n System.out.println(arg);\n }\n}");
//javaToSmaliJavaStyledText.addLineStyleListener(new JavaLineStyler());
Composite composite_15 = new Composite(sashForm, SWT.NONE);
GridLayout gl_composite_15 = new GridLayout(1, false);
gl_composite_15.marginHeight = 0;
gl_composite_15.verticalSpacing = 0;
gl_composite_15.marginWidth = 0;
gl_composite_15.horizontalSpacing = 0;
composite_15.setLayout(gl_composite_15);
Label lblSmali = new Label(composite_15, SWT.NONE);
lblSmali.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
lblSmali.setText("Smali");
javaToSmaliSmaliStyledText = new StyledText(composite_15, SWT.BORDER | SWT.WRAP | SWT.H_SCROLL | SWT.V_SCROLL);
javaToSmaliSmaliStyledText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
javaToSmaliSmaliStyledText.addLineStyleListener(new SmaliLineStyler());
sashForm.setWeights(new int[] { 1, 1 });
CTabItem tbtmPackageManager = new CTabItem(tabFolder, SWT.NONE);
tbtmPackageManager.setText("Package Manager");
Composite composite_4 = new Composite(tabFolder, SWT.NONE);
tbtmPackageManager.setControl(composite_4);
composite_4.setLayout(new FillLayout(SWT.HORIZONTAL));
SashForm packageManagerSashForm = new SashForm(composite_4, SWT.NONE);
apkTable = new ApkTable(packageManagerSashForm, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
apkTable.getTable().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
logger.debug(apkTable.getTable().getSelection().length);
packageManagerController.loadPackageDetails(apkTable.getTable().getSelection());
}
});
Menu menu_5 = new Menu(apkTable.getTable());
apkTable.getTable().setMenu(menu_5);
MenuItem mntmInstall = new MenuItem(menu_5, SWT.NONE);
mntmInstall.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
installApk();
apkTable.loadPackages();
}
});
mntmInstall.setText("Install APK");
MenuItem mntmUninstall = new MenuItem(menu_5, SWT.NONE);
mntmUninstall.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
setStatus("UnInstalling package: " + apkTable.getTable().getSelection()[0].getText(0));
packageManagerController.uninstallPackages(apkTable.getTable().getSelection());
clearStatus();
apkTable.loadPackages();
}
});
mntmUninstall.setText("Uninstall Package(s)");
MenuItem mntmPullPackages = new MenuItem(menu_5, SWT.NONE);
mntmPullPackages.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
String dir = GuiWorkshop.selectDirectory(shlOterTool);
if (dir != null) {
packageManagerController.pullPackages(dir);
}
}
});
mntmPullPackages.setText("Pull Package(s)");
new MenuItem(menu_5, SWT.SEPARATOR);
MenuItem mntmRefreshList = new MenuItem(menu_5, SWT.NONE);
mntmRefreshList.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
apkTable.loadPackages();
}
});
mntmRefreshList.setText("Refresh List");
packageManagerTabFolder = new CTabFolder(packageManagerSashForm, SWT.BORDER | SWT.FLAT);
packageManagerTabFolder.setSimple(false);
packageManagerTabFolder.setSelectionBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
CTabItem tbtmAapt = new CTabItem(packageManagerTabFolder, SWT.NONE);
tbtmAapt.setText("Aapt");
Composite composite_16 = new Composite(packageManagerTabFolder, SWT.NONE);
tbtmAapt.setControl(composite_16);
GridLayout gl_composite_16 = new GridLayout(1, false);
gl_composite_16.verticalSpacing = 0;
gl_composite_16.marginWidth = 0;
gl_composite_16.marginHeight = 0;
gl_composite_16.horizontalSpacing = 0;
composite_16.setLayout(gl_composite_16);
packageManagerStyledText = new StyledText(composite_16, SWT.BORDER | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL);
packageManagerStyledText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
CTabItem tbtmFiles = new CTabItem(packageManagerTabFolder, SWT.NONE);
tbtmFiles.setText("Files");
SashForm sashForm_2 = new SashForm(packageManagerTabFolder, SWT.NONE);
tbtmFiles.setControl(sashForm_2);
Composite composite_17 = new Composite(sashForm_2, SWT.NONE);
GridLayout gl_composite_17 = new GridLayout(1, false);
gl_composite_17.verticalSpacing = 0;
gl_composite_17.marginWidth = 0;
gl_composite_17.marginHeight = 0;
gl_composite_17.horizontalSpacing = 0;
composite_17.setLayout(gl_composite_17);
packageManagerFilesTree = new Tree(composite_17, SWT.BORDER);
packageManagerFilesTree.setHeaderVisible(true);
packageManagerFilesTree.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent arg0) {
try {
Tree tree = packageManagerFilesTree;
if (tree.getSelectionCount() == 1) {
TreeItem[] items = tree.getSelection();
FsNode node = (FsNode) items[0].getData(FsNode.class.getName());
for (CTabItem cti : packageManagerFilesTabs.getItems()) {
if (cti.getText().equals(node.getName())) {
packageManagerFilesTabs.setSelection(cti);
return;
}
}
logger.debug("Selected item: " + node.toString());
packageManagerController.loadFileContentsToTab(node);
}
} catch (Exception e) {
logger.error("Could not load file: ", e);
GuiWorkshop.messageDialog(shlOterTool, "Could not load file: " + e.getMessage());
}
}
});
packageManagerFilesTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
Menu menu_9 = new Menu(packageManagerFilesTree);
packageManagerFilesTree.setMenu(menu_9);
MenuItem mntmSqlite = new MenuItem(menu_9, SWT.NONE);
mntmSqlite.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (packageManagerFilesTree.getSelectionCount() == 1) {
try {
TreeItem[] items = packageManagerFilesTree.getSelection();
FsNode node = (FsNode) items[0].getData(FsNode.class.getName());
packageManagerController.loadFileContentsToSQLiteTab(node);
} catch (Exception e) {
logger.error("Could not load file: ", e);
GuiWorkshop.messageDialog(shlOterTool, "Could not load file: " + e.getMessage());
}
}
}
});
mntmSqlite.setText("SQLite view");
MenuItem mntmHexView = new MenuItem(menu_9, SWT.NONE);
mntmHexView.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (packageManagerFilesTree.getSelectionCount() == 1) {
try {
TreeItem[] items = packageManagerFilesTree.getSelection();
FsNode node = (FsNode) items[0].getData(FsNode.class.getName());
packageManagerController.loadFileContentsToHexTab(node);
} catch (Exception e) {
logger.error("Could not load file: ", e);
GuiWorkshop.messageDialog(shlOterTool, "Could not load file: " + e.getMessage());
}
}
}
});
mntmHexView.setText("Hex view");
MenuItem mntmTextView = new MenuItem(menu_9, SWT.NONE);
mntmTextView.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (packageManagerFilesTree.getSelectionCount() == 1) {
try {
TreeItem[] items = packageManagerFilesTree.getSelection();
FsNode node = (FsNode) items[0].getData(FsNode.class.getName());
packageManagerController.loadFileContentsToTextTab(node);
} catch (Exception e) {
logger.error("Could not load file: ", e);
GuiWorkshop.messageDialog(shlOterTool, "Could not load file: " + e.getMessage());
}
}
}
});
mntmTextView.setText("Text view");
MenuItem mntmSaveFileView = new MenuItem(menu_9, SWT.NONE);
mntmSaveFileView.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (packageManagerFilesTree.getSelectionCount() == 1) {
try {
TreeItem[] items = packageManagerFilesTree.getSelection();
FsNode node = (FsNode) items[0].getData(FsNode.class.getName());
String file = GuiWorkshop.selectSaveFile(shlOterTool, new String[] {});
packageManagerController.saveFileAs(node, file);
GuiWorkshop.messageDialog(shlOterTool, "Your file has been saved.");
} catch (Exception e) {
logger.error("Could not load file: ", e);
GuiWorkshop.messageDialog(shlOterTool, "Could not save file: " + e.getMessage());
}
}
}
});
mntmSaveFileView.setText("Save File...");
Composite composite_18 = new Composite(sashForm_2, SWT.NONE);
GridLayout gl_composite_18 = new GridLayout(1, false);
gl_composite_18.verticalSpacing = 0;
gl_composite_18.marginWidth = 0;
gl_composite_18.marginHeight = 0;
gl_composite_18.horizontalSpacing = 0;
composite_18.setLayout(gl_composite_18);
sashForm_2.setWeights(new int[] { 197, 525 });
packageManagerFilesTabs = new CTabFolder(composite_18, SWT.BORDER);
packageManagerFilesTabs.setSimple(false);
packageManagerFilesTabs.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
packageManagerFilesTabs.setSelectionBackground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));
packageManagerAndroidManifestTab = new CTabItemWithTreeForAndroidManifest(packageManagerTabFolder, SWT.NONE);
packageManagerAndroidManifestTab.setText("AndroidManifest");
packageManagerSashForm.setWeights(new int[] { 1, 2 });
FormData fd_statusLabel = new FormData();
fd_statusLabel.bottom = new FormAttachment(100, -2);
fd_statusLabel.left = new FormAttachment(tabFolder, 0, SWT.LEFT);
fd_statusLabel.right = new FormAttachment(100);
statusLabel.setLayoutData(fd_statusLabel);
statusLabel.setText("Welcome");
}
use of org.eclipse.swt.events.KeyAdapter in project otertool by wuntee.
the class BuildAndSignApkDialog method createContents.
/**
* Create contents of the dialog.
*/
private void createContents() {
shlBuildAndSign = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.RESIZE);
shlBuildAndSign.setSize(420, 471);
shlBuildAndSign.setText("Build and sign APK");
GridLayout gl_shlBuildAndSign = new GridLayout(1, false);
gl_shlBuildAndSign.horizontalSpacing = 0;
gl_shlBuildAndSign.marginBottom = 5;
gl_shlBuildAndSign.marginRight = 5;
gl_shlBuildAndSign.marginLeft = 5;
gl_shlBuildAndSign.verticalSpacing = 0;
gl_shlBuildAndSign.marginWidth = 0;
gl_shlBuildAndSign.marginTop = 5;
gl_shlBuildAndSign.marginHeight = 0;
shlBuildAndSign.setLayout(gl_shlBuildAndSign);
Label lblDestinationApkFile = new Label(shlBuildAndSign, SWT.NONE);
lblDestinationApkFile.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
lblDestinationApkFile.setText("Destination APK file:");
Composite composite = new Composite(shlBuildAndSign, SWT.NONE);
GridLayout gl_composite = new GridLayout(2, false);
gl_composite.horizontalSpacing = 0;
gl_composite.verticalSpacing = 0;
gl_composite.marginWidth = 0;
gl_composite.marginHeight = 0;
composite.setLayout(gl_composite);
composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
apkFileTextbox = new Text(composite, SWT.BORDER);
apkFileTextbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
btnSelectFile = new Button(composite, SWT.NONE);
btnSelectFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
btnSelectFile.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
String file = GuiWorkshop.selectSaveFile(getParent(), new String[] { "*.apk" });
if (file != null) {
apkFileTextbox.setText(file);
}
}
});
btnSelectFile.setText("Select File");
btnSignApk = new Button(shlBuildAndSign, SWT.CHECK);
btnSignApk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (btnSignApk.getSelection() == false) {
for (Control c : signObj) {
logger.debug(c);
c.setEnabled(false);
}
} else {
for (Control c : signObj) {
c.setEnabled(true);
}
}
}
});
btnSignApk.setText("Sign APK");
new Label(shlBuildAndSign, SWT.NONE);
final Button btnGenerateKeystoreOn = new Button(shlBuildAndSign, SWT.CHECK);
btnGenerateKeystoreOn.setEnabled(false);
btnGenerateKeystoreOn.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
btnGenerateKeystoreOn.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (btnGenerateKeystoreOn.getSelection() == true) {
for (Control c : keystoreObj) {
logger.debug(c);
c.setEnabled(false);
}
} else {
for (Control c : keystoreObj) {
c.setEnabled(true);
}
}
}
});
btnGenerateKeystoreOn.setText("Automatically generate keystore");
lblKeystoreFile = new Label(shlBuildAndSign, SWT.NONE);
lblKeystoreFile.setEnabled(false);
lblKeystoreFile.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
lblKeystoreFile.setText("Keystore file:");
composite_1 = new Composite(shlBuildAndSign, SWT.NONE);
composite_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
GridLayout gl_composite_1 = new GridLayout(3, false);
gl_composite_1.verticalSpacing = 0;
gl_composite_1.marginWidth = 0;
gl_composite_1.marginHeight = 0;
gl_composite_1.horizontalSpacing = 0;
composite_1.setLayout(gl_composite_1);
certFileTextbox = new Text(composite_1, SWT.BORDER);
certFileTextbox.setEnabled(false);
certFileTextbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Button btnNewButton = new Button(composite_1, SWT.NONE);
btnNewButton.setEnabled(false);
btnNewButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
String file = GuiWorkshop.selectFile(getParent(), new String[] { "*" });
if (file != null) {
certFileTextbox.setText(file);
}
}
});
btnNewButton.setText("Select File");
new Label(composite_1, SWT.NONE);
lblPassword = new Label(shlBuildAndSign, SWT.NONE);
lblPassword.setEnabled(false);
lblPassword.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
lblPassword.setText("Password:");
composite_2 = new Composite(shlBuildAndSign, SWT.NONE);
composite_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
GridLayout gl_composite_2 = new GridLayout(1, false);
gl_composite_2.marginBottom = 5;
gl_composite_2.marginTop = 5;
gl_composite_2.marginHeight = 0;
gl_composite_2.marginWidth = 0;
gl_composite_2.verticalSpacing = 0;
composite_2.setLayout(gl_composite_2);
passwordTextbox = new Text(composite_2, SWT.BORDER | SWT.PASSWORD);
passwordTextbox.setEnabled(false);
passwordTextbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
passwordTextbox.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent arg0) {
// Load the keystore
try {
KeyStore ks = KeyStore.getInstance(KeyStoreUtil.niceStoreTypeName(KeyStore.getDefaultType()));
ks.load(new File(certFileTextbox.getText()).toURI().toURL().openStream(), passwordTextbox.getTextChars());
Enumeration<String> aliases = ks.aliases();
aliasTable.clearAll();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
Certificate cert = ks.getCertificate(alias);
byte[] encCertInfo = cert.getEncoded();
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(encCertInfo);
String key = toHexString(digest);
TableItem tableItem = new TableItem(aliasTable, SWT.NONE);
tableItem.setText(new String[] { alias, ks.getCreationDate(alias).toString(), key });
}
} catch (Exception e) {
// Do nothing
}
}
});
lblCertificate = new Label(shlBuildAndSign, SWT.NONE);
lblCertificate.setEnabled(false);
lblCertificate.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
lblCertificate.setText("Certificate:");
aliasTable = new Table(shlBuildAndSign, SWT.BORDER | SWT.FULL_SELECTION);
aliasTable.setEnabled(false);
GridData gd_aliasTable = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
gd_aliasTable.heightHint = 72;
aliasTable.setLayoutData(gd_aliasTable);
aliasTable.setHeaderVisible(true);
aliasTable.setLinesVisible(true);
TableColumn tblclmnName = new TableColumn(aliasTable, SWT.NONE);
tblclmnName.setWidth(100);
tblclmnName.setText("Name");
TableColumn tblclmnDate = new TableColumn(aliasTable, SWT.NONE);
tblclmnDate.setWidth(100);
tblclmnDate.setText("Date");
TableColumn tblclmnChecksum = new TableColumn(aliasTable, SWT.NONE);
tblclmnChecksum.setWidth(149);
tblclmnChecksum.setText("Checksum");
composite_3 = new Composite(shlBuildAndSign, SWT.NONE);
GridLayout gl_composite_3 = new GridLayout(2, false);
gl_composite_3.horizontalSpacing = 0;
gl_composite_3.marginWidth = 0;
gl_composite_3.marginHeight = 0;
gl_composite_3.verticalSpacing = 0;
composite_3.setLayout(gl_composite_3);
composite_3.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
Button btnSelect = new Button(composite_3, SWT.NONE);
btnSelect.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (apkFileTextbox.getText().trim().equals("")) {
GuiWorkshop.messageError(shlBuildAndSign, "Please select a filename.");
return;
}
// If we want to sign
if (btnSignApk.getSelection() == true) {
// If we need to generate a keystore
if (btnGenerateKeystoreOn.getSelection() == true) {
try {
String alias = OterStatics.SOME_STRING;
String password = OterStatics.SOME_STRING;
KeyStore ks = SmaliWorkshop.createKeystoreWithSecretKey(alias);
File ksFile = SmaliWorkshop.writeKeystoreToTemporaryFile(ks, password);
result.setApkFilename(apkFileTextbox.getText());
result.setSign(btnSignApk.getSelection());
result.setCertFilename(ksFile.getAbsolutePath());
result.setPassword(password);
result.setCertAlias(alias);
shlBuildAndSign.close();
} catch (Exception e) {
logger.error("Error generating keystore: ", e);
GuiWorkshop.messageError(shlBuildAndSign, "There was an error generating the keystore: " + e.getMessage());
}
// If we dont need to generate a keystore
} else {
if (aliasTable.getSelection().length > 0) {
result.setApkFilename(apkFileTextbox.getText());
result.setSign(btnSignApk.getSelection());
result.setCertFilename(certFileTextbox.getText());
result.setPassword(passwordTextbox.getText());
result.setCertAlias(aliasTable.getSelection()[0].getText(0));
result.setSign(btnSignApk.getSelection());
shlBuildAndSign.close();
} else {
logger.error("No alias selected.");
GuiWorkshop.messageError(shlBuildAndSign, "Please select an alias.");
return;
}
}
// We dont need to sign
} else {
result.setApkFilename(apkFileTextbox.getText());
result.setSign(btnSignApk.getSelection());
shlBuildAndSign.close();
}
}
});
btnSelect.setText("Save");
Button btnCancel = new Button(composite_3, SWT.NONE);
btnCancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
result = null;
shlBuildAndSign.close();
}
});
btnCancel.setText("Cancel");
keystoreObj = new Control[] { certFileTextbox, passwordTextbox, aliasTable, btnNewButton, lblKeystoreFile, lblCertificate, lblPassword };
signObj = new Control[] { btnGenerateKeystoreOn, certFileTextbox, passwordTextbox, aliasTable, btnNewButton, lblKeystoreFile, lblCertificate, lblPassword };
}
Aggregations