demoaction.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 59 行

JAVA
59
字号
/************************************************************
 *
 * 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 java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.zip.ZipFile;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;

import es.org.chemi.games.sokoban.SokobanMessages;
import es.org.chemi.games.sokoban.SokobanPlugin;
import es.org.chemi.games.sokoban.events.MoveHelper;
import es.org.chemi.games.sokoban.ui.TileMap;

public class DemoAction extends Action 
{
	private TileMap map = null;
	
	public DemoAction(String label, TileMap map) 
	{
		super(label);
		this.map = map;
	}

	public void run() 
	{
		SokobanPlugin.trace(this.getClass().getName(),"Demo game creation solicited."); //$NON-NLS-1$
		try{
			ZipFile zf=new ZipFile(new File(FileLocator.getBundleFile(SokobanPlugin.getDefault().getBundle()),"levels/"+map.getPreferences().getMode()+".map"));
			BufferedReader br = new BufferedReader(new InputStreamReader(zf.getInputStream(zf.getEntry(""+map.getPreferences().getLevel(map.getPreferences().getMode())+".soa"))));
			
			map.setIsNewLevel(true);
			map.loadMap();
			map.redraw();
			map.setFocus();
			String answer=br.readLine();
			br.close();
			zf.close();
			map.setDemo(true);
			new MoveHelper(map).move(answer);
		} catch (Exception e) {
			map.setDemo(false);
			MessageDialog.openInformation(map.getShell(), "No Answer", SokobanMessages.getString("DemoAction.noAnswer"));
		} 
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?