Java源码示例:com.intellij.openapi.diagnostic.Logger

示例1
<T> T request(Request<T> r) {
    Gson gson = new GsonBuilder().create();
    Map<String, Object> jsonObject = new HashMap<>();
    Map<String, Object> requestMap = new HashMap<>();
    requestMap.put(r.name(), r);
    jsonObject.put("version", "2.0.2");
    jsonObject.put("request", requestMap);
    String rJson = gson.toJson(jsonObject) + "\n";
    String responseJson = this.communicateLine(rJson);
    if (responseJson == null) {
        return null;
    } else {
        T response = gson.fromJson(responseJson, r.response());
        if (r.validate(response)) {
            return response;
        } else {
            try {
                this.restartTabNine(false);
            } catch (IOException e) {
                Logger.getInstance(getClass()).error("Error restarting TabNine: " + e);
            }
            return null;
        }
    }
}
 
示例2
String communicateLine(String req) {
    synchronized (this) {
        if (this.isDead()) {
            Logger.getInstance(getClass()).info("TabNine cannot respond to the request because the process is dead.");
            return null;
        }
        try {
            byte[] toWrite = req.getBytes(StandardCharsets.UTF_8);
            synchronized (this) {
                this.proc.getOutputStream().write(toWrite);
                this.proc.getOutputStream().flush();
                return this.procLineReader.readLine();
            }
        } catch (IOException e) {
            Logger.getInstance(getClass()).info("Exception communicating with TabNine: " + e);
            try {
                this.restartTabNine(true);
            } catch (IOException e2) {
                Logger.getInstance(getClass()).error("Error restarting TabNine: " + e2);
                this.proc = null;
            }
        }
    }
    return null;
}
 
示例3
public static RepoInfo repoInfo(String fileName) {
    String fileRel = "";
    String remoteURL = "";
    String branch = "";
    try{
        // Determine repository root directory.
        String fileDir = fileName.substring(0, fileName.lastIndexOf("/"));
        String repoRoot = gitRootDir(fileDir);

        // Determine file path, relative to repository root.
        fileRel = fileName.substring(repoRoot.length()+1);
        remoteURL = configuredGitRemoteURL(repoRoot);
        branch = gitBranch(repoRoot);

        // If on a branch that does not exist on the remote, use "master" instead.
        if (!isRemoteBranch(branch, repoRoot)) {
            branch = "master";
        }
    } catch (Exception err) {
        Logger.getInstance(Util.class).info(err);
        err.printStackTrace();
    }
    return new RepoInfo(fileRel, remoteURL, branch);
}
 
示例4
public static String exec(String cmd, String dir) throws IOException {
    Logger.getInstance(Util.class).debug("exec cmd='" + cmd + "' dir="+dir);

    // Create the process.
    Process p = Runtime.getRuntime().exec(cmd, null, new File(dir));
    BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));
    BufferedReader stderr = new BufferedReader(new InputStreamReader(p.getErrorStream()));

    // Log any stderr ouput.
    Logger logger = Logger.getInstance(Util.class);
    String s;
    while ((s = stderr.readLine()) != null) {
        logger.debug(s);
    }

    String out = new String();
    for (String l; (l = stdout.readLine()) != null; out += l + "\n");
    return out;
}
 
示例5
/**
 * Runs the given supplier and returns the result if no exception was thrown. If an exception was thrown then
 * log it to back intellijs logs and the AndroidStudioCrashReporter and return null.
 *
 * @param supplier supplier to run
 * @return supplied value or null if an exception was thrown
 */
@Nullable
static <T> T tryOrLog(@NotNull Supplier<T> supplier) {
  try {
    return supplier.get();
  } catch (Exception e) {
    if (e instanceof ControlFlowException) {
      // Control-Flow exceptions should not be logged and reported.
      return null;
    }
    Logger logger = Logger.getInstance(ProjectBuildModel.class);
    logger.error(e);

    // TODO: this would be a place to report crash
    // Since this would have caused an IDE crash we still want to report any exceptions for monitoring.
    // StudioCrashReporter reporter = StudioCrashReporter.getInstance();
    // reporter.submit(new StudioExceptionReport.Builder().setThrowable(e, false).build());
    return null;
  }
}
 
