Merge branch 'master' of git.labs.intellij.net:idea/community

This commit is contained in:
irengrig
2011-02-16 20:04:35 +03:00
12 changed files with 95 additions and 89 deletions
@@ -1158,8 +1158,6 @@ public class LookupImpl extends LightweightHint implements Lookup, Disposable {
panel.remove(0);
panel.add(hintComponent);
}
//todo[kirillk] comment the following line
HintManagerImpl.adjustEditorHintPosition(myAutopopupHint, editor, bestPoint);
}
}
@@ -369,7 +369,7 @@ public class HintManagerImpl extends HintManager implements Disposable {
p = rectangle.getLocation();
SwingUtilities.convertPointFromScreen(p, layeredPane);
}
else if ((layeredPane.getWidth() < p.x + size.width) && !hintInfo.isAwtTooltip()) {
else if ((layeredPane.getWidth() < p.x + size.width) && !hintInfo.isAwtTooltip() && !hint.isRealPopup()) {
p.x = Math.max(0, layeredPane.getWidth() - size.width);
}
@@ -185,11 +185,11 @@ public class LightweightHint extends UserDataHolderBase implements Hint {
.setMovable(myTitle != null)
.setTitle(myTitle)
.setModalContext(false)
.setShowShadow(!myForceLightweightPopup && myForceShowAsPopup)
.setShowShadow(isRealPopup())
.setCancelKeyEnabled(false)
.setCancelOnClickOutside(myCancelOnClickOutside)
.setCancelOnOtherWindowOpen(myCancelOnOtherWindowOpen)
.setForceHeavyweight(!myForceLightweightPopup && myForceShowAsPopup)
.setForceHeavyweight(!myForceLightweightPopup && isRealPopup())
.createPopup();
beforeShow();
@@ -241,7 +241,7 @@ public class LightweightHint extends UserDataHolderBase implements Hint {
}
public final boolean isRealPopup() {
return myIsRealPopup;
return myIsRealPopup | myForceShowAsPopup;
}
public void hide() {
@@ -35,7 +35,7 @@ ide.debugMode=false
ide.debugMode.description=Record additonal information to make bug reports more informative
ide.forcedShowTooltip=alt
ide.forcedShowTooltip.description=Shortcut for forced show tooltip
ide.popup.dropShadow=false
ide.popup.dropShadow=true
ide.consumeKnownToolkitBugs=true
ide.appIcon.progress=true
@@ -268,7 +268,7 @@ instance.variable.may.not.be.initialized.display.name=Instance field may not be
instance.variable.may.not.be.initialized.problem.descriptor=Instance field <code>#ref</code> may not be initialized during object construction #loc
instance.Variable.may.not.be.initialized.problem.descriptor.junit=Instance field <code>#ref</code> may not be initialized during object construction or 'setUp()' call #loc
primitive.fields.ignore.option=Ignore primitive fields
instance.variable.used.before.initialized.display.name=Instance field used before initialized
instance.variable.used.before.initialized.display.name=Instance field used before initialization
instance.variable.used.before.initialized.problem.descriptor=Instance field <code>#ref</code> used before initialized #loc
non.final.static.variable.initialization.display.name=Non-final static field is used during class initialization
non.final.static.variable.initialization.problem.descriptor=Non-final static field <code>#ref</code> used during class initialization #loc
@@ -1841,4 +1841,6 @@ package.dot.html.may.be.package.info.problem.descriptor=<code>package.html</code
package.dot.html.may.be.package.info.delete.quickfix=Delete package.html
package.dot.html.delete.command=package.html deletion
package.dot.html.may.be.package.info.convert.quickfix=Convert to package-info.java
package.dot.html.convert.command=package.html to package-info.java conversion
package.dot.html.convert.command=package.html to package-info.java conversion
choose.super.class.to.ignore=Choose class
ignore.anonymous.inner.classes=Ignore anonymous inner classes
@@ -1,5 +1,5 @@
/*
* Copyright 2006-2007 Dave Griffith, Bas Leijdekkers
* Copyright 2006-2011 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.serialization;
import com.intellij.psi.PsiAnonymousClass;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiModifier;
@@ -26,18 +27,21 @@ import org.jetbrains.annotations.NotNull;
public class NonSerializableFieldInSerializableClassInspection
extends SerializableInspection {
@Override
@NotNull
public String getDisplayName() {
return InspectionGadgetsBundle.message(
"non.serializable.field.in.serializable.class.display.name");
}
@Override
@NotNull
public String buildErrorString(Object... infos) {
return InspectionGadgetsBundle.message(
"non.serializable.field.in.serializable.class.problem.descriptor");
}
@Override
public BaseInspectionVisitor buildVisitor() {
return new NonSerializableFieldInSerializableClassVisitor();
}
@@ -51,6 +55,13 @@ public class NonSerializableFieldInSerializableClassInspection
return;
}
final PsiClass aClass = field.getContainingClass();
if (aClass == null) {
return;
}
if (ignoreAnonymousInnerClasses &&
aClass instanceof PsiAnonymousClass) {
return;
}
if (!SerializationUtils.isSerializable(aClass)) {
return;
}
@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.siyeh.ig.serialization.SerializableInspection.Form">
<grid id="27dc6" binding="contentPanel" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="4" vgap="4">
<margin top="4" left="4" bottom="4" right="4"/>
<constraints>
<xy x="20" y="20" width="368" height="330"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<scrollpane class="com.intellij.ui.components.JBScrollPane" id="4a009">
<constraints>
<grid row="0" column="0" row-span="3" col-span="1" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="ec407" class="com.intellij.codeInspection.ui.ListTable" binding="table" custom-create="true">
<constraints/>
<properties/>
</component>
</children>
</scrollpane>
<component id="d216b" class="javax.swing.JButton" binding="addButton">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Button"/>
</properties>
</component>
<component id="c54c6" class="javax.swing.JButton" binding="removeButton">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Button"/>
</properties>
</component>
<vspacer id="c7b68">
<constraints>
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
</children>
</grid>
</form>
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2010 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2011 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,11 +22,13 @@ import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.InspectionGadgetsFix;
import com.siyeh.ig.fixes.AddSerialVersionUIDFix;
import com.siyeh.ig.psiutils.SerializationUtils;
import org.intellij.lang.annotations.Pattern;
import org.jetbrains.annotations.NotNull;
public class SerializableHasSerialVersionUIDFieldInspection
extends SerializableInspection {
@Pattern("[a-zA-Z_0-9.-]+")
@Override
@NotNull
public String getID() {
@@ -70,6 +72,10 @@ public class SerializableHasSerialVersionUIDFieldInspection
aClass instanceof PsiEnumConstantInitializer) {
return;
}
if (ignoreAnonymousInnerClasses &&
aClass instanceof PsiAnonymousClass) {
return;
}
final PsiField serialVersionUIDField = aClass.findFieldByName(
HardcodedMethodConstants.SERIAL_VERSION_UID, false);
if (serialVersionUIDField != null) {
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.serialization;
import com.intellij.psi.PsiAnonymousClass;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiEnumConstantInitializer;
import com.intellij.psi.PsiTypeParameter;
@@ -26,12 +27,14 @@ import org.jetbrains.annotations.NotNull;
public class SerializableHasSerializationMethodsInspection
extends SerializableInspection {
@Override
@NotNull
public String getDisplayName() {
return InspectionGadgetsBundle.message(
"serializable.has.serialization.methods.display.name");
}
@Override
@NotNull
public String buildErrorString(Object... infos) {
final boolean hasReadObject = ((Boolean)infos[0]).booleanValue();
@@ -48,6 +51,7 @@ public class SerializableHasSerializationMethodsInspection
}
}
@Override
public BaseInspectionVisitor buildVisitor() {
return new SerializableHasSerializationMethodsVisitor();
}
@@ -65,6 +69,10 @@ public class SerializableHasSerializationMethodsInspection
aClass instanceof PsiEnumConstantInitializer) {
return;
}
if (ignoreAnonymousInnerClasses &&
aClass instanceof PsiAnonymousClass) {
return;
}
if (!SerializationUtils.isSerializable(aClass)) {
return;
}
@@ -1,5 +1,5 @@
/*
* Copyright 2003-2007 Dave Griffith, Bas Leijdekkers
* Copyright 2003-2011 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.serialization;
import com.intellij.psi.PsiAnonymousClass;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiModifier;
@@ -28,7 +29,8 @@ class SerializableInnerClassHasSerialVersionUIDFieldVisitor
private final SerializableInspection inspection;
public SerializableInnerClassHasSerialVersionUIDFieldVisitor(SerializableInspection inspection) {
public SerializableInnerClassHasSerialVersionUIDFieldVisitor(
SerializableInspection inspection) {
this.inspection = inspection;
}
@@ -38,6 +40,10 @@ class SerializableInnerClassHasSerialVersionUIDFieldVisitor
aClass.isEnum()) {
return;
}
if (inspection.ignoreAnonymousInnerClasses &&
aClass instanceof PsiAnonymousClass) {
return;
}
if (hasSerialVersionUIDField(aClass)) {
return;
}
@@ -57,7 +63,7 @@ class SerializableInnerClassHasSerialVersionUIDFieldVisitor
registerClassError(aClass);
}
private boolean hasSerialVersionUIDField(PsiClass aClass) {
private static boolean hasSerialVersionUIDField(PsiClass aClass) {
final PsiField[] fields = aClass.getFields();
boolean hasSerialVersionUID = false;
for (PsiField field : fields) {
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.serialization;
import com.intellij.psi.PsiAnonymousClass;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiModifier;
import com.siyeh.ig.BaseInspectionVisitor;
@@ -24,10 +25,10 @@ import org.jetbrains.annotations.NotNull;
class SerializableInnerClassWithNonSerializableOuterClassVisitor
extends BaseInspectionVisitor {
private final SerializableInnerClassWithNonSerializableOuterClassInspection inspection;
private final SerializableInspection inspection;
public SerializableInnerClassWithNonSerializableOuterClassVisitor(
SerializableInnerClassWithNonSerializableOuterClassInspection inspection) {
SerializableInspection inspection) {
this.inspection = inspection;
}
@@ -36,6 +37,10 @@ class SerializableInnerClassWithNonSerializableOuterClassVisitor
aClass.isEnum()) {
return;
}
if (inspection.ignoreAnonymousInnerClasses &&
aClass instanceof PsiAnonymousClass) {
return;
}
final PsiClass containingClass = aClass.getContainingClass();
if (containingClass == null) {
return;
@@ -19,22 +19,29 @@ import com.intellij.codeInspection.ui.AddAction;
import com.intellij.codeInspection.ui.ListTable;
import com.intellij.codeInspection.ui.ListWrappingTableModel;
import com.intellij.codeInspection.ui.RemoveAction;
import com.intellij.openapi.actionSystem.ActionToolbar;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.psi.PsiClass;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.ui.ScrollPaneFactory;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.psiutils.SerializationUtils;
import com.siyeh.ig.ui.CheckBox;
import com.siyeh.ig.ui.UiUtils;
import org.jdom.Element;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
public abstract class SerializableInspection extends BaseInspection {
/** @noinspection PublicField */
@SuppressWarnings({"PublicField"})
public boolean ignoreAnonymousInnerClasses = false;
@SuppressWarnings({"PublicField"})
public String superClassString = "java.awt.Component";
protected List<String> superClassList = new ArrayList();
@@ -44,8 +51,41 @@ public abstract class SerializableInspection extends BaseInspection {
@Override
public JComponent createOptionsPanel() {
final Form form = new Form();
return form.getContentPanel();
final JComponent panel = new JPanel(new GridBagLayout());
final ListTable table = new ListTable(new ListWrappingTableModel(
superClassList, InspectionGadgetsBundle.message(
"ignore.classes.in.hierarchy.column.name")));
final JScrollPane scrollPane =
ScrollPaneFactory.createScrollPane(table);
final ActionToolbar toolbar =
UiUtils.createAddRemoveTreeAnnotationChooserToolbar(table,
InspectionGadgetsBundle.message(
"choose.super.class.to.ignore"));
final CheckBox checkBox = new CheckBox(InspectionGadgetsBundle.message(
"ignore.anonymous.inner.classes"), this,
"ignoreAnonymousInnerClasses");
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.insets.left = 4;
constraints.insets.right = 4;
constraints.fill = GridBagConstraints.HORIZONTAL;
panel.add(toolbar.getComponent(), constraints);
constraints.gridy = 1;
constraints.weightx = 1.0;
constraints.weighty = 1.0;
constraints.fill = GridBagConstraints.BOTH;
panel.add(scrollPane, constraints);
constraints.gridy = 2;
constraints.weighty = 0.0;
constraints.fill = GridBagConstraints.HORIZONTAL;
panel.add(checkBox, constraints);
return panel;
}
@Override
@@ -71,27 +111,4 @@ public abstract class SerializableInspection extends BaseInspection {
}
return false;
}
private class Form {
private JPanel contentPanel;
private ListTable table;
private JButton addButton;
private JButton removeButton;
Form() {
addButton.setAction(new AddAction(table));
removeButton.setAction(new RemoveAction(table));
}
private void createUIComponents() {
table = new ListTable(new ListWrappingTableModel(superClassList,
InspectionGadgetsBundle.message(
"ignore.classes.in.hierarchy.column.name")));
}
public JPanel getContentPanel() {
return contentPanel;
}
}
}