mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
Generated
-1
@@ -105,7 +105,6 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml" filepath="$PROJECT_DIR$/platform/projectModel-api/projectModel-api.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml" filepath="$PROJECT_DIR$/platform/projectModel-impl/projectModel-impl.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/properties/properties.iml" filepath="$PROJECT_DIR$/plugins/properties/properties.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/rearranger/rearranger.iml" filepath="$PROJECT_DIR$/plugins/rearranger/rearranger.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/xml/relaxng/relaxng.iml" filepath="$PROJECT_DIR$/xml/relaxng/relaxng.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/resources/resources.iml" filepath="$PROJECT_DIR$/resources/resources.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/resources-en/resources-en.iml" filepath="$PROJECT_DIR$/resources-en/resources-en.iml" />
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<grid row="9" column="0" row-span="1" col-span="3" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</vspacer>
|
||||
<grid id="b341d" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="5" bottom="0" right="0"/>
|
||||
<grid id="b341d" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="3" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
@@ -31,23 +31,22 @@
|
||||
</component>
|
||||
<component id="263f1" class="javax.swing.JTextField" binding="myResourcePatternsField">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="9" fill="1" indent="0" use-parent-layout="false">
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties>
|
||||
<focusable value="true"/>
|
||||
<margin top="0" left="2" bottom="0" right="0"/>
|
||||
<text value="" noi18n="true"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="1337" class="javax.swing.JLabel" binding="myPatternLegendLabel">
|
||||
<component id="78174" class="com.intellij.ui.components.JBLabel" binding="myPatternLegendLabel">
|
||||
<constraints>
|
||||
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="8" fill="0" indent="1" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<font size="11"/>
|
||||
<foreground color="-13487566"/>
|
||||
<componentStyle value="SMALL"/>
|
||||
<fontColor value="BRIGHTER"/>
|
||||
<text value="label"/>
|
||||
</properties>
|
||||
</component>
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.options.SearchableConfigurable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -47,7 +48,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura
|
||||
private JTextField myResourcePatternsField;
|
||||
private JCheckBox myCbClearOutputDirectory;
|
||||
private JCheckBox myCbAssertNotNull;
|
||||
private JLabel myPatternLegendLabel;
|
||||
private JBLabel myPatternLegendLabel;
|
||||
private JCheckBox myCbAutoShowFirstError;
|
||||
private JCheckBox myCbUseExternalBuild;
|
||||
private JCheckBox myCbEnableAutomake;
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ public class ConfigurationArgumentsHelpArea extends JPanel {
|
||||
CopyPasteManager.getInstance().setContents(contents);
|
||||
}
|
||||
});
|
||||
myToolbarPanel.add(copyButton, BorderLayout.CENTER);
|
||||
myToolbarPanel.add(copyButton, BorderLayout.NORTH);
|
||||
myToolbarPanel.setVisible(false);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -267,7 +267,7 @@
|
||||
<children>
|
||||
<component id="95854" class="javax.swing.JCheckBox" binding="myInsertOverrideAnnotationCheckBox" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="1" use-parent-layout="false"/>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text resource-bundle="messages/ApplicationBundle" key="insert.override.annotation"/>
|
||||
@@ -275,7 +275,7 @@
|
||||
</component>
|
||||
<component id="9c14a" class="javax.swing.JCheckBox" binding="myRepeatSynchronizedCheckBox" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="1" use-parent-layout="false"/>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Repeat &synchronized modifier"/>
|
||||
|
||||
@@ -86,9 +86,6 @@ public class JavaCompletionSorting {
|
||||
return new LiftShorterItemsClassifier(next, new LiftShorterItemsClassifier.LiftingCondition() {
|
||||
@Override
|
||||
public boolean shouldLift(LookupElement shorterElement, LookupElement longerElement) {
|
||||
if (super.shouldLift(shorterElement, longerElement)) {
|
||||
return true;
|
||||
}
|
||||
Object object = shorterElement.getObject();
|
||||
if (object instanceof PsiClass) {
|
||||
PsiClass psiClass = (PsiClass)object;
|
||||
@@ -107,7 +104,7 @@ public class JavaCompletionSorting {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+7
-5
@@ -17,6 +17,7 @@
|
||||
package com.intellij.psi.impl.source.resolve.reference.impl.providers;
|
||||
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -47,13 +48,14 @@ public class PackageReferenceSet extends ReferenceSetBase<PsiPackageReference> {
|
||||
return new PsiPackageReference(this, range, index);
|
||||
}
|
||||
|
||||
public Collection<PsiPackage> resolvePackageName(@Nullable PsiPackage context, String packageName) {
|
||||
public Collection<PsiPackage> resolvePackageName(@Nullable PsiPackage context, final String packageName) {
|
||||
if (context != null) {
|
||||
for (PsiPackage aPackage : context.getSubPackages()) {
|
||||
if (Comparing.equal(aPackage.getName(), packageName)) {
|
||||
return Collections.singleton(aPackage);
|
||||
return ContainerUtil.filter(context.getSubPackages(), new Condition<PsiPackage>() {
|
||||
@Override
|
||||
public boolean value(PsiPackage aPackage) {
|
||||
return Comparing.equal(aPackage.getName(), packageName);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
+10
-10
@@ -162,10 +162,10 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
FileDocumentManager.instance.saveAllDocuments()
|
||||
|
||||
invokeCompletion("SameStatsForDifferentQualifiersJLabel.java");
|
||||
assertPreferredItems(1, "getComponent", "getComponents");
|
||||
assertPreferredItems(0, "getComponents", "getComponent");
|
||||
|
||||
invokeCompletion("SameStatsForDifferentQualifiersJComponent.java");
|
||||
assertPreferredItems(1, "getComponent", "getComponents");
|
||||
assertPreferredItems(0, "getComponents", "getComponent");
|
||||
}
|
||||
|
||||
public void testSameStatsForDifferentQualifiers2() throws Throwable {
|
||||
@@ -175,10 +175,10 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
FileDocumentManager.instance.saveAllDocuments()
|
||||
|
||||
invokeCompletion("SameStatsForDifferentQualifiersJComponent.java");
|
||||
assertPreferredItems(1, "getComponent", "getComponents");
|
||||
assertPreferredItems(0, "getComponents", "getComponent");
|
||||
|
||||
invokeCompletion("SameStatsForDifferentQualifiersJLabel.java");
|
||||
assertPreferredItems(1, "getComponent", "getComponents");
|
||||
assertPreferredItems(0, "getComponents", "getComponent");
|
||||
}
|
||||
|
||||
public void testDispreferFinalize() throws Throwable {
|
||||
@@ -223,7 +223,7 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
}
|
||||
|
||||
public void testSkipLifted() {
|
||||
checkPreferredItems(1, "hashCode", "hashCodeMine")
|
||||
checkPreferredItems(0, "hashCodeMine", "hashCode")
|
||||
}
|
||||
|
||||
public void testDispreferInnerClasses() {
|
||||
@@ -248,7 +248,7 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
}
|
||||
|
||||
public void testPreferFinallyToFinal() {
|
||||
checkPreferredItems(1, "final", "finally");
|
||||
checkPreferredItems(0, "finally", "final");
|
||||
}
|
||||
|
||||
public void testPreferReturn() {
|
||||
@@ -473,8 +473,8 @@ import java.lang.annotation.Target;
|
||||
for (i in 0..10) {
|
||||
incUseCount(lookup, 1)
|
||||
}
|
||||
assertPreferredItems 1, 'add', 'addAll'
|
||||
incUseCount(lookup, 0)
|
||||
assertPreferredItems 0, 'addAll', 'add'
|
||||
incUseCount(lookup, 1)
|
||||
assertPreferredItems 0, 'add', 'addAll'
|
||||
}
|
||||
|
||||
@@ -502,8 +502,8 @@ import java.lang.annotation.Target;
|
||||
invokeCompletion(getTestName(false) + ".java")
|
||||
myFixture.completeBasic()
|
||||
myFixture.type('cont')
|
||||
assertPreferredItems 1, 'contains', 'containsAll'
|
||||
myFixture.lookup.currentItem = myFixture.lookupElements[0]
|
||||
assertPreferredItems 0, 'containsAll', 'contains'
|
||||
myFixture.lookup.currentItem = myFixture.lookupElements[1]
|
||||
myFixture.type('\nc)) {\nif (set.')
|
||||
myFixture.completeBasic()
|
||||
myFixture.type('cont')
|
||||
|
||||
+1
-1
@@ -804,7 +804,7 @@ public class ListUtils {
|
||||
|
||||
public void testFinalInForLoop2() throws Throwable {
|
||||
configure()
|
||||
assertStringItems 'final', 'finalize'
|
||||
myFixture.assertPreferredCompletionItems 0, 'finalize', 'final'
|
||||
}
|
||||
|
||||
public void testOnlyClassesInExtends() throws Throwable {
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ public class SmartTypeCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
}
|
||||
|
||||
public void testJComponentAdd() throws Throwable {
|
||||
checkPreferredItems(0, "name", "getName", "b", "foo", "fooBean239", "this");
|
||||
checkPreferredItems(0, "name", "getName", "b", "fooBean239", "foo", "this");
|
||||
}
|
||||
|
||||
public void testJComponentAddNew() throws Throwable {
|
||||
|
||||
+1
-6
@@ -256,17 +256,12 @@ public class CompletionServiceImpl extends CompletionService{
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (parameters.getCompletionType() == CompletionType.SMART) {
|
||||
return sorter;
|
||||
}
|
||||
|
||||
return sorter.withClassifier("priority", true, new ClassifierFactory<LookupElement>("liftShorter") {
|
||||
@Override
|
||||
public Classifier<LookupElement> createClassifier(final Classifier<LookupElement> next) {
|
||||
return new LiftShorterItemsClassifier(next, new LiftShorterItemsClassifier.LiftingCondition());
|
||||
return new LiftShorterItemsClassifier(next, new LiftShorterItemsClassifier.LiftingCondition(), false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+18
-26
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.completion.impl;
|
||||
|
||||
import com.intellij.codeInsight.completion.CompletionLookupArranger;
|
||||
import com.intellij.codeInsight.lookup.Classifier;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
@@ -47,16 +46,17 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
return new ArrayList<LookupElement>(1);
|
||||
}
|
||||
};
|
||||
private final Map<LookupElement, FList<LookupElement>> myToLiftForSorting = newIdentityHashMap();
|
||||
private final Map<LookupElement, FList<LookupElement>> myToLiftForPreselection = newIdentityHashMap();
|
||||
private final Map<LookupElement, FList<LookupElement>> myToLift = newIdentityHashMap();
|
||||
private final IdentityHashMap<FList<LookupElement>, IdentityHashMap<LookupElement, FList<LookupElement>>> myPrepends = newIdentityHashMap();
|
||||
private final Classifier<LookupElement> myNext;
|
||||
private final LiftingCondition myCondition;
|
||||
private final boolean myLiftBefore;
|
||||
private int myCount = 0;
|
||||
|
||||
public LiftShorterItemsClassifier(Classifier<LookupElement> next, LiftingCondition condition) {
|
||||
public LiftShorterItemsClassifier(Classifier<LookupElement> next, LiftingCondition condition, boolean liftBefore) {
|
||||
myNext = next;
|
||||
myCondition = condition;
|
||||
myLiftBefore = liftBefore;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,10 +85,10 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
}
|
||||
|
||||
private void updateLongerItem(LookupElement shorter, LookupElement longer) {
|
||||
boolean forPreselection = myCondition.shouldLift(shorter, longer);
|
||||
Map<LookupElement, FList<LookupElement>> map = forPreselection ? myToLiftForPreselection : myToLiftForSorting;
|
||||
FList<LookupElement> oldValue = ContainerUtil.getOrElse(map, longer, FList.<LookupElement>emptyList());
|
||||
map.put(longer, prependOrReuse(oldValue, shorter));
|
||||
if (myCondition.shouldLift(shorter, longer)) {
|
||||
FList<LookupElement> oldValue = ContainerUtil.getOrElse(myToLift, longer, FList.<LookupElement>emptyList());
|
||||
myToLift.put(longer, prependOrReuse(oldValue, shorter));
|
||||
}
|
||||
}
|
||||
|
||||
private FList<LookupElement> prependOrReuse(FList<LookupElement> tail, LookupElement head) {
|
||||
@@ -104,27 +104,21 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
}
|
||||
|
||||
private void calculateToLift(LookupElement element) {
|
||||
FList<LookupElement> forPreselection = FList.emptyList();
|
||||
FList<LookupElement> forSorting = FList.emptyList();
|
||||
FList<LookupElement> toLift = FList.emptyList();
|
||||
|
||||
for (String string : element.getAllLookupStrings()) {
|
||||
for (int len = 1; len < string.length(); len++) {
|
||||
String prefix = string.substring(0, len);
|
||||
for (LookupElement shorterElement : myElements.get(prefix)) {
|
||||
if (myCondition.shouldLift(shorterElement, element)) {
|
||||
forPreselection = prependOrReuse(forPreselection, shorterElement);
|
||||
} else {
|
||||
forSorting = prependOrReuse(forSorting, shorterElement);
|
||||
toLift = prependOrReuse(toLift, shorterElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!forPreselection.isEmpty()) {
|
||||
myToLiftForPreselection.put(element, forPreselection);
|
||||
}
|
||||
if (!forSorting.isEmpty()) {
|
||||
myToLiftForSorting.put(element, forSorting);
|
||||
if (!toLift.isEmpty()) {
|
||||
myToLift.put(element, toLift);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +158,7 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
|
||||
public static class LiftingCondition {
|
||||
public boolean shouldLift(LookupElement shorterElement, LookupElement longerElement) {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,7 +183,6 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
final Set<LookupElement> processed = newIdentityTroveSet(mySrcSet.size());
|
||||
final Set<FList<LookupElement>> arraysProcessed = newIdentityTroveSet();
|
||||
|
||||
final boolean forSorting = myContext.get(CompletionLookupArranger.PURE_RELEVANCE) != Boolean.TRUE;
|
||||
final Iterable<LookupElement> next = myNext.classify(mySource, myContext);
|
||||
Iterator<LookupElement> base = FilteringIterator.create(next.iterator(), new Condition<LookupElement>() {
|
||||
@Override
|
||||
@@ -200,17 +193,16 @@ public class LiftShorterItemsClassifier extends Classifier<LookupElement> {
|
||||
return new FlatteningIterator<LookupElement, LookupElement>(base) {
|
||||
@Override
|
||||
protected Iterator<LookupElement> createValueIterator(LookupElement element) {
|
||||
List<LookupElement> shorter = addShorterElements(null, myToLiftForPreselection.get(element));
|
||||
if (forSorting) {
|
||||
shorter = addShorterElements(shorter, myToLiftForSorting.get(element));
|
||||
}
|
||||
List<LookupElement> shorter = addShorterElements(null, myToLift.get(element));
|
||||
List<LookupElement> singleton = Collections.singletonList(element);
|
||||
if (shorter != null) {
|
||||
if (myLifted != null) {
|
||||
myLifted.addAll(shorter);
|
||||
}
|
||||
return ContainerUtil.concat(myNext.classify(shorter, myContext), Collections.singletonList(element)).iterator();
|
||||
Iterable<LookupElement> lifted = myNext.classify(shorter, myContext);
|
||||
return (myLiftBefore ? ContainerUtil.concat(lifted, singleton) : ContainerUtil.concat(singleton, lifted)).iterator();
|
||||
}
|
||||
return Collections.singletonList(element).iterator();
|
||||
return singleton.iterator();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+18
-19
@@ -194,25 +194,6 @@ public class ImplementationViewComponent extends JPanel {
|
||||
gc.fill = GridBagConstraints.HORIZONTAL;
|
||||
gc.weightx = 1;
|
||||
myLabel = new JLabel();
|
||||
if (myElements.length > 1) {
|
||||
updateRenderer(project);
|
||||
myLabel.setVisible(false);
|
||||
}
|
||||
else {
|
||||
myFileChooser = new ComboBox();
|
||||
myFileChooser.setVisible(false);
|
||||
myCountLabel.setVisible(false);
|
||||
|
||||
VirtualFile file = psiFile.getVirtualFile();
|
||||
if (file != null) {
|
||||
myLabel.setIcon(getIconForFile(psiFile));
|
||||
myLabel.setForeground(FileStatusManager.getInstance(project).getStatus(file).getColor());
|
||||
myLabel.setText(file.getPresentableName());
|
||||
myLabel.setBorder(new CompoundBorder(IdeBorderFactory.createRoundedBorder(), IdeBorderFactory.createEmptyBorder(0, 0, 0, 5)));
|
||||
}
|
||||
toolbarPanel.add(myLabel, gc);
|
||||
}
|
||||
|
||||
myFileChooser = new ComboBox(fileDescriptors.toArray(new FileDescriptor[fileDescriptors.size()]), 250);
|
||||
myFileChooser.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
@@ -226,6 +207,24 @@ public class ImplementationViewComponent extends JPanel {
|
||||
});
|
||||
toolbarPanel.add(myFileChooser, gc);
|
||||
|
||||
if (myElements.length > 1) {
|
||||
updateRenderer(project);
|
||||
myLabel.setVisible(false);
|
||||
}
|
||||
else {
|
||||
myFileChooser.setVisible(false);
|
||||
myCountLabel.setVisible(false);
|
||||
|
||||
VirtualFile file = psiFile.getVirtualFile();
|
||||
if (file != null) {
|
||||
myLabel.setIcon(getIconForFile(psiFile));
|
||||
myLabel.setForeground(FileStatusManager.getInstance(project).getStatus(file).getColor());
|
||||
myLabel.setText(file.getPresentableName());
|
||||
myLabel.setBorder(new CompoundBorder(IdeBorderFactory.createRoundedBorder(), IdeBorderFactory.createEmptyBorder(0, 0, 0, 5)));
|
||||
}
|
||||
toolbarPanel.add(myLabel, gc);
|
||||
}
|
||||
|
||||
gc.fill = GridBagConstraints.NONE;
|
||||
gc.weightx = 0;
|
||||
toolbarPanel.add(myCountLabel, gc);
|
||||
|
||||
@@ -130,7 +130,12 @@ public class CompletionPreview {
|
||||
}
|
||||
}
|
||||
|
||||
new CompletionPreview(lookup, text, lookup.itemPattern(item));
|
||||
String prefix = lookup.itemPattern(item);
|
||||
if (prefix.length() > text.length()) {
|
||||
return;
|
||||
}
|
||||
|
||||
new CompletionPreview(lookup, text, prefix);
|
||||
}
|
||||
|
||||
public void uninstallPreview() {
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor<RunnerAnd
|
||||
myEditor = new ConfigurationSettingsEditor(settings);
|
||||
Disposer.register(this, myEditor);
|
||||
myBeforeRunStepsPanel = new BeforeRunStepsPanel(this);
|
||||
myDecorator = new HideableDecorator(myBeforeLaunchContainer, "", true) {
|
||||
myDecorator = new HideableDecorator(myBeforeLaunchContainer, "", false) {
|
||||
@Override
|
||||
protected void on() {
|
||||
super.on();
|
||||
|
||||
@@ -130,7 +130,7 @@ public abstract class ChooseByNameBase {
|
||||
@NonNls private static final String NOT_FOUND_CARD = "nfound";
|
||||
@NonNls private static final String CHECK_BOX_CARD = "chkbox";
|
||||
@NonNls private static final String SEARCHING_CARD = "searching";
|
||||
private static final int REBUILD_DELAY = 300;
|
||||
private final int myRebuildDelay;
|
||||
|
||||
private final Alarm myHideAlarm = new Alarm();
|
||||
private boolean myShowListAfterCompletionKeyStroke = false;
|
||||
@@ -185,6 +185,7 @@ public abstract class ChooseByNameBase {
|
||||
myProvider = provider;
|
||||
myInitialIndex = initialIndex;
|
||||
mySearchInAnyPlace = Registry.is("ide.goto.middle.matching") && model.useMiddleMatching();
|
||||
myRebuildDelay = Registry.intValue("ide.goto.rebuild.delay");
|
||||
}
|
||||
|
||||
public void setShowListAfterCompletionKeyStroke(boolean showListAfterCompletionKeyStroke) {
|
||||
@@ -584,7 +585,7 @@ public abstract class ChooseByNameBase {
|
||||
case KeyEvent.VK_ENTER:
|
||||
if (myList.getSelectedValue() == EXTRA_ELEM) {
|
||||
myMaximumListSizeLimit += myListSizeIncreasing;
|
||||
rebuildList(myList.getSelectedIndex(), REBUILD_DELAY, null, ModalityState.current());
|
||||
rebuildList(myList.getSelectedIndex(), myRebuildDelay, null, ModalityState.current());
|
||||
e.consume();
|
||||
}
|
||||
break;
|
||||
@@ -627,7 +628,7 @@ public abstract class ChooseByNameBase {
|
||||
if (selectedCellBounds != null && selectedCellBounds.contains(e.getPoint())) { // Otherwise it was reselected in the selection listener
|
||||
if (myList.getSelectedValue() == EXTRA_ELEM) {
|
||||
myMaximumListSizeLimit += myListSizeIncreasing;
|
||||
rebuildList(selectedIndex, REBUILD_DELAY, null, ModalityState.current());
|
||||
rebuildList(selectedIndex, myRebuildDelay, null, ModalityState.current());
|
||||
}
|
||||
else {
|
||||
doClose(true);
|
||||
@@ -706,11 +707,11 @@ public abstract class ChooseByNameBase {
|
||||
}
|
||||
|
||||
/**
|
||||
* Default rebuild list. It uses {@link #REBUILD_DELAY} and current modality state.
|
||||
* Default rebuild list. It uses {@link #myRebuildDelay} and current modality state.
|
||||
*/
|
||||
public void rebuildList(boolean initial) {
|
||||
// TODO this method is public, because the chooser does not listed for the model.
|
||||
rebuildList(initial ? myInitialIndex : 0, REBUILD_DELAY, null, ModalityState.current());
|
||||
rebuildList(initial ? myInitialIndex : 0, myRebuildDelay, null, ModalityState.current());
|
||||
}
|
||||
|
||||
private void updateDocPosition() {
|
||||
|
||||
@@ -572,7 +572,10 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener,
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (UIUtil.isUnderAlloyLookAndFeel()) {
|
||||
else if (UIUtil.isUnderAlloyLookAndFeel() || UIUtil.isUnderJGoodiesLookAndFeel()) {
|
||||
editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1)));
|
||||
}
|
||||
else {
|
||||
editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(2, 2, 2, 2)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,8 +101,8 @@ public class HideableDecorator {
|
||||
|
||||
protected void on() {
|
||||
myOn = true;
|
||||
myTitledSeparator.getLabel().setIcon(AllIcons.General.ComboArrowDown);
|
||||
myTitledSeparator.getLabel().setDisabledIcon(IconLoader.getTransparentIcon(AllIcons.General.ComboArrowDown, 0.5f));
|
||||
myTitledSeparator.getLabel().setIcon(AllIcons.General.SplitDown);
|
||||
myTitledSeparator.getLabel().setDisabledIcon(IconLoader.getTransparentIcon(AllIcons.General.SplitDown, 0.5f));
|
||||
myTitledSeparator.getLabel().setIconTextGap(5);
|
||||
if (myContent != null) {
|
||||
myContent.setVisible(true);
|
||||
@@ -114,10 +114,8 @@ public class HideableDecorator {
|
||||
|
||||
protected void off() {
|
||||
myOn = false;
|
||||
myTitledSeparator.getLabel().setIcon(AllIcons.General.ComboArrowRight);
|
||||
myTitledSeparator.getLabel().setDisabledIcon(IconLoader.getTransparentIcon(AllIcons.General.ComboArrowRight, 0.5f));
|
||||
myTitledSeparator.getLabel()
|
||||
.setIconTextGap(5 + AllIcons.General.ComboArrowDown.getIconWidth() - AllIcons.General.ComboArrowRight.getIconWidth());
|
||||
myTitledSeparator.getLabel().setIcon(AllIcons.General.SplitRight);
|
||||
myTitledSeparator.getLabel().setDisabledIcon(IconLoader.getTransparentIcon(AllIcons.General.SplitRight, 0.5f));
|
||||
if (myContent != null) {
|
||||
myContent.setVisible(false);
|
||||
myPreviousContentSize = myContent.getSize();
|
||||
|
||||
@@ -206,6 +206,7 @@ ide.completion.middle.matching.description=Suggest items in completion that cont
|
||||
ide.goto.middle.matching=true
|
||||
# suppress inspection "UnusedProperty"
|
||||
ide.goto.middle.matching.description=Suggest items in goto actions that contain the entered string somewhere in the middle.
|
||||
ide.goto.rebuild.delay=300
|
||||
|
||||
ide.enable.toolwindow.stack=false
|
||||
|
||||
|
||||
@@ -22,10 +22,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.ColorUtil;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.PanelWithAnchor;
|
||||
import com.intellij.ui.SideBorder;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.intellij.lang.annotations.Language;
|
||||
@@ -96,9 +93,12 @@ public class UIUtil {
|
||||
if (isUnderAquaLookAndFeel()) {
|
||||
c.putClientProperty("JComponent.sizeVariant",
|
||||
componentStyle == ComponentStyle.REGULAR ? "regular" : componentStyle == ComponentStyle.SMALL ? "small" : "mini");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
c.setFont(getFont(
|
||||
componentStyle == ComponentStyle.REGULAR ? FontSize.NORMAL : componentStyle == ComponentStyle.SMALL ? FontSize.SMALL : FontSize.MINI, c.getFont()));
|
||||
componentStyle == ComponentStyle.REGULAR
|
||||
? FontSize.NORMAL
|
||||
: componentStyle == ComponentStyle.SMALL ? FontSize.SMALL : FontSize.MINI, c.getFont()));
|
||||
}
|
||||
Container p = c.getParent();
|
||||
if (p != null) {
|
||||
@@ -108,12 +108,13 @@ public class UIUtil {
|
||||
|
||||
public static Cursor getTextCursor(final Color backgroundColor) {
|
||||
return SystemInfo.isMac && ColorUtil.isDark(backgroundColor) ?
|
||||
MacUIUtil.getInvertedTextCursor(): Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
|
||||
MacUIUtil.getInvertedTextCursor() : Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws two horizontal lines, the first at {@code topY}, the second at {@code bottomY}.
|
||||
* The purpose of this method (and the ground of the name) is to draw two lines framing a horizontal filled rectangle.
|
||||
*
|
||||
* @param g Graphics context to draw with.
|
||||
* @param startX x-start point.
|
||||
* @param endX x-end point.
|
||||
@@ -128,12 +129,15 @@ public class UIUtil {
|
||||
|
||||
private static final GrayFilter DEFAULT_GRAY_FILTER = new GrayFilter(true, 65);
|
||||
private static final GrayFilter DARCULA_GRAY_FILTER = new GrayFilter(true, 30);
|
||||
|
||||
public static GrayFilter getGrayFilter() {
|
||||
return isUnderDarcula() ? DARCULA_GRAY_FILTER : DEFAULT_GRAY_FILTER;
|
||||
}
|
||||
|
||||
public enum FontSize {NORMAL, SMALL, MINI}
|
||||
|
||||
public enum ComponentStyle {REGULAR, SMALL, MINI}
|
||||
|
||||
public enum FontColor {NORMAL, BRIGHTER}
|
||||
|
||||
public static final char MNEMONIC = BundleBase.MNEMONIC;
|
||||
@@ -204,7 +208,8 @@ public class UIUtil {
|
||||
|
||||
private static final Ref<Boolean> ourRetina = Ref.create(SystemInfo.isMac ? null : false);
|
||||
|
||||
private UIUtil() { }
|
||||
private UIUtil() {
|
||||
}
|
||||
|
||||
public static boolean isRetina() {
|
||||
synchronized (ourRetina) {
|
||||
@@ -281,13 +286,15 @@ public class UIUtil {
|
||||
public static void drawLinePickedOut(Graphics graphics, int x, int y, int x1, int y1) {
|
||||
if (x == x1) {
|
||||
int minY = Math.min(y, y1);
|
||||
int maxY = Math.max(y, y1);
|
||||
graphics.drawLine(x, minY+1, x1, maxY-1);
|
||||
} else if (y == y1) {
|
||||
int maxY = Math.max(y, y1);
|
||||
graphics.drawLine(x, minY + 1, x1, maxY - 1);
|
||||
}
|
||||
else if (y == y1) {
|
||||
int minX = Math.min(x, x1);
|
||||
int maxX = Math.max(x, x1);
|
||||
graphics.drawLine(minX+1, y, maxX-1, y1);
|
||||
} else {
|
||||
graphics.drawLine(minX + 1, y, maxX - 1, y1);
|
||||
}
|
||||
else {
|
||||
drawLine(graphics, x, y, x1, y1);
|
||||
}
|
||||
}
|
||||
@@ -327,7 +334,6 @@ public class UIUtil {
|
||||
for (int i = 0; i < subComponentCount; i++) {
|
||||
setEnabled(container.getComponent(i), enabled, recursively);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -431,7 +437,8 @@ public class UIUtil {
|
||||
public static Color getLabelFontColor(FontColor fontColor) {
|
||||
Color defColor = getLabelForeground();
|
||||
if (fontColor == FontColor.BRIGHTER) {
|
||||
return new Color(Math.min(defColor.getRed() + 50, 255), Math.min(defColor.getGreen() + 50, 255), Math.min(defColor.getBlue() + 50, 255));
|
||||
return new JBColor(new Color(Math.min(defColor.getRed() + 50, 255), Math.min(defColor.getGreen() + 50, 255), Math.min(
|
||||
defColor.getBlue() + 50, 255)), defColor.darker());
|
||||
}
|
||||
return defColor;
|
||||
}
|
||||
@@ -592,8 +599,13 @@ public class UIUtil {
|
||||
LookAndFeel.installBorder(contentPane, "PopupMenu.border");
|
||||
}
|
||||
|
||||
/** @deprecated Motif is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isMotifLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Motif is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isMotifLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Color getTreeSelectionBorderColor() {
|
||||
return UIManager.getColor("Tree.selectionBorderColor");
|
||||
@@ -816,11 +828,11 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static Color getTableFocusCellForeground() {
|
||||
return UIManager.getColor("Table.focusCellForeground");
|
||||
return UIManager.getColor("Table.focusCellForeground");
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use com.intellij.util.ui.UIUtil#getPanelBackground() instead
|
||||
* @deprecated use com.intellij.util.ui.UIUtil#getPanelBackground() instead
|
||||
*/
|
||||
public static Color getPanelBackgound() {
|
||||
return getPanelBackground();
|
||||
@@ -918,8 +930,13 @@ public class UIUtil {
|
||||
return UIManager.getColor("OptionPane.background");
|
||||
}
|
||||
|
||||
/** @deprecated Quaqua is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderQuaquaLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Quaqua is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderQuaquaLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderAlloyLookAndFeel() {
|
||||
@@ -941,8 +958,13 @@ public class UIUtil {
|
||||
return UIManager.getLookAndFeel().getName().equals("Windows Classic");
|
||||
}
|
||||
|
||||
/** @deprecated Metal is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderMetalLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Metal is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderMetalLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderNimbusLookAndFeel() {
|
||||
@@ -964,8 +986,13 @@ public class UIUtil {
|
||||
return SystemInfo.isMac && (isUnderAquaLookAndFeel() || isUnderDarcula());
|
||||
}
|
||||
|
||||
/** @deprecated Motif is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderMotif() { return false; }
|
||||
/**
|
||||
* @deprecated Motif is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderMotif() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderDarcula() {
|
||||
@@ -1056,8 +1083,12 @@ public class UIUtil {
|
||||
return !isUnderNativeMacLookAndFeel();
|
||||
}
|
||||
|
||||
/** @deprecated Quaqua is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static void removeQuaquaVisualMarginsIn(Component component) { }
|
||||
/**
|
||||
* @deprecated Quaqua is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static void removeQuaquaVisualMarginsIn(Component component) {
|
||||
}
|
||||
|
||||
public static boolean isControlKeyDown(MouseEvent mouseEvent) {
|
||||
return SystemInfo.isMac ? mouseEvent.isMetaDown() : mouseEvent.isControlDown();
|
||||
@@ -1182,9 +1213,9 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static void drawSearchMatch(final Graphics2D g,
|
||||
final int startX,
|
||||
final int endX,
|
||||
final int height) {
|
||||
final int startX,
|
||||
final int endX,
|
||||
final int height) {
|
||||
Color c1 = new Color(255, 234, 162);
|
||||
Color c2 = new Color(255, 208, 66);
|
||||
drawSearchMatch(g, startX, endX, height, c1, c2);
|
||||
@@ -1214,8 +1245,8 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static void drawRectPickedOut(Graphics2D g, int x, int y, int w, int h) {
|
||||
g.drawLine(x+1, y, x+w-1, y);
|
||||
g.drawLine(x+w, y+1, x+w, y+h-1);
|
||||
g.drawLine(x + 1, y, x + w - 1, y);
|
||||
g.drawLine(x + w, y + 1, x + w, y + h - 1);
|
||||
g.drawLine(x + w - 1, y + h, x + 1, y + h);
|
||||
g.drawLine(x, y + 1, x, y + h - 1);
|
||||
}
|
||||
@@ -1290,27 +1321,27 @@ public class UIUtil {
|
||||
g.drawLine(x, drawTopLine ? 1 : 0, width, drawTopLine ? 1 : 0);
|
||||
|
||||
if (active) {
|
||||
g.setColor(new Color(100, 150, 230, toolWindow? 50 : 30));
|
||||
g.setColor(new Color(100, 150, 230, toolWindow ? 50 : 30));
|
||||
g.fillRect(x, 0, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
public static void drawDoubleSpaceDottedLine(final Graphics2D g,
|
||||
final int start,
|
||||
final int end,
|
||||
final int xOrY,
|
||||
final Color fgColor,
|
||||
boolean horizontal) {
|
||||
final int start,
|
||||
final int end,
|
||||
final int xOrY,
|
||||
final Color fgColor,
|
||||
boolean horizontal) {
|
||||
|
||||
g.setColor(fgColor);
|
||||
for (int dot = start; dot < end; dot+=3) {
|
||||
for (int dot = start; dot < end; dot += 3) {
|
||||
if (horizontal) {
|
||||
g.drawLine(dot, xOrY, dot, xOrY);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
g.drawLine(xOrY, dot, xOrY, dot);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void drawAppleDottedLine(final Graphics2D g,
|
||||
@@ -1423,7 +1454,7 @@ public class UIUtil {
|
||||
if (isRetina()) {
|
||||
return RetinaImage.create(width, height, type);
|
||||
}
|
||||
//noinspection UndesirableClassUsage
|
||||
//noinspection UndesirableClassUsage
|
||||
return new BufferedImage(width, height, type);
|
||||
}
|
||||
|
||||
@@ -1431,7 +1462,10 @@ public class UIUtil {
|
||||
paintWithRetina(size, g, true, paintRoutine);
|
||||
}
|
||||
|
||||
public static void paintWithRetina(@NotNull Dimension size, @NotNull Graphics g, boolean useRetinaCondition, Consumer<Graphics2D> paintRoutine) {
|
||||
public static void paintWithRetina(@NotNull Dimension size,
|
||||
@NotNull Graphics g,
|
||||
boolean useRetinaCondition,
|
||||
Consumer<Graphics2D> paintRoutine) {
|
||||
if (!useRetinaCondition || !isRetina() || Registry.is("ide.mac.retina.disableDrawingFix", false)) {
|
||||
paintRoutine.consume((Graphics2D)g);
|
||||
}
|
||||
@@ -1462,7 +1496,7 @@ public class UIUtil {
|
||||
* The whole idea is that <a href="http://en.wikipedia.org/wiki/X_Rendering_Extension">XRender-based</a> pipeline doesn't support
|
||||
* {@link AlphaComposite#SRC} and we should use {@link AlphaComposite#SRC_OVER} instead.
|
||||
*
|
||||
* @param g target graphics container
|
||||
* @param g target graphics container
|
||||
*/
|
||||
public static void setupComposite(@NotNull Graphics2D g) {
|
||||
g.setComposite(X_RENDER_ACTIVE.getValue() ? AlphaComposite.SrcOver : AlphaComposite.Src);
|
||||
@@ -1611,7 +1645,7 @@ public class UIUtil {
|
||||
@NonNls @Language("HTML")
|
||||
String body = "body, div, td, p {" + fontFamilyAndSize + " " + (fgColor != null ? "color:" + ColorUtil.toHex(fgColor) : "") + "}";
|
||||
if (resource != null) {
|
||||
body += "ul {list-style-image: " + resource.toExternalForm() +"}";
|
||||
body += "ul {list-style-image: " + resource.toExternalForm() + "}";
|
||||
}
|
||||
@NonNls String link = linkColor != null ? "a {" + fontFamilyAndSize + " color:" + ColorUtil.toHex(linkColor) + "}" : "";
|
||||
return "<style> " + body + " " + link + "</style>";
|
||||
@@ -1894,13 +1928,15 @@ public class UIUtil {
|
||||
String each = html.substring(currentPos, currentPos + 1);
|
||||
if ("<".equals(each)) {
|
||||
braces++;
|
||||
} else if (">".equals(each)) {
|
||||
}
|
||||
else if (">".equals(each)) {
|
||||
braces--;
|
||||
}
|
||||
|
||||
if (" ".equals(each) && braces == 0) {
|
||||
result.append(" ");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result.append(each);
|
||||
}
|
||||
currentPos++;
|
||||
@@ -1955,12 +1991,13 @@ public class UIUtil {
|
||||
|
||||
/**
|
||||
* Avoid blinking while changing background.
|
||||
* @param component component.
|
||||
* @param background new background.
|
||||
*
|
||||
* @param component component.
|
||||
* @param background new background.
|
||||
*/
|
||||
public static void changeBackGround(final Component component, final Color background) {
|
||||
final Color oldBackGround = component.getBackground();
|
||||
if (background == null || !background.equals(oldBackGround)){
|
||||
if (background == null || !background.equals(oldBackGround)) {
|
||||
component.setBackground(background);
|
||||
}
|
||||
}
|
||||
@@ -1974,7 +2011,8 @@ public class UIUtil {
|
||||
ourSystemFontData = Pair.create(font.getName(), font.getSize());
|
||||
}
|
||||
}
|
||||
catch (Exception ignored) { }
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -2024,7 +2062,7 @@ public class UIUtil {
|
||||
else if (component != null) {
|
||||
final String str = component.toString();
|
||||
// skip default Component.toString and handle SimpleColoredComponent case
|
||||
text = str == null || str.startsWith(component.getClass().getName()+"[")? null : str;
|
||||
text = str == null || str.startsWith(component.getClass().getName() + "[") ? null : str;
|
||||
}
|
||||
else {
|
||||
text = null;
|
||||
@@ -2046,7 +2084,7 @@ public class UIUtil {
|
||||
try {
|
||||
final Field popup = BasicComboBoxUI.class.getDeclaredField("popup");
|
||||
popup.setAccessible(true);
|
||||
return (ComboPopup) popup.get(ui);
|
||||
return (ComboPopup)popup.get(ui);
|
||||
}
|
||||
catch (NoSuchFieldException e) {
|
||||
return null;
|
||||
@@ -2107,11 +2145,12 @@ public class UIUtil {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void setComboBoxEditorBounds(int x, int y, int width, int height, JComponent editor) {
|
||||
if(SystemInfo.isMac && isUnderAquaLookAndFeel()) {
|
||||
if (SystemInfo.isMac && isUnderAquaLookAndFeel()) {
|
||||
// fix for too wide combobox editor, see AquaComboBoxUI.layoutContainer:
|
||||
// it adds +4 pixels to editor width. WTF?!
|
||||
editor.reshape(x, y, width - 4, height - 1);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
editor.reshape(x, y, width, height);
|
||||
}
|
||||
}
|
||||
@@ -2354,7 +2393,8 @@ public class UIUtil {
|
||||
if (myDrawShadow) {
|
||||
c = g.getColor();
|
||||
g.setColor(myShadowColor);
|
||||
g.drawLine(x - maxBulletWidth[0] - 10, yOffset[0] + fm.getDescent() + 1, x + maxWidth[0] + 10, yOffset[0] + fm.getDescent() + 1);
|
||||
g.drawLine(x - maxBulletWidth[0] - 10, yOffset[0] + fm.getDescent() + 1, x + maxWidth[0] + 10,
|
||||
yOffset[0] + fm.getDescent() + 1);
|
||||
g.setColor(c);
|
||||
}
|
||||
}
|
||||
@@ -2387,7 +2427,8 @@ public class UIUtil {
|
||||
Component eachParent = c;
|
||||
while (eachParent != null) {
|
||||
if (eachParent instanceof JComponent) {
|
||||
@SuppressWarnings({"unchecked"}) WeakReference<JRootPane> pane = (WeakReference<JRootPane>)((JComponent)eachParent).getClientProperty(ROOT_PANE);
|
||||
@SuppressWarnings({"unchecked"}) WeakReference<JRootPane> pane =
|
||||
(WeakReference<JRootPane>)((JComponent)eachParent).getClientProperty(ROOT_PANE);
|
||||
if (pane != null) return pane.get();
|
||||
}
|
||||
eachParent = eachParent.getParent();
|
||||
@@ -2407,7 +2448,7 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static Timer createNamedTimer(@NonNls @NotNull final String name, int delay, @NotNull ActionListener listener) {
|
||||
return new Timer(delay, listener){
|
||||
return new Timer(delay, listener) {
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
@@ -2424,7 +2465,7 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static JComponent mergeComponentsWithAnchor(PanelWithAnchor...panels) {
|
||||
public static JComponent mergeComponentsWithAnchor(PanelWithAnchor... panels) {
|
||||
return mergeComponentsWithAnchor(Arrays.asList(panels));
|
||||
}
|
||||
|
||||
@@ -2514,7 +2555,8 @@ public class UIUtil {
|
||||
pixelGrabber.grabPixels();
|
||||
return new Color(pixels[0]);
|
||||
}
|
||||
catch (InterruptedException ignored) { }
|
||||
catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -2533,6 +2575,7 @@ public class UIUtil {
|
||||
|
||||
private static final Color DECORATED_ROW_BG_COLOR = new Color(242, 245, 249);
|
||||
private static final Color DECORATED_ROW_BG_COLOR_DARK = Gray._75;
|
||||
|
||||
public static Color getDecoratedRowColor() {
|
||||
return isUnderDarcula() ? DECORATED_ROW_BG_COLOR_DARK : DECORATED_ROW_BG_COLOR;
|
||||
}
|
||||
|
||||
+7
-10
@@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.CommonShortcuts;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.Splitter;
|
||||
import com.intellij.openapi.vcs.ChangeListColumn;
|
||||
import com.intellij.openapi.vcs.VcsBundle;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
@@ -159,17 +160,13 @@ public class CommittedChangesBrowser extends JPanel {
|
||||
myLeftPanel.add(forwardButton, new GridBagConstraints(1, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0));
|
||||
}
|
||||
|
||||
JSplitPane leftSplitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
||||
leftSplitter.setTopComponent(myLeftPanel);
|
||||
leftSplitter.setBottomComponent(commitPanel);
|
||||
leftSplitter.setDividerLocation(0.8);
|
||||
leftSplitter.setResizeWeight(0.8);
|
||||
Splitter leftSplitter = new Splitter(true, 0.8f);
|
||||
leftSplitter.setFirstComponent(myLeftPanel);
|
||||
leftSplitter.setSecondComponent(commitPanel);
|
||||
|
||||
JSplitPane splitter = new JSplitPane();
|
||||
splitter.setLeftComponent(leftSplitter);
|
||||
splitter.setRightComponent(myChangesView);
|
||||
splitter.setDividerLocation(0.5);
|
||||
splitter.setResizeWeight(0.5);
|
||||
Splitter splitter = new Splitter(false, 0.5f);
|
||||
splitter.setFirstComponent(leftSplitter);
|
||||
splitter.setSecondComponent(myChangesView);
|
||||
|
||||
add(splitter, BorderLayout.CENTER);
|
||||
|
||||
|
||||
+4
-16
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011 Bas Leijdekkers
|
||||
* Copyright 2011-2012 Bas Leijdekkers
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -92,7 +92,8 @@ public class MismatchedStringBuilderQueryUpdateInspection extends BaseInspection
|
||||
private static class MismatchedQueryAndUpdateOfStringBuilderVisitor extends BaseInspectionVisitor {
|
||||
|
||||
@Override
|
||||
public void visitField(PsiField field) { super.visitField(field);
|
||||
public void visitField(PsiField field) {
|
||||
super.visitField(field);
|
||||
if (!field.hasModifierProperty(PsiModifier.PRIVATE)) {
|
||||
return;
|
||||
}
|
||||
@@ -272,19 +273,6 @@ public class MismatchedStringBuilderQueryUpdateInspection extends BaseInspection
|
||||
queryNames.add("substring");
|
||||
}
|
||||
|
||||
@NonNls
|
||||
private static final Set<String> returnThisNames = new HashSet();
|
||||
|
||||
static {
|
||||
returnThisNames.add("append");
|
||||
returnThisNames.add("appendCodePoint");
|
||||
returnThisNames.add("delete");
|
||||
returnThisNames.add("delete");
|
||||
returnThisNames.add("deleteCharAt");
|
||||
returnThisNames.add("insert");
|
||||
returnThisNames.add("replace");
|
||||
}
|
||||
|
||||
private final PsiVariable variable;
|
||||
private boolean queried = false;
|
||||
|
||||
@@ -340,7 +328,7 @@ public class MismatchedStringBuilderQueryUpdateInspection extends BaseInspection
|
||||
final String name = methodExpression.getReferenceName();
|
||||
final PsiExpression qualifierExpression = methodExpression.getQualifierExpression();
|
||||
if (!queryNames.contains(name)) {
|
||||
if (returnThisNames.contains(name) && hasReferenceToVariable(variable, qualifierExpression) && isVariableValueUsed(expression)) {
|
||||
if (returnSelfNames.contains(name) && hasReferenceToVariable(variable, qualifierExpression) && isVariableValueUsed(expression)) {
|
||||
queried = true;
|
||||
}
|
||||
return;
|
||||
|
||||
+7
@@ -10,4 +10,11 @@ public class MismatchedStringBuilderQueryUpdate {
|
||||
final StringBuilder c = new StringBuilder();
|
||||
c.append(' ');
|
||||
}
|
||||
|
||||
private static CharSequence getSomething()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("abc");
|
||||
return sb.reverse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import java.awt.*;
|
||||
* @author Evgeny Zakrevsky
|
||||
*/
|
||||
public class TaskCellRenderer extends DefaultListCellRenderer implements MatcherHolder {
|
||||
private static final Color ISSUE_BG_COLOR = new Color(240, 240, 255);
|
||||
private Matcher myMatcher;
|
||||
private final Project myProject;
|
||||
|
||||
@@ -47,7 +46,7 @@ public class TaskCellRenderer extends DefaultListCellRenderer implements Matcher
|
||||
final boolean isLocalTask = taskManager.findTask(task.getId()) != null;
|
||||
final boolean isClosed = task.isClosed() || (task instanceof LocalTask && taskManager.isLocallyClosed((LocalTask)task));
|
||||
|
||||
final Color bg = sel ? UIUtil.getListSelectionBackground() : isLocalTask ? UIUtil.getListBackground() : ISSUE_BG_COLOR;
|
||||
final Color bg = sel ? UIUtil.getListSelectionBackground() : isLocalTask ? UIUtil.getListBackground() : UIUtil.getDecoratedRowColor();
|
||||
panel.setBackground(bg);
|
||||
SimpleTextAttributes attr = getAttributes(sel, isClosed);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="9f69d" class="javax.swing.JFormattedTextField" binding="myHistoryLength">
|
||||
<component id="5bcde" class="javax.swing.JTextField" binding="myHistoryLength">
|
||||
<constraints>
|
||||
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="50" height="-1"/>
|
||||
@@ -23,7 +23,7 @@
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="9f69d"/>
|
||||
<labelFor value="5bcde"/>
|
||||
<text value="Task history &length:"/>
|
||||
</properties>
|
||||
</component>
|
||||
@@ -71,10 +71,11 @@
|
||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="c5184"/>
|
||||
<text value="Connection &timeout:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="f5566" class="javax.swing.JFormattedTextField" binding="myConnectionTimeout">
|
||||
<component id="c5184" class="javax.swing.JTextField" binding="myConnectionTimeout">
|
||||
<constraints>
|
||||
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="50" height="-1"/>
|
||||
@@ -125,11 +126,11 @@
|
||||
</constraints>
|
||||
<properties>
|
||||
<horizontalAlignment value="4"/>
|
||||
<labelFor value="4b4f6"/>
|
||||
<labelFor value="b5108"/>
|
||||
<text value="&Update"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="4b4f6" class="javax.swing.JFormattedTextField" binding="myUpdateCount">
|
||||
<component id="b5108" class="javax.swing.JTextField" binding="myUpdateCount">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="50" height="-1"/>
|
||||
@@ -145,11 +146,11 @@
|
||||
</constraints>
|
||||
<properties>
|
||||
<horizontalAlignment value="4"/>
|
||||
<labelFor value="fc85e"/>
|
||||
<labelFor value="7e29b"/>
|
||||
<text value="issues e&very"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="fc85e" class="javax.swing.JFormattedTextField" binding="myUpdateInterval">
|
||||
<component id="7e29b" class="javax.swing.JTextField" binding="myUpdateInterval">
|
||||
<constraints>
|
||||
<grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="50" height="-1"/>
|
||||
|
||||
+5
@@ -74,4 +74,9 @@ public class AssemblaRepository extends GenericRepository {
|
||||
public String getPresentableName() {
|
||||
return StringUtil.isEmpty(getUsername()) ? "<undefined>" : getUsername() + "'s tickets";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConfigured() {
|
||||
return super.isConfigured() && StringUtil.isNotEmpty(getUsername()) && StringUtil.isNotEmpty(getPassword());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user