下面列出了怎么用java.util.Observable的API类实例代码及写法,或者点击链接到github查看源代码。
@SuppressWarnings("unchecked")
public synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
//CHECK IF NEW LIST
if(message.getType() == ObserverMessage.LIST_TRANSACTION_TYPE)
{
if(this.transactions == null)
{
this.transactions = (SortableList<byte[], Transaction>) message.getValue();
this.transactions.registerObserver();
this.transactions.sort(TransactionMap.TIMESTAMP_INDEX, true);
}
this.fireTableDataChanged();
}
//CHECK IF LIST UPDATED
if(message.getType() == ObserverMessage.ADD_TRANSACTION_TYPE || message.getType() == ObserverMessage.REMOVE_TRANSACTION_TYPE)
{
this.fireTableDataChanged();
}
}
public static void showUiBlocker(Activity startActivity, CharSequence title, CharSequence msg) {
if(debug) {
Log.d(TAG, "showUiBlocker() for " + startActivity);
}
uiBlockedActivity = startActivity;
final ProgressDialog progressDialog = new ProgressDialog(startActivity);
progressDialog.setMessage(msg);
progressDialog.setTitle(title);
progressDialog.setIndeterminate(true);
dexOptProgressObserver = new Observer() {
@Override
public void update(Observable observable, Object o) {
if(o==Integer.valueOf(PROGRESS_COMPLETE)) {
progressDialog.dismiss();
}
}
};
progressDialog.show();
}
/**
* 合成语音,等待合成的队列将被清空,合成中的语音将被打断,打断后马上开始合成
*
* @param msg
* @return
*/
public io.reactivex.Observable<SpeechMsg> startSpeakAbsolute(SpeechMsg msg) {
Log.i(TAG, "startSpeakAbsolute>>>>>>>>" + msg.text());
sLock.lock();
int r = 0;
try {
if (isSpeaking()) {
Log.e(TAG, "startSpeakAbsolute isSpeaking........");
if (mediator.compareSpeechMsg(msg, currentMessage)) { //比较合成文本优先级(导航最优)
stopSpeakingAbsolte(msg); //准备合成的文本为导航相关,停止当前合成,优先播放
} else {
Log.e(TAG, "startSpeakAbsolute>>addMessageWaitSpeak");
messages.offer(msg); //准备合成的文本为普通文本,放入合成队列中等待,当前合成完成后在合成
return io.reactivex.Observable.empty();
}
}
return startSpeak(msg);
} finally {
sLock.unlock();
}
}
@SuppressWarnings("synthetic-access")
@Override
public void update(Observable observable, Object arg) {
try {
final IWorkspace workspace = JavaPlugin.getWorkspace();
final String name = MainProjectWizardPage.this.nameGroup.getName();
checkProjectName(workspace, name);
final IProject handle = checkProjectExist(workspace, name);
final String location = MainProjectWizardPage.this.locationGroup.getLocation().toOSString();
final IPath projectPath = checkLocationSyntax(location);
validateLocation(workspace, handle, projectPath);
setErrorMessage(null);
setMessage(null);
setPageComplete(true);
} catch (ValidationException e) {
setMessage(e.getMessage());
setErrorMessage(e.getErrorMessage());
setPageComplete(false);
}
}
public void update(Observable obj, Object arg) {
if (SanityManager.DEBUG) {
if (arg == null)
SanityManager.THROWASSERT("still on observr list " + this);
}
if (arg.equals(RawTransaction.COMMIT)) {
openContainerAndDoIt((RawTransaction) obj);
}
// remove this object if we are commiting, aborting or the container is being dropped
if (arg.equals(RawTransaction.COMMIT) || arg.equals(RawTransaction.ABORT)
|| arg.equals(identity)) {
obj.deleteObserver(this);
}
}
@Override
public void update(Observable obs, Object obj) {
if(obs == endEffector) {
if(!lock.isLocked()) {
lock.lock();
//setPoseIK(endEffector.getPoseWorld());
endEffectorTarget.setPoseWorld(endEffector.getPoseWorld());
lock.unlock();
}
}
if(obs==endEffectorTarget) {
if(!lock.isLocked()) {
lock.lock();
setPoseIK(endEffectorTarget.getPoseWorld());
lock.unlock();
}
}
super.update(obs, obj);
}
public void update(Observable o, Object arg) {
// Update message
if(arg instanceof String){
String messageReceived = ((String) arg);
System.out.println(messageReceived);
mMessagesReceived.add(messageReceived);
}
// On connect/disconnect
if(arg instanceof Boolean){
mWSConnected = ((Boolean) arg);
if(mWSConnected){
System.out.println("Web socket is now connected");
}else{
System.out.println("Web socket is now disconnected");
}
}
}
public void update(Observable observable, Object obj) {
if (observable instanceof OpenSimDB){
if (obj instanceof ModelEvent) {
if (OpenSimDB.getInstance().hasModel(toolModel.getOriginalModel()))
return;
else {
toolModel.deleteObserver(this);
OpenSimDB.getInstance().deleteObserver(this);
NotifyDescriptor.Message dlg =
new NotifyDescriptor.Message("Model used by the tool is being closed. Closing tool.");
DialogDisplayer.getDefault().notify(dlg);
this.close();
return;
}
}
return;
}
if(observable == toolModel && obj == AbstractToolModel.Operation.ExecutionStateChanged)
//if(observable == toolModel && (obj == AbstractToolModel.Operation.ExecutionStateChanged ||
// obj == AbstractToolModel.Operation.InputDataChanged))
updateDialogButtons();
else
updateFromModel();
}
@Override
public void update(Observable arg0, Object arg1) {
if (!(arg1 instanceof Object[])) {
return;
}
final Object[] args = (Object[]) arg1;
if (!(args[WRAPPER_ARG_IDX] instanceof TravelMvcWrapperBean)) {
return;
}
TravelMvcWrapperBean wrapper = (TravelMvcWrapperBean) args[WRAPPER_ARG_IDX];
final TravelDocument document = wrapper.getTravelDocument();
final Integer deleteIndex = (Integer) args[SELECTED_LINE_ARG_IDX];
wrapper.getAccountDistributionsourceAccountingLines().remove(deleteIndex.intValue());
int lineNumber = wrapper.getAccountDistributionnextSourceLineNumber() - 1;
wrapper.setAccountDistributionnextSourceLineNumber(lineNumber);
int counter = 1;
for (AccountingLine line : wrapper.getAccountDistributionsourceAccountingLines()){
line.setSequenceNumber(new Integer(counter));
counter++;
}
getAccountingDistributionService().buildDistributionFrom(document);
}
@Override
public void update(Observable arg0, Object arg1) {
final TravelMvcWrapperBean wrapper = (TravelMvcWrapperBean) arg1;
boolean rulePassed = true;
wrapper.setDistribution(getAccountingDistributionService().buildDistributionFrom(wrapper.getTravelDocument()));
// check any business rules
rulePassed &= getRuleService().applyRules(new AssignDistributionAccountingLinesEvent(TemPropertyConstants.NEW_IMPORTED_EXPENSE_LINE, wrapper.getTravelDocument(), wrapper));
if (rulePassed){
List<TemSourceAccountingLine> newLines = getAccountingDistributionService().distributionToSouceAccountingLines(wrapper.getAccountDistributionsourceAccountingLines(),
wrapper.getDistribution(), wrapper.getTravelDocument().getSourceTotal(), wrapper.getTravelDocument().getExpenseLimit());
for (TemSourceAccountingLine newLine : newLines) {
wrapper.getTravelDocument().addSourceAccountingLine(newLine);
}
wrapper.setAccountDistributionsourceAccountingLines(new ArrayList<TemDistributionAccountingLine>());
wrapper.setAccountDistributionnextSourceLineNumber(new Integer(1));
}
}
public void update(Observable o, Object arg) {
// 事件的源头
Product product = (Product) arg;
// 事件
ProductEvent event = (ProductEvent) o;
// 处理者处理,这里是中介者模式的核心,可以是很复杂的业务逻辑
for (EventCustomer e : customer) {
// 处理能力是否匹配
for (EventCustomType t : e.getCustomType()) {
if (t.getValue() == event.getEventType().getValue()) {
e.exec(event);
}
}
}
}
/**
* Handles incoming BML Packages & executes BML-Script.
*/
@Override
public final void update(final Observable arg0, final Object arg1) {
if (arg0 == talkingHeadInputConnection) {
// Cast BML-Message
// BML msg = (BML) arg1;
BML msg = null;
try {
msg = talkingHeadBMLParser.generateBML((String) arg1);
} catch (JDOMException | IOException e) {
e.printStackTrace();
}
if (msg == null) {
return;
}
// Reset
talkingHeadAnimator.setCurrentAnimationID("[CURRENT_ID]");
// Start Execution
talkingHeadBMLExecutor.start(msg);
}
}
@SuppressWarnings("unchecked")
public synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
//CHECK IF NEW LIST
if(message.getType() == ObserverMessage.LIST_NAME_SALE_TYPE)
{
if(this.nameSales == null)
{
this.nameSales = (SortableList<Tuple2<String, String>, BigDecimal>) message.getValue();
this.nameSales.registerObserver();
this.nameSales.sort(NameSaleMap.NAME_INDEX);
}
this.fireTableDataChanged();
}
//CHECK IF LIST UPDATED
if(message.getType() == ObserverMessage.ADD_NAME_SALE_TYPE || message.getType() == ObserverMessage.REMOVE_NAME_SALE_TYPE)
{
this.fireTableDataChanged();
}
}
@Override
public void update(Observable o, Object arg) {
ControlFileModel model = (ControlFileModel) o;
//Check to the if the structure has changed. If it has, then we need to layout it out again.
if (model.getCsvModel().getColumnCount() != lastColumnsCount)
initializeComponents();
else {
//If not, then update each of the components
for (Object obj : this.getComponents()) {
if (obj.getClass().equals(MappingPanel.class)) {
MappingPanel panel = (MappingPanel) obj;
panel.update();
}
}
}
}
@Override
public void update(Observable o, Object arg) {
if (o instanceof DcLocation) {
this.dcLocation = (DcLocation) o;
Log.d(TAG, "show marker on map: " +
dcLocation.getLastLocation().getLatitude() + ", " +
dcLocation.getLastLocation().getLongitude());
//TODO: consider implementing a button -> center map to current location
}
}
@Override
public void update(Observable o, Object arg) {
first.clearPath();
first.pathnotifier.deleteObservers();
count=0;
setupDialog();
}
@Override
public void update(Observable arg0, Object arg1) {
if (!(arg1 instanceof Object[])) {
return;
}
final Object[] args = (Object[]) arg1;
LOG.debug(args[WRAPPER_ARG_IDX]);
if (!(args[WRAPPER_ARG_IDX] instanceof TravelMvcWrapperBean)) {
return;
}
final TravelMvcWrapperBean wrapper = (TravelMvcWrapperBean) args[WRAPPER_ARG_IDX];
final TravelDocument document = wrapper.getTravelDocument();
final Integer deleteIndex = (Integer) args[SELECTED_LINE_ARG_IDX];
final Integer deleteDetailIndex = (Integer) args[SELECTED_DETAIL_LINE_ARG_IDX];
ActualExpense line = document.getActualExpenses().get(deleteIndex.intValue());
document.removeExpenseDetail(line, deleteDetailIndex);
List<ActualExpense> actualExpenses = wrapper.getNewActualExpenseLines();
KualiDecimal detailTotal = line.getTotalDetailExpenseAmount();
if (detailTotal.isLessThan(line.getExpenseAmount())){
KualiDecimal remainderExpense = line.getExpenseAmount().subtract(detailTotal);
KualiDecimal remainderConverted = line.getConvertedAmount().subtract(new KualiDecimal(detailTotal.bigDecimalValue().multiply(line.getCurrencyRate())));
wrapper.getNewActualExpenseLines().get(deleteIndex).setExpenseAmount(remainderExpense);
wrapper.getNewActualExpenseLines().get(deleteIndex).setConvertedAmount(remainderConverted);
}
ExpenseUtils.calculateMileage(document, document.getActualExpenses());
for (String disabledProperty : document.getDisabledProperties().keySet()) {
getTravelDocumentService().restorePerDiemProperty(document, disabledProperty);
}
wrapper.setDistribution(getAccountingDistributionService().buildDistributionFrom(document));
document.getDisabledProperties().clear();
}
@Override
public void update(Observable arg0, Object arg1) {
int v = (int)arg1;
System.out.println("update("+v+")");
field.setValue(v);
if(lock.isLocked()) return;
lock.lock();
label.setText(Integer.toString(v));
lock.unlock();
}
@Override
public void update(Observable o, Object arg) {
DatabaseMessage message = (DatabaseMessage)arg;
try {
switch (message) {
case PAUSE:
// TODO ロックを取る
break;
case RESUME:
// TODO ロックを解除
break;
case DISCONNECT_NOW:
break;
case RECONNECT:
database = Database.getInstance();
dao = database.createTable(CharSet.class, this);
notifyObservers(arg);
break;
case RECREATE:
database = Database.getInstance();
dao = database.createTable(CharSet.class, this);
break;
default:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void update(Observable observable, Object data) {
if (observable instanceof EipStatus) {
eipStatus = (EipStatus) observable;
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(this::handleNewState);
} else {
Log.e("EipFragment", "activity is null");
}
} else if (observable instanceof ProviderObservable) {
provider = ((ProviderObservable) observable).getCurrentProvider();
}
}
@Override public void update(Observable observable, Object data) {
BallFinishObservable ballFinishObservable = (BallFinishObservable) observable;
isClickable = !ballFinishObservable.getState().equals(BallFinishObservable.BallState.MOVE);
if (ballFinishObservable.getState().equals(BallFinishObservable.BallState.PRESS)) {
if (onCheckedChangeListener != null) {
onCheckedChangeListener.onCheckedChanged(true);
}
} else if (ballFinishObservable.getState().equals(BallFinishObservable.BallState.RELEASE)) {
if (onCheckedChangeListener != null) {
onCheckedChangeListener.onCheckedChanged(false);
}
}
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
@Override public void update(Observable o, Object arg) {
switch ((ObserverArg) arg) {
case normal:
loadingComplete(false);
break;
case init:
initChartState();
case add:
loadingComplete(false);
case push:
onDataChange();
lastEntrySize = render.getAdapter().getCount();
break;
}
}
private synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
if(message.getType() == ObserverMessage.ADD_BALANCE_TYPE || message.getType() == ObserverMessage.REMOVE_BALANCE_TYPE)
{
this.update();
}
}
public synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
//CHECK IF LIST UPDATED
if(message.getType() == ObserverMessage.ADD_TRADE_TYPE || message.getType() == ObserverMessage.REMOVE_TRADE_TYPE)
{
this.fireTableDataChanged();
}
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
@Override
public void updateOnEDT(Observable o, Object arg) {
// may have changed: avatar...
mAvatarImage.update();
// ...contact name...
mNameField.setText(mContact.getName());
mNameField.setInputPrompt(mContact.getName());
Contact.Subscription subscription = mContact.getSubScription();
String auth = Tr.tr("Unknown");
switch(subscription) {
case PENDING: auth = Tr.tr("Awaiting reply"); break;
case SUBSCRIBED: auth = Tr.tr("Authorized"); break;
case UNSUBSCRIBED: auth = Tr.tr("Not authorized"); break;
}
// ...subscription...
mSubscrButton.setVisible(subscription != Contact.Subscription.SUBSCRIBED);
mSubscrButton.setEnabled(subscription == Contact.Subscription.UNSUBSCRIBED);
mSubscrStatus.setText(auth);
// ...and/or key
String hasKey = "<html>";
if (mContact.hasKey()) {
hasKey += Tr.tr("Available")+"</html>";
TooltipManager.removeTooltips(mKeyStatus);
mFPArea.setText(Utils.fingerprint(mContact.getFingerprint()));
mFPLabel.setVisible(true);
mFPArea.setVisible(true);
} else {
hasKey += "<font color='red'>"+Tr.tr("Not Available")+"</font></html>";
String keyText = Tr.tr("The public key for this contact could not yet be received");
TooltipManager.addTooltip(mKeyStatus, keyText);
mFPLabel.setVisible(false);
mFPArea.setVisible(false);
}
mKeyStatus.setText(hasKey);
mUpdateButton.setEnabled(mContact.isKontalkUser() &&
subscription == Contact.Subscription.SUBSCRIBED);
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
/**
* Update is called if the developer modifies a style that is stored in this feature
*
* @param observable GeoJsonStyle object
* @param data null, no extra argument is passed through the notifyObservers method
*/
@Override
public void update(Observable observable, Object data) {
if (observable instanceof GeoJsonStyle) {
checkRedrawFeature((GeoJsonStyle) observable);
}
}