descendant

On May 13, 2011, at 8:06 AM, Edvin Syse wrote:

> Can't get my head around that one... The button is descendant in my example, 
> right? You want me to call descendant.getParent().indexOf(), but what is the 
> argument to indexOf()?
> 
> Den 13.05.2011 13:56, skrev Greg Brown:
>> Again, this is a hack, but since you have the tab button, you can call 
>> indexOf() on the button's parent to get the tab index. That way you don't 
>> need to use reflection.
>> 
>> On May 13, 2011, at 7:52 AM, Edvin Syse wrote:
>> 
>>> Got it, thanks :) I had to use reflection to get the correct argument for 
>>> tabPane.remove(), does it look right to you?
>>> 
>>> 
>>>        tabPane.getComponentMouseButtonListeners().add(new 
>>> ComponentMouseButtonListener.Adapter() {
>>>            public boolean mouseClick(Component component, Mouse.Button 
>>> button, int x, int y, int count) {
>>>                Component descendant = tabPane.getDescendantAt(x, y);
>>>                if (descendant instanceof TerraTabPaneSkin.TabButton&&  
>>> button == Mouse.Button.MIDDLE) {
>>>                    try {
>>>                        Field tabField = 
>>> TerraTabPaneSkin.TabButton.class.getDeclaredField("tab");
>>>                        tabField.setAccessible(true);
>>>                        tabPane.getTabs().remove((Component) 
>>> tabField.get(descendant));
>>>                    } catch (Exception ignored) {
>>>                    }
>>>                }
>>>                return false;
>>>            }
>>>        });
>>> 
>>> 
>>> Den 13.05.2011 13:34, skrev Greg Brown:
>>>> Since the buttons are effectively private to the tab pane's skin, the 
>>>> "right" way to do this would probably be to create a custom subclass of 
>>>> TerraTabPaneSkin that knows about the buttons and can attach a listener to 
>>>> them. However, you could probably hack support for this by registering a 
>>>> mouse listener on the TabPane itself, then calling 
>>>> tabPane.getComponentAt(x, y). If the component is an instance of 
>>>> TerraTabPaneSkin.TabButton, then the user has clicked on the tab button.
>>>> 
>>>> On May 13, 2011, at 2:53 AM, Edvin Syse wrote:
>>>> 
>>>>> I would like a middle mousebutton click to close the active tab in a 
>>>>> TabPane, using the same action that happens when one click the X in the 
>>>>> tab. Where should I attach a listener to make this happen?
>>>>> 
>>>>> -- Edvin

Reply via email to