示例6
public void createToolWindowContent(@NotNull final Project project, @NotNull final ToolWindow toolWindow) {
    ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
    JPanel framePanel = createPanel(project);
    disableAll();

    AndroidDebugBridge adb = AndroidSdkUtils.getDebugBridge(project);
    if (adb == null) {
        return;
    }

    if(adb.isConnected()){
        ToolWindowFactory.this.adBridge = adb;
        Logger.getInstance(ToolWindowFactory.class).info("Successfully obtained debug bridge");
        AndroidDebugBridge.addDeviceChangeListener(deviceChangeListener);
        updateDeviceComboBox();
    } else {
        Logger.getInstance(ToolWindowFactory.class).info("Unable to obtain debug bridge");
        String msg = MessageFormat.format(resourceBundle.getString("error.message.adb"), "");
        Messages.showErrorDialog(msg, resourceBundle.getString("error.title.adb"));
    }

    Content content = contentFactory.createContent(framePanel, "", false);
    toolWindow.getContentManager().addContent(content);
}
 
示例7
public static void runAndWait(final @NotNull WaitableRunner runner) {
    try {
        if(runner.isAsynchronous()) {
            final CountDownLatch stopSignal = runner.getLatch();
            Logger.getInstance("#com.headwire.aem.tooling.intellij.util.ExecutionUtil").debug("Is Application Dispatcher Thread: " + ApplicationManager.getApplication().isDispatchThread());
            ApplicationManager.getApplication().invokeLater(new Runnable() {
                @Override
                public void run() {
                    try {
                        runner.run();
                    } finally {
                        // Make sure the latch is released
                        stopSignal.countDown();
                    }
                }
            });
            //AS TODO: re-opening another project will start this method as part of the when project is initialized. The runnable task
            //AS TODO: is not started and the next step waits forever.
            stopSignal.await();
        } else {
            runner.run();
        }
    } catch(Exception e) {
        runner.handleException(e);
    }
}
 
示例8
private static void exportToSvg(UberTreeViewer parseTreeViewer, File file, boolean useTransparentBackground) {
    DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
    Document document = domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null);
    SVGGraphics2D svgGenerator = new SVGGraphics2D(document);

    if (!useTransparentBackground) {
        svgGenerator.setColor(JBColor.WHITE);
        svgGenerator.fillRect(0, 0, parseTreeViewer.getWidth(), parseTreeViewer.getHeight());
    }
    parseTreeViewer.paint(svgGenerator);

    try {
        svgGenerator.stream(file.getAbsolutePath(), true);
    } catch (SVGGraphics2DIOException e) {
        Logger.getInstance(ParseTreeContextualMenu.class)
                .error("Error while exporting parse tree to SVG file " + file.getAbsolutePath(), e);
    }
}
 
示例9
public DslCompilerService() {
	final Logger logger = com.intellij.openapi.diagnostic.Logger.getInstance("DSL Platform");
	final DslContext context = new DslContext(logger);
	context.put(Download.INSTANCE, null);
	Thread setup = new Thread(new Runnable() {
		@Override
		public void run() {
			try {
				setupCompiler(logger, context);
			} catch (Throwable e) {
				logger.error(e.getMessage());
			}
		}
	});
	setup.start();
}
 
示例10
TabNineProcess getProcOrPrintError() {
    synchronized (this) {
        if (this.proc == null) {
            Logger.getInstance(getClass()).info("Can't get completions because TabNine process is not started yet.");
        }
        return this.proc;
    }
}
 
示例11
public <T> T connect(@NotNull HttpRequests.RequestProcessor<T> processor, T errorValue, @Nullable Logger logger) {
    try {
        return connect(processor);
    }
    catch (Throwable e) {
        if (logger != null) {
            logger.warn(e);
        }
        return errorValue;
    }
}
 
示例12
@Override
void handleFileUri(String uri) {
    Logger logger = Logger.getInstance(this.getClass());
    // Open the URL in the browser.
    try {
        Desktop.getDesktop().browse(URI.create(uri));
    } catch (IOException err) {
        logger.debug("failed to open browser");
        err.printStackTrace();
    }
    return;
}
 
