/* * This file is part of the OpenSCADA project * Copyright (C) 2006-2010 TH4 SYSTEMS GmbH (http://th4-systems.com) * * OpenSCADA is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenSCADA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenSCADA. If not, see * <http://opensource.org/licenses/lgpl-3.0.html> for a copy of the LGPLv3 License. */ package org.openscada.core.ui.connection.login.toolbar; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; import org.openscada.core.ui.connection.login.LoginSession; import org.openscada.core.ui.connection.login.SessionListener; import org.openscada.core.ui.connection.login.SessionManager; public class LoginStatusControl extends WorkbenchWindowControlContribution implements SessionListener { private Label statusLabel; public LoginStatusControl () { } public LoginStatusControl ( final String id ) { super ( id ); } @Override public void dispose () { super.dispose (); SessionManager.getDefault ().removeListener ( this ); } @Override protected Control createControl ( final Composite parent ) { final Composite wrapper = new Composite ( parent, SWT.NONE ); final GridLayout layout = new GridLayout ( 1, true ); layout.marginHeight = layout.marginWidth = 0; wrapper.setLayout ( layout ); this.statusLabel = new Label ( wrapper, SWT.NONE ); this.statusLabel.setText ( Messages.LoginStatusControl_StatusLabel_Text ); final GridData gd = new GridData ( SWT.FILL, SWT.CENTER, false, true ); gd.widthHint = 150; this.statusLabel.setLayoutData ( gd ); SessionManager.getDefault ().addListener ( this ); return wrapper; } public void sessionChanged ( final LoginSession session ) { if ( session == null ) { this.statusLabel.setText ( Messages.LoginStatusControl_StatusLabel_NoSession ); } else { this.statusLabel.setText ( String.format ( Messages.LoginStatusControl_StatusLabel_SessionFormat, getUserName ( session.getUsername () ), session.getLoginContext ().getName () ) ); } } private Object getUserName ( final String username ) { if ( username == null ) { return Messages.LoginStatusControl_Text_Anonymous; } else { return username; } } }