skinaction.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 130 行
JAVA
130 行
/************************************************************
*
* Copyright (c) 2003 Chemi. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the MIT License
* which accompanies this distribution, and is available at
* http://www.opensource.org/licenses/mit-license.html
*
************************************************************/
package es.org.chemi.games.sokoban.actions;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
import es.org.chemi.games.sokoban.SokobanMessages;
import es.org.chemi.games.sokoban.SokobanPlugin;
import es.org.chemi.games.sokoban.ui.MainView;
import es.org.chemi.games.sokoban.util.Constants;
import es.org.chemi.games.util.Timer;
/**
* 换肤的按钮
*/
public class SkinAction extends Action implements IWorkbenchWindowPulldownDelegate
{
private MainView view = null;
private Menu toolbarMenu;
public SkinAction(MainView view)
{
super("");
this.view = view;
}
public void run()
{
getMenu(((ApplicationWindow) view.getSite().getWorkbenchWindow()).getCoolBarManager().getControl()).setVisible(true);
}
private void changeSkin(int skin) {
if(view.getPreferences().getSkinMode() == skin)
return ;
SokobanPlugin.trace(this.getClass().getName(),"Change of skin."); //$NON-NLS-1$
view.getPreferences().setSkinMode(skin);
// Reset the game.
try
{
view.reloadSkinImage();
view.getMap().setIsNewLevel(true);
view.getMap().loadMap();
view.getMap().redraw();
view.getMap().setFocus();
((Timer)view.getCounters().get(Constants.COUNTER_TIME)).stop();
((Timer)view.getCounters().get(Constants.COUNTER_TIME)).resetStopped();
view.getMap().getUndoAction().setEnabled(false);
// Play sound.
if(view.getMap().getPreferences().isSoundEnabled())
SokobanPlugin.getResourceManager().getSound(Constants.SOUND_START).play();
}
catch (Exception ex)
{
SokobanPlugin.getDefault().getLog().log(new Status(IStatus.ERROR,SokobanPlugin.getDefault().getBundle().getSymbolicName(),IStatus.ERROR,ex.toString(),null));
}
}
@Override
public Menu getMenu(Control parent) {
if (toolbarMenu == null) {
toolbarMenu = new Menu(parent);
fillMenu(toolbarMenu);
}
return toolbarMenu;
}
private void fillMenu(Menu menu) {
for(int i=0;i<SokobanMessages.getInt("MainView.skin");i++){
MenuItem choice = new MenuItem(menu,SWT.RADIO);
if(i == view.getPreferences().getSkinMode())
choice.setSelection(true);
else
choice.setSelection(false);
choice.setText(SokobanMessages.getString("MainView.skin."+i));
choice.setData(i);
choice.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent se) {
int mode=(Integer) ((MenuItem)(se.getSource())).getData();
changeSkin(mode);
}});
}
}
@Override
public void dispose() {
if (toolbarMenu != null) {
toolbarMenu.dispose();
toolbarMenu = null;
}
}
@Override
public void init(IWorkbenchWindow window) {
}
@Override
public void run(IAction action) {
}
@Override
public void selectionChanged(IAction action, ISelection selection) {
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?