示例13
@Override
public void remove(@NotNull DependencyModel dependency) {
  if (!(dependency instanceof me.scana.okgradle.internal.dsl.model.dependencies.DependencyModelImpl)) {
    Logger.getInstance(DependenciesModelImpl.class)
      .warn("Tried to remove an unknown dependency type!");
    return;
  }
  GradleDslElement dependencyElement = ((DependencyModelImpl)dependency).getDslElement();
  GradleDslElement parent = dependencyElement.getParent();
  if (parent instanceof GradleDslMethodCall) {
    GradleDslMethodCall methodCall = (GradleDslMethodCall)parent;
    List<GradleDslExpression> arguments = methodCall.getArguments();
    if (arguments.size() == 1 && arguments.get(0).equals(dependencyElement)) {
      // If this is the last argument, remove the method call altogether.
      myDslElement.removeProperty(methodCall);
    }
    else {
      methodCall.remove(dependencyElement);
    }
  }
  else if (parent instanceof GradleDslExpressionList) {
    List<GradleDslExpression> expressions = ((GradleDslExpressionList)parent).getExpressions();
    if (expressions.size() == 1 && expressions.get(0).equals(dependencyElement)) {
      if (parent.getParent() instanceof GradleDslMethodCall) {
        // We need to delete up two levels if this is a method call.
        myDslElement.removeProperty(parent.getParent());
      }
      else {
        myDslElement.removeProperty(parent);
      }
    }
    else {
      ((GradleDslExpressionList)parent).removeElement(dependencyElement);
    }
  }
  else {
    myDslElement.removeProperty(dependencyElement);
  }
}
 
示例14
private static void clearClasspath(Module module) {
  ClasspathStorage.setStorageType(
      ModuleRootManager.getInstance(module), ClassPathStorageUtil.DEFAULT_STORAGE);
  Logger.getInstance(CMakeWorkspaceOverride.class).warn("Had to clear CMake classpath");
  EventLoggingService.getInstance()
      .logEvent(CMakeWorkspaceOverride.class, "cleared-cmake-classpath", ImmutableMap.of());
}
 
示例15
@Override
public void modify(@NotNull ProjectInfo projectInfo, @NotNull PantsCompileOptionsExecutor executor, @NotNull Logger log) {
  final List<String> emptyTargets = new ArrayList<>();
  do {
    emptyTargets.clear();
    for (Map.Entry<String, TargetInfo> targetInfoEntry : projectInfo.getTargets().entrySet()) {
      final String targetName = targetInfoEntry.getKey();
      final TargetInfo targetInfo = targetInfoEntry.getValue();
      if (targetInfo.isEmpty()) {
        emptyTargets.add(targetName);
      }
    }
    projectInfo.removeTargets(emptyTargets);
  } while (!emptyTargets.isEmpty());
}
 
示例16
@Override
public void modify(@NotNull ProjectInfo projectInfo, @NotNull PantsCompileOptionsExecutor executor, @NotNull Logger log) {
  final List<String> longTargetNames = projectInfo.getTargets()
    .keySet()
    .stream()
    .filter(s -> s.length() > MAX_MODULE_NAME_LENGTH)
    .collect(Collectors.toList());

  for (String targetName : longTargetNames) {
    final String newTargetName = StringUtil.trimMiddle(targetName, MAX_MODULE_NAME_LENGTH);
    log.info(targetName + " is too long! Will replace with " + newTargetName);
    projectInfo.renameTarget(targetName, newTargetName);
  }
}
 
示例17
@Override
public void modify(@NotNull ProjectInfo projectInfo, @NotNull PantsCompileOptionsExecutor executor, @NotNull Logger log) {
  // IntelliJ doesn't support when several modules have the same source root
  // so, for source roots that point at multiple targets, we need to convert those so that
  // they have only one target that owns them.
  // to do that, we
  // - find or create a target to own the source root
  // - for each target that depends on that root,
  //   we replace the root with a dependency on the new target

  final Map<ContentRoot, List<Pair<String, TargetInfo>>> sourceRoot2Targets = getSourceRoot2TargetMapping(projectInfo);
  if (sourceRoot2Targets.isEmpty()) {
    return;
  }

  for (Map.Entry<ContentRoot, List<Pair<String, TargetInfo>>> entry : sourceRoot2Targets.entrySet()) {
    final List<Pair<String, TargetInfo>> targetNameAndInfos = entry.getValue();
    final ContentRoot commonContentRoot = entry.getKey();
    if (targetNameAndInfos.size() <= 1) {
      continue;
    }

    final Pair<String, TargetInfo> commonTargetNameAndInfo =
      createTargetForCommonSourceRoot(executor.getBuildRoot().getPath(), targetNameAndInfos, commonContentRoot);

    projectInfo.addTarget(commonTargetNameAndInfo.getFirst(), commonTargetNameAndInfo.getSecond());
    for (Pair<String, TargetInfo> nameAndInfo : targetNameAndInfos) {
      nameAndInfo.getSecond().getRoots().remove(commonContentRoot);
      nameAndInfo.getSecond().addDependency(commonTargetNameAndInfo.getFirst());
    }
  }
}
 
示例18
@Override
public void modify(@NotNull ProjectInfo projectInfo, @NotNull PantsCompileOptionsExecutor executor, @NotNull Logger log) {
  final Set<Map.Entry<String, TargetInfo>> originalEntries =
    new HashSet<>(projectInfo.getTargets().entrySet());
  for (Map.Entry<String, TargetInfo> nameAndInfo : originalEntries) {
    final String targetName = nameAndInfo.getKey();
    final TargetInfo targetInfo = nameAndInfo.getValue();
    if (!projectInfo.getTargets().containsKey(targetName)) {
      // already removed
      continue;
    }
    for (String dependencyTargetName : targetInfo.getTargets()) {
      TargetInfo dependencyTargetInfo = projectInfo.getTarget(dependencyTargetName);
      if (dependencyTargetInfo != null && dependencyTargetInfo.dependOn(targetName)) {

        if (targetName.equals(dependencyTargetName)) {
          throw new PantsException(String.format("Self cyclic dependency found %s", targetName));
        }

        log.info(String.format("Found cyclic dependency between %s and %s", targetName, dependencyTargetName));

        final String combinedTargetName = combinedTargetsName(targetName, dependencyTargetName);
        final TargetInfo combinedInfo = targetInfo.union(dependencyTargetInfo);
        combinedInfo.removeDependency(targetName);
        combinedInfo.removeDependency(dependencyTargetName);
        projectInfo.addTarget(combinedTargetName, combinedInfo);

        projectInfo.replaceDependency(targetName, combinedTargetName);
        projectInfo.removeTarget(targetName);

        projectInfo.replaceDependency(dependencyTargetName, combinedTargetName);
        projectInfo.removeTarget(dependencyTargetName);
      }
    }
  }
}
 
示例19
public HaxeDebugTimeLog(@NotNull Logger log, Since since) {
  myLog = log;
  myTimeStamps = new LinkedList<TimeStamp>();
  mySince = since;
  myDateFormatter = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSS");
  myDate = new Date(System.currentTimeMillis());
}
 
示例20
protected void doInvoke(final Project project,
                        final Editor editor,
                        final PsiFile file,
                        final Collection<HaxeNamedElementNode> selectedElements,
                        final BaseCreateMethodsFix createMethodsFix) {
  Runnable runnable = new Runnable() {
    public void run() {
      createMethodsFix.addElementsToProcessFrom(selectedElements);
      createMethodsFix.beforeInvoke(project, editor, file);

      ApplicationManager.getApplication().runWriteAction(new Runnable() {
        public void run() {
          try {
            createMethodsFix.invoke(project, editor, file);
          }
          catch (IncorrectOperationException ex) {
            Logger.getInstance(getClass().getName()).error(ex);
          }
        }
      });
    }
  };

  if (CommandProcessor.getInstance().getCurrentCommand() == null) {
    CommandProcessor.getInstance().executeCommand(project, runnable, getClass().getName(), null);
  }
  else {
    runnable.run();
  }
}
 
示例21
private static void exportToImage(UberTreeViewer parseTreeViewer, File file, boolean useTransparentBackground, String imageFormat) {
    int imageType = useTransparentBackground ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB;
    BufferedImage bi = UIUtil.createImage(parseTreeViewer.getWidth(), parseTreeViewer.getHeight(), imageType);
    Graphics graphics = bi.getGraphics();

    if (!useTransparentBackground) {
        graphics.setColor(JBColor.WHITE);
        graphics.fillRect(0, 0, parseTreeViewer.getWidth(), parseTreeViewer.getHeight());
    }

    parseTreeViewer.paint(graphics);

    try {
        if (!ImageIO.write(bi, imageFormat, file)) {
            Notification notification = new Notification(
                    "ANTLR 4 export",
                    "Error while exporting parse tree to file " + file.getAbsolutePath(),
                    "unknown format '" + imageFormat + "'?",
                    NotificationType.WARNING
            );
            Notifications.Bus.notify(notification);
        }
    } catch (IOException e) {
        Logger.getInstance(ParseTreeContextualMenu.class)
                .error("Error while exporting parse tree to file " + file.getAbsolutePath(), e);
    }
}
 
