--- /dev/null
+package org.tizen.nfc.page;
+
+import java.util.ArrayList;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.injector.util.FormPageUtil;
+import org.tizen.sdblib.IDevice;
+
+public class NDEFRecordPage {
+ // add NDEFMessage
+ private String[] RecordFormatList = RecordFormat.getInstance().getList();
+ private String[] TypeNameList = TypeName.getInstance().getList();
+ private Combo cmbRecordFormat;
+ private Combo cmbRecordTypeName;
+ private Text txtRecordTypeName;
+ private Text txtRecordID;
+ private Text txtRecordPayload;
+ private Button butSelectMediaFile;
+
+ private Button butRecordAdd;
+ private Button butRecordEdit;
+ private Button butRecordRemove;
+
+ // message list length
+ private Label lblRecords;
+ private int nTotalLength = 0;
+ private final int nMaxNDFEMessageLength = 4096;
+ private Combo cmbRecordList;
+ private ArrayList<NDEFRecord> RecordList = new ArrayList<NDEFRecord>();
+
+ // check invalid characters
+ private NDEFRecord oldRecord = new NDEFRecord(0, "", "", "");
+ private boolean bCheckTypeNameText = true;
+ private boolean bCheckIDText = true;
+ private boolean bCheckPayloadText = true;
+
+ private NfcHelpProcess process = null;
+ private Shell shell;
+ private IDevice currentDevice = null;
+
+ public NDEFRecordPage(Shell shell) {
+ process = new NfcHelpProcess(shell);
+ this.shell = shell;
+ }
+
+ public void createNDEFMessageSection(FormPageUtil formUtil, Composite parent)
+ {
+ Composite client = formUtil.createSection(parent, "NDEF Message");
+ Composite messageComposite = formUtil.createComposite(client);
+
+ createRecordComposite(formUtil, messageComposite);
+
+ Composite buttonComposite = formUtil.createComposite(messageComposite, 3);
+ butRecordAdd = formUtil.createButton(buttonComposite, "Add", SWT.PUSH);
+ butRecordEdit = formUtil.createButton(buttonComposite, "Edit", SWT.PUSH);
+ butRecordRemove = formUtil.createButton(buttonComposite, "Remove",SWT.PUSH);
+
+ GridData gd1 = new GridData();
+ gd1.widthHint = 110;
+ butRecordAdd.setLayoutData(gd1);
+ butRecordEdit.setLayoutData(gd1);
+ butRecordRemove.setLayoutData(gd1);
+
+ butRecordAdd.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ addRecord();
+ }
+ });
+ butRecordEdit.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ editRecord();
+ }
+ });
+ butRecordRemove.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ removeRecord();
+ }
+ });
+
+ Composite RecordComposite = formUtil.createComposite(messageComposite, 2);
+ GridData gd2 = new GridData();
+ gd2.widthHint = 160;
+ lblRecords = formUtil.createLabel(RecordComposite, String.format("Records [0/%d] ", nMaxNDFEMessageLength));
+ lblRecords.setLayoutData(gd2);
+
+ cmbRecordList = formUtil.createCombo(RecordComposite);
+ cmbRecordList.setLayoutData(gd2);
+ cmbRecordList.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ selectRecord();
+ }
+ });
+ }
+
+ private void createRecordComposite(FormPageUtil formUtil, Composite parent)
+ {
+ GridData gd1 = new GridData();
+ gd1.widthHint = 200;
+
+ Composite messageComposite = formUtil.createComposite(parent, 2);
+
+ formUtil.createLabel(messageComposite, "Type Name Format ");
+ cmbRecordFormat = formUtil.createCombo(messageComposite);
+ cmbRecordFormat.setLayoutData(gd1);
+ formUtil.addComboItem(cmbRecordFormat, RecordFormatList);
+
+ formUtil.createLabel(messageComposite, "Type Name ");
+ txtRecordTypeName = formUtil.createText(messageComposite, "");
+ txtRecordTypeName.setLayoutData(gd1);
+ txtRecordTypeName.setTextLimit(250);
+
+ formUtil.createLabel(messageComposite, "");
+ cmbRecordTypeName = formUtil.createCombo(messageComposite);
+ formUtil.addComboItem(cmbRecordTypeName, TypeNameList);
+ cmbRecordTypeName.setLayoutData(gd1);
+
+ formUtil.createLabel(messageComposite, "ID ");
+ txtRecordID = formUtil.createText(messageComposite, "");
+ txtRecordID.setLayoutData(gd1);
+ txtRecordID.setTextLimit(250);
+
+ formUtil.createLabel(messageComposite, "Payload ");
+ txtRecordPayload = formUtil.createText(messageComposite, "");
+ txtRecordPayload.setLayoutData(gd1);
+ txtRecordPayload.setTextLimit(1024);
+
+ formUtil.createLabel(messageComposite, "");
+ butSelectMediaFile = formUtil.createButton(messageComposite,
+ "Select Media File", SWT.PUSH);
+ butSelectMediaFile.setEnabled(false);
+ butSelectMediaFile.setLayoutData(new GridData(GridData.END,
+ GridData.END, false, false));
+
+ checkRecordFormat(1); //NDEF_TNF_WELL_KNOWN
+ addListener();
+ }
+
+ private void addListener() {
+ cmbRecordFormat.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Selected(e);
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ Selected(e);
+ }
+ private void Selected(SelectionEvent e) {
+ int i = cmbRecordFormat.getSelectionIndex();
+ if (i != -1) {
+ checkRecordFormat(i + 1);
+ txtRecordTypeName.setText("");
+ cmbRecordTypeName.select(0);
+ txtRecordID.setText("");
+ txtRecordPayload.setText("");
+ }
+ }
+ });
+
+ txtRecordTypeName.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (bCheckTypeNameText == false) {
+ bCheckTypeNameText = true;
+ return;
+ }
+ if (process.checkInvalidCharaters(txtRecordTypeName.getText()) == false) {
+ txtRecordTypeName.setText(oldRecord.getTypeName());
+ return;
+ }
+ oldRecord.setTypeName(txtRecordTypeName.getText());
+ }
+ });
+
+ txtRecordID.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (bCheckIDText == false) {
+ bCheckIDText = true;
+ return;
+ }
+ if (process.checkInvalidCharaters(txtRecordID.getText()) == false) {
+ txtRecordID.setText(oldRecord.getId());
+ return;
+ }
+ oldRecord.setId(txtRecordID.getText());
+ }
+ });
+
+ txtRecordPayload.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (bCheckPayloadText == false) {
+ bCheckPayloadText = true;
+ return;
+ }
+ if (process.checkInvalidCharaters(txtRecordPayload.getText()) == false) {
+ txtRecordPayload.setText(oldRecord.getPayload());
+ return;
+ }
+ oldRecord.setPayload(txtRecordPayload.getText());
+ }
+ });
+
+ butSelectMediaFile.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ String filePath = process.selectMediaFile(currentDevice);
+ if (filePath != null) {
+ txtRecordTypeName.setEnabled(true);
+ txtRecordTypeName.setEditable(false);
+ txtRecordPayload.setEnabled(true);
+ txtRecordPayload.setEditable(false);
+ txtRecordTypeName.setText(process.checkFileType(filePath));
+ txtRecordPayload.setText(filePath);
+ }
+ }
+ });
+ }
+
+ private void selectRecord() {
+ int i = cmbRecordList.getSelectionIndex();
+ if (i != -1) {
+ NDEFRecord record = RecordList.get(i);
+ checkRecordFormat(record.getFormat());
+ cmbRecordFormat.select(record.getFormat() - 1);
+
+ if (record.getFormat() == 1) {
+ if (record.getTypeName().compareTo("U") == 0)
+ cmbRecordTypeName.select(0);
+ else
+ cmbRecordTypeName.select(1);
+ txtRecordTypeName.setText("");
+ } else {
+ cmbRecordTypeName.select(0);
+ txtRecordTypeName.setText(record.getTypeName());
+ }
+
+ txtRecordID.setText(record.getId());
+ txtRecordPayload.setText(record.getPayload());
+ }
+ }
+
+ private void checkRecordFormat(int format)
+ {
+ switch (format) {
+ case 0: // NDEF_TNF_EMPTY
+ cmbRecordTypeName.setEnabled(false);
+ txtRecordTypeName.setEnabled(false);
+ txtRecordID.setEnabled(false);
+ txtRecordPayload.setEnabled(false);
+ butSelectMediaFile.setEnabled(false);
+ break;
+ case 1: // NDEF_TNF_WELL_KNOWN
+ cmbRecordTypeName.setEnabled(true);
+ cmbRecordTypeName.select(0);
+ txtRecordTypeName.setEnabled(false);
+ txtRecordID.setEnabled(true);
+ txtRecordPayload.setEnabled(true);
+ txtRecordPayload.setEditable(true);
+ butSelectMediaFile.setEnabled(false);
+ break;
+ case 2: // NDEF_TNF_MIME_MEDIA
+ cmbRecordTypeName.setEnabled(false);
+ txtRecordTypeName.setEnabled(false);
+ txtRecordID.setEnabled(true);
+ txtRecordPayload.setEnabled(false);
+ butSelectMediaFile.setEnabled(true);
+ break;
+ case 3: // NDEF_TNF_ABSOLUTE_URI
+ cmbRecordTypeName.setEnabled(false);
+ txtRecordTypeName.setEnabled(true);
+ txtRecordTypeName.setEditable(true);
+ txtRecordID.setEnabled(true);
+ txtRecordPayload.setEnabled(false);
+ butSelectMediaFile.setEnabled(false);
+ break;
+ case 4: // NDEF_TNF_EXTERNAL
+ cmbRecordTypeName.setEnabled(false);
+ txtRecordTypeName.setEnabled(true);
+ txtRecordTypeName.setEditable(true);
+ txtRecordID.setEnabled(true);
+ txtRecordPayload.setEnabled(true);
+ txtRecordPayload.setEditable(true);
+ butSelectMediaFile.setEnabled(false);
+ break;
+ case 5: // NDEF_TNF_UNKNOWN
+ cmbRecordTypeName.setEnabled(false);
+ txtRecordTypeName.setEnabled(false);
+ txtRecordID.setEnabled(true);
+ txtRecordPayload.setEnabled(true);
+ txtRecordPayload.setEditable(true);
+ butSelectMediaFile.setEnabled(false);
+ break;
+ }
+ bCheckTypeNameText = false;
+ bCheckIDText = false;
+ bCheckPayloadText = false;
+ }
+
+ private void addRecord()
+ {
+ if (RecordList.size() >= 5) {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.RecordCountIsMax);
+ return;
+ }
+
+ NDEFRecord record = new NDEFRecord();
+
+ setRecordValue(record);
+ RecordList.add(record);
+ int temp = process.checkRecordlistMaxLength(RecordList, nMaxNDFEMessageLength);
+ if (temp == 0) {
+ RecordList.remove(record);
+ return;
+ } else {
+ nTotalLength = temp;
+ }
+
+ lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
+ cmbRecordList.add("record item" + RecordList.indexOf(record));
+ cmbRecordList.clearSelection();
+ }
+
+ private void editRecord()
+ {
+ int i = cmbRecordList.getSelectionIndex();
+ if (i != -1) {
+ NDEFRecord record = RecordList.get(i);
+ NDEFRecord copyRecord = record;
+ setRecordValue(record);
+
+ int temp = process.checkRecordlistMaxLength(RecordList, nMaxNDFEMessageLength);
+ if (temp == 0) {
+ record = copyRecord;
+ return;
+ } else {
+ nTotalLength = temp;
+ }
+
+ lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
+ }
+ }
+
+ private void removeRecord()
+ {
+ int index = cmbRecordList.getSelectionIndex();
+ if (index != -1) {
+ RecordList.remove(index);
+ cmbRecordList.removeAll();
+ for (int i = 0; i < RecordList.size(); i++) {
+ cmbRecordList.add("record item" + i);
+ }
+ cmbRecordList.clearSelection();
+ }
+
+ nTotalLength = process.checkRecordlistMaxLength(RecordList, nMaxNDFEMessageLength);
+ lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
+ txtRecordTypeName.setText("");
+ cmbRecordTypeName.select(0);
+ txtRecordID.setText("");
+ txtRecordPayload.setText("");
+ }
+
+ private void setRecordValue(NDEFRecord record)
+ {
+ record.setFormat(cmbRecordFormat.getSelectionIndex() + 1);
+
+ if ((cmbRecordFormat.getSelectionIndex() + 1) == 1) {
+ record.setTypeName(TypeNameList[cmbRecordTypeName.getSelectionIndex()]);
+ } else {
+ if (txtRecordTypeName.getText().isEmpty() == true)
+ record.setTypeName("Null");
+ else
+ record.setTypeName(txtRecordTypeName.getText());
+ }
+
+ if (txtRecordID.getText().isEmpty() == true)
+ record.setId("Null");
+ else
+ record.setId(txtRecordID.getText());
+
+ if (txtRecordPayload.getText().isEmpty() == true)
+ record.setPayload("Null");
+ else
+ record.setPayload(txtRecordPayload.getText());
+ }
+
+ public IDevice getCurrentDevice() {
+ return currentDevice;
+ }
+
+ public void setCurrentDevice(IDevice currentDevice) {
+ this.currentDevice = currentDevice;
+ }
+
+ public ArrayList<NDEFRecord> getRecordList() {
+ return RecordList;
+ }
+
+ public void setDisableState() {
+ cmbRecordFormat.setEnabled(false);
+ checkRecordFormat(0);
+
+ cmbRecordList.setEnabled(false);
+ butRecordAdd.setEnabled(false);
+ butRecordEdit.setEnabled(false);
+ butRecordRemove.setEnabled(false);
+ }
+
+ public void setEnableState() {
+ cmbRecordFormat.setEnabled(true);
+
+ checkRecordFormat(cmbRecordFormat.getSelectionIndex() + 1);
+ txtRecordTypeName.setText("");
+ cmbRecordTypeName.select(0);
+ txtRecordID.setText("");
+ txtRecordPayload.setText("");
+
+ cmbRecordList.setEnabled(true);
+ butRecordAdd.setEnabled(true);
+ butRecordEdit.setEnabled(true);
+ butRecordRemove.setEnabled(true);
+ }
+}
--- /dev/null
+package org.tizen.nfc.page;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.common.connection.ConnectionPlugin;
+import org.tizen.common.connection.ui.TizenRemoteFileDialog;
+import org.tizen.common.connection.ui.TizenRemoteFileDialog.TizenRemoteFileDialogResult;
+import org.tizen.injector.socket.TelephonySocket;
+import org.tizen.sdblib.IDevice;
+import org.tizen.sdblib.MultiLineReceiver;
+import org.tizen.sdblib.SdbCommandRejectedException;
+import org.tizen.sdblib.ShellCommandUnresponsiveException;
+import org.tizen.sdblib.TimeoutException;
+import org.tizen.sdblib.FileListingService.FileEntry;
+
+public class NfcHelpProcess {
+ private Shell shell = null;
+
+ public NfcHelpProcess(Shell shell) {
+ this.shell = shell;
+ }
+
+ public boolean checkInvalidCharaters(String text)
+ {
+ char[] textArray = new char[1000];
+ text.getChars(0, text.length(), textArray, 0);
+
+ for (int i = 0; i < text.length(); i++) {
+ char c = textArray[i];
+ if (c == '\n') {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.InvalidCharNewLine);
+ return false;
+ }
+
+ if (c == ',') {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.InvalidChar);
+ return false;
+ }
+
+ if (c >= 0x80) {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.InvalidCharAscii);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public int checkRecordlistMaxLength(ArrayList<NDEFRecord> RecordList, int maxLen)
+ {
+ int lenList = 0;
+
+ for (NDEFRecord record : RecordList) {
+ lenList += 1 + record.getTypeName().length()
+ + record.getId().length() + record.getPayload().length() + 4;
+ }
+
+ if (lenList > maxLen) {
+ NfcDialog.openInfoDialog(shell, "The length of the NDEF message has reached the maxium limit of "
+ + maxLen + " bytes\n");
+ return 0;
+ }
+
+ return lenList;
+ }
+
+ private static String MediaFilePath = null;
+ private String shellCmd = null;
+ private String shellResult = null;
+
+ public String selectMediaFile(final IDevice currentDevice)
+ {
+ MediaFilePath = null;
+ if (shell != null) {
+ shell.getDisplay().syncExec(new Runnable() {
+ public void run() {
+ TizenRemoteFileDialog dlg = new TizenRemoteFileDialog(
+ shell, "Select a media file", currentDevice, false,
+ "/opt/nfc");
+ if (dlg.open() == TizenRemoteFileDialogResult.OK) {
+ FileEntry fileEntry = dlg.getSelectedFileEntry();
+ MediaFilePath = fileEntry.getFullPath();
+ }
+ }
+ });
+ } else {
+ NfcDialog.openErrorDialog(NfcErrorString.FailOpenDialog);
+ }
+
+ if (MediaFilePath == null) {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.EmptyFilePath);
+ } else {
+ String type = null;
+ type = checkFileType(MediaFilePath);
+ if (type == null) {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.NotMimeType);
+ return null;
+ }
+ if (checkFileSize(currentDevice, MediaFilePath) == false) {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.BigSizeFile);
+ return null;
+ }
+ }
+ return MediaFilePath;
+ }
+
+ public String checkFileType(String filePath) {
+ int index = filePath.lastIndexOf('.');
+ String type = null;
+ if (index != -1) {
+ String ex = filePath.substring(index + 1);
+ MimeTypeList typelist = MimeTypeList.getInstance();
+
+ type = typelist.findMimeType(ex);
+ }
+ return type;
+ }
+
+ private boolean checkFileSize(final IDevice currentDevice, String filePath) {
+ boolean result = false;
+ shellCmd = "du " + filePath;
+ try {
+ currentDevice.executeShellCommand(shellCmd, new MultiLineReceiver() {
+ @Override
+ public void processNewLines(String[] lines) {
+ shellResult = lines[0];
+ }
+
+ });
+ } catch (TimeoutException e) {
+ errorSelectMediaFile(e);
+ return result;
+ } catch (SdbCommandRejectedException e) {
+ errorSelectMediaFile(e);
+ return result;
+ } catch (ShellCommandUnresponsiveException e) {
+ errorSelectMediaFile(e);
+ return result;
+ } catch (IOException e) {
+ errorSelectMediaFile(e);
+ return result;
+ }
+
+ if (shellResult != null) {
+ int index = shellResult.indexOf('\t');
+ if (index != -1) {
+ shellResult = shellResult.substring(0, index);
+
+ if (Integer.valueOf(shellResult) <= 10) {
+ result = true;
+ }
+ }
+ }
+ return result;
+ }
+
+ private void errorSelectMediaFile(Exception e) {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.MediaFileException + e.getMessage());
+ }
+
+ private void errorCheckVconf(Exception e) {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.CheckVconfException + e.getMessage());
+ }
+
+ private boolean checkVconfValue() {
+ boolean result = false;
+ IDevice currentDevice = ConnectionPlugin.getDefault().getCurrentDevice();
+ shellCmd = "vconftool get db/nfc/enable";
+ try {
+ currentDevice.executeShellCommand(shellCmd, new MultiLineReceiver() {
+ @Override
+ public void processNewLines(String[] lines) {
+ shellResult = lines[0];
+ }
+ });
+ } catch (TimeoutException e) {
+ errorCheckVconf(e);
+ return result;
+ } catch (SdbCommandRejectedException e) {
+ errorCheckVconf(e);
+ return result;
+ } catch (ShellCommandUnresponsiveException e) {
+ errorCheckVconf(e);
+ return result;
+ } catch (IOException e) {
+ errorCheckVconf(e);
+ return result;
+ }
+
+ if (shellResult != null) {
+ if (shellResult.indexOf('1') != -1) {
+ result = true;
+ } else {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.NFCIsDisable);
+ }
+ }
+
+ return result;
+ }
+
+ public boolean sendMessage(Integer type, int tagType, ArrayList<NDEFRecord> RecordList)
+ {
+ if (!checkVconfValue()) {
+ if (type == NfcCommand.NFC_TAG_DISCOVERED
+ || type == NfcCommand.NFC_P2P_DISCOVERED) {
+ return false;
+ } else {
+ // for initializing the state
+ return true;
+ }
+ }
+
+ String msg = null;
+ switch (type) {
+ case 100: // NFC_TAG_DISCOVERED
+ {
+ if (tagType != -1 && tagType != 0) {
+ String records = new String();
+ records += "," + RecordList.size();
+ for (NDEFRecord record : RecordList) {
+ records += "," + record.getFormat() + ","
+ + record.getTypeName() + "," + record.getId() + ","
+ + record.getPayload();
+ }
+
+ msg = NfcCommand.NFC_TAG_DISCOVERED.toString() + ":"
+ + String.valueOf(tagType) + records + "\n";
+
+ } else {
+ NfcDialog.openErrorDialog(shell, NfcErrorString.SelecTagType);
+ return false;
+ }
+ }
+ break;
+ case 101: // NFC_TAG_DETACHED
+ msg = NfcCommand.NFC_TAG_DETACHED.toString() + ":" + "\n";
+ break;
+ case 102: // NFC_P2P_DISCOVERED
+ msg = NfcCommand.NFC_P2P_DISCOVERED.toString() + ":\n";
+ break;
+ case 103: // NFC_P2P_DETACHED
+ msg = NfcCommand.NFC_P2P_DETACHED.toString() + ":\n";
+ break;
+ case 104: // NFC_P2P_SEND
+ {
+ int tagtype = 5; // for peer to peer
+ String records = new String();
+ records += "," + RecordList.size();
+ for (NDEFRecord record : RecordList) {
+ records += "," + record.getFormat() + ","
+ + record.getTypeName() + "," + record.getId() + ","
+ + record.getPayload();
+ }
+
+ msg = NfcCommand.NFC_P2P_SEND.toString() + ":"
+ + String.valueOf(tagtype) + records + "\n";
+ }
+ break;
+ }
+
+ if (msg != null) {
+ return send(msg);
+ } else {
+ return false;
+ }
+ }
+
+ private TelephonySocket injectorSocket = TelephonySocket.getInstance();
+ private boolean send(String msg)
+ {
+ boolean result = false;
+ try {
+ result = injectorSocket.sendNfc(msg);
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+
+ return result;
+ }
+
+}
package org.tizen.nfc.page;
-import java.io.IOException;
-import java.util.ArrayList;
-
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
import org.tizen.common.connection.ConnectionPlugin;
import org.tizen.common.connection.ConnectionPlugin.ISelectionListener;
-import org.tizen.common.connection.ui.TizenRemoteFileDialog;
-import org.tizen.common.connection.ui.TizenRemoteFileDialog.TizenRemoteFileDialogResult;
import org.tizen.injector.provider.AbstractInjectorItem;
import org.tizen.injector.provider.AbstractInjectorPage;
import org.tizen.injector.view.InjectorView;
import org.tizen.sdblib.FileListingService.FileEntry;
import org.tizen.sdblib.IDevice;
-import org.tizen.sdblib.MultiLineReceiver;
-import org.tizen.sdblib.SdbCommandRejectedException;
-import org.tizen.sdblib.ShellCommandUnresponsiveException;
-import org.tizen.sdblib.TimeoutException;
public class NfcPage extends AbstractInjectorPage implements ISelectionListener
{
- // add NDEFMessage
- private String[] RecordFormatList = RecordFormat.getInstance().getList();
- private String[] TypeNameList = TypeName.getInstance().getList();
- private Combo cmbRecordFormat;
- private Combo cmbRecordTypeName;
- private Text txtRecordTypeName;
- private Text txtRecordID;
- private Text txtRecordPayload;
- private Button butSelectMediaFile;
-
- // check invalid characters
- private NDEFRecord oldRecord = new NDEFRecord(0, "", "", "");
- private boolean bCheckTypeNameText = true;
- private boolean bCheckIDText = true;
- private boolean bCheckPayloadText = true;
-
- private Button butRecordAdd;
- private Button butRecordEdit;
- private Button butRecordRemove;
-
- private Label lblRecords;
- private int nTotalLength = 0;
- private final int nMaxNDFEMessageLength = 4096;
- private Combo cmbRecordList;
- private ArrayList<NDEFRecord> RecordList = new ArrayList<NDEFRecord>();
+ // NDEF record
+ private NDEFRecordPage recordPage = null;
// add Tag
private String[] TagTypeList = TagType.getInstance().getList();
private IDevice currentDevice;
private Shell shell = null;
+ private NfcHelpProcess process = null;
+
public NfcPage(AbstractInjectorItem item, String name)
{
super(item, name);
currentDevice = ConnectionPlugin.getDefault().getCurrentDevice();
shell = parent.getShell();
+ process = new NfcHelpProcess(shell);
+ recordPage = new NDEFRecordPage(shell);
+ recordPage.setCurrentDevice(currentDevice);
- createNDEFMessageSection();
+ recordPage.createNDEFMessageSection(formUtil, parent);
createTagSection();
createP2PSection();
}
}
- private void createNDEFMessageSection()
- {
- Composite client = formUtil.createSection(parent, "NDEF Message");
- Composite messageComposite = formUtil.createComposite(client);
-
- createRecordComposite(messageComposite);
-
- Composite buttonComposite = formUtil.createComposite(messageComposite,
- 3);
- butRecordAdd = formUtil.createButton(buttonComposite, "Add", SWT.PUSH);
- butRecordEdit = formUtil
- .createButton(buttonComposite, "Edit", SWT.PUSH);
- butRecordRemove = formUtil.createButton(buttonComposite, "Remove",
- SWT.PUSH);
-
- GridData gd1 = new GridData();
- gd1.widthHint = 110;
- butRecordAdd.setLayoutData(gd1);
- butRecordEdit.setLayoutData(gd1);
- butRecordRemove.setLayoutData(gd1);
-
- butRecordAdd.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- addRecord();
- }
- });
- butRecordEdit.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- editRecord();
- }
- });
- butRecordRemove.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- removeRecord();
- }
- });
-
- Composite RecordComposite = formUtil.createComposite(messageComposite, 2);
- GridData gd2 = new GridData();
- gd2.widthHint = 160;
- lblRecords = formUtil.createLabel(RecordComposite, String.format("Records [0/%d] ", nMaxNDFEMessageLength));
- lblRecords.setLayoutData(gd2);
-
- cmbRecordList = formUtil.createCombo(RecordComposite);
- cmbRecordList.setLayoutData(gd2);
- cmbRecordList.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- selectRecord();
- }
- });
- }
-
- private void createRecordComposite(Composite parent)
- {
- GridData gd1 = new GridData();
- gd1.widthHint = 200;
-
- Composite messageComposite = formUtil.createComposite(parent, 2);
-
- formUtil.createLabel(messageComposite, "Type Name Format ");
- cmbRecordFormat = formUtil.createCombo(messageComposite);
- cmbRecordFormat.setLayoutData(gd1);
- formUtil.addComboItem(cmbRecordFormat, RecordFormatList);
- cmbRecordFormat.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Selected(e);
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- Selected(e);
- }
-
- private void Selected(SelectionEvent e) {
- int i = cmbRecordFormat.getSelectionIndex();
- if (i != -1) {
- checkRecordFormat(i + 1);
- txtRecordTypeName.setText("");
- cmbRecordTypeName.select(0);
- txtRecordID.setText("");
- txtRecordPayload.setText("");
- }
- }
- });
-
- formUtil.createLabel(messageComposite, "Type Name ");
- txtRecordTypeName = formUtil.createText(messageComposite, "");
- txtRecordTypeName.setEnabled(false);
- txtRecordTypeName.setLayoutData(gd1);
- txtRecordTypeName.setTextLimit(250);
- txtRecordTypeName.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if (bCheckTypeNameText == false) {
- bCheckTypeNameText = true;
- return;
- }
- if (checkInvalidCharaters(txtRecordTypeName.getText()) == false) {
- txtRecordTypeName.setText(oldRecord.getTypeName());
- return;
- }
- oldRecord.setTypeName(txtRecordTypeName.getText());
- }
- });
-
- formUtil.createLabel(messageComposite, "");
- cmbRecordTypeName = formUtil.createCombo(messageComposite);
- formUtil.addComboItem(cmbRecordTypeName, TypeNameList);
- cmbRecordTypeName.setEnabled(false);
- cmbRecordTypeName.setLayoutData(gd1);
-
- formUtil.createLabel(messageComposite, "ID ");
- txtRecordID = formUtil.createText(messageComposite, "");
- txtRecordID.setEnabled(false);
- txtRecordID.setLayoutData(gd1);
- txtRecordID.setTextLimit(250);
- txtRecordID.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if (bCheckIDText == false) {
- bCheckIDText = true;
- return;
- }
- if (checkInvalidCharaters(txtRecordID.getText()) == false) {
- txtRecordID.setText(oldRecord.getId());
- return;
- }
- oldRecord.setId(txtRecordID.getText());
- }
- });
-
- formUtil.createLabel(messageComposite, "Payload ");
- txtRecordPayload = formUtil.createText(messageComposite, "");
- txtRecordPayload.setEnabled(false);
- txtRecordPayload.setLayoutData(gd1);
- txtRecordPayload.setTextLimit(1024);
- txtRecordPayload.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if (bCheckPayloadText == false) {
- bCheckPayloadText = true;
- return;
- }
- if (checkInvalidCharaters(txtRecordPayload.getText()) == false) {
- txtRecordPayload.setText(oldRecord.getPayload());
- return;
- }
- oldRecord.setPayload(txtRecordPayload.getText());
- }
- });
-
- formUtil.createLabel(messageComposite, "");
- butSelectMediaFile = formUtil.createButton(messageComposite,
- "Select Media File", SWT.PUSH);
- butSelectMediaFile.setEnabled(false);
- butSelectMediaFile.setLayoutData(new GridData(GridData.END,
- GridData.END, false, false));
- butSelectMediaFile.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- selectMediaFile();
- }
- });
- }
-
private void createTagSection()
{
- Composite client = formUtil.createSection(parent, "NFC Tag");
+ Composite client = formUtil.createSection(parent, "NFC Tag");
Composite mainComposite = formUtil.createComposite(client, 3);
formUtil.createLabel(mainComposite, "Tag Type ");
private void createP2PSection()
{
- Composite client = formUtil.createSection(parent, "Peer to Peer");
+ Composite client = formUtil.createSection(parent, "Peer to Peer");
Composite mainComposite = formUtil.createComposite(client, 2);
- butP2PDiscover = formUtil.createButton(mainComposite, "P2P Discovered", SWT.PUSH);
- butP2PDetach = formUtil.createButton(mainComposite, "P2P Detached", SWT.PUSH);
- butP2PSend = formUtil.createButton(mainComposite, "P2PSend", SWT.PUSH);
+ butP2PDiscover = formUtil.createButton(mainComposite, "P2P Discovered", SWT.PUSH);
+ butP2PDetach = formUtil.createButton(mainComposite, "P2P Detached", SWT.PUSH);
+ butP2PSend = formUtil.createButton(mainComposite, "P2PSend", SWT.PUSH);
// TODO
butP2PDiscover.setEnabled(true);
});
}
- private void selectRecord() {
- int i = cmbRecordList.getSelectionIndex();
- if (i != -1) {
- NDEFRecord record = RecordList.get(i);
- checkRecordFormat(record.getFormat());
- cmbRecordFormat.select(record.getFormat() - 1);
-
- if (record.getFormat() == 1) {
- if (record.getTypeName().compareTo("U") == 0)
- cmbRecordTypeName.select(0);
- else
- cmbRecordTypeName.select(1);
- txtRecordTypeName.setText("");
- } else {
- cmbRecordTypeName.select(0);
- txtRecordTypeName.setText(record.getTypeName());
- }
-
- txtRecordID.setText(record.getId());
- txtRecordPayload.setText(record.getPayload());
+ private void clickTagDiscovered() {
+ // check count of record list;
+ if (recordPage.getRecordList().size() == 0) {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.RecordCountIsZero);
+ return;
}
- }
- private boolean checkInvalidCharaters(String text)
- {
- char[] textArray = new char[1000];
- text.getChars(0, text.length(), textArray, 0);
-
- for (int i = 0; i < text.length(); i++) {
- char c = textArray[i];
- if (c == '\n') {
- NfcDialog.openInfoDialog(shell, "Can not enter a newline character.");
- return false;
- }
-
- if (c == ',') {
- NfcDialog.openInfoDialog(shell, "Can not enter ',' character.\nThis character is used separater character.");
- return false;
- }
-
- if (c >= 0x80) {
- NfcDialog.openInfoDialog(shell, "Invalid characters are entered.\nOnly ASCII characters can be entered.\n");
- return false;
- }
- }
- return true;
- }
+ boolean result = process.sendMessage(NfcCommand.NFC_TAG_DISCOVERED,
+ cmbTagTypeList.getSelectionIndex(), recordPage.getRecordList());
+ if (result) {
+ recordPage.setDisableState();
- private void clickTagDiscovered() {
- String msg = makeSendMessage(NfcCommand.NFC_TAG_DISCOVERED);
- if (msg != null) {
- sendMessage(msg);
- {
- cmbRecordFormat.setEnabled(false);
- checkRecordFormat(0);
-
- cmbRecordList.setEnabled(false);
- butRecordAdd.setEnabled(false);
- butRecordEdit.setEnabled(false);
- butRecordRemove.setEnabled(false);
-
- cmbTagTypeList.setEnabled(false);
- butTagAttach.setEnabled(false);
- butTagDetach.setEnabled(true);
-
- butP2PDiscover.setEnabled(false);
- butP2PDetach.setEnabled(false);
- butP2PSend.setEnabled(false);
- }
+ cmbTagTypeList.setEnabled(false);
+ butTagAttach.setEnabled(false);
+ butTagDetach.setEnabled(true);
+
+ butP2PDiscover.setEnabled(false);
+ butP2PDetach.setEnabled(false);
+ butP2PSend.setEnabled(false);
}
}
private void clickTagDetached() {
- String msg = makeSendMessage(NfcCommand.NFC_TAG_DETACHED);
- if (msg != null) {
- sendMessage(msg);
- {
- cmbRecordFormat.setEnabled(true);
-
- checkRecordFormat(cmbRecordFormat.getSelectionIndex() + 1);
- txtRecordTypeName.setText("");
- cmbRecordTypeName.select(0);
- txtRecordID.setText("");
- txtRecordPayload.setText("");
-
- cmbRecordList.setEnabled(true);
- butRecordAdd.setEnabled(true);
- butRecordEdit.setEnabled(true);
- butRecordRemove.setEnabled(true);
-
- cmbTagTypeList.setEnabled(true);
- butTagAttach.setEnabled(true);
- butTagDetach.setEnabled(false);
-
- butP2PDiscover.setEnabled(true);
- butP2PDetach.setEnabled(false);
- butP2PSend.setEnabled(false);
- }
+ boolean result = process.sendMessage(NfcCommand.NFC_TAG_DETACHED,
+ cmbTagTypeList.getSelectionIndex(), recordPage.getRecordList());
+ if (result) {
+ recordPage.setEnableState();
+
+ cmbTagTypeList.setEnabled(true);
+ butTagAttach.setEnabled(true);
+ butTagDetach.setEnabled(false);
+
+ butP2PDiscover.setEnabled(true);
+ butP2PDetach.setEnabled(false);
+ butP2PSend.setEnabled(false);
}
}
private void clickP2PDiscovered() {
- String msg = makeSendMessage(NfcCommand.NFC_P2P_DISCOVERED);
- if (msg != null) {
- sendMessage(msg);
- {
- cmbTagTypeList.setEnabled(false);
- butTagAttach.setEnabled(false);
- butTagDetach.setEnabled(false);
-
- butP2PDiscover.setEnabled(false);
- butP2PDetach.setEnabled(true);
- butP2PSend.setEnabled(true);
- }
+ boolean result = process.sendMessage(NfcCommand.NFC_P2P_DISCOVERED,
+ cmbTagTypeList.getSelectionIndex(), recordPage.getRecordList());
+ if (result) {
+ cmbTagTypeList.setEnabled(false);
+ butTagAttach.setEnabled(false);
+ butTagDetach.setEnabled(false);
+
+ butP2PDiscover.setEnabled(false);
+ butP2PDetach.setEnabled(true);
+ butP2PSend.setEnabled(true);
}
}
private void clickP2PDetached() {
- String msg = makeSendMessage(NfcCommand.NFC_P2P_DETACHED);
- if (msg != null) {
- sendMessage(msg);
- {
- cmbRecordFormat.setEnabled(true);
-
- checkRecordFormat(cmbRecordFormat.getSelectionIndex() + 1);
- txtRecordTypeName.setText("");
- cmbRecordTypeName.select(0);
- txtRecordID.setText("");
- txtRecordPayload.setText("");
-
- cmbRecordList.setEnabled(true);
- butRecordAdd.setEnabled(true);
- butRecordEdit.setEnabled(true);
- butRecordRemove.setEnabled(true);
-
- cmbTagTypeList.setEnabled(true);
- butTagAttach.setEnabled(true);
- butTagDetach.setEnabled(false);
-
- butP2PDiscover.setEnabled(true);
- butP2PDetach.setEnabled(false);
- butP2PSend.setEnabled(false);
- }
+ boolean result = process.sendMessage(NfcCommand.NFC_P2P_DETACHED,
+ cmbTagTypeList.getSelectionIndex(), recordPage.getRecordList());
+ if (result) {
+ recordPage.setEnableState();
+
+ cmbTagTypeList.setEnabled(true);
+ butTagAttach.setEnabled(true);
+ butTagDetach.setEnabled(false);
+
+ butP2PDiscover.setEnabled(true);
+ butP2PDetach.setEnabled(false);
+ butP2PSend.setEnabled(false);
}
}
private void clickP2PSend() {
- String msg = makeSendMessage(NfcCommand.NFC_P2P_SEND);
- if (msg != null) {
- sendMessage(msg);
- cmbRecordFormat.setEnabled(false);
- checkRecordFormat(0);
+ // check count of record list;
+ if (recordPage.getRecordList().size() == 0) {
+ NfcDialog.openInfoDialog(shell, NfcErrorString.RecordCountIsZero);
+ return;
+ }
- cmbRecordList.setEnabled(false);
- butRecordAdd.setEnabled(false);
- butRecordEdit.setEnabled(false);
- butRecordRemove.setEnabled(false);
+ boolean result = process.sendMessage(NfcCommand.NFC_P2P_SEND,
+ cmbTagTypeList.getSelectionIndex(), recordPage.getRecordList());
+ if (result) {
+ recordPage.setDisableState();
cmbTagTypeList.setEnabled(false);
butTagAttach.setEnabled(false);
}
}
- private void checkRecordFormat(int format)
- {
- switch (format) {
- case 0: // NDEF_TNF_EMPTY
- cmbRecordTypeName.setEnabled(false);
- txtRecordTypeName.setEnabled(false);
- txtRecordID.setEnabled(false);
- txtRecordPayload.setEnabled(false);
- butSelectMediaFile.setEnabled(false);
- break;
- case 1: // NDEF_TNF_WELL_KNOWN
- cmbRecordTypeName.setEnabled(true);
- cmbRecordTypeName.select(0);
- txtRecordTypeName.setEnabled(false);
- txtRecordID.setEnabled(true);
- txtRecordPayload.setEnabled(true);
- txtRecordPayload.setEditable(true);
- butSelectMediaFile.setEnabled(false);
- break;
- case 2: // NDEF_TNF_MIME_MEDIA
- cmbRecordTypeName.setEnabled(false);
- txtRecordTypeName.setEnabled(false);
- txtRecordTypeName.setEditable(false);
- txtRecordID.setEnabled(true);
- txtRecordPayload.setEnabled(false);
- txtRecordPayload.setEditable(false);
- butSelectMediaFile.setEnabled(true);
- break;
- case 3: // NDEF_TNF_ABSOLUTE_URI
- case 4: // NDEF_TNF_EXTERNAL
- cmbRecordTypeName.setEnabled(false);
- txtRecordTypeName.setEnabled(true);
- txtRecordTypeName.setEditable(true);
- txtRecordID.setEnabled(true);
- txtRecordPayload.setEnabled(true);
- txtRecordPayload.setEditable(true);
- butSelectMediaFile.setEnabled(false);
- break;
- case 5: // NDEF_TNF_UNKNOWN
- cmbRecordTypeName.setEnabled(false);
- txtRecordTypeName.setEnabled(false);
- txtRecordID.setEnabled(true);
- txtRecordPayload.setEnabled(true);
- txtRecordPayload.setEditable(true);
- butSelectMediaFile.setEnabled(false);
- break;
- }
- bCheckTypeNameText = false;
- bCheckIDText = false;
- bCheckPayloadText = false;
- }
-
- private void addRecord()
- {
- if (RecordList.size() >= 5) {
- NfcDialog.openInfoDialog(shell, "The number of NDEF records has reached the maximum limit of 5.\n");
- return;
- }
-
- NDEFRecord record = new NDEFRecord();
-
- /*
- // check duplicate id !!
- if (cmbRecordFormat.getSelectionIndex() != 0) {
- if (!checkRecordID(txtRecordID.getText() != null ? txtRecordID.getText() : "Null")) {
- return;
- }
- }
- */
-
- setRecordValue(record);
- RecordList.add(record);
- if (!checkRecordlistMaxLength()) {
- RecordList.remove(record);
- return;
- }
-
- lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
- cmbRecordList.add("record item" + RecordList.indexOf(record));
- cmbRecordList.clearSelection();
- }
-
- private void editRecord()
- {
- int i = cmbRecordList.getSelectionIndex();
- if (i != -1) {
- NDEFRecord record = RecordList.get(i);
- /*
- // check duplicate id !!
- if (record.getFormat() != 0) {
- if (!checkRecordID(txtRecordID.getText() != null ? txtRecordID.getText() : "Null", i)) {
- return;
- }
- }
- */
-
- NDEFRecord copyRecord = record;
- setRecordValue(record);
-
- if (!checkRecordlistMaxLength()) {
- record = copyRecord;
- return;
- }
-
- lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
- // cmbRecordFormat.select(record.getFormat());
- // checkFormat(record.getFormat());
- }
- }
-
- private void removeRecord()
- {
- int index = cmbRecordList.getSelectionIndex();
- if (index != -1) {
- RecordList.remove(index);
- cmbRecordList.removeAll();
- for (int i = 0; i < RecordList.size(); i++) {
- cmbRecordList.add("record item" + i);
- }
- cmbRecordList.clearSelection();
- }
-
- checkRecordlistMaxLength();
- lblRecords.setText(String.format("Records [%4d/%d] ", nTotalLength, nMaxNDFEMessageLength));
- txtRecordTypeName.setText("");
- cmbRecordTypeName.select(0);
- txtRecordID.setText("");
- txtRecordPayload.setText("");
- }
-
- private void setRecordValue(NDEFRecord record)
- {
- record.setFormat(cmbRecordFormat.getSelectionIndex() + 1);
-
- if ((cmbRecordFormat.getSelectionIndex() + 1) == 1) {
- record.setTypeName(TypeNameList[cmbRecordTypeName.getSelectionIndex()]);
- } else {
- if (txtRecordTypeName.getText().isEmpty() == true)
- record.setTypeName("Null");
- else
- record.setTypeName(txtRecordTypeName.getText());
- }
-
- if (txtRecordID.getText().isEmpty() == true)
- record.setId("Null");
- else
- record.setId(txtRecordID.getText());
-
- if (txtRecordPayload.getText().isEmpty() == true)
- record.setPayload("Null");
- else
- record.setPayload(txtRecordPayload.getText());
- }
-
-/*
- private boolean checkRecordID(String id)
- {
- for (NDEFRecord record : RecordList) {
- if (id.equals(record.getId())) {
- NfcDialog.openInfoDialog(shell, "Duplicate ID is not allowed.\n");
- return false;
- }
- }
-
- return true;
- }
-
- private boolean checkRecordID(String id, int except)
- {
- NDEFRecord record;
- for (int i = 0; i < RecordList.size(); i++) {
- if (i == except)
- continue;
-
- record = RecordList.get(i);
- if (id.equals(record.getId())) {
- NfcDialog.openInfoDialog(shell, "Duplicate ID is not allowed.\n");
- return false;
- }
- }
-
- return true;
-
- }
-*/
-
- private boolean checkRecordlistMaxLength()
- {
- int lenList = 0;
-
- for (NDEFRecord record : RecordList) {
- lenList += 1 + record.getTypeName().length()
- + record.getId().length() + record.getPayload().length() + 4;
- }
-
- if (lenList > nMaxNDFEMessageLength) {
- NfcDialog.openInfoDialog(shell, String.format("The length of the NDEF message has reached the maxium limit of %d bytes\n", nMaxNDFEMessageLength));
- return false;
- }
-
- nTotalLength = lenList;
-
- return true;
- }
-
- private static String MediaFilePath = null;
- private String shellCmd = null;
- private String shellResult = null;
-
- private void selectMediaFile()
- {
- MediaFilePath = null;
- if (shell != null) {
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- TizenRemoteFileDialog dlg = new TizenRemoteFileDialog(
- shell, "Select a media file", currentDevice, false,
- "/opt/nfc");
- if (dlg.open() == TizenRemoteFileDialogResult.OK) {
- FileEntry fileEntry = dlg.getSelectedFileEntry();
- MediaFilePath = fileEntry.getFullPath();
- }
- }
- });
- } else {
- NfcDialog.openErrorDialog("Can not open emulator's file dialog.\n");
- }
-
- if (MediaFilePath == null) {
- NfcDialog.openErrorDialog(shell, "Please choose media file.\n");
- } else {
- String type = null;
- type = checkFileType(MediaFilePath);
- if (type == null) {
- NfcDialog.openErrorDialog(shell, "Type of selected file is not mime media type.\n");
- return;
- }
- if (checkFileSize(MediaFilePath) == false) {
- NfcDialog.openErrorDialog(shell, "Size of selected file is too big. Available file size is under of 10KB.\n");
- return;
- }
- txtRecordTypeName.setEnabled(true);
- txtRecordTypeName.setEditable(false);
- txtRecordPayload.setEnabled(true);
- txtRecordPayload.setEditable(false);
- txtRecordTypeName.setText(type);
- txtRecordPayload.setText(MediaFilePath);
- }
- }
-
- private String checkFileType(String filePath) {
- int index = filePath.lastIndexOf('.');
- String type = null;
- if (index != -1) {
- String ex = filePath.substring(index + 1);
- MimeTypeList typelist = MimeTypeList.getInstance();
-
- type = typelist.findMimeType(ex);
- }
- return type;
- }
-
- private boolean checkFileSize(String filePath) {
- boolean result = false;
- shellCmd = "du " + filePath;
- try {
- currentDevice.executeShellCommand(shellCmd, new MultiLineReceiver() {
- @Override
- public void processNewLines(String[] lines) {
- shellResult = lines[0];
- }
-
- });
- } catch (TimeoutException e) {
- errorSelectMediaFile(e);
- return result;
- } catch (SdbCommandRejectedException e) {
- errorSelectMediaFile(e);
- return result;
- } catch (ShellCommandUnresponsiveException e) {
- errorSelectMediaFile(e);
- return result;
- } catch (IOException e) {
- errorSelectMediaFile(e);
- return result;
- }
-
- if (shellResult != null) {
- int index = shellResult.indexOf('\t');
- if (index != -1) {
- shellResult = shellResult.substring(0, index);
-
- if (Integer.valueOf(shellResult) <= 10) {
- result = true;
- }
- }
- }
- return result;
- }
-
- private void errorSelectMediaFile(Exception e) {
- NfcDialog.openErrorDialog(shell, String.format("Throw exception while select media file : %s\n", e.getMessage()));
- }
-
- private String makeSendMessage(Integer type)
- {
- String msg = null;
- switch (type) {
- case 100: // NFC_TAG_DISCOVERED
- {
- int tagtype = cmbTagTypeList.getSelectionIndex();
- if (tagtype != -1 && tagtype != 0) {
- String records = new String();
- records += "," + RecordList.size();
- for (NDEFRecord record : RecordList) {
- records += "," + record.getFormat() + ","
- + record.getTypeName() + "," + record.getId() + ","
- + record.getPayload();
- }
-
- msg = NfcCommand.NFC_TAG_DISCOVERED.toString() + ":"
- + String.valueOf(tagtype) + records + "\n";
-
- } else {
- NfcDialog.openErrorDialog(shell, "Select Tag Type\n");
- return null;
- }
- }
- break;
- case 101: // NFC_TAG_DETACHED
- msg = NfcCommand.NFC_TAG_DETACHED.toString() + ":" + "\n";
- break;
- case 102: // NFC_P2P_DISCOVERED
- msg = NfcCommand.NFC_P2P_DISCOVERED.toString() + ":\n";
- break;
- case 103: // NFC_P2P_DETACHED
- msg = NfcCommand.NFC_P2P_DETACHED.toString() + ":\n";
- break;
- case 104: // NFC_P2P_SEND
- {
- int tagtype = 5; // for peer to peer
- String records = new String();
- records += "," + RecordList.size();
- for (NDEFRecord record : RecordList) {
- records += "," + record.getFormat() + ","
- + record.getTypeName() + "," + record.getId() + ","
- + record.getPayload();
- }
-
- msg = NfcCommand.NFC_P2P_SEND.toString() + ":"
- + String.valueOf(tagtype) + records + "\n";
- }
- break;
- }
-
- return msg;
- }
-
- public boolean sendMessage(String msg)
- {
- boolean result = false;
- try {
- // add for test
- //NfcDialog.openInfoDialog(shell, msg);
- result = injectorSocket.sendNfc(msg);
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
-
- return result;
- }
-
private boolean checkDeviceConnectedAlready()
{
if (currentDevice == null)
@Override
protected void registerReceivers()
{
- // TODO Auto-generated method stub
-
}
// @Override
public void connect()
{
- // TODO Auto-generated method stub
currentDevice = ConnectionPlugin.getDefault().getCurrentDevice();
+ recordPage.setCurrentDevice(currentDevice);
}
// @Override
public void disconnect()
{
- // TODO Auto-generated method stub
}
@Override
protected void finalize() throws Throwable
{
InjectorView.getDefault().removeSelectionListener(this);
- // TargetConnectionControl.removeTargetConnectionListener(this);
super.finalize();
}
if (selectedEntry == null) {
disconnect();
return;
- } else if (!selectedEntry.getFileListingService().getDevice()
- .isEmulator())
+ } else if (!selectedEntry.getFileListingService().getDevice().isEmulator()) {
return;
+ }
- if(currentDevice == null && selectedEntry.getName() != null) {
- connect();
- } else if(currentDevice == null && selectedEntry.getName() == null) {
- return;
- } else if (currentDevice.getSerialNumber() != selectedEntry.getName()) {
- disconnect();
- connect();
+ String selectedName = selectedEntry.getFileListingService().getDevice().getSerialNumber();
+ if (currentDevice == null) {
+ if (selectedName != null) {
+ connect();
+ }
+ } else {
+ if (currentDevice.getSerialNumber() != selectedName) {
+ disconnect();
+ connect();
+ }
}
}
}
\ No newline at end of file