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:
@@ -75,4 +75,21 @@ public class GotoRelatedItem {
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
GotoRelatedItem item = (GotoRelatedItem)o;
|
||||
|
||||
if (myElement != null ? !myElement.equals(item.myElement) : item.myElement != null) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return myElement != null ? myElement.hashCode() : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,10 +15,12 @@
|
||||
*/
|
||||
package com.intellij.execution.impl;
|
||||
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.BeforeRunTask;
|
||||
import com.intellij.execution.BeforeRunTaskProvider;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.UnknownRunConfiguration;
|
||||
import com.intellij.openapi.actionSystem.ActionToolbarPosition;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
@@ -63,8 +65,9 @@ class BeforeRunStepsPanel extends JPanel {
|
||||
myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
myList.setCellRenderer(new MyListCellRenderer());
|
||||
ToolbarDecorator myDecorator = ToolbarDecorator.createDecorator(myList).setVisibleRowCount(4);
|
||||
if (!SystemInfo.isMac)
|
||||
myDecorator.setToolbarPosition(ActionToolbarPosition.TOP);
|
||||
if (!SystemInfo.isMac) {
|
||||
myDecorator.setAsTopToolbar();
|
||||
}
|
||||
myDecorator.setEditAction(new AnActionButtonRunnable() {
|
||||
@Override
|
||||
public void run(AnActionButton button) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 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.
|
||||
@@ -126,6 +126,8 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide
|
||||
}
|
||||
|
||||
public void updateButton(AnActionEvent e) {
|
||||
final JComponent component = getContextComponent();
|
||||
e.getPresentation().setEnabled(component != null && component.isShowing());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -32,9 +32,9 @@ import java.util.*;
|
||||
*/
|
||||
public class CommonActionsPanel extends JPanel {
|
||||
public static enum Buttons {
|
||||
ADD, EDIT, REMOVE, UP, DOWN;
|
||||
ADD, REMOVE, EDIT, UP, DOWN;
|
||||
|
||||
public static Buttons[] ALL = {ADD, EDIT, REMOVE, UP, DOWN};
|
||||
public static Buttons[] ALL = {ADD, REMOVE, EDIT, UP, DOWN};
|
||||
|
||||
Icon getIcon() {
|
||||
switch (this) {
|
||||
@@ -198,6 +198,9 @@ public class CommonActionsPanel extends JPanel {
|
||||
|
||||
@Override
|
||||
public void updateButton(AnActionEvent e) {
|
||||
super.updateButton(e);
|
||||
if (!e.getPresentation().isEnabled()) return;
|
||||
|
||||
final JComponent c = getContextComponent();
|
||||
if (c instanceof JTable || c instanceof JList) {
|
||||
final ListSelectionModel model = c instanceof JTable ? ((JTable)c).getSelectionModel()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2011 JetBrains s.r.o.
|
||||
* Copyright 2000-2012 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.
|
||||
@@ -17,6 +17,7 @@ package com.intellij.ui;
|
||||
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.ui.border.CustomLineBorder;
|
||||
import com.intellij.ui.table.TableView;
|
||||
@@ -30,9 +31,7 @@ import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.border.LineBorder;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -287,7 +286,11 @@ public abstract class ToolbarDecorator implements DataProvider, CommonActionsPan
|
||||
myButtonComparator,
|
||||
myAddName, myRemoveName, myMoveUpName, myMoveDownName, myEditName,
|
||||
buttons);
|
||||
myPanel.setBorder(myBorder);
|
||||
if (myAsTopToolbar) {
|
||||
contextComponent.setBorder(IdeBorderFactory.createBorder(SideBorder.ALL));
|
||||
} else {
|
||||
myPanel.setBorder(myBorder);
|
||||
}
|
||||
final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(contextComponent);
|
||||
if (myPreferredSize != null) {
|
||||
scrollPane.setPreferredSize(myPreferredSize);
|
||||
@@ -307,7 +310,12 @@ public abstract class ToolbarDecorator implements DataProvider, CommonActionsPan
|
||||
installDnD();
|
||||
panel.putClientProperty(ActionToolbar.ACTION_TOOLBAR_PROPERTY_KEY, myPanel.getComponent(0));
|
||||
DataManager.registerDataProvider(panel, this);
|
||||
if (!myAsTopToolbar) {
|
||||
if (myAsTopToolbar) {
|
||||
panel.setBorder(null);
|
||||
if (getComponent().getBorder() == null) {
|
||||
getComponent().setBorder(IdeBorderFactory.createBorder(SideBorder.ALL));
|
||||
}
|
||||
} else {
|
||||
panel.setBorder(new LineBorder(UIUtil.getBorderColor()));
|
||||
final JComponent c = getComponent();
|
||||
if (contextComponent != null) {
|
||||
@@ -358,21 +366,21 @@ public abstract class ToolbarDecorator implements DataProvider, CommonActionsPan
|
||||
|
||||
private CommonActionsPanel.Buttons[] getButtons() {
|
||||
final ArrayList<CommonActionsPanel.Buttons> buttons = new ArrayList<CommonActionsPanel.Buttons>();
|
||||
if (myAddActionEnabled && myAddAction != null) {
|
||||
buttons.add(CommonActionsPanel.Buttons.ADD);
|
||||
}
|
||||
if (myEditActionEnabled && myEditAction != null) {
|
||||
buttons.add(CommonActionsPanel.Buttons.EDIT);
|
||||
}
|
||||
if (myRemoveActionEnabled && myRemoveAction != null) {
|
||||
buttons.add(CommonActionsPanel.Buttons.REMOVE);
|
||||
}
|
||||
if (myUpActionEnabled && myUpAction != null) {
|
||||
buttons.add(CommonActionsPanel.Buttons.UP);
|
||||
}
|
||||
if (myDownActionEnabled && myDownAction != null) {
|
||||
buttons.add(CommonActionsPanel.Buttons.DOWN);
|
||||
final HashMap<CommonActionsPanel.Buttons, Pair<Boolean, AnActionButtonRunnable>> map =
|
||||
new HashMap<CommonActionsPanel.Buttons, Pair<Boolean, AnActionButtonRunnable>>();
|
||||
map.put(CommonActionsPanel.Buttons.ADD, Pair.create(myAddActionEnabled, myAddAction));
|
||||
map.put(CommonActionsPanel.Buttons.REMOVE, Pair.create(myRemoveActionEnabled, myRemoveAction));
|
||||
map.put(CommonActionsPanel.Buttons.EDIT, Pair.create(myEditActionEnabled, myEditAction));
|
||||
map.put(CommonActionsPanel.Buttons.UP, Pair.create(myUpActionEnabled, myUpAction));
|
||||
map.put(CommonActionsPanel.Buttons.DOWN, Pair.create(myDownActionEnabled, myDownAction));
|
||||
|
||||
for (CommonActionsPanel.Buttons button : CommonActionsPanel.Buttons.values()) {
|
||||
final Pair<Boolean, AnActionButtonRunnable> action = map.get(button);
|
||||
if (action != null && action.first && action.second != null) {
|
||||
buttons.add(button);
|
||||
}
|
||||
}
|
||||
|
||||
return buttons.toArray(new CommonActionsPanel.Buttons[buttons.size()]);
|
||||
}
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@ public class IdeRootPane extends JRootPane implements UISettingsListener {
|
||||
myNorthPanel.remove(myToolbar);
|
||||
}
|
||||
myToolbar = createToolbar();
|
||||
myNorthPanel.add(myToolbar);
|
||||
myNorthPanel.add(myToolbar, 0);
|
||||
updateToolbarVisibility();
|
||||
myContentPane.revalidate();
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public class Foundation {
|
||||
public static ID getObjcClass(String className) {
|
||||
return myFoundationLibrary.objc_getClass(className);
|
||||
}
|
||||
|
||||
|
||||
public static ID getProtocol(String name) {
|
||||
return myFoundationLibrary.objc_getProtocol(name);
|
||||
}
|
||||
@@ -95,7 +95,7 @@ public class Foundation {
|
||||
public static boolean addMethod(ID cls, Pointer selectorName, Callback impl, String types) {
|
||||
return myFoundationLibrary.class_addMethod(cls, selectorName, impl, types);
|
||||
}
|
||||
|
||||
|
||||
public static boolean addProtocol(ID aClass, ID protocol) {
|
||||
return myFoundationLibrary.class_addProtocol(aClass, protocol);
|
||||
}
|
||||
@@ -156,7 +156,7 @@ public class Foundation {
|
||||
|
||||
byte[] utf16Bytes = s.getBytes("UTF-16LE");
|
||||
return invoke(invoke("NSString", "alloc"), "initWithBytes:length:encoding:", utf16Bytes, utf16Bytes.length,
|
||||
myFoundationLibrary.CFStringConvertEncodingToNSStringEncoding(FoundationLibrary.kCFStringEncodingUTF16LE));
|
||||
convertCFEncodingToNS(FoundationLibrary.kCFStringEncodingUTF16LE));
|
||||
}
|
||||
catch (UnsupportedEncodingException x) {
|
||||
throw new RuntimeException(x);
|
||||
@@ -178,7 +178,7 @@ public class Foundation {
|
||||
|
||||
@Nullable
|
||||
public static String getEncodingName(long nsStringEncoding) {
|
||||
int cfEncoding = myFoundationLibrary.CFStringConvertNSStringEncodingToEncoding(nsStringEncoding);
|
||||
long cfEncoding = myFoundationLibrary.CFStringConvertNSStringEncodingToEncoding(nsStringEncoding);
|
||||
ID pointer = myFoundationLibrary.CFStringConvertEncodingToIANACharSetName(cfEncoding);
|
||||
return toStringViaUTF8(pointer);
|
||||
}
|
||||
@@ -187,10 +187,16 @@ public class Foundation {
|
||||
if (StringUtil.isEmptyOrSpaces(encodingName)) return -1;
|
||||
|
||||
ID converted = nsString(encodingName);
|
||||
int cfEncoding = myFoundationLibrary.CFStringConvertIANACharSetNameToEncoding(converted);
|
||||
if (cfEncoding == FoundationLibrary.kCFStringEncodingInvalidId) return -1;
|
||||
long cfEncoding = myFoundationLibrary.CFStringConvertIANACharSetNameToEncoding(converted);
|
||||
|
||||
return myFoundationLibrary.CFStringConvertEncodingToNSStringEncoding(cfEncoding);
|
||||
ID restored = myFoundationLibrary.CFStringConvertEncodingToIANACharSetName(cfEncoding);
|
||||
if (ID.NIL.equals(restored)) return -1;
|
||||
|
||||
return convertCFEncodingToNS(cfEncoding);
|
||||
}
|
||||
|
||||
private static long convertCFEncodingToNS(long cfEncoding) {
|
||||
return myFoundationLibrary.CFStringConvertEncodingToNSStringEncoding(cfEncoding) & 0xffffffffffl; // trim to C-type limits
|
||||
}
|
||||
|
||||
public static void cfRetain(ID id) {
|
||||
@@ -277,18 +283,18 @@ public class Foundation {
|
||||
ourRunnableCallback = callback;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class NSDictionary {
|
||||
private ID myDelegate;
|
||||
|
||||
|
||||
public NSDictionary(ID delegate) {
|
||||
myDelegate = delegate;
|
||||
}
|
||||
|
||||
|
||||
public ID get(ID key) {
|
||||
return invoke(myDelegate, "objectForKey:", key);
|
||||
}
|
||||
|
||||
|
||||
public ID get(String key) {
|
||||
return get(nsString(key));
|
||||
}
|
||||
@@ -313,7 +319,7 @@ public class Foundation {
|
||||
return invoke(myDelegate, "objectAtIndex:", index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class NSAutoreleasePool {
|
||||
private ID myDelegate;
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ public interface FoundationLibrary extends Library {
|
||||
byte CFStringGetCString(ID theString, byte[] buffer, int bufferSize, int encoding);
|
||||
int CFStringGetLength(ID theString);
|
||||
|
||||
int CFStringConvertNSStringEncodingToEncoding(long nsEncoding);
|
||||
ID CFStringConvertEncodingToIANACharSetName(int cfEncoding);
|
||||
long CFStringConvertNSStringEncodingToEncoding(long nsEncoding);
|
||||
ID CFStringConvertEncodingToIANACharSetName(long cfEncoding);
|
||||
|
||||
int CFStringConvertIANACharSetNameToEncoding(ID encodingName);
|
||||
long CFStringConvertEncodingToNSStringEncoding(int cfEncoding);
|
||||
long CFStringConvertIANACharSetNameToEncoding(ID encodingName);
|
||||
long CFStringConvertEncodingToNSStringEncoding(long cfEncoding);
|
||||
|
||||
void CFRetain(ID cfTypeRef);
|
||||
void CFRelease(ID cfTypeRef);
|
||||
@@ -83,6 +83,4 @@ public interface FoundationLibrary extends Library {
|
||||
int kCFStringEncodingUTF32 = 0x0c000100;
|
||||
int kCFStringEncodingUTF32BE = 0x18000100;
|
||||
int kCFStringEncodingUTF32LE = 0x1c000100;
|
||||
|
||||
int kCFStringEncodingInvalidId = 0xffffffff;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,11 @@ import com.intellij.ui.mac.foundation.Foundation;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class FoundationTest extends TestCase {
|
||||
public void testStrings() throws Exception {
|
||||
if (!SystemInfo.isMac) return;
|
||||
assertEquals("Test", Foundation.toStringViaUTF8(Foundation.nsString("Test")));
|
||||
}
|
||||
|
||||
public void testEncodings() throws Exception {
|
||||
if (!SystemInfo.isMac) return;
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ public class DomGotoRelatedItem extends GotoRelatedItem {
|
||||
myElement = element;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getCustomName() {
|
||||
return myElement.getPresentation().getElementName();
|
||||
|
||||
Reference in New Issue
Block a user