示例22
private void setupCompiler(Logger logger, DslContext context) throws InterruptedException {
	if (!Main.processContext(context, Arrays.<CompileParameter>asList(Download.INSTANCE, DslCompiler.INSTANCE))) {
		logger.warn("Unable to setup DSL Platform client");
	}
	final String path = context.get(DslCompiler.INSTANCE);
	if (path == null) {
		logger.error("Unable to setup dsl-compiler.exe. Please check if Mono/.NET is installed and available on path.");
	} else {
		final File compiler = new File(path);
		logger.info("DSL Platform compiler found at: " + compiler.getAbsolutePath());
		Either<DslCompiler.TokenParser> trySetup = DslCompiler.setupServer(context, compiler);
		if (trySetup.isSuccess()) {
			tokenParser = trySetup.get();
			Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
				@Override
				public void run() {
					try {
						tokenParser.close();
						tokenParser = null;
					} catch (Exception ignore) {
					}
				}
			}));
			Thread.sleep(2000);
			for (Runnable r : notifications) {
				r.run();
			}
		}
	}
}
 
示例23
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor problemDescriptor) {
  final PsiElement psiElement = problemDescriptor.getPsiElement();
  final PsiFile psiFile = psiElement.getContainingFile();
  final Editor editor = FileEditorManager.getInstance(project).openTextEditor(
    new OpenFileDescriptor(project, psiFile.getVirtualFile(), psiElement.getTextOffset()), false
  );
  try {
    invoke(project, editor, psiFile);
  } catch (IncorrectOperationException e) {
    Logger.getInstance(getClass().getName()).error(e);
  }
}
 
示例24
public void doExecute() {
  try {
    int index = fileName.lastIndexOf('.');
    File tempFile = File.createTempFile(
      fileName.substring(fileName.lastIndexOf(File.separatorChar) + 1, index != -1 ? index:fileName.length()),
      index != -1 ? fileName.substring(index):""
    );
    String s = "//  + Preprocessed Text for " + fileName + " ("+start + "," + end + "), selection follows below:\n";
    StringTokenizer tokenizer = new StringTokenizer(editor.getDocument().getCharsSequence().subSequence(start, end).toString(), "\n");
    while (tokenizer.hasMoreElements()) {
      s += "// " + tokenizer.nextToken() + "\n";
    }
    s += myText;
    FileUtil.writeToFile(tempFile, s.getBytes());
    VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tempFile);
    if (virtualFile != null) {
      Project project = editor.getProject();
      OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile);

      FileEditorManager.getInstance(project).openTextEditor(descriptor, true);
    } else {
      Logger.getInstance(getClass().getName()).error(
        "Unexpected problem finding virtual file for "+tempFile.getPath());
    }
  } catch (IOException ex) {
    Logger.getInstance(getClass().getName()).error(ex);
  }
}
 
示例25
public IntervalLogger(Logger logger) {
  this.logger = logger;
  this.start = System.currentTimeMillis();
}
 
示例26
private Log(String name) {
    m_log = Logger.getInstance("ReasonML." + name);
}
 
示例27
public DuneOutputListener(@NotNull Project project, CompilerProcess compilerLifecycle) {
    m_project = project;
    m_compilerLifecycle = compilerLifecycle;
    m_log = Logger.getInstance("ReasonML.build");
}
 
