public void saveFilters(LogFilter[] filters) { StringBuilder sb = new StringBuilder(); for (LogFilter f : filters) { String filterString = f.toString(); sb.append(filterString); sb.append('|'); } DdmsPlugin.getDefault().getPreferenceStore().setValue(PREFS_FILTERS, sb.toString()); }
void openFile(IFile file, IMarker marker) { try { IWorkbenchPage page = getViewSite().getWorkbenchWindow().getActivePage(); if (page != null) { IDE.openEditor(page, marker); marker.delete(); } } catch (CoreException e) { Status s = new Status(Status.ERROR, DdmsPlugin.PLUGIN_ID, e.getMessage(), e); DdmsPlugin.getDefault().getLog().log(s); } }
void goToErrorLine(String choice) { try { String msg = mLogPanel.getSelectedErrorLineMessage(); if (msg != null) { String error_line_matcher_string = "\\s*at\\ (.*)\\((.*)\\.java\\:(\\d+)\\)"; Matcher error_line_matcher = Pattern.compile(error_line_matcher_string).matcher(msg); if (error_line_matcher.find()) { String class_name_method = error_line_matcher.group(1); // TODO: Search currently only matches the class declaration (using // IJavaSearchConstants.DECLARATIONS). We may want to jump to the // "reference" of the class instead (IJavaSearchConstants.REFERENCES) // using the filename and line number to disambiguate the search results. String class_name_line = error_line_matcher.group(2); int line_number = Integer.parseInt(error_line_matcher.group(3)); SearchEngine se = new SearchEngine(); if (CHOICE_ERROR_LINE.equals(choice)) { se.search( SearchPattern.createPattern( class_name_line, IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE), new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, SearchEngine.createWorkspaceScope(), new LogCatViewSearchRequestor(CHOICE_ERROR_LINE, line_number), new NullProgressMonitor()); } else if (CHOICE_METHOD_DECLARATION.equals(choice)) { se.search( SearchPattern.createPattern( class_name_method, IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE), new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, SearchEngine.createWorkspaceScope(), new LogCatViewSearchRequestor(CHOICE_METHOD_DECLARATION, 0), new NullProgressMonitor()); } } } } catch (Exception e) { Status s = new Status(Status.ERROR, DdmsPlugin.PLUGIN_ID, e.getMessage(), e); DdmsPlugin.getDefault().getLog().log(s); } }
@Override public void createPartControl(Composite parent) { parent.setLayout(new FillLayout()); IPreferenceStore prefStore = DdmsPlugin.getDefault().getPreferenceStore(); mLogCatPanel = new LogCatPanel(prefStore); mLogCatPanel.createPanel(parent); setSelectionDependentPanel(mLogCatPanel); mLogCatPanel.addLogCatMessageSelectionListener( new ILogCatMessageSelectionListener() { @Override public void messageDoubleClicked(LogCatMessage m) { onDoubleClick(m); } }); mClipboard = new Clipboard(parent.getDisplay()); IActionBars actionBars = getViewSite().getActionBars(); actionBars.setGlobalActionHandler( ActionFactory.COPY.getId(), new Action(Messages.LogCatView_Copy) { @Override public void run() { mLogCatPanel.copySelectionToClipboard(mClipboard); } }); actionBars.setGlobalActionHandler( ActionFactory.SELECT_ALL.getId(), new Action(Messages.LogCatView_Select_All) { @Override public void run() { mLogCatPanel.selectAll(); } }); actionBars.setGlobalActionHandler( ActionFactory.FIND.getId(), new Action("Find") { @Override public void run() { mLogCatPanel.showFindDialog(); } }); }
private void onDoubleClick(LogCatMessage m) { String msg = m.getMessage(); if (!mStackTraceParser.isValidExceptionTrace(msg)) { return; } IPreferenceStore store = DdmsPlugin.getDefault().getPreferenceStore(); String perspectiveId = null; if (store.getBoolean(PreferenceInitializer.ATTR_SWITCH_PERSPECTIVE)) { perspectiveId = store.getString(PreferenceInitializer.ATTR_PERSPECTIVE_ID); } String fileName = mStackTraceParser.getFileName(msg); int lineNumber = mStackTraceParser.getLineNumber(msg); String methodName = mStackTraceParser.getMethodName(msg); JavaSourceRevealer.revealMethod(methodName, fileName, lineNumber, perspectiveId); }
void switchPerspective() { IPreferenceStore store = DdmsPlugin.getDefault().getPreferenceStore(); if (store.getBoolean(PreferenceInitializer.ATTR_SWITCH_PERSPECTIVE)) { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); IPerspectiveRegistry perspectiveRegistry = workbench.getPerspectiveRegistry(); String perspectiveId = store.getString(PreferenceInitializer.ATTR_PERSPECTIVE_ID); if (perspectiveId != null && perspectiveId.length() > 0 && perspectiveRegistry.findPerspectiveWithId(perspectiveId) != null) { try { workbench.showPerspective(perspectiveId, window); } catch (WorkbenchException e) { e.printStackTrace(); } } } }
IMarker createMarkerFromSearchMatch(IFile file, SearchMatch match) { IMarker marker = null; try { if (CHOICE_METHOD_DECLARATION.equals(mChoice)) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put(IMarker.CHAR_START, new Integer(match.getOffset())); map.put(IMarker.CHAR_END, new Integer(match.getOffset() + match.getLength())); marker = file.createMarker(IMarker.TEXT); marker.setAttributes(map); } else if (CHOICE_ERROR_LINE.equals(mChoice)) { marker = file.createMarker(IMarker.TEXT); marker.setAttribute(IMarker.LINE_NUMBER, mLineNumber); } } catch (CoreException e) { Status s = new Status(Status.ERROR, DdmsPlugin.PLUGIN_ID, e.getMessage(), e); DdmsPlugin.getDefault().getLog().log(s); } return marker; }
public LogFilter[] getFilterFromStore() { String filterPrefs = DdmsPlugin.getDefault().getPreferenceStore().getString(PREFS_FILTERS); // split in a string per filter String[] filters = filterPrefs.split("\\|"); // $NON-NLS-1$ ArrayList<LogFilter> list = new ArrayList<LogFilter>(filters.length); for (String f : filters) { if (f.length() > 0) { LogFilter logFilter = new LogFilter(); if (logFilter.loadFromString(f)) { list.add(logFilter); } } } return list.toArray(new LogFilter[list.size()]); }
void goToErrorLine() { IPreferenceStore store = DdmsPlugin.getDefault().getPreferenceStore(); String value = store.getString(PreferenceInitializer.ATTR_LOGCAT_GOTO_PROBLEM); goToErrorLine(value); }
@Override public void createPartControl(Composite parent) { Display d = parent.getDisplay(); LogColors colors = new LogColors(); ImageLoader loader = ImageLoader.getDdmUiLibLoader(); colors.infoColor = new Color(d, 0, 127, 0); colors.debugColor = new Color(d, 0, 0, 127); colors.errorColor = new Color(d, 255, 0, 0); colors.warningColor = new Color(d, 255, 127, 0); colors.verboseColor = new Color(d, 0, 0, 0); mCreateFilterAction = new CommonAction("Create Filter") { @Override public void run() { mLogPanel.addFilter(); } }; mCreateFilterAction.setToolTipText("Create Filter"); mCreateFilterAction.setImageDescriptor(loader.loadDescriptor("add.png")); mEditFilterAction = new CommonAction("Edit Filter") { @Override public void run() { mLogPanel.editFilter(); } }; mEditFilterAction.setToolTipText("Edit Filter"); mEditFilterAction.setImageDescriptor(loader.loadDescriptor("edit.png")); // $NON-NLS-1$ mDeleteFilterAction = new CommonAction("Delete Filter") { @Override public void run() { mLogPanel.deleteFilter(); } }; mDeleteFilterAction.setToolTipText("Delete Filter"); mDeleteFilterAction.setImageDescriptor(loader.loadDescriptor("delete.png")); // $NON-NLS-1$ mExportAction = new CommonAction("Export Selection As Text...") { @Override public void run() { mLogPanel.save(); } }; mExportAction.setToolTipText("Export Selection As Text..."); mExportAction.setImageDescriptor(loader.loadDescriptor("save.png")); // $NON-NLS-1$ mGotoMethodDeclarationAction = new CommonAction("Go to Problem (method declaration)") { @Override public void run() { goToErrorLine(CHOICE_METHOD_DECLARATION); } }; mGotoErrorLineAction = new CommonAction("Go to Problem (error line)") { @Override public void run() { goToErrorLine(CHOICE_ERROR_LINE); } }; LogLevel[] levels = LogLevel.values(); mLogLevelActions = new CommonAction[mLogLevelIcons.length]; for (int i = 0; i < mLogLevelActions.length; i++) { String name = levels[i].getStringValue(); mLogLevelActions[i] = new CommonAction(name, IAction.AS_CHECK_BOX) { @Override public void run() { // disable the other actions and record current index for (int i = 0; i < mLogLevelActions.length; i++) { Action a = mLogLevelActions[i]; if (a == this) { a.setChecked(true); // set the log level mLogPanel.setCurrentFilterLogLevel(i + 2); } else { a.setChecked(false); } } } }; mLogLevelActions[i].setToolTipText(name); mLogLevelActions[i].setImageDescriptor(loader.loadDescriptor(mLogLevelIcons[i])); } mClearAction = new Action("Clear Log") { @Override public void run() { mLogPanel.clear(); } }; mClearAction.setImageDescriptor(loader.loadDescriptor("clear.png")); // $NON-NLS-1$ // now create the log view mLogPanel = new LogPanel(colors, new FilterStorage(), LogPanel.FILTER_MANUAL); mLogPanel.setLogCatViewInterface(this); mLogPanel.setActions(mDeleteFilterAction, mEditFilterAction, mLogLevelActions); // get the font String fontStr = DdmsPlugin.getDefault() .getPreferenceStore() .getString(PreferenceInitializer.ATTR_LOGCAT_FONT); if (fontStr != null) { FontData data = new FontData(fontStr); if (fontStr != null) { mLogPanel.setFont(new Font(parent.getDisplay(), data)); } } mLogPanel.createPanel(parent); setSelectionDependentPanel(mLogPanel); // place the actions. placeActions(); // setup the copy action mClipboard = new Clipboard(d); IActionBars actionBars = getViewSite().getActionBars(); actionBars.setGlobalActionHandler( ActionFactory.COPY.getId(), new Action("Copy") { @Override public void run() { mLogPanel.copy(mClipboard); } }); // setup the select all action actionBars.setGlobalActionHandler( ActionFactory.SELECT_ALL.getId(), new Action("Select All") { @Override public void run() { mLogPanel.selectAll(); } }); }