mainview.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 459 行 · 第 1/2 页
JAVA
459 行
}
private LevelInformation parse(String token)
{
int level = 0;
boolean completed = false;
String player = null;
int moves = 0;
int pushes = 0;
int time = 0;
StringTokenizer st = new StringTokenizer(token,"|");
level = Integer.parseInt(st.nextToken());
if(st.nextToken().equals("true"))
completed = true;
player = st.nextToken();
moves = Integer.parseInt(st.nextToken());
pushes = Integer.parseInt(st.nextToken());
time = Integer.parseInt(st.nextToken());
return new LevelInformation(level,completed,player,moves,pushes,time);
}
private void open(Composite parent)
{
// Setting Composite Layout.
SokobanPlugin.trace(this.getClass().getName(),"Setting layout."); //$NON-NLS-1$
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
parent.setLayout(gridLayout);
// Creating Panels.
createView(parent);
// Creating Actions.
createActions();
}
private void createView(Composite parent)
{
// Create a composite with counters and map.
SokobanPlugin.trace(this.getClass().getName(),"Adding the counters."); //$NON-NLS-1$
counters = new HashMap();
//往状态栏上增加
WorkbenchWindow window=(WorkbenchWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final IStatusLineManager statusLineManager = window.getActionBars().getStatusLineManager();
counterStatus = new CounterStatus("Counter",this);
statusLineManager.insertBefore(StatusLineManager.END_GROUP,counterStatus);
this.getSite().getPage().addPartListener(new IPartListener(){
public void partActivated(IWorkbenchPart part) {
if(part != null && part.equals(MainView.this)){
statusLineManager.remove(counterStatus);
statusLineManager.insertBefore(StatusLineManager.END_GROUP,counterStatus);
}
}
public void partBroughtToTop(IWorkbenchPart part) {
}
public void partClosed(IWorkbenchPart part) {
}
public void partDeactivated(IWorkbenchPart part) {
if(part != null && part.equals(MainView.this)){
statusLineManager.remove(counterStatus);
}
}
public void partOpened(IWorkbenchPart part) {
}
});
map = new TileMap(parent,SWT.BORDER | SWT.NO_BACKGROUND,preferences,counters);
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.verticalSpan = 0;
gridData.horizontalSpan = 0;
map.setLayoutData(gridData);
// Load the map.
try
{
map.loadMap();
map.redraw();
map.hookListener();
}
catch(IOException ex)
{
SokobanPlugin.getDefault().getLog().log(new Status(IStatus.ERROR,SokobanPlugin.getDefault().getBundle().getSymbolicName(),IStatus.ERROR,ex.toString(),null));
}
}
private void createActions()
{
// Creating the Menu
SokobanPlugin.trace(this.getClass().getName(),"Adding the actions menu."); //$NON-NLS-1$
Action action = new LevelsetAction(this); //$NON-NLS-1$
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.levelset",action);
action=new SkinAction(this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.skin",action);
action=new BackgroundAction(this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.background",action);
action=new DemoAction(SokobanMessages.getString("MainView.demo"),map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.demo",action);
action=new CheckLevelsAction(SokobanMessages.getString("MainView.check"),this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.best",action);
action=new ChangeLevelAction(SokobanMessages.getString("MainView.change"),this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.choose",action);
action=new ExitAction(SokobanMessages.getString("MainView.exit"));
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.quit",action);
undoAction = new UndoAction(SokobanMessages.getString("MainView.undo"),this);
undoAction.setEnabled(false);
map.setUndoAction(undoAction);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.undo",undoAction);
action = new NextLevelAction(-1,map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.pre",action);
action = new NextLevelAction(0,map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.reset",action);
action = new NextLevelAction(1,map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.next",action);
action=new SoundAction(SokobanMessages.getString("MainView.sound"),this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.sound",action);
action=new KeyAction(SokobanMessages.getString("MainView.key"),this);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.3dkey",action);
action=new HelpAction(map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.help",action);
action=new AboutAction(map);
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.about",action);
pauseAction = new PauseAction(SokobanMessages.getString("MainView.pause"),this); //$NON-NLS-1$
getViewSite().getActionBars().setGlobalActionHandler("MyWork-Sokoban.pause",pauseAction);
map.setPauseAction(pauseAction);
}
public void saveState(IPreferenceStore store)
{
// Save state.
SokobanPlugin.trace(this.getClass().getName(),"Saving persistent state."); //$NON-NLS-1$
// Save mode.
store.setValue("mode",preferences.getMode()); //$NON-NLS-1$
// Save level.
store.setValue(Constants.LEVEL_ORIGINAL,preferences.getLevel(Constants.MODE_ORIGINAL));
store.setValue(Constants.LEVEL_EXTRA,preferences.getLevel(Constants.MODE_EXTRA));
store.setValue(Constants.LEVEL_OTHER,preferences.getLevel(Constants.MODE_OTHER));
// Save level information.
ArrayList tmp = (ArrayList)preferences.getLevelsInfo().get(Constants.INFO_ORIGINAL);
StringBuffer aux = new StringBuffer();
for(int i=0; i<tmp.size(); i++)
{
aux.append(tmp.get(i).toString());
aux.append("#");
}
store.setValue(Constants.INFO_ORIGINAL,aux.toString());
tmp = (ArrayList)preferences.getLevelsInfo().get(Constants.INFO_EXTRA);
aux = new StringBuffer();
for(int i=0; i<tmp.size(); i++)
{
aux.append(tmp.get(i).toString());
aux.append("#");
}
store.setValue(Constants.INFO_EXTRA,aux.toString());
tmp = (ArrayList)preferences.getLevelsInfo().get(Constants.INFO_OTHER);
aux = new StringBuffer();
for(int i=0; i<tmp.size(); i++)
{
aux.append(tmp.get(i).toString());
aux.append("#");
}
store.setValue(Constants.INFO_OTHER,aux.toString());
// Save sound mode.
store.setValue(Constants.SOUND_MODE,preferences.isSoundEnabled());
store.setValue(Constants.SKIN_MODE, preferences.getSkinMode());
store.setValue(Constants.KEY_MODE, preferences.isKey3DEnabled());
store.setValue(Constants.BACKGROUND_MODE, preferences.getBackgroundMode());
}
public void dispose()
{
SokobanPlugin.trace(this.getClass().getName(),"Disposing Sokoban main view."); //$NON-NLS-1$
// Save persistent state.
saveState(SokobanPlugin.getDefault().getPreferenceStore());
// Dispose resources.
SokobanPlugin.getResourceManager().dispose();
super.dispose();
}
// Getters
public Preferences getPreferences() {
return preferences;
}
public TileMap getMap() {
return map;
}
public HashMap getCounters() {
return counters;
}
public PauseAction getPauseAction() {
return pauseAction;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?