示例28
@Override
public void createToolWindowContent(@NotNull final Project project, @NotNull final ToolWindow toolWindow) {

    final File adb = AndroidSdkUtils.getAdb(project);
    ExecutionManager.getInstance(project).getContentManager();

    RunnerLayoutUi layoutUi = RunnerLayoutUi.Factory.getInstance(project).create("LogViewer", TOOL_WINDOW_ID, "Logview Tools", project);

    toolWindow.setIcon(LogviewerPluginIcons.TOOL_ICON);
    toolWindow.setAvailable(true, null);
    toolWindow.setToHideOnEmptyContent(true);
    toolWindow.setTitle(TOOL_WINDOW_ID);


    DeviceContext deviceContext = new DeviceContext();

    Content logcatContent = createLogcatContent(layoutUi, project, deviceContext);
    final LogView logcatView = logcatContent.getUserData(LOG_VIEW_KEY);
    layoutUi.addContent(logcatContent, 0, PlaceInGrid.center, false);

    final JBLoadingPanel loadingPanel = new JBLoadingPanel(new BorderLayout(), project);
    loadingPanel.add(layoutUi.getComponent(), BorderLayout.CENTER);

    final ContentManager contentManager = toolWindow.getContentManager();
    Content c = contentManager.getFactory().createContent(loadingPanel, "", true);
    c.putUserData(LOG_VIEW_KEY, logcatView);
    contentManager.addContent(c);
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            logcatView.activate();
        }
    }, project.getDisposed());


    if (adb != null) {
        loadingPanel.setLoadingText("Initializing ADB");
        loadingPanel.startLoading();

        //ListenableFuture<AndroidDebugBridge> future = AdbService.getInstance().getDebugBridge(adb);
        ListenableFuture<AndroidDebugBridge> future = AdbBridgeFactory.getAdb(adb);
        Futures.addCallback(future, new FutureCallback<AndroidDebugBridge>() {
            @Override
            public void onSuccess(@Nullable AndroidDebugBridge bridge) {
                Logger.getInstance(LogviewFactory.class).info("Successfully obtained debug bridge");
                loadingPanel.stopLoading();
            }

            @Override
            public void onFailure(@NotNull Throwable t) {
                loadingPanel.stopLoading();
                Logger.getInstance(LogviewFactory.class).info("Unable to obtain debug bridge", t);
                String msg;
                if (t.getMessage() != null) {
                    msg = t.getMessage();
                } else {
                    msg = String.format("Unable to establish a connection to adb",
                            ApplicationNamesInfo.getInstance().getProductName(), adb.getAbsolutePath());
                }
                Messages.showErrorDialog(msg, "ADB Connection Error");
            }
        }, EdtExecutor.INSTANCE);
    } else {
        logcatView.showHint("No adb connection!.\n\nDrag and drop log files to view them.");
    }
}
 
示例29
@Override
public void actionPerformed(AnActionEvent e) {
    Logger logger = Logger.getInstance(this.getClass());

    // Get project, editor, document, file, and position information.
    final Project project = e.getProject();
    if (project == null) {
        return;
    }
    Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
    if (editor == null) {
        return;
    }
    Document currentDoc = editor.getDocument();
    if (currentDoc == null) {
        return;
    }
    VirtualFile currentFile = FileDocumentManager.getInstance().getFile(currentDoc);
    if (currentFile == null) {
        return;
    }
    SelectionModel sel = editor.getSelectionModel();

    // Get repo information.
    RepoInfo repoInfo = Util.repoInfo(currentFile.getPath());
    if (repoInfo.remoteURL == "") {
        return;
    }

    // Build the URL that we will open.
    String productName = ApplicationInfo.getInstance().getVersionName();
    String productVersion = ApplicationInfo.getInstance().getFullVersion();
    String uri;
    try {
        LogicalPosition start = editor.visualToLogicalPosition(sel.getSelectionStartPosition());
        LogicalPosition end = editor.visualToLogicalPosition(sel.getSelectionEndPosition());
        uri = Util.sourcegraphURL(project)+"-/editor"
                + "?remote_url=" + URLEncoder.encode(repoInfo.remoteURL, "UTF-8")
                + "&branch=" + URLEncoder.encode(repoInfo.branch, "UTF-8")
                + "&file=" + URLEncoder.encode(repoInfo.fileRel, "UTF-8")
                + "&editor=" + URLEncoder.encode("JetBrains", "UTF-8")
                + "&version=" + URLEncoder.encode(Util.VERSION, "UTF-8")
                + "&utm_product_name=" + URLEncoder.encode(productName, "UTF-8")
                + "&utm_product_version=" + URLEncoder.encode(productVersion, "UTF-8")
                + "&start_row=" + URLEncoder.encode(Integer.toString(start.line), "UTF-8")
                + "&start_col=" + URLEncoder.encode(Integer.toString(start.column), "UTF-8")
                + "&end_row=" + URLEncoder.encode(Integer.toString(end.line), "UTF-8")
                + "&end_col=" + URLEncoder.encode(Integer.toString(end.column), "UTF-8");
    } catch (UnsupportedEncodingException err) {
        logger.debug("failed to build URL");
        err.printStackTrace();
        return;
    }

    handleFileUri(uri);
}
 
示例30
public static Logger getLogger(Class clazz) {
    return Logger.getInstance(clazz);
}