/*
 * Copyright 2014 Loic Merckel
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package org.swiftexplorer.gui.util;

import java.awt.Component;
import java.awt.Frame;

import javax.accessibility.AccessibleContext;
import javax.swing.AbstractButton;

public class SwingUtils {
	
	private SwingUtils () { super () ;} 
	
	
    public static <T extends Component> T setAccessibleContext (T comp)
    {
    	return setAccessibleContext (comp, null) ;
    }
    
    
    public static <T extends Component> T setAccessibleContext (T comp, String name)
    {
    	if (comp == null)
    		return comp;
    	AccessibleContext ac = comp.getAccessibleContext() ;
    	if (ac == null)
    		return comp ;
    	String text = null ;
    	if (name != null && !name.isEmpty())
    		text = name ;
    	else if (comp instanceof AbstractButton) 
    		text = ((AbstractButton)comp).getText() ;
    	else
    		text = comp.getName();
    	if (text != null)
    	{
    		ac.setAccessibleName(text);
    		ac.setAccessibleDescription(text) ;
    	}
    	return comp ;
    }
    
    
	public static Frame tryFindSuitableFrameOwner ()
	{
		Frame owner = null;
		// find a suitable owner, if any
		Frame[] allFrames = Frame.getFrames();
		if (allFrames != null) {
			for (Frame frame : allFrames) {
				if (frame == null)
					continue;
				if (!frame.isShowing())
					continue;
				if (!frame.isActive())
					continue;
				owner = frame;
				break;
			}
		}
		return owner ;
	}
}