public static void buildXLogData(final String date, StyledText text, XLogPack p, int serverId) { final int servId = serverId; String error = TextProxy.error.getLoadText(date, p.error, servId); String objName = TextProxy.object.getLoadText(date, p.objHash, servId); int slen = 0; java.util.List<StyleRange> sr = new ArrayList<StyleRange>(); Color red = text.getDisplay().getSystemColor(SWT.COLOR_RED); final StringBuffer sb = new StringBuffer(); sb.append("► txid = ").append(Hexa32.toString32(p.txid)).append("\n"); sb.append("► objName = ").append(objName).append("\n"); sb.append("► endtime = ").append(DateUtil.timestamp(p.endTime)).append("\n"); sb.append("► elapsed = ").append(FormatUtil.print(p.elapsed, "#,##0")).append(" ms\n"); sb.append("► service = ").append(TextProxy.service.getText(p.service)).append("\n"); if (error != null) { sb.append("► error = "); slen = sb.length(); sb.append(error).append("\n"); sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL)); } sb.append("► ipaddr=" + IPUtil.toString(p.ipaddr) + ", "); sb.append("userid=" + p.userid); sb.append("\n► cpu=" + FormatUtil.print(p.cpu, "#,##0") + " ms, "); sb.append("bytes=" + p.bytes + ", "); sb.append("status=" + p.status); if (p.sqlCount > 0) { sb.append("\n► sqlCount=" + p.sqlCount + ", "); sb.append("sqlTime=" + FormatUtil.print(p.sqlTime, "#,##0") + " ms"); } if (p.apicallCount > 0) { sb.append("\n► ApiCallCount=" + p.apicallCount + ", "); sb.append("ApiCallTime=" + FormatUtil.print(p.apicallTime, "#,##0") + " ms"); } String t = TextProxy.userAgent.getLoadText(date, p.userAgent, serverId); if (StringUtil.isNotEmpty(t)) { sb.append("\n► userAgent=" + t); } t = TextProxy.referer.getLoadText(date, p.referer, serverId); if (StringUtil.isNotEmpty(t)) { sb.append("\n► referer=" + t); } t = TextProxy.group.getLoadText(date, p.group, serverId); if (StringUtil.isNotEmpty(t)) { sb.append("\n► group=" + t); } sb.append("\n"); text.setText(sb.toString()); text.setStyleRanges(sr.toArray(new StyleRange[sr.size()])); }
/** Sets the font related data to be applied to the text in page 2. */ void setFont() { FontDialog fontDialog = new FontDialog(getSite().getShell()); fontDialog.setFontList(text.getFont().getFontData()); FontData fontData = fontDialog.open(); if (fontData != null) { if (font != null) font.dispose(); font = new Font(text.getDisplay(), fontData); text.setFont(font); } }
public void setEnabled(boolean enabled) { if (enabled != fEnabled) { fEnabled = enabled; StyledText c = getSourceViewer().getTextWidget(); if (c != null) { c.setEnabled(enabled); Display d = c.getDisplay(); c.setBackground(enabled ? d.getSystemColor(SWT.COLOR_LIST_BACKGROUND) : null); } } }
void open(java.lang.String name) { final java.lang.String textString; if (name == null || name.length() == 0) { return; } java.io.File file = new java.io.File(name); if (!file.exists()) { java.lang.String message = MessageFormat.format( resources.getString("Err_file_no_exist"), new java.lang.String[] {file.getName()}); displayError(message); return; } try { java.io.FileInputStream stream = new java.io.FileInputStream(file.getPath()); try { java.io.Reader in = new java.io.BufferedReader(new java.io.InputStreamReader(stream)); char[] readBuffer = new char[2048]; java.lang.StringBuffer buffer = new java.lang.StringBuffer((int) file.length()); int n; while ((n = in.read(readBuffer)) > 0) { buffer.append(readBuffer, 0, (-n)); } textString = buffer.toString(); stream.close(); } catch (java.io.IOException e) { java.lang.String message = MessageFormat.format( resources.getString("Err_file_io"), new java.lang.String[] {file.getName()}); displayError(message); return; } } catch (java.io.FileNotFoundException e) { java.lang.String message = MessageFormat.format( resources.getString("Err_not_found"), new java.lang.String[] {file.getName()}); displayError(message); return; } org.eclipse.swt.widgets.Display display = text.getDisplay(); display.asyncExec( new java.lang.Runnable() { public void run() { text.setText(textString); } }); lineStyler.parseBlockComments(textString); }
protected void initializeViewerColors() { if (fPreferenceStore != null) { StyledText styledText = getTextWidget(); // ----------- foreground color -------------------- Color color = fPreferenceStore.getBoolean(AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT) ? null : createColor( fPreferenceStore, AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND, styledText.getDisplay()); styledText.setForeground(color); if (fForegroundColor != null) fForegroundColor.dispose(); fForegroundColor = color; // ---------- background color ---------------------- color = fPreferenceStore.getBoolean(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT) ? null : createColor( fPreferenceStore, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND, styledText.getDisplay()); styledText.setBackground(color); if (fBackgroundColor != null) fBackgroundColor.dispose(); fBackgroundColor = color; // ----------- selection foreground color -------------------- color = fPreferenceStore.getBoolean( AbstractDecoratedTextEditorPreferenceConstants .EDITOR_SELECTION_FOREGROUND_DEFAULT_COLOR) ? null : createColor( fPreferenceStore, AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SELECTION_FOREGROUND_COLOR, styledText.getDisplay()); styledText.setSelectionForeground(color); if (fSelectionForegroundColor != null) fSelectionForegroundColor.dispose(); fSelectionForegroundColor = color; // ---------- selection background color ---------------------- color = fPreferenceStore.getBoolean( AbstractDecoratedTextEditorPreferenceConstants .EDITOR_SELECTION_BACKGROUND_DEFAULT_COLOR) ? null : createColor( fPreferenceStore, AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SELECTION_BACKGROUND_COLOR, styledText.getDisplay()); styledText.setSelectionBackground(color); if (fSelectionBackgroundColor != null) fSelectionBackgroundColor.dispose(); fSelectionBackgroundColor = color; } }
public static void buildProfile( final String date, StyledText text, XLogPack pack, StepWrapper[] orgProfiles, int pageNum, int rowPerPage, Button prevBtn, Button nextBtn, Button startBtn, Button endBtn, int length, int serverId, int searchLineIndex, boolean isSummary) { String spaceStr = ""; String astarStr = ""; for (int j = 0; j < length; j++) { spaceStr += " "; astarStr += "*"; } if (orgProfiles == null) { orgProfiles = new StepWrapper[0]; } boolean lastPage = false; int startIdx = pageNum * rowPerPage; int lastIdx = (pageNum * rowPerPage) + rowPerPage; if (lastIdx >= orgProfiles.length) { lastIdx = orgProfiles.length; lastPage = true; } int ix = 0; StepWrapper[] profiles = new StepWrapper[lastIdx - startIdx]; for (int inx = startIdx; inx < lastIdx; inx++) { profiles[ix] = orgProfiles[inx]; ix++; } int slen = 0; java.util.List<StyleRange> sr = new ArrayList<StyleRange>(); Color blue = text.getDisplay().getSystemColor(SWT.COLOR_BLUE); Color dmagenta = text.getDisplay().getSystemColor(SWT.COLOR_DARK_MAGENTA); Color red = text.getDisplay().getSystemColor(SWT.COLOR_RED); Color yellow = text.getDisplay().getSystemColor(SWT.COLOR_YELLOW); Color dgreen = text.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN); final StringBuffer sb = new StringBuffer(); sb.append( "------------------------------------------------------------------------------------------\n"); sb.append( " p# " + spaceStr + "# " + spaceStr + " TIME T-GAP CPU CONTENTS\n"); sb.append( "------------------------------------------------------------------------------------------\n"); if (profiles.length == 0) { sb.append("\n ( No xlog profile collected ) "); text.setText(sb.toString()); text.setStyleRanges(sr.toArray(new StyleRange[sr.size()])); return; } long stime = pack.endTime - pack.elapsed; long prev_tm = stime; if (pageNum > 0) { prev_tm = orgProfiles[startIdx - 1].time; } long prev_cpu = 0; if (pageNum > 0) { prev_cpu = orgProfiles[startIdx - 1].cpu; } if (pageNum == 0) { sb.append(" " + spaceStr + " "); sb.append(" "); sb.append("[" + astarStr + "]"); sb.append(" "); sb.append(DateUtil.getLogTime(stime)); sb.append(" "); sb.append(String.format("%6s", "0")); sb.append(" "); sb.append(String.format("%6s", "0")); sb.append(" start transaction \n"); } long tm = pack.endTime; long cpu = pack.cpu; for (int i = 0; i < profiles.length; i++) { if (profiles[i].step instanceof StepSummary) { int p1 = sb.length(); sb.append(spaceStr).append(" "); sb.append(String.format("[%0" + length + "d]", profiles[i].sSummaryIdx)); sb.append(" "); int lineHead = sb.length() - p1; StepSummary sum = (StepSummary) profiles[i].step; switch (sum.getStepType()) { case StepEnum.METHOD_SUM: MethodSum p = (MethodSum) sum; slen = sb.length(); String m = TextProxy.method.getText(p.hash); if (m == null) m = Hexa32.toString32(p.hash); sb.append(m).append(" "); if (searchLineIndex == profiles[i].sSummaryIdx) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL)); } sb.append(" count=").append(FormatUtil.print(p.count, "#,##0")); sb.append(" time=").append(FormatUtil.print(p.elapsed, "#,##0")).append(" ms"); sb.append(" cpu=").append(FormatUtil.print(p.cputime, "#,##0")); sb.append("\n"); break; case StepEnum.SQL_SUM: SqlSum sql = (SqlSum) sum; slen = sb.length(); ProfileText.toString(sb, sql, serverId); if (searchLineIndex == profiles[i].sSummaryIdx) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL)); } sb.append("\n"); break; case StepEnum.APICALL_SUM: ApiCallSum apicall = (ApiCallSum) sum; slen = sb.length(); ProfileText.toString(sb, apicall); if (searchLineIndex == profiles[i].sSummaryIdx) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL)); } sb.append("\n"); break; case StepEnum.SOCKET_SUM: XLogProfileView.isSummary = true; SocketSum socketSum = (SocketSum) sum; slen = sb.length(); ProfileText.toString(sb, socketSum); sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL)); sb.append("\n"); break; } continue; } StepSingle stepSingle = (StepSingle) profiles[i].step; tm = profiles[i].time; cpu = profiles[i].cpu; int p1 = sb.length(); String pid = String.format("[%0" + length + "d]", stepSingle.parent); sb.append((stepSingle.parent == -1) ? spaceStr + " " : pid); sb.append(" "); sb.append(String.format("[%0" + length + "d]", stepSingle.index)); sb.append(" "); sb.append(DateUtil.getLogTime(tm)); sb.append(" "); sb.append(String.format("%6s", FormatUtil.print(tm - prev_tm, "#,##0"))); sb.append(" "); sb.append(String.format("%6s", FormatUtil.print(cpu - prev_cpu, "#,##0"))); sb.append(" "); int lineHead = sb.length() - p1; int space = profiles[i].indent; while (space > 0) { sb.append(" "); space--; } switch (stepSingle.getStepType()) { case StepEnum.METHOD: slen = sb.length(); ProfileText.toString(sb, (MethodStep) stepSingle); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } break; case StepEnum.METHOD2: slen = sb.length(); ProfileText.toString(sb, (MethodStep) stepSingle); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } MethodStep2 m2 = (MethodStep2) stepSingle; if (m2.error != 0) { slen = sb.length(); sb.append("\n").append(TextProxy.error.getText(m2.error)); sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL)); } break; case StepEnum.SQL: case StepEnum.SQL2: case StepEnum.SQL3: SqlStep sql = (SqlStep) stepSingle; slen = sb.length(); ProfileText.toString(sb, sql, serverId, lineHead, false); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL)); } if (sql.error != 0) { slen = sb.length(); sb.append("\n").append(TextProxy.error.getText(sql.error)); sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL)); } break; case StepEnum.MESSAGE: slen = sb.length(); ProfileText.toString(sb, (MessageStep) stepSingle); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, dgreen, SWT.NORMAL)); } break; case StepEnum.HASHED_MESSAGE: slen = sb.length(); ProfileText.toString(sb, (HashedMessageStep) stepSingle); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, dgreen, SWT.NORMAL)); } break; case StepEnum.APICALL: ApiCallStep apicall = (ApiCallStep) stepSingle; slen = sb.length(); ProfileText.toString(sb, apicall); if (searchLineIndex == stepSingle.index) { sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow)); } else { sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL)); } if (apicall.error != 0) { slen = sb.length(); sb.append("\n").append(TextProxy.error.getText(apicall.error)); sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL)); } break; case StepEnum.SOCKET: SocketStep socket = (SocketStep) stepSingle; slen = sb.length(); ProfileText.toString(sb, socket); sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL)); if (socket.error != 0) { slen = sb.length(); sb.append("\n").append(TextProxy.error.getText(socket.error)); sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL)); } break; } sb.append("\n"); prev_cpu = cpu; prev_tm = tm; } if (lastPage) { nextBtn.setEnabled(false); endBtn.setEnabled(false); tm = pack.endTime; cpu = pack.cpu; // slen = sb.length(); sb.append(" " + spaceStr + " "); sb.append(" "); sb.append("[" + astarStr + "]"); sb.append(" "); sb.append(DateUtil.getLogTime(tm)); sb.append(" "); if (!isSummary) { sb.append(String.format("%6s", FormatUtil.print(tm - prev_tm, "#,##0"))); } else { sb.append(String.format("%6s", FormatUtil.print(pack.elapsed, "#,##0"))); } sb.append(" "); sb.append(String.format("%6s", FormatUtil.print(cpu - prev_cpu, "#,##0"))); sb.append(" end of transaction \n"); // sr.add(ProfileText.style(slen, sb.length() - slen, dblue, SWT.NORMAL)); sb.append( "------------------------------------------------------------------------------------------\n"); } else { nextBtn.setEnabled(true); endBtn.setEnabled(true); } if (pageNum == 0) { prevBtn.setEnabled(false); startBtn.setEnabled(false); } else { prevBtn.setEnabled(true); startBtn.setEnabled(true); } text.setText(sb.toString()); text.setStyleRanges(sr.toArray(new StyleRange[sr.size()])); }
// This method formats an easily readable string describing the // backup specification. An example message would be: // // "Backup c:/foo.txt, c:/bar.xls, and all files under c:/tom. Also backup // c:/garrick except for c:/garrick/bigfiles." public void updateText() { ArrayList includedFiles = backupSpec.includedFiles(); ArrayList excludedFiles = backupSpec.excludedFiles(); if (includedFiles.isEmpty()) { text.setText( "No files are selected for backup. Select the check box to the left of a file to mark it for backup."); return; } Color red = text.getDisplay().getSystemColor(SWT.COLOR_RED); Color blue = text.getDisplay().getSystemColor(SWT.COLOR_BLUE); ArrayList styles = new ArrayList(); StringBuffer buffer = new StringBuffer(); buffer.append("Backup "); // The first sentence includes all included files (not directories). This is // the "Backup c:/foo.txt. c:/bar.xls..." portion of the example message. int numFiles = 0; for (int i = 0, count = includedFiles.size(); i < count; i++) { File file = (File) includedFiles.get(i); if (file.isFile()) { numFiles++; if (numFiles > 1) { if (numFiles == includedFiles.size()) { buffer.append(", and "); } else { buffer.append(", "); } } appendFile(file, buffer, styles, blue); } } if (numFiles == includedFiles.size()) { // We only had individual files, so put a period on it, we are done! // Otherwise we leave the sentence hanging so that directories can // be added on. buffer.append("."); } else { // We've got directories. if (numFiles > 0) { // If we had some files, then we need to append the // directories to an already existing sentence. buffer.append(", and "); } // Find all top level directories that have no exclusions under // them. A "top level" directory is one which was not included // in response to an exclusion. For instance if // includedFiles = [c:/tom, c:/garrick, c:/garrick/Documents/Work] // and excludedFiles = [c:/garrick/Documents] // // Then c:/tom and c:/garrick are "top level" directories, although // since c:/garrick has exclusions then only c:/tom will end up in // the list. ArrayList topLevelDirectoriesWithoutExclusions = new ArrayList(); for (int i = 0, count = includedFiles.size(); i < count; i++) { File file = (File) includedFiles.get(i); if (file.isFile()) { continue; } backupSpec.findFilesExplicitlyExcludedFrom(file, excluded); File parent = file.getParentFile(); if (excluded.isEmpty() && (parent == null || BackupSpecification.nearestAncestor(parent, includedFiles) == null)) { topLevelDirectoriesWithoutExclusions.add(file); } } // If we have any topLevelDirectoriesWithoutExclusions, then pack // them into one sentence (potentially along with the lone files). boolean appendedDirectory = false; if (topLevelDirectoriesWithoutExclusions.size() > 0) { buffer.append("all files under "); for (int i = 0, count = topLevelDirectoriesWithoutExclusions.size(); i < count; i++) { File file = (File) topLevelDirectoriesWithoutExclusions.get(i); if (i > 0 && i == topLevelDirectoriesWithoutExclusions.size() - 1) { buffer.append(", and "); } else if (i > 0) { buffer.append(", "); } appendFile(file, buffer, styles, blue); } appendedDirectory = true; buffer.append("."); } // Now do all other directories, one sentence each. for (int i = 0, count = includedFiles.size(); i < count; i++) { File file = (File) includedFiles.get(i); if (file.isFile() || topLevelDirectoriesWithoutExclusions.contains(file)) { continue; } if (appendedDirectory == true) { // We are starting a new sentence, rather than joining // the initial sentence containing files. buffer.append(" Also backup "); } appendedDirectory = true; buffer.append("all files under "); appendFile(file, buffer, styles, blue); backupSpec.findFilesExplicitlyExcludedFrom(file, excluded); if (excluded.size() > 0) { buffer.append(" except for "); for (int j = 0, jcount = excluded.size(); j < jcount; j++) { File excludedFile = (File) excluded.get(j); if (j > 0 && j == excluded.size() - 1) { buffer.append(", and "); } else if (j > 0) { buffer.append(", "); } appendFile(excludedFile, buffer, styles, red); } } buffer.append("."); } } text.setText(buffer.toString()); text.setStyleRanges((StyleRange[]) styles.toArray(new StyleRange[styles.size()])); }
private static void createStyledText(final Group group) { group.setLayout(new GridLayout(2, false)); group.setText("StyledText widget"); final Label lbl0 = new Label(group, SWT.NONE); lbl0.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl0.setText("No prompt :"); final StyledText txt0 = new StyledText(group, SWT.BORDER); txt0.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); final Label lbl1 = new Label(group, SWT.NONE); lbl1.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl1.setText("Simple text prompt :"); final StyledText txt1 = new StyledText(group, SWT.BORDER); txt1.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); PromptSupport.setPrompt("Type anything you want", txt1); final Label lbl2 = new Label(group, SWT.NONE); lbl2.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl2.setText("Other style (bold) :"); final StyledText txt2 = new StyledText(group, SWT.BORDER); txt2.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); PromptSupport.setPrompt("Type anything you want in bold", txt2); PromptSupport.setFontStyle(SWT.BOLD, txt2); final Label lbl3 = new Label(group, SWT.NONE); lbl3.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl3.setText("Behaviour highlight :"); final StyledText txt3 = new StyledText(group, SWT.BORDER); txt3.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); PromptSupport.setPrompt("Type anything you want", txt3); PromptSupport.setFocusBehavior(FocusBehavior.HIGHLIGHT_PROMPT, txt3); final Label lbl4 = new Label(group, SWT.NONE); lbl4.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl4.setText("Change colors :"); final StyledText txt4 = new StyledText(group, SWT.BORDER); txt4.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); PromptSupport.setPrompt("Type anything you want", txt4); PromptSupport.setForeground(txt4.getDisplay().getSystemColor(SWT.COLOR_YELLOW), txt4); PromptSupport.setBackground(txt4.getDisplay().getSystemColor(SWT.COLOR_BLACK), txt4); final Label lbl5 = new Label(group, SWT.NONE); lbl5.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false)); lbl5.setText("Change when widget is initialized :"); final StyledText txt5 = new StyledText(group, SWT.BORDER); txt5.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); txt5.setText("Remove what is typed..."); txt5.setBackground(txt4.getDisplay().getSystemColor(SWT.COLOR_BLACK)); txt5.setForeground(txt4.getDisplay().getSystemColor(SWT.COLOR_YELLOW)); PromptSupport.setPrompt("Type anything you want", txt5); PromptSupport.setForeground(txt4.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE), txt5); PromptSupport.setBackground(txt4.getDisplay().getSystemColor(SWT.COLOR_WHITE), txt5); }