How to stop a new window from taking focus

Hello,
I have an application that brings up alerts when an event occurs. The alerts are actually toasts (similar to msn messenger alerts when someone comes online).
My problem is that if I am working on another application, for example notepad, when the alert comes up, it takes the focus away from notepad, which, needless to say, is quite annoying.
Does anybody know how to bring up a new window without letting it take focus?
Thank you very much for your time.
Adrian Basheer

Hi again,
I have found out that the problem has to do with calling setVisible( true ). The solution to my problem would be the ability to call setFocuse(true) and not let the window take focus at the same time.
A more detailed explanation of the scenario follows:
The scenario is that my application's main window is hidden, but as it is working in the background, I need so show a message to a user when a certain event happens. This is very much like the status messages in msn messenger.
If I create a new message window and the main application is invisible, the message window will also be invisible. Once I call setVisible( true ) on it, it becomes visible, however it takes focus from anything else.
WIthout the call to setVisible(true), the scenario only works if the main application window is visible, and in this case, the message window does not request focus.
Thanks,
Adrian.

Similar Messages

  • How to open a new window from the login window?

    hi,
    can someone tell me how to open a new window from an existing window, here by window i mean frame. The case is i hv two java files - oracle.java and FDoptions.java. The first frame is in the Login.java. The oracle.java file has a button "Login", when it is clicked, i want to open the next frame which is in the file FDoptions.java. Can some one help me with this? I m giving the code below -
    oracle.java
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import javax.swing.AbstractAction;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    * The application's main frame.
    public class oracle {
        private JFrame frame;
        private JPanel logInPanel;
        private JButton clearButton;
        private JButton logInButton;
        private JButton newuserButton;
        private JButton forgotpasswordButton;
        private JTextField userNameTextField;
        private JPasswordField passwordTextField;
        public oracle() {
            initComponents();
        private final void initComponents() {
            JLabel userNameLabel = new JLabel("User name: ");
            JLabel passwordLabel = new JLabel("Password: ");
            userNameTextField = new JTextField();
            passwordTextField = new JPasswordField();
            JPanel userInputPanel = new JPanel(new GridLayout(2, 2, 5, 5));
            userInputPanel.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
            userInputPanel.add(userNameLabel);
            userInputPanel.add(userNameTextField);
            userInputPanel.add(passwordLabel);
            userInputPanel.add(passwordTextField);
            logInButton = new JButton(new LogInAction());
            clearButton = new JButton(new ClearAction());
            newuserButton = new JButton(new NewUserAction());
            forgotpasswordButton = new JButton(new ForgotPassword());
            JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
            JPanel buttonPanel1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
            buttonPanel.add(logInButton);
            buttonPanel.add(clearButton);
            buttonPanel1.add(newuserButton);
            buttonPanel1.add(forgotpasswordButton);
            logInPanel = new JPanel(new BorderLayout());
            logInPanel.add(userInputPanel, BorderLayout.NORTH);
            logInPanel.add(buttonPanel, BorderLayout.CENTER);
            logInPanel.add(buttonPanel1,BorderLayout.SOUTH);
            frame = new JFrame("FD Tracker");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(500, 500);
            frame.setContentPane(logInPanel);
            frame.pack();
            frame.setVisible(true);
        private void performLogIn() {
            // Log in the user
            System.out.println("Username: " + userNameTextField.getText());
            char[] password = passwordTextField.getPassword();
            System.out.print("Password: ");
            for(char c : password) {
                System.out.print(c);
            System.out.println();
        private void performClear() {
            // Clear the panel
            System.out.println("Clearing the panel");
            userNameTextField.setText("");
            passwordTextField.setText("");
        private final class LogInAction extends AbstractAction {
            public LogInAction() {
                super("Log in");
            @Override
            public void actionPerformed(ActionEvent e) {
                performLogIn();
        private final class ClearAction extends AbstractAction {
            public ClearAction() {
                super("Clear");
            @Override
            public void actionPerformed(ActionEvent e) {
                performClear();
        private final class NewUserAction extends AbstractAction{
             public NewUserAction(){
                 super("New User");
             @Override
             public void actionPerformed(ActionEvent e){
                 JFrame newuser = new JFrame("NewUser");
        private final class ForgotPassword extends AbstractAction{
            public ForgotPassword(){
                super("Forgot Password");
            @Override
            public void actionPerformed(ActionEvent e){
                JFrame forgotpassword = new JFrame("Forgot Password");
        public static void main(String args[]) {
            new oracle();
         FDoptions.java
    import java.awt.FlowLayout;
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import javax.swing.AbstractAction;
    import javax.swing.BorderFactory;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    public class Fdoptions{
        private JFrame fdoptions;
        private JPanel fdoptpanel;
        private JButton enterfdbutton;
        private JButton viewfdbutton;
        public Fdoptions() {
            initComponents();
        private final void initComponents(){
            fdoptpanel = new JPanel(new BorderLayout());
            fdoptpanel.setBorder(BorderFactory.createEmptyBorder(80,50,80,50));
            enterfdbutton = new JButton(new EnterFDAction());
            viewfdbutton = new JButton(new ViewFDAction());
           JPanel enterbuttonpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
           JPanel viewbuttonpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
            enterbuttonpanel.add(enterfdbutton);
            viewbuttonpanel.add(viewfdbutton);
            fdoptpanel.add(enterbuttonpanel,BorderLayout.NORTH);
            fdoptpanel.add(viewbuttonpanel,BorderLayout.SOUTH);
            fdoptions = new JFrame("FD Options");
            fdoptions.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fdoptions.setSize(1000,1000);
            fdoptions.setContentPane(fdoptpanel);
            fdoptions.pack();
            fdoptions.setVisible(true);
        private void performEnter(){
        private void performView(){
        private final class EnterFDAction extends AbstractAction{
            public EnterFDAction(){
                super("Enter new FD");
            public void actionPerformed(ActionEvent e){
                performEnter();
        private final class ViewFDAction extends AbstractAction{
            public ViewFDAction(){
                super("View an existing FD");
            public void actionPerformed(ActionEvent e){
                performView();
        public static void main(String args[]){
            new Fdoptions();
    }

    nice day,
    these lines..., despite the fact that this example is about something else, shows you two ways
    1/ modal JDialog
    2/ two JFrame
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    * Parent Modal Dialog. When in modal mode, this dialog
    * will block inputs to the "parent Window" but will
    * allow events to other components
    * @see javax.swing.JDialog
    public class PMDialog extends JDialog {
        private static final long serialVersionUID = 1L;
        protected boolean modal = false;
        private WindowAdapter parentWindowListener;
        private Window owner;
        private JFrame blockedFrame = new JFrame("No blocked frame");
        private JFrame noBlockedFrame = new JFrame("Blocked Frame");
        public PMDialog() {
            noBlockedFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            noBlockedFrame.getContentPane().add(new JButton(new AbstractAction("Test button") {
                private static final long serialVersionUID = 1L;
                @Override
                public void actionPerformed(ActionEvent evt) {
                    System.out.println("Non blocked button pushed");
                    blockedFrame.setVisible(true);
                    noBlockedFrame.setVisible(false);
            noBlockedFrame.setSize(200, 200);
            noBlockedFrame.setVisible(true);
            blockedFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
            blockedFrame.getContentPane().add(new JButton(new AbstractAction("Test Button") {
                private static final long serialVersionUID = 1L;
                @Override
                public void actionPerformed(ActionEvent evt) {
                    final PMDialog pmd = new PMDialog(blockedFrame, "Partial Modal Dialog", true);
                    pmd.setSize(200, 100);
                    pmd.setLocationRelativeTo(blockedFrame);
                    pmd.getContentPane().add(new JButton(new AbstractAction("Test button") {
                        private static final long serialVersionUID = 1L;
                        @Override
                        public void actionPerformed(ActionEvent evt) {
                            System.out.println("Blocked button pushed");
                            pmd.setVisible(false);
                            blockedFrame.setVisible(false);
                            noBlockedFrame.setVisible(true);
                    pmd.setVisible(true);
                    System.out.println("Returned from Dialog");
            blockedFrame.setSize(200, 200);
            blockedFrame.setLocation(300, 0);
            blockedFrame.setVisible(false);
        public PMDialog(Dialog parent, String title, boolean isModal) {
            super(parent, title, false);
            initDialog(parent, title, isModal);
        public PMDialog(Frame parent, String title, boolean isModal) {
            super(parent, title, false);
            initDialog(parent, title, isModal);
        private void initDialog(Window parent, String title, boolean isModal) {
            owner = parent;
            modal = isModal;
            parentWindowListener = new WindowAdapter() {
                @Override
                public void windowActivated(WindowEvent e) {
                    if (isVisible()) {
                        System.out.println("Dialog.getFocusBack()");
                        getFocusBack();
        private void getFocusBack() {
            Toolkit.getDefaultToolkit().beep();
            super.setVisible(false);
            super.pack();
            super.setLocationRelativeTo(owner);
            super.setVisible(true);
            //super.toFront();
        @Override
        public void dispose() {
            owner.setEnabled(true);
            owner.setFocusableWindowState(true);
            super.dispose();
        @Override
        @SuppressWarnings("deprecation")
        public void hide() {
            owner.setEnabled(true);
            owner.setFocusableWindowState(true);
            super.hide();
        @Override
        public void setVisible(boolean visible) {
            boolean blockParent = (visible && modal);
            owner.setEnabled(!blockParent);
            owner.setFocusableWindowState(!blockParent);
            super.setVisible(visible);
            if (blockParent) {
                System.out.println("Adding listener to parent ...");
                owner.addWindowListener(parentWindowListener);
                try {
                    if (SwingUtilities.isEventDispatchThread()) {
                        System.out.println("EventDispatchThread");
                        EventQueue theQueue = getToolkit().getSystemEventQueue();
                        while (isVisible()) {
                            AWTEvent event = theQueue.getNextEvent();
                            Object src = event.getSource();
                            if (event instanceof ActiveEvent) {
                                ((ActiveEvent) event).dispatch();
                            } else if (src instanceof Component) {
                                ((Component) src).dispatchEvent(event);
                    } else {
                        System.out.println("OUTSIDE EventDispatchThread");
                        synchronized (getTreeLock()) {
                            while (isVisible()) {
                                try {
                                    getTreeLock().wait();
                                } catch (InterruptedException e) {
                                    break;
                } catch (Exception ex) {
                    ex.printStackTrace();
                    System.out.println("Error from EDT ... : " + ex);
            } else {
                System.out.println("Removing listener from parent ...");
                owner.removeWindowListener(parentWindowListener);
                owner.setEnabled(true);
                owner.setFocusableWindowState(true);
        @Override
        public void setModal(boolean modal) {
            this.modal = modal;
        public static void main(String args[]) {
            new PMDialog();
    }

  • How can I open new window from a link in another window?

    Hello everyone!
    Can anyone help me with my problem. I need to open a child window from a link in the mother/master window. Actually, the link that would open the child window is directed to a servlet that retrieves data from the database. The data will then be displayed in the child window. I don't how to open a new window with the data retrieve (thru the servlet) displayed in it. I'm using model 2 architecture (Servlet-JSP).
    Thank you in advance and more power!
    nicoleangelisdaddy
    [email protected]

    Or you can use something like this,
    Click and in your test()
    <script language="javascript">function test()
          document.form_name.target="_blank";
          document.form_name.action="/test/servlet/LoginServlet";
          document.form_name.method="post"
          document.form_name.submit();
    }</script>
    Here "/test" is your application context path.
    If you want to open the link in the named window then use,
    document.form_name.target="your_own_name";

  • How to open a new window from submit button &dialog page in current window?

    We have a requirement, wherein we have a OAF search page for PO lines with search criteria, Go button to search ,result region (table layout) and a submit button(Create new expedite).
    1. Now user can select some lines from result region and click on Submit button.
    2. On click of submit button we need to pop up a window or may be a dialog page asking that " Do you want open supplier web link portal or not?".
    3. If user clicks yes(in Dialog page) then first fetch the URL from a look up maintained in Oracle EBS on the basis of supplier of the lines selected and then open that URL in a new window and side by side we need to open a dialog page in search page asking "whether user has updated the expedite info in supplier portal or not?". On basis of this we need to updated some count in custom tables.
    So in step 3 i am facing problem, that how to open an URL in a new window through a submit button and side by side want to open a dialog page in the current window also.
    Hope a quick response from you all.
    Note:- To open a custom page we can have a link or button(button of type button and not submit button) on base page with destination url property as following javascript:
    javascript:var a = window.open('OA.jsp?page=/XXX/oracle/apps/xxx/......&retainAM=Y', 'a','height=500,width=900,status=yes,toolbar=no,menubar=no,location=no'); a.focus();
    So the question is how to do the same for submit button on OAF page???

    Antriksh,
    You just need to attach a submit action in button bean and not submit button bean, based on the output of confirm type of alert in javascript.
    Here is code u need to put in destination url of the button:
    //replace <confirm message> by message you want to show.
    javascript:input=confirm('<confirm message>');if(input==true){submitForm('DefaultFormName',0,{XXX:' abc'});}" Now in the process request of the base page CO, u can get parametre 'XXX' from the pagecontext....so
    if((("abc").equals(pageContext.getParameter("XXX"))))
    {/// custom LOGIC }
    The same i have replied in your mail. I hope this resolves the issue.
    --Mukul

  • How to Open a New window from a List region Link, Please help

    I am trying to get a new full window( Not popup window) open from a list region link. The list region entry is an Image. I get the new page open, but it is not in new window, it is in the same window.
    I know I have to give the target = "_blank" somewhere. But In List region, I dont know where to add this.
    Please help
    George

    Yes, you are right Arun. That is more elegant way of
    doing it. Keep it up. thankx..
    Btw, why do you hate javascripts? Can you imagine the
    internet world without javascript (or ant scripting
    language)?yep i agree... but i try my best to avoid scripts.. as i had been workin around some japanese technologies... and there are three major mobile market players there... who has their own content type and all those devices never support javascript..
    more over i donno that... in all 3 yrs i have never used that ;-))

  • How do I prevent new windows?

    Greetings,
    When I go to thePirateBay.com, a new window opens. The website opens a new window using Javascript (window.open). I've tried opening the site in a Private Window but it doesn't help. How can I prevent new windows from opening?
    Thanks,
    Shane.

    It's a new window (not a tab) that is fully maximized and contains an ad.
    Let me know if you need anything else.
    Shane.

  • STOP iTunes and iPhoto from stealing focus...

    I was curious if there is anyway to stop iTunes and iPhoto from stealing focus when I plug in my iPhone. I do not have pictures to sync, yet iPhoto still popos up. Not only that, when it finishes loading, it steals focus, so if I am working on something else, now all my mouse commands and keyboard stokes are all in iTunes.
    - Is there anyway to stop iTunes from stealing focus? To just have it pop-up in the background and bounce for all I care, just not steal focus.
    Thanks!

    I already have iTunes configured so it doesn't open up when I plug my iPod touch in. What I don't like is when it steals focus after it's done syncing. Programs on Windows are supposed to "play nice" and not steal focus. They can request focus and flash the taskbar button, but that's it. So, if anyone knows how to prevent iTunes on Windows from stealing focus, I'd really appreciate it.

  • How can I get a query in the search field to open in a new tab or new window from the current window?

    How can I get a query in the search field to open in a new tab or new window from the current window?

    If you are searching via the Search Bar on the Navigation Toolbar, this preference can be changed to have searches there open in a Tab.
    Type '''about:config''' in the Address Bar and hit Enter. Then answer "I'll be careful". Type this pref in the Search at the top.
    '''browser.search.openintab''' = double-click to toggle to '''true'''

  • How to stop the new health application from Count the steps/ woking background?

    how to stop the new health application from Count the steps/ woking background?
    I really need your help

    I agree with Mr. Hall that using mx.controls.Alert in Flex may be a better route.
    Show the Alert like this:
    // show an alert with a question and yes and no choices
    Alert.show( "Would you like to go to the Adobe Forums?", "Question",
         Alert.YES | Alert.NO, this, closeHandler, null, Alert.YES );
    Then handle the response in the closeHandler() function:
    protected function closeHandler( closeEvent:CloseEvent ):void
    if( event.detail == Alert.YES )
         navigateToURL( new URLRequest('http://forums.adobe.com'), '_self' );
    else if( event.detail == Alert.NO )
         // they chose no
    The following documentation on Alerts may be helpful:
    http://www.flexafterdark.com/docs/ActionScript-Alert
    Let me know if that helps...
    Ben Edwards

  • How do i stop the icloud window from poping up everytime i start iTunes ? i do not have an icloud account and don't want one., how do i stop the icloud window from poping up everytime i start iTunes ? i do not have an icloud account and don't want one.

    how do i stop the icloud window from poping up everytime i start iTunes ? i do not have an icloud account and don't want one., how do i stop the icloud window from poping up everytime i start iTunes ? i do not have an icloud account and don't want one.

    If you don't have an icloud account, then icloud is not the thing that's popping up a window.
    If you are being asked to enter a password when accessing itunes, then the problem may be that you have purchased items (apps, songs, etc) on the device that were purchased using a different itunes account than the one you currently have defined on your device. 
    Purchased items are forever associated with the itunes account (the apple ID) that was used to make the purchase.  If you change the ID on the device, you won't be able to update any of them.  You'll have to purchase them again.

  • How do i stop the keychain window from popping up it is really annoying?

    How do I stop the keychain window from popping up, it is really annoying?

    What is the specific message you are getting?
    If it's asking for a password, then enter it and you should be good. If you don't know the password, then I would probably recommend reseting your keychain entirely. Your keychain keeps saved password for certain websites and programs but in my expereince the average user is not tremendously affected by reseting the keychain. It's just a matter at that point of reentering your passwords manually if you've gotten used to them populating automatically.
    Check out http://support.apple.com/kb/ts1544 for an article on how to reset the keychain.

  • How to create a new connection from SAPGUI to Test drive?

    Hi,
    I have installed Sap Netweaver Test drive on a linux virtual machine (windows host). The installation was successful and I was able to start the instance (application server and the database), yet I don't know how to create a new connection from my SAPGUI client (7.20) to this server. The static IP address of the server is 192.168.1.160.
    I entered the following values for my new connection entry
    Description: SAP Netweaver
    Application server: 192.168.1.160
    Instance number: 01
    System ID: DB2
    SAProuter: /H/192.168.1.160/S/3201/H/
    But it does not work. Any idea about the values needed  for creating a new entry?
    Thanks in advance,
    Dariyoosh

    >
    Dibya R Das wrote:
    > Why are you entering a router string? Can't you reach a box directly from your machine?
    >
    > Doesn't a ping to that host & a "telnet <host/ip address> 3201" work from your machine to the SAP System.
    >
    > Remove the router string you wont need if the above works.
    >
    > - Regards, Dibya
    Hello there,
    Thank you very much for your answer which solved my problem. In fact there was no need of providing router string.
    Kind Regards,
    Dariyoosh

  • How can I install new windows on NB200-10z without a CD drive?

    Hi,
    I have a mini laptop "Toshiba nb200-10z" and it doesnt startup anymore.
    I would like to do a recovery, but it also doesnt work.
    I know there is a shortcut like press the 0 button when the laptop is starting up.
    With this shortcut you can start the recovery to reset the software.
    But when I press the 0 button it gives me an error.
    So I think the recovery drive/partition is lost.
    How can I install new windows on this minilaptop without a CD drive?

    I have found a much easier way to install Windows 7 from a USB Flash drive. Unlike other methods where you have to write complicated commands, this method can be completed even by those who have very little computer background.
    The whole process takes only two steps, run UNetbootin, load the Windows 7 ISO file, and finally restart your computer.
    Before you begin, you will require the following:
    USB Flash Drive (4GB minimum)
    Windows 7 ISO Image file
    UNetbootin
    Note: If UNetbootin doesnt work, try out the Microsofts official tool called Windows 7 USB/DVD Tool.
    Now insert the USB drive, run UNetbootin, and select Disk Image as ISO. Browse your local drive for Windows 7 ISO that you downloaded and click Open. Now Select Type as USB and choose the drive. Once done, it will look like a bit similar to the screenshot shown below.
    Click OK and it will begin extracting all installation files to the USB drive. The whole process will take some time (10-15 minutes), so have patience.
    Once the installation is complete, reboot your computer. Now while your system is starting up press the appropriate button (usually F1, F2, F12, ESC, Backspace, or Escape) to bring up Bios Boot Menu.
    Change the startup order to boot USB by default, usually you will have to press F6 to move the selected USB device on top. Once done, save changes and restart the system.
    +Message was edited: link has been removed+

  • How to prevent iTunes for Windows from "Updating iTunes Library"? (Library is on a NAS and managed by iTunes for Mac. Now getting update wars between Mac and Windows versions of the player.

    How to prevent iTunes for Windows from "Updating iTunes Library"?
    My library is on a NAS and managed by iTunes on a Mac. I can connect from wife's Windows laptop using iTunes for Windows but every time I do, it Updates iTunes Library. Next time I log in from my Mac it Updates iTunes Library in return. It appears I'm experiencing "Update Wars" between the Mac and Windows versions of iTunes. I would like to allow my wife to stream iTunes songs to her new laptop but I don't want any updates from this source... prefer to manage the library from my Mac and not allow Windows to do any thing other than listen to existing playlists.
    Thanks for any help/suggestions.

    Connect the PC to the library on the NAS. Wait while "updated".
    Under Edit > Preferences > Advanced make sure the media folder is correctly pointed at the media folder on the NAS. If not correct, close iTunes, wait a few moments, then open iTunes again.
    Close iTunes on the PC. Do not open iTunes on the Mac.
    Copy the library files, iTunes Library.itl, iTunes Library Extras.itdb, iTunes Library Genius.itdb, sentinel and the folder Album Artwork into an empty iTunes folder on the PC, for example C:\iTunes.
    Click the icon to start iTunes and immediately press and hold down SHIFT. Keep holding until prompted to choose or create a library. Click choose and browse to the copied .itl file, e.g. C:\iTunes\iTunes Library.itl
    The library should now work properly on the PC, however check the setting for the media folder. If needs be correct, close iTunes and reopen.
    Open iTunes on the Mac. It will update again, but that should be last time.
    tt2

  • How to display a new view from a nib ?

    how to
    display a new view from a nib in the main window after clicking on a button.
    When I click a the button named for example "goToGokyo", the link to my procedure
    runs correctly because I see my NSLog message "goToGokyo button pressed".
    My nib, which name is "GokyoViewController" does exist.
    I did as follow for the moment but I'm stuck now, my nib  :
    - (IBAction)goToGokyo:(id)sender
        NSLog(@"goToGokyo button pressed");
      //[self stopSound];
      if (gokyoViewController == nil)
            GokyoViewController *aGokyoViewController = [[GokyoViewController alloc]
                                                         initWithNibName:@"GokyoViewController" bundle:nil];
            self.gokyoViewController = aGokyoViewController;
            //[aGokyoViewController release];
        [self GokyoView:gokyoViewController animated:YES completion: nil];
    Thanks in advance for your advice.
    Cheers

    I did that now :
    - (IBAction)btnLoadMyViewController:(id)sender
        NSViewController *viewController = [[NSViewController alloc] initWithNibName:@"MyView" bundle:nil];
        NSView *view = [viewController view];
        [_myWindowController.window setContentView:view];
        //view addSubview:view];
        //[self.myView addSubview:view];
    Using
    "_myWindowController.window setContentView:view];"
    or
    "[self.myView addSubview:view];"
    does not an error but does nothing !
    Would you help me one more times please ?
    Thanks in advance

Maybe you are looking for