From bdc2450f2cbae04f9e285b70203173bca03f0254 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 18 Apr 2018 21:34:34 +0300 Subject: [PATCH] add icons for different scopes --- .../psi/search/scope/ProblemsScope.java | 2 +- .../psi/search/scope/ProjectFilesScope.java | 3 ++- .../search/scope/ProjectProductionScope.java | 4 +++- .../intellij/psi/search/scope/TestsScope.java | 4 +++- platform/icons/src/general/projectTab.svg | 6 +++++ platform/icons/src/ide/localScope.svg | 6 +++++ platform/icons/src/scope/changedFiles.svg | 8 +++++++ platform/icons/src/scope/changedFilesAll.svg | 11 +++++++++ platform/icons/src/scope/problems.svg | 3 +++ platform/icons/src/scope/production.svg | 6 +++++ platform/icons/src/scope/scratches.svg | 6 +++++ platform/icons/src/scope/tests.svg | 6 +++++ .../ide/scratch/ScratchProjectViewPane.java | 23 ++++++------------- .../packageDependencies/ChangeListScope.java | 16 ++++++------- .../openapi/wm/impl/content/BaseLabel.java | 9 ++++++-- .../util/src/com/intellij/icons/AllIcons.java | 10 ++++++++ 16 files changed, 93 insertions(+), 30 deletions(-) create mode 100644 platform/icons/src/general/projectTab.svg create mode 100644 platform/icons/src/ide/localScope.svg create mode 100644 platform/icons/src/scope/changedFiles.svg create mode 100644 platform/icons/src/scope/changedFilesAll.svg create mode 100644 platform/icons/src/scope/problems.svg create mode 100644 platform/icons/src/scope/production.svg create mode 100644 platform/icons/src/scope/scratches.svg create mode 100644 platform/icons/src/scope/tests.svg diff --git a/platform/analysis-api/src/com/intellij/psi/search/scope/ProblemsScope.java b/platform/analysis-api/src/com/intellij/psi/search/scope/ProblemsScope.java index 85b74fbe85a1..1af0caf0bf2d 100644 --- a/platform/analysis-api/src/com/intellij/psi/search/scope/ProblemsScope.java +++ b/platform/analysis-api/src/com/intellij/psi/search/scope/ProblemsScope.java @@ -22,7 +22,7 @@ public final class ProblemsScope extends NamedScope { public static final ProblemsScope INSTANCE = new ProblemsScope(); private ProblemsScope() { - super(NAME, AllIcons.Toolwindows.Problems, new FilteredPackageSet(NAME) { + super(NAME, AllIcons.Scope.Problems, new FilteredPackageSet(NAME) { @Override public boolean contains(@NotNull VirtualFile file, @NotNull Project project) { WolfTheProblemSolver solver = project.isDisposed() ? null : WolfTheProblemSolver.getInstance(project); diff --git a/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java b/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java index 55bdfdafb296..4c84c3c39573 100644 --- a/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java +++ b/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.psi.search.scope; +import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; @@ -20,7 +21,7 @@ public final class ProjectFilesScope extends NamedScope { public static final ProjectFilesScope INSTANCE = new ProjectFilesScope(); public ProjectFilesScope() { - super(NAME, new FilteredPackageSet(NAME) { + super(NAME, AllIcons.Nodes.Folder, new FilteredPackageSet(NAME) { @Override public boolean contains(@NotNull VirtualFile file, @NotNull Project project) { ProjectFileIndex fileIndex = getFileIndex(project); diff --git a/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java b/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java index 018c5926396c..a3f167b0659f 100644 --- a/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java +++ b/platform/analysis-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.psi.search.scope; +import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; @@ -8,6 +9,7 @@ import com.intellij.openapi.roots.TestSourcesFilter; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.scope.packageSet.FilteredPackageSet; import com.intellij.psi.search.scope.packageSet.NamedScope; +import com.intellij.ui.OffsetIcon; import org.jetbrains.annotations.NotNull; /** @@ -19,7 +21,7 @@ public final class ProjectProductionScope extends NamedScope { public static final ProjectProductionScope INSTANCE = new ProjectProductionScope(); private ProjectProductionScope() { - super(NAME, new FilteredPackageSet(NAME) { + super(NAME, new OffsetIcon(AllIcons.Scope.Production), new FilteredPackageSet(NAME) { @Override public boolean contains(@NotNull VirtualFile file, @NotNull Project project) { ProjectFileIndex index = ProjectFilesScope.getFileIndex(project); diff --git a/platform/analysis-api/src/com/intellij/psi/search/scope/TestsScope.java b/platform/analysis-api/src/com/intellij/psi/search/scope/TestsScope.java index 5c9f9d7f95b7..957a2b91a09f 100644 --- a/platform/analysis-api/src/com/intellij/psi/search/scope/TestsScope.java +++ b/platform/analysis-api/src/com/intellij/psi/search/scope/TestsScope.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.psi.search.scope; +import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.TestSourcesFilter; @@ -8,6 +9,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.scope.packageSet.FilteredPackageSet; import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.ui.Colored; +import com.intellij.ui.OffsetIcon; import org.jetbrains.annotations.NotNull; /** @@ -20,7 +22,7 @@ public final class TestsScope extends NamedScope { public static final TestsScope INSTANCE = new TestsScope(); private TestsScope() { - super(NAME, new FilteredPackageSet(NAME) { + super(NAME, new OffsetIcon(AllIcons.Scope.Tests), new FilteredPackageSet(NAME) { @Override public boolean contains(@NotNull VirtualFile file, @NotNull Project project) { return TestSourcesFilter.isTestSources(file, project); diff --git a/platform/icons/src/general/projectTab.svg b/platform/icons/src/general/projectTab.svg new file mode 100644 index 000000000000..42dda7398d47 --- /dev/null +++ b/platform/icons/src/general/projectTab.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/icons/src/ide/localScope.svg b/platform/icons/src/ide/localScope.svg new file mode 100644 index 000000000000..dff1063415d4 --- /dev/null +++ b/platform/icons/src/ide/localScope.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/icons/src/scope/changedFiles.svg b/platform/icons/src/scope/changedFiles.svg new file mode 100644 index 000000000000..c5f8eb8d11c6 --- /dev/null +++ b/platform/icons/src/scope/changedFiles.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/platform/icons/src/scope/changedFilesAll.svg b/platform/icons/src/scope/changedFilesAll.svg new file mode 100644 index 000000000000..35a5aa6d87c5 --- /dev/null +++ b/platform/icons/src/scope/changedFilesAll.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/platform/icons/src/scope/problems.svg b/platform/icons/src/scope/problems.svg new file mode 100644 index 000000000000..b63de47a5b42 --- /dev/null +++ b/platform/icons/src/scope/problems.svg @@ -0,0 +1,3 @@ + + + diff --git a/platform/icons/src/scope/production.svg b/platform/icons/src/scope/production.svg new file mode 100644 index 000000000000..0a128a75b143 --- /dev/null +++ b/platform/icons/src/scope/production.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/icons/src/scope/scratches.svg b/platform/icons/src/scope/scratches.svg new file mode 100644 index 000000000000..e18256a520e8 --- /dev/null +++ b/platform/icons/src/scope/scratches.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/icons/src/scope/tests.svg b/platform/icons/src/scope/tests.svg new file mode 100644 index 000000000000..1240df7d543c --- /dev/null +++ b/platform/icons/src/scope/tests.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchProjectViewPane.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchProjectViewPane.java index d5127bdcf3b1..e8749545a830 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchProjectViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchProjectViewPane.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.scratch; import com.intellij.icons.AllIcons; @@ -80,6 +66,11 @@ public class ScratchProjectViewPane extends ProjectViewPane { return ID; } + @Override + public Icon getIcon() { + return AllIcons.Scope.Scratches; + } + @Override protected ProjectAbstractTreeStructureBase createStructure() { return new MyTreeStructure(myProject); @@ -217,7 +208,7 @@ public class ScratchProjectViewPane extends ProjectViewPane { @Override protected void update(PresentationData presentation) { presentation.setPresentableText(getValue()); - presentation.setIcon(AllIcons.General.ProjectTab); + presentation.setIcon(AllIcons.Scope.Scratches); } @Override diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ChangeListScope.java b/platform/lang-impl/src/com/intellij/packageDependencies/ChangeListScope.java index 41cfd8bbc80c..184a4246db48 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ChangeListScope.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ChangeListScope.java @@ -5,21 +5,21 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.psi.search.scope.packageSet.FilteredNamedScope; +import com.intellij.ui.OffsetIcon; import org.jetbrains.annotations.NotNull; +import javax.swing.Icon; + public final class ChangeListScope extends FilteredNamedScope { public static final String NAME = IdeBundle.message("scope.modified.files"); - private final boolean all; // TODO: use different icons instead + private static final Icon ICON = new OffsetIcon(AllIcons.Scope.ChangedFiles); public ChangeListScope(@NotNull ChangeListManager manager) { - super(NAME, AllIcons.Toolwindows.ToolWindowChanges, 0, manager::isFileAffected); - all = true; + super(NAME, AllIcons.Scope.ChangedFilesAll, 0, manager::isFileAffected); } public ChangeListScope(@NotNull ChangeListManager manager, @NotNull String name) { - super(name, AllIcons.Toolwindows.ToolWindowChanges, 0, - file -> manager.getChangeLists(file).stream().anyMatch(list -> list.getName().equals(name))); - all = false; + super(name, ICON, 0, file -> manager.getChangeLists(file).stream().anyMatch(list -> list.getName().equals(name))); } @Override @@ -32,7 +32,7 @@ public final class ChangeListScope extends FilteredNamedScope { if (object == this) return true; if (object instanceof ChangeListScope) { ChangeListScope scope = (ChangeListScope)object; - return scope.all == all && scope.getName().equals(getName()); + return scope.getIcon() == getIcon() && scope.getName().equals(getName()); } return false; } @@ -40,7 +40,7 @@ public final class ChangeListScope extends FilteredNamedScope { @Override public String toString() { String string = super.toString(); - if (all) string += "; ALL"; + if (AllIcons.Scope.ChangedFilesAll == getIcon()) string += "; ALL"; return string; } } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/BaseLabel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/BaseLabel.java index ef67dc6e274a..3e66ad6d4afa 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/BaseLabel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/BaseLabel.java @@ -5,6 +5,7 @@ import com.intellij.ide.ui.AntialiasingType; import com.intellij.openapi.wm.ToolWindow; import com.intellij.ui.EngravedTextGraphics; import com.intellij.ui.JBColor; +import com.intellij.ui.OffsetIcon; import com.intellij.ui.content.Content; import com.intellij.util.ui.GraphicsUtil; import com.intellij.util.ui.JBUI; @@ -121,11 +122,15 @@ public class BaseLabel extends JLabel { if(componentOrientation != null) { setComponentOrientation(componentOrientation); } + Icon icon = content.getIcon(); + if (icon instanceof OffsetIcon) { + icon = ((OffsetIcon)icon).getIcon(); + } if (isSelected) { - setIcon(content.getIcon()); + setIcon(icon); } else { - setIcon(content.getIcon() != null ? new WatermarkIcon(content.getIcon(), .5f) : null); + setIcon(icon != null ? new WatermarkIcon(icon, .5f) : null); } } else { diff --git a/platform/util/src/com/intellij/icons/AllIcons.java b/platform/util/src/com/intellij/icons/AllIcons.java index 3745807a6bc6..0e3a4ac63d7a 100644 --- a/platform/util/src/com/intellij/icons/AllIcons.java +++ b/platform/util/src/com/intellij/icons/AllIcons.java @@ -1284,7 +1284,17 @@ public class AllIcons { public static final Icon WithCoverageLayer = IconLoader.getIcon("/runConfigurations/withCoverageLayer.png"); // 16x16 } + + public static class Scope { + public static final Icon ChangedFiles = IconLoader.getIcon("/scope/changedFiles.svg"); // 16x16 + public static final Icon ChangedFilesAll = IconLoader.getIcon("/scope/changedFilesAll.svg"); // 16x16 + public static final Icon Problems = IconLoader.getIcon("/scope/problems.svg"); // 16x16 + public static final Icon Production = IconLoader.getIcon("/scope/production.svg"); // 16x16 + public static final Icon Scratches = IconLoader.getIcon("/scope/scratches.svg"); // 16x16 + public static final Icon Tests = IconLoader.getIcon("/scope/tests.svg"); // 16x16 + } + public static class Toolbar { public static final Icon Filterdups = IconLoader.getIcon("/toolbar/filterdups.png"); // 16x16 public static final Icon Folders = IconLoader.getIcon("/toolbar/folders.png"); // 16x16