From 9b4dd8cb99287303bf4c2c801b213e1dd7312e7b Mon Sep 17 00:00:00 2001 From: irengrig Date: Thu, 17 May 2012 14:25:42 +0400 Subject: [PATCH 1/5] svn: additional checks for tree conflict details loading --- .../jetbrains/idea/svn/history/SvnHistoryProvider.java | 9 ++++----- .../svn/treeConflict/TreeConflictRefreshablePanel.java | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnHistoryProvider.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnHistoryProvider.java index 18da2572ef22..75a6198b161a 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnHistoryProvider.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/SvnHistoryProvider.java @@ -359,8 +359,8 @@ public class SvnHistoryProvider SVNWCClient wcClient = myVcs.createWCClient(); final SVNURL svnurl = SVNURL.parseURIEncoded(myUrl); SVNRevision operationalFrom = myFrom == null ? SVNRevision.HEAD : myFrom; - SVNInfo info = wcClient.doInfo(svnurl, myPeg, operationalFrom); - final String root = info.getRepositoryRootURL().toString(); + final SVNURL rootURL = getRepositoryRoot(svnurl, myFrom); + final String root = rootURL.toString(); String relativeUrl = myUrl; if (myUrl.startsWith(root)) { relativeUrl = myUrl.substring(root.length()); @@ -368,8 +368,7 @@ public class SvnHistoryProvider SVNLogClient client = myVcs.createLogClient(); client.doLog(svnurl, new String[]{}, myPeg == null ? myFrom : myPeg, operationalFrom, myTo == null ? SVNRevision.create(1) : myTo, false, true, mySupport15, myLimit, null, - new RepositoryLogEntryHandler(myVcs, myUrl, SVNRevision.UNDEFINED, relativeUrl, createConsumerAdapter(myConsumer), - info.getRepositoryRootURL())); + new RepositoryLogEntryHandler(myVcs, myUrl, SVNRevision.UNDEFINED, relativeUrl, createConsumerAdapter(myConsumer), rootURL)); } catch (SVNCancelException e) { // @@ -436,7 +435,7 @@ public class SvnHistoryProvider catch (SVNException e) { return false; } - return info != null && info.getURL() != null; + return info != null && info.getURL() != null && info.getRevision().isValid(); } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java index 9b2db88feadc..2cc4804cf3c6 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java @@ -163,7 +163,8 @@ public class TreeConflictRefreshablePanel extends AbstractRefreshablePanel { } else { long committed = description.getSourceLeftVersion().getPegRevision(); - if (myCommittedRevision != null && myCommittedRevision.getRevision().getNumber() < committed) { + if (myCommittedRevision != null && (myCommittedRevision.getRevision().getNumber() < committed) && + myCommittedRevision.getRevision().isValid()) { committed = myCommittedRevision.getRevision().getNumber(); } pegFromLeft = SVNRevision.create(committed); From 947d7cf96abc3861dfb80d85e1d0ebda0256a001 Mon Sep 17 00:00:00 2001 From: irengrig Date: Thu, 17 May 2012 14:52:54 +0400 Subject: [PATCH 2/5] svn tree conflict details are not recalculated on file contents change.. - to excluded blinking --- .../idea/svn/treeConflict/TreeConflictRefreshablePanel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java index 2cc4804cf3c6..0dca9ec05f79 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/treeConflict/TreeConflictRefreshablePanel.java @@ -103,6 +103,11 @@ public class TreeConflictRefreshablePanel extends AbstractRefreshablePanel { descriptionsEqual(((ConflictedSvnChange)change).getBeforeDescription(), myChange.getBeforeDescription()); } + @Override + public boolean refreshDataSynch() { + return true; + } + private boolean descriptionsEqual(SVNTreeConflictDescription d1, SVNTreeConflictDescription d2) { if (d1.isPropertyConflict() != d2.isPropertyConflict()) return false; if (d1.isTextConflict() != d2.isTextConflict()) return false; From 3bbe6867b5d59e5eb2b163c4d23db699770e3057 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Thu, 17 May 2012 15:07:18 +0400 Subject: [PATCH 3/5] TabHost --- .../AndroidDesignerEditorPanel.java | 74 +----------------- .../android/designer/icons/TabHost.png | Bin 0 -> 1216 bytes .../android/designer/icons/TabWidget.png | Bin 0 -> 1226 bytes .../android/designer/model/IdManager.java | 8 +- .../android/designer/model/ModelParser.java | 23 ++---- .../designer/model/RadViewComponent.java | 3 + .../designer/model/views-meta-model.xml | 59 ++++++++++++++ .../componentTree/ComponentTreeBuilder.java | 2 - .../designSurface/DesignerEditorPanel.java | 3 - 9 files changed, 78 insertions(+), 94 deletions(-) create mode 100644 plugins/android-designer/src/com/intellij/android/designer/icons/TabHost.png create mode 100644 plugins/android-designer/src/com/intellij/android/designer/icons/TabWidget.png diff --git a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java index d585941bc9e2..676a3e3f970f 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java +++ b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java @@ -16,7 +16,6 @@ package com.intellij.android.designer.designSurface; import com.android.ide.common.rendering.api.RenderSession; -import com.android.ide.common.rendering.api.Result; import com.android.ide.common.resources.configuration.*; import com.android.sdklib.IAndroidTarget; import com.intellij.android.designer.actions.ProfileAction; @@ -24,11 +23,13 @@ import com.intellij.android.designer.componentTree.AndroidTreeDecorator; import com.intellij.android.designer.model.ModelParser; import com.intellij.android.designer.model.PropertyParser; import com.intellij.android.designer.model.RadViewComponent; -import com.intellij.android.designer.model.viewAnimator.RadViewAnimatorLayout; import com.intellij.android.designer.profile.ProfileManager; import com.intellij.designer.DesignerToolWindowManager; import com.intellij.designer.componentTree.TreeComponentDecorator; -import com.intellij.designer.designSurface.*; +import com.intellij.designer.designSurface.ComponentDecorator; +import com.intellij.designer.designSurface.DesignerEditorPanel; +import com.intellij.designer.designSurface.EditOperation; +import com.intellij.designer.designSurface.OperationContext; import com.intellij.designer.designSurface.selection.NonResizeSelectionDecorator; import com.intellij.designer.designSurface.tools.ComponentCreationFactory; import com.intellij.designer.designSurface.tools.ComponentPasteFactory; @@ -38,7 +39,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.util.Computable; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; @@ -57,7 +57,6 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; -import java.lang.reflect.Method; import java.util.List; /** @@ -112,71 +111,6 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { }); } - @Override - public void updateTreeArea(EditableArea area) { - area.addSelectionListener(new ComponentSelectionListener() { - @Override - public void selectionChanged(EditableArea area) { - List selection = area.getSelection(); - if (selection.size() == 1) { - final RadComponent component = selection.get(0); - final RadComponent parent = component.getParent(); - if (parent instanceof RadViewComponent && parent.getLayout() instanceof RadViewAnimatorLayout) { - ApplicationManager.getApplication().invokeLater( - new Runnable() { - @Override - public void run() { - try { - int index = parent.getChildren().indexOf(component); - Object parentView = - ((RadViewComponent)parent).getViewInfo().getViewObject(); - Method method = - parentView.getClass().getMethod("setDisplayedChild", int.class); - method.invoke(parentView, index); - - Result result = mySession.render(); - - // XXX - - if (!result.isSuccess()) { - System.out.println( - "No re render session: " + - result.getErrorMessage() + - " : " + - result.getStatus() + - " : " + - result.getData() + - " : " + - result.getException()); - } - else { - RadViewComponent rootComponent = (RadViewComponent)myRootComponent; - RootView rootView = (RootView)rootComponent.getNativeComponent(); - rootView.setImage(mySession.getImage()); - ModelParser.updateRootComponent(rootComponent, mySession, rootView); - - myLayeredPane.revalidate(); - - DesignerToolWindowManager.getInstance(getProject()).refresh(true); - } - } - catch (Throwable e) { - showError("Render error", e); - } - } - }, new Condition() { - @Override - public boolean value(Object o) { - return mySession == null; - } - } - ); - } - } - } - }); - } - private void reparseFile() { try { storeState(); diff --git a/plugins/android-designer/src/com/intellij/android/designer/icons/TabHost.png b/plugins/android-designer/src/com/intellij/android/designer/icons/TabHost.png new file mode 100644 index 0000000000000000000000000000000000000000..9153a884797a256096e02554c0505b15f7927076 GIT binary patch literal 1216 zcmbVMYiJZ#6rMD(4Jolpq=hQ#bb?T|J9F=5XJ=>FQD%2`ldWzHo8313Q=H7)?2emx zICJA}LW@)gQkq(%NL#3=t%Bea#8NF*kXmf%A0ucVP;6_h!L~{9Pg?}Nlk7$d!5y#O9>D$15Uy$-q7=g! zM0D2DN+^#sV|43RC_z!pWwS7V2XY%F-LY6L&|zzqOVAXRSYLBBy@D`3h)Sj{Gt-}) zXK2%qnV0z-$hj$0HhacA)IZi+(8nseXfW&7(TSQw3|I(jbj=#JeW@lhvvwu255ycp z&#K^x%*+Kfkn5vUj)!QT1z{b;ARUXcFbc$|_yQdP5O6TU0U->5#0wIDbp2t7H_sT7 z@@l5;i=1SpjIk?mT(w$dt6i+)l{hGhA_pQ|BoZbXVSm)dS}kn*oec{r@^#O2vFX@! zU{M=%MzG9~Nas?p++1$nuLMXf?Sjfg%Rc6QyYnTS1C=MVLqCkj%SR6tz+NCHN zRZOWs5fuQ8`!MvW6jo4!>>vF*0JeF zVx^RaH0*c<#~E&PKwsIxj$d|MI@Qm!kj`nkX$O*^Ky&%3$TPPgBjY(1JR99du*Q*KxS%~AYL|wH^kA@^Z+>!^A0K3sneoVQbbhE@ zBZKv4R#ghM?|D_QCDs^jUjPh3h=|Y2+!FGrzfW!$m8uzxu-` z{?xhcZ@l&VPx5Ym*91)O<;`Q`mtX&D$LWrvYY*ACo|!B!DxUdy(Z}7_r~WyH>33T0wgGC*o^!=3<3e}v OPsyfx)#J&{JMIIlgPKJE literal 0 HcmV?d00001 diff --git a/plugins/android-designer/src/com/intellij/android/designer/icons/TabWidget.png b/plugins/android-designer/src/com/intellij/android/designer/icons/TabWidget.png new file mode 100644 index 0000000000000000000000000000000000000000..7992fa2d3c126e03670317a4674613e096f66c96 GIT binary patch literal 1226 zcmbVMYiJx*6dqb5HQSU*L8y;7PASEhow;|jvy&OK#@U_Sc563=&7x}ww0CFjW`|@R zote0kR52C_rWL{JpNKz#2Hy>fprvX^T7|ZV52&<3p(tV~Ev7B)j}}_$on$w*5c_4X3z21`mnwKYR>`X%2UD_U z6)~MLP#?}=qz&yki90B2by?3Byh3(|q*?}x0v*;jY=Wk!j!xf3YCrbqBJR`8ICJrv z8HU!iIP*N81z9_Z%lfuq2lotj<<;SSRn(Zyr|1q}A_ffXA=);o~! z(2FWwf1Ftgs*vrbla_;No&{kQ#2_7uvM>t7sMtzJ00bP2a6kw{An}3(AYFSH;?2=Y zQcg+Ne34U}DSMtRaa^TRVJmH{<@9k-6h#h1xJV>SG{WwX=^;OCx|`}26zr;wZhN|A z(t$-(vcI%r_i%P4V%+_0Li5sKOYghCVu5fE#KP>i<8 za#|6S3Xnw^#OgLy!a^l2!kE&=i-G`Q3byl+L;~`F7nO8cR#J6r#&kVos<`e~Cw^<# z$X&5g(!t2HoV;ZX)H|TNY7rd=>2IFJdk2SO&ewu%xdL z0f^q2xttJ^$u0Yocy(-k@47R4{nr{` zFW7VbqeHnjdgTkD{U81@J@tP1;jK#Zs97C7aN3?5X?`*{awd1FH?;86>95~xP95o7 zFhBn4hv}iCt").toString(); } - }, false); + }); XmlTag xmlTag = component.getTag(); List children = component.getChildren(); @@ -284,8 +282,7 @@ public class ModelParser extends XmlRecursiveElementVisitor { public static void addComponentTag(final XmlTag parentTag, final RadViewComponent component, final XmlTag nextTag, - final Computable tagBuilder, - final boolean createId) { + final Computable tagBuilder) { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { @@ -323,10 +320,6 @@ public class ModelParser extends XmlRecursiveElementVisitor { } component.setTag(xmlTag); - - if (createId) { - component.ensureId(); - } } }); } diff --git a/plugins/android-designer/src/com/intellij/android/designer/model/RadViewComponent.java b/plugins/android-designer/src/com/intellij/android/designer/model/RadViewComponent.java index b7dbce9d9545..022437d0035b 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/model/RadViewComponent.java +++ b/plugins/android-designer/src/com/intellij/android/designer/model/RadViewComponent.java @@ -92,6 +92,9 @@ public class RadViewComponent extends RadVisualComponent { if (StringUtil.isEmpty(idValue)) { return null; } + if (idValue.startsWith("@android:id/")) { + return idValue; + } return "@id/" + idValue.substring(idValue.indexOf('/') + 1); } diff --git a/plugins/android-designer/src/com/intellij/android/designer/model/views-meta-model.xml b/plugins/android-designer/src/com/intellij/android/designer/model/views-meta-model.xml index 300c0ad11702..8705708dd998 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/model/views-meta-model.xml +++ b/plugins/android-designer/src/com/intellij/android/designer/model/views-meta-model.xml @@ -1230,6 +1230,64 @@ + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + @@ -1283,6 +1341,7 @@ + diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java index 7e65f3946825..90ba8e957d45 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/componentTree/ComponentTreeBuilder.java @@ -45,8 +45,6 @@ public final class ComponentTreeBuilder extends AbstractTreeBuilder implements C new TreeDropListener(tree, myTreeArea, designer.getToolProvider()); - designer.updateTreeArea(myTreeArea); - selectFromSurface(); expandFromState(); diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index df72fee777aa..123c06d9be67 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -637,9 +637,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider public abstract String getPlatformTarget(); - public void updateTreeArea(EditableArea area) { - } - protected abstract ComponentDecorator getRootSelectionDecorator(); @Nullable From 9af6a4402276a60b121829fbe627bfa81339d0a5 Mon Sep 17 00:00:00 2001 From: Pavel Fatin Date: Thu, 17 May 2012 16:00:40 +0400 Subject: [PATCH 4/5] ITNProxy: format build date as long integer --- .../src/com/intellij/errorreport/itn/ITNProxy.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/errorreport/itn/ITNProxy.java b/platform/platform-impl/src/com/intellij/errorreport/itn/ITNProxy.java index ee6342e77571..265abf1fc342 100644 --- a/platform/platform-impl/src/com/intellij/errorreport/itn/ITNProxy.java +++ b/platform/platform-impl/src/com/intellij/errorreport/itn/ITNProxy.java @@ -135,7 +135,7 @@ public class ITNProxy { params.add(Pair.create("app.version.major", appInfo.getMajorVersion())); params.add(Pair.create("app.version.minor", appInfo.getMinorVersion())); params.add(Pair.create("app.build.date", format(appInfo.getBuildDate()))); - params.add(Pair.create("app.build.date.release.", format(appInfo.getMajorReleaseBuildDate()))); + params.add(Pair.create("app.build.date.release", format(appInfo.getMajorReleaseBuildDate()))); params.add(Pair.create("app.update.channel", appInfo.getDefaultUpdateChannel())); params.add(Pair.create("app.compilation.timestamp", compilationTimestamp)); @@ -176,11 +176,7 @@ public class ITNProxy { } private static String format(Calendar calendar) { - if (calendar == null) { - return null; - } else { - return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); - } + return calendar == null ? null : Long.toString(calendar.getTime().getTime()); } private static HttpURLConnection post(URL url, byte[] bytes) throws IOException { From 9043e9e1b37fc0e541890a7dfa0f7ccb315ad66d Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 17 May 2012 15:33:09 +0400 Subject: [PATCH 5/5] @NotNulls --- plugins/git4idea/tests/git4idea/test/GitMockProject.groovy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/tests/git4idea/test/GitMockProject.groovy b/plugins/git4idea/tests/git4idea/test/GitMockProject.groovy index 2a042bdae16d..3405ade94154 100644 --- a/plugins/git4idea/tests/git4idea/test/GitMockProject.groovy +++ b/plugins/git4idea/tests/git4idea/test/GitMockProject.groovy @@ -121,15 +121,17 @@ class GitMockProject implements Project { } @Override - boolean hasComponent(Class interfaceClass) { + boolean hasComponent(@NotNull Class interfaceClass) { throw new UnsupportedOperationException() } + @NotNull @Override def T[] getComponents(Class baseClass) { throw new UnsupportedOperationException() } + @NotNull @Override PicoContainer getPicoContainer() { throw new UnsupportedOperationException() @@ -150,6 +152,7 @@ class GitMockProject implements Project { throw new UnsupportedOperationException() } + @NotNull @Override Condition getDisposed() { throw new UnsupportedOperationException()