📄 defaultmodel.java
字号:
/*******************************************************************************
* Copyright (c) 2004 Stefan Zeiger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.novocode.com/legal/epl-v10.html
*
* Contributors:
* Stefan Zeiger (szeiger@novocode.com) - initial API and implementation
*******************************************************************************/
package com.novocode.naf.model;
import java.util.*;
import com.novocode.naf.gui.event.*;
/**
* Default implementation of the IModel interface.
*
* @author Stefan Zeiger (szeiger@novocode.com)
* @since Jan 3, 2004
*/
public abstract class DefaultModel implements IModel
{
private List<IChangeListener> listeners;
private ChangeEvent changeEvent = new ChangeEvent(this);
public final synchronized void addChangeListener(IChangeListener listener)
{
if(listeners == null) listeners = new ArrayList<IChangeListener>();
listeners.add(listener);
}
public final synchronized void removeChangeListener(IChangeListener listener)
{
if(listeners == null) return;
listeners.remove(listener);
}
protected final synchronized void notifyListeners()
{
notifyListeners(changeEvent);
}
protected final synchronized void notifyListeners(ChangeEvent event)
{
if(listeners == null) return;
// Listeners list may be changed in a stateChanged() call, so we need to make a copy first
IChangeListener[] copy = listeners.toArray(new IChangeListener[listeners.size()]);
for(int i=0; i<copy.length; i++) copy[i].stateChanged(